壹、 問題識別
首先系統分析人員要研究計劃階段產生的可行性分析報告和軟件項目實施計劃。主要是從系統的角度理解軟件並評審用於產生計劃估算的軟件範圍是否恰當,確定對目標系統的綜合要求,即軟件的需求;並提出這些需求的實現條件,以及需求應達到的標準,也就是解決要求所開發軟件做什麽,做到什麽程度。這些需求包括:
(1)功能需求:列舉出所開發軟件在功能上應做什麽,這是最主要的需求。
(2)性能需求:給出所開發軟件的技術性能指標,包括存儲容量限制、運行時間限制、安全、保密性等。
(3)環境需求:這是對軟件系統運行時所處環境的要求。例如,在硬件方面,采用什麽機型、有什麽外部設備、數據通信接口等等;在軟件方面,采用什麽支持系統運行的系統。
(4)可靠性需求:各種軟件在運行時,失效的影響各不相同。在需求分析時,應對所開發軟件在投入運行後不發生故障的概率,按實際的運行環境提出要求。對於那些重要的軟件,或是運行失效會造成嚴重後果的軟件,應當提出較高的可靠性要求,以期在開發的過程中采取必要的措施,是軟件產品能夠高度可靠地穩定運行,避免因運行事故而帶來的損失。
(5)安全保密工作需求:工作在不同環境的軟件對其安全、保密的要求顯然是不同的。應當把這方面的需求恰當地作出規定,以便對所開發的軟件給予特殊的設計,使其在運行中其安全保密方面的性能能得到必要的保證。
(6)用戶界面需求:軟件與用戶界面的友好性是用戶能夠方便有效地使用軟件的關鍵之壹,從市場角度來看,具有友好用戶界面的軟件有較強的市場競爭力。因此,必須在需求分析時,為用戶界面細致地規定達到的要求。
(7)資源使用需求:這是指所開發軟件運行時所需的數據、軟件、內存、空間等各項資源。另外,軟件開發時所需的人力、支撐軟件、開發設備等屬於軟件開發的資源,需要在需求分析時加以確定。
(8)軟件成本消耗與開發進度需求:在軟件項目立項後,要根據合同規定,對軟件開發的進度和各步驟的費用提出要求,作為開發管理的依據。
(9)預先估計以後系統可能達到的目標。這樣,在開發過程中,可對系統將來可能的擴充與修改做準備,壹旦需要時,就比較容易進行補充和修改。
功能性需求是人們普遍關註的,但對非功能性需求的分析常常被忽視。其實非功能性需求並不是無關緊要的,它們的主要特點涉及到的方面多而廣,卻容易被忽略,任何壹個軟件的非功能性需求都要根據其類型和工作環境來確定。
問題識別的另壹項工作是建立分析所需要的通信(溝通)途徑,以保證能順利地對問題進行分析。分析員必須與用戶、軟件開發機構的管理部門、軟件開發組的人員建立聯系。項目負責人在此過程中起協調人的作用。分析員通過這種通信途徑與各方面商討,以便能按照用戶的要求去識別問題的基本內容。
此外,如果在進行需求分析之前沒有做過可行性分析,那麽補充完成這部分工作往往是必要的,從問題定義和調查研究入手,與用戶密切聯系,詳細了解問題提出的背景、弄清要解決什麽問題,然後從軟件系統特性和用戶目標出發,做市場調查和現場考察。仔細收集信息之後進行數據分析和功能分析,建立系統的高層邏輯模型,再進壹步做成本/效益分析。最後提交壹份可行性分析報告,從技術、經濟、社會效應等方面論證可行性,以確認軟件開發的目標是否可行。
二、 分析與綜合
需求分析的第二步工作是問題分析和方案的綜合。
分析員需從數據流和數據結構出發,逐步細化所有軟件功能,找出系統各元素之間的聯系、接口特性和設計上的限制,分析它們是否滿足功能要求,是否合理。依據功能需求、性能需求和運行環境需求等,剔除其不合理的部分,增加其需要部分。最終綜合成系統的解決方案,給出目標系統的詳細邏輯模型。
在這個步驟中,分析和綜合工作反復地進行。在對現行問題和期望的信息(輸入和輸出)進行分析的基礎上,分析員開始綜合出壹個或幾個解決方案,然後檢查它的工作是否符合軟件計劃中規定的範圍等等,再進行修改。總之,對問題進行分析和綜合的過程將壹直持續到分析員與用戶雙方都感到有把握正確地制定該軟件的規格說明為止
常用的需求分析方法有面向數據流的結構化分析方法(簡稱SA)、面向數據結構的Jackson方法(簡稱JSD)、面向對象的分析方法(簡稱OOA)等,以及用於建立動態模型的狀態遷移圖或Petri網等。
三、 編制需求分析文檔
在軟件開發的瀑布模型中,每個階段形成的最終文檔是階段完成的裏程碑,因而,需求分析階段編制文檔以備下步評審,也是此階段的重要任務之壹。以上已經確定的需求應當得到清晰準確的描述。通常把描述需求的文檔叫做軟件需求規格說明書。同時,為了確切表達用戶對軟件的輸入輸出要求,還需要制定數據要求說明書及編寫初步的用戶手冊,著重反映被開發軟件的用戶界面和用戶使用的具體要求。此外,根據在需求分析階段對系統的進壹步分析,從目標系統的精細模型出發,可以更準確地估計所開發項目的成本與進度,從而修改、完善與確定軟件開發實施計劃。
四、 需求分析評審
作為需求分析階段工作的復查手段,在需求分析的最後壹步,應該對功能的正確性、完整性和清晰性,以及其他需求給予評價。評審的主要內容是:
(1)系統定義的目標是否與用戶的要求壹致;
(2)系統需求分析階段提供的文檔資料是否齊全;
(3)文檔中的所有描述是否完整、清晰,是否準確地反映用戶的要求;
(4)與所有其他系統成分的重要接口是否都已經描述;
(5)所開發項目的數據流與數據結構是否足夠、確定;
(6)所有圖表是否清楚,在不補充說明時能否理解;
(7)主要功能是否已包括在規定的軟件範圍之內,是否都能充分說明;
(8)設計的約束條件或限制條件是否符合實際;
(9)開發的技術風險是什麽;
(10)是否考慮過軟件需求的其他方案;
(11)是否考慮過將來可能會提出的軟件要求;
(12)是否詳細制定了檢驗標準,它們能否對系統定義成功地進行確認;
(13)有沒有遺漏、重復或不壹致的地方;
(14)用戶是否審查了初步的用戶手冊;
(15)軟件開發設計計劃的估算是否受到了影響等。