在軟體開發領域,人們越來越多地提到需求。和其他領域一樣,這裡的需求源自使用者的“需要”,而不同則在於開發軟體系統最困難的部分就是準確說明開發什麼,這就是軟體項目的需求。
為什麼我們如此多的關注需求?原因恰恰在於我們無法有效地擷取需求,我們無法準確地表述需求,而需求的變化對於整個項目的成本、周期影響極大,所謂“一石激起千層浪”。所以,想讓項目獲得成功,首先要做好需求分析。
什麼是需求?
要瞭解需求的本質,首先需要明確需求是為誰負責的?是使用者還是開發人員?當然使用者是上帝,我們所做的一切工作對他們負責,但是客戶的願望並不全是需求,只有從業務要求開始,考慮開發實際情況,在此基礎上建立了開發承諾的才能稱之為需求。
1997年IEEE軟體工程標準詞彙表對軟體需求的定義為:
◆使用者解決問題或達到目標所需的條件或能力。
◆系統或系統組件要滿足合約、標準、規範或其它正式規定文檔所需具有的條件或能力。
◆一種反映上面1或2所描述的條件或權能的文檔說明。
請注意該定義中“條件或權能”、“合約和規範”這些詞,通俗地說,“需求”就是使用者的需要,包括使用者要解決的問題、達到的目標,以及實現這些目標所需要的條件,表現形式一般為文檔形式。
雖 然需求工作被越來越多的提及,但是在項目開發工作中,很多人對需求的認識還遠遠不夠。小到幾十萬元,大到上億元的軟體項目,它們的需求都或多或少的存在各 種問題,原因是多方面的:開發人員的重視程度、技術原因、人員組織原因、溝通、機制等,都表明做好軟體需求開發是一項系統工作,而不是簡單的技術工作。
需求開發和管理
什麼才是好的需求?裝修過房子的人應該知道,裝修開始之前,設計師都會給出一份設計圖或者,客戶滿意了才開始動工。開發軟體和裝修房子一樣,一份好的需求就是在開發前做出交付時的效果。要做到這一點,這需要從業務、功能和系統三個層次分別進行分析和描述。
需求分析的過程包括了需求開發和需求管理兩個部分。需求開發是指從情況收集、分析和評價到編寫文檔、驗證等一系列產生需求的活動,分為四個階段:需 求擷取、分析、制訂規格和驗證。這四個階段不一定是遵循線性順序的,它們是相互獨立和反覆的。需求管理是軟體項目開發過程中控制和維持需求約定的活動,它 包括變更控制、版本控制、需求跟蹤和狀態跟蹤等工作。
從工作流程上,需求分析過程從使用者願望開始,擷取需求,分析需求,形成規格文檔;經過迭代驗證,產生需求變更,形成新的規格文檔,並進資料列版本設定;反覆進行該迭代驗證過程,直至雙方確認,形成建立開發承諾的需求文檔。
如何做好需求分析?
需求分析對分析人員提出更高要求,它不僅需要分析人員具有豐富的需求分析經驗和良好的專業素質,還要求分析人員具有良好的學習能力、公關能力、語言 能力和組織能力。在實際工作中分析人員要面對不同單位、不同部門的不同人員,他們可能有著不同文化、不同關係和不同的管理水平等,面對如此紛繁複雜的環 境,如何做好需求分析工作呢?這裡從需求開發和需求管理兩個方面介紹一些相關的方法。
首先,需求開發可採用的方法很多,不同的開發方式有著不同的分析方法:
◆繪製關聯圖:繪製系統關聯圖是用於定義系統與系統外部實體間的界限和介面的簡單模型。
◆可行性分析:在允許的成本、效能要求下,分析每項需求實施的可行性,提出需求實現相關風險,包括與其它需求的衝突,對外界因素的依賴和技術障礙。
◆需求優先順序:確定使用執行個體、產品特性或單項需求實現的優先順序別。以優先順序為基礎確定產品版本將包括哪些特性或哪類需求。
◆系統原型:當使用者自身對有的需求不十分清楚時,我們可以建立一個系統原型,使用者通過評價原型更好地理解所要解決的問題。
◆圖形分析模型:繪製圖形分析模型是編製軟體需求規格說明的重要手段。它能協助分析人員理清資料、業務模式、工作流程,以及它們之間的關係,找出遺漏、冗餘和不一致的需求。這樣的模型包括資料流圖、實體關聯圖、狀態變換圖、對話方塊圖、對象類及互動作用圖等。
需求管理的目的則是控制和維持需求,保證項目開發過程的一致性。需求管理的方法主要包括:
◆確定需求變更控制過程。制定一個選擇、分析和決策需求變更的過程,所有的需求變更都需遵循此過程。
◆進行需求變更影響分析。評估每項需求變更,以確定它對專案計劃安排和其它需求的影響,明確與變更相關的任務並評估完成這些任務需要的工作量。通過這些分析將有助於需求變更控制部門更好地做出決策。
◆建立需求基準版本和需求控製版本文檔。確定需求基準,這是項目各方對需求達成的一致認識,之後的需求變更遵循變更控制過程即可。每個版本的需求規格說明都必須是獨立說明,以避免將底稿和基準或新舊版本相混淆。
◆維護需求變更的記錄。將需求變更情況寫成文檔,記錄變更日期、原因、負責人、版本號碼等內容,及時通知到項目開發所涉及的人員。
◆跟蹤每項需求的狀態。可以把每一項需求的狀態屬性(如已推薦的、已通過的、已實施的或已驗證的)儲存在資料庫中,這樣可以在任何時候得到每個狀態類的需求數量。
需求分析:統一技術與業務語言
需求分析工作離不開這樣兩個人群:業務人員和技術人員。而他們兩者說話的語言是不一樣的:一個談業務,一個說技術。需求分析的目標就是使兩者在軟體項目上說一種語言,將兩者“捆綁”得最貼合,項目成功的可能性就越大。
註:以上內容來自網路,本人不承擔任何連帶責任
文章轉自:http://developer.51cto.com/art/200804/67754.htm