需求分析是發(fā)現、求精、建模和規(guī)約的過程。這一過程包括:詳細精化最初由系統(tǒng)分析員建立并在軟件項目計劃中確定的軟件范圍,創(chuàng)建所需數據流、控制流以及操作行為的模型,在此基礎上選擇的解決方案。
在可行性研究之后,我們對值得開發(fā)的軟件進行需求分析。
需求分析是一種軟件工程活動,使得系統(tǒng)分析員能夠刻劃出軟件的功能和性能、指明軟件和其他系統(tǒng)元素的接口、并建立軟件必須滿足的約束。需求分析是軟件設計師進行軟件分解的基礎,需求分析建造了軟件處理的數據模型、功能模型和行為模型。需求分析為軟件設計師提供了可被翻譯成數據、體系結構、界面和過程設計的模型,最后,需求規(guī)約為軟件設計師和客戶提供了軟件建造完后,進行質量評估的依據。
1.軟件需求的概念和分類
在我們分析需求之前,先要了解需求的類別,在獲取需求時,按類別來處理就不容易遺漏。對需求有很多種不同的分類方法,其中的一種分類方法告訴我們需求應該包括:
2.需求分析的任務
需求分析的任務是借助于當前系統(tǒng)的物理模型(待開發(fā)系統(tǒng)的系統(tǒng)元素)導出目標系統(tǒng)的邏輯模型(只描述系統(tǒng)要完成的功能和要處理的數據),解決目標系統(tǒng)“做什么”的問題,所要做的工作是深入描述軟件的功能和性能,確定軟件設計的限制和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求,通過逐步細化對軟件的要求,描述軟件要處理的數據,并給軟件開發(fā)提供一種可以轉化為數據設計、結構設計和過程設計的數據與功能表示。必須全面理解用戶的各項要求,但這些要求不能全盤接受,只能接受合理的要求;對其中模糊的要求要做進一步澄清,然后決定是否采納;對于無法實現的要求要向用戶作充分的解釋。最后,將軟件的需求準確地表達出來,形成軟件需求說明書。其實現步驟如圖3.1所示。
圖3.1 參考當前系統(tǒng)建立目標系統(tǒng)模型
(1)獲得當前系統(tǒng)的物理模型:首先,分析、理解當前系統(tǒng)是如何運行的,了解當前系統(tǒng)的組織機構、輸入/輸出、資源利用情況和日常數據處理過程,并用一個具體的模型來反映自己對當前系統(tǒng)的理解。此步驟也可以稱為“業(yè)務建模”,其主要任務是對用戶的組織機構或企業(yè)進行評估,理解他們的需要及未來系統(tǒng)要解決的問題,并用一個具體模型來反映自己對當前系統(tǒng)的理解。這一模型應客觀地反映現實世界的實際情況。當然,如果系統(tǒng)相對簡單,也沒必要大動干戈地進行業(yè)務建模,只要做一些簡單的業(yè)務分析即可。
(2)抽象出當前系統(tǒng)的邏輯模型:在理解當前系統(tǒng)“怎樣做”的基礎上,取出非本質因素,抽取出“做什么”的本質。
(3)建立目標系統(tǒng)的邏輯模型:分析目標系統(tǒng)與當前系統(tǒng)邏輯上的差別,明確目標系統(tǒng)要“做什么”,從而從當前系統(tǒng)的邏輯模型中,導出目標系統(tǒng)的邏輯模型。
(4)對目標系統(tǒng)邏輯模型進行補充,具體內容如用戶界面、啟動和結束、出錯處理、系統(tǒng)輸入輸出、系統(tǒng)性能、其他限制等等。
3.需求分析的主要工作
軟件需求分析可被劃分成5個工作階段:問題分析;問題評估和方案綜合;建模;規(guī)約;復審。
例1. 汽車零件的主要供應商需要一個庫存控制系統(tǒng),系統(tǒng)分析員發(fā)現與當前的手工系統(tǒng)相關的問題包括:(1)不能快速地獲得部件的狀況;(2)更新卡片文件需要2至或3天的工作量;(3)由于沒有辦法查找相關廠商的部件信息,而使得對同一廠商同一貨品多次再訂貨,等等。一旦問題被標識出來,系統(tǒng)分析員將確定新系統(tǒng)該產生什么信息,以及將提供什么信息。
例2. 客戶希望得到指明什么零件從庫存中取出、以及還剩余多少相似零件的日報表??蛻糁该饕坏┊斣摿慵x開倉庫時庫存管理員就該記載每個零件的標號。通過對當前問題和希望的信息(輸入和輸出)進行的評估,系統(tǒng)分析員開始綜合一個或多個解決方案。為了便于開始,必須詳細地定義系統(tǒng)的數據、處理功能和行為。
例3. 在例1與例2的基礎上,一些可以進一步思考內容是,一旦已經建立這些信息,就該考慮針對實現的基本體系結構,那么客戶/服務器方法似乎是合適的,但是它確實屬于在軟件計劃中概括的范圍嗎?似乎需要一個數據庫管理系統(tǒng),但是,該數據庫系統(tǒng)真的是用戶/客戶需要的嗎?繼續(xù)評估和綜合的過程,直至分析員和客戶均確信針對后面的開發(fā)步驟軟件確實已被適當地刻劃了。
例3. 說明了在貫穿整個評估和綜合過程,分析員的主要焦點是“做什么”,而不是“怎么做”,即應該思考的是:系統(tǒng)會產生和使用什么數據?系統(tǒng)必須完成什么功能?將定義什么界面?會應用什么約束?。在問題評估和綜合解決方案的活動中,系統(tǒng)分析員創(chuàng)建系統(tǒng)模型,以便可以更好地理解數據流和控制流、處理功能和操作行為以及信息內容。
4. 系統(tǒng)分析員的主要能力
毫無疑問,在整個系統(tǒng)分析活動中,系統(tǒng)分析員起著關鍵的作用,這意味著我們對系統(tǒng)分析員有著較高的期望,其本人也應該具備各項突出的能力。這些能力的主要表現如下:
軟件需求分析中的相互溝通,總是要在兩方或多方間進行。系統(tǒng)分析員所問的第一組問題可以關注客戶、整體目標和收益。接下來的下一組問題使得系統(tǒng)分析員能夠對問題做更好的理解,使得客戶能夠表達其關于解決方案的感覺,例如:如何刻畫由某成功解決方案所產生的“好的”輸出?該解決方案強調了什么問題?能向我顯示或描述解決方案所應用的環(huán)境嗎?系統(tǒng)分析員所問的最后一組問題關注于會議的效果。例如:你是回答這些問題的合適人員嗎?你的回答是“正式的”嗎?我的提問和你想解決的問題相關嗎?其他人員可以提供附加信息嗎?其他我應該問你的問題嗎?
除了上述做法之外,也可以采用一種面向團隊的需求收集方法,該方法被應用在分析和規(guī)約的早期階段,被稱為便利的應用規(guī)約技術,即FAST技術,該方法鼓勵建立客戶和系統(tǒng)分析員之間的合作,由他們共同工作來標識問題、提出解決方案的要素、商議不同的方法以及刻畫出初步的解決方案需求。
FAST方法的基本原則是:
在過去20年,研究者已經開發(fā)出一些實用分析方法及相應的建模符號,每種分析方法有獨特的觀點,然而,所有分析方法都遵循以下操作原則:
軟件需求規(guī)格說明是分析任務的最終產物,美國國家標準局、IEEE(標準號830-1984)以及美國防部門均已提出了軟件需求規(guī)約(以及其他軟件工程文檔)的候選格式。
編寫需求的人必須描述的基本問題是:
下面給出一種軟件需求規(guī)格說明的撰寫大綱。
表3.1 軟件需求規(guī)格說明的大綱
目錄 1 前言 1.1 目的 1.2 范圍 1.3 定義、縮寫詞、略語 1.4 參考資料 2 項目概述 2.1 產品描述 2.2 產品功能 2.3 用戶特點 2.4 一般約束 2.5 假設和依據 3 具體需求 3.1 功能需求 3.1.1 功能需求1 3.1.1.1 引言 3.1.1.2 輸入 3.1.1.3 加工 3.1.1.4 輸出 3.1.2 功能需求2 …… 3.1.n 功能需求n 3.2 外部接口需求 3.2.1 用戶接口 3.2.2 硬件接口 3.2.3 軟件接口 3.2.4 通信接口 3.3 性能需求 3.4 設計約束 3.4.1 其他標準的約束 3.4.2 硬件的限制 ………… 3.5 屬性 3.5.1 安全性 3.5.2 可維護性 ………… 3.6 其他需求 3.6.1 數據庫 3.6.2 操作 3.6.3 場合適應性 ………… 附錄 索引 |
下面的問題會被提出并確認:
下面的指南是針對詳細的規(guī)約復審而提出的:
一旦復審完成,軟件需求規(guī)格說明就變成了客戶與軟件工程師之間的軟件開發(fā)“合約”。但在軟件需求規(guī)格說明完成后也可能被修改,但是,客戶應該注意,每個事后的修改是對軟件范圍的擴展,因此可能存在著增加成本或延長項目進度等情況。