關鍵字:需求分析 過程
對大多數人來說,若要建一幢數百萬元的房子,他一定會與建房者詳細討論各種細節,他們都明白完工以后的修改會造成損失,以及變更細節的危害性。然而,涉及到軟件開發,人們卻變得“大大咧咧”起來。軟件項目中百分之四十至百分之六十的問題都是在需求分析階段埋下的“禍根”(Leffingwell 1997)?稍S多組織仍在那些基本的項目功能上采用一些不合規范的方法,這樣導致的后果便是一條鴻溝(期望差異)—開發者開發的與用戶所想得到的軟件存在著巨大期望差異。
在軟件工程中,所有的風險承擔者(stakeholder)(這個詞很有意思,原義是賭金保管者。我看過很多的翻譯,有翻譯成涉眾的,也有的翻譯成參與者的,但是我想他的主要意思就是和這個項目有密切相關利益的人)都感興趣的就是需求分析階段。這些風險承擔者包括客戶、用戶、業務或需求分析員(負責收集客戶需求并編寫文檔,以及負責客戶與開發機構之間聯系溝通的人)、開發人員、測試人員、用戶文檔編寫者、項目管理者和客戶管理者。這部分工作若處理好了,能開發出很出色的產品,同時會使客戶感到滿意,開發者也倍感滿足、充實。若處理不好,則會導致誤解、挫折、障礙以及潛在質量和業務價值上的威脅。因為需求分析奠定了軟件工程和項目管理的基礎,所以所有風險承擔者最好是采用有效的需求分析過程。
軟件需求的定義
IEEE軟件工程標準詞匯表(1997年)中定義需求為:
(1)用戶解決問題或達到目標所需的條件或權能(Capability)。
(2)系統或系統部件要滿足合同、標準、規范或其它正式規定文檔所需具有的條件或權能。
(3)一種反映上面(1)或(2)所描述的條件或權能的文檔說明。
需求的層次
下面這些定義是需求工程領域中常見術語的定義說明。
軟件需求包括三個不同的層次—業務需求、用戶需求和功能需求—也包括非功能需求。業務需求( business requirement)反映了組織機構或客戶對系統、產品高層次的目標要求,它們在項目視圖與范圍文檔中予以說明。用戶需求(user requirement) 文檔描述了用戶使用產品必須要完成的任務,這在使用實例(use case)文檔或方案腳本(scenario)說明中予以說明。功能需求(functional requirement)定義了開發人員必須實現的軟件功能,使得用戶能完成他們的任務,從而滿足了業務需求。所謂特性(feature)是指邏輯上相關的功能需求的集合,給用戶提供處理能力并滿足業務需求。軟件需求各組成部分之間的關系如圖所示。
作為補充,軟件需求規格說明還應包括非功能需求,它描述了系統展現給用戶的行為和執行的操作等。它包括產品必須遵從的標準、規范和合約;外部界面的具體細節;性能要求;設計或實現的約束條件及質量屬性。所謂約束是指對開發人員在軟件產品設計和構造上的限制。質量屬性是通過多種角度對產品的特點進行描述,從而反映產品功能。多角度描述產品對用戶和開發人員都極為重要。 值得注意的一點是,需求并未包括設計細節、實現細節、項目計劃信息或測試信息。需求與這些沒有關系,它關注的是充分說明你究竟想開發什么。
Frederick Brooks在他1987年的經典的文章“No Silver Bullet:Essence and Accidents ofSoftware Engineering ”中充分說明了需求過程在軟件項目中扮演的重要角色:
文章來源于領測軟件測試網 http://www.kjueaiud.com/