軟件開發(fā)團隊在開始一個新的項目之前,會通過詳細的用戶需求調(diào)研準確捕獲了用戶需求并匯總分析后,再進行下一步的設計與實施工作,以避免因未能正確識別用戶的真正需求而導致不斷返工和工作成本增加。目前,有關需求管理的實踐大量應用于軟件開發(fā)工程等領域,對于從事軟件工程的程序員們來說,在進行項目開發(fā)之前創(chuàng)建和管理良好的需求是非常重要的第一步,同時也是一項挑戰(zhàn)。需求表述不當可帶來重大影響,如耗時返工、延期交付及預算超支,嚴重的還可造成業(yè)務違規(guī)。因此,開發(fā)團隊需要首先有效定義和管理需求,才能確保在保證進度和控制預算的同時,產(chǎn)品能夠滿足用戶所需。
本文旨在闡述良好需求描述的特征,并介紹有助于更好地編寫軟件工程需求說明文檔的幾點經(jīng)驗,以幫助軟件開發(fā)團隊能夠更快更好地取得投資收益。
1、高質(zhì)量需求的特征
首先的問題是,何為良好的需求?一般而言,一項編寫良好的需求描述,應該包含以下特征:
?。?)正確(Correct) 技術可行,內(nèi)容合法
?。?)完整(Complete) 能夠表達一個完整的想法
(3)清晰(Clear) 不模棱兩可,不易被誤導
(4)一致性(Consistent) 不與其它需求相沖突
?。?)可驗證性(Verifiable) 可驗證系統(tǒng)能夠滿足用戶需要
?。?)可追蹤性(Traceable) 可唯一識別并進行跟蹤
(7)可行性(Feasible) 可在預期成本和計劃進度內(nèi)完成
?。?)模塊化(Modular) 可單獨變更而不會造成較大影響
?。?)獨立于設計(Design-independent) 不包括項目設計和實現(xiàn)的細節(jié)、計劃信息等
2、提高需求編寫質(zhì)量的經(jīng)驗
在明確了何為良好的需求之后,以下介紹幾點可以幫助開發(fā)團隊編寫出更好的需求描述的方法,加速軟件工程投資回報率。
經(jīng)驗1:將需求結(jié)構(gòu)化(Structuring)
每一項需求既不能被重復描述也不能被遺漏,訣竅之一是將需求結(jié)構(gòu)化。需求組織應具有良好的結(jié)構(gòu),以增進理解,同時避免出現(xiàn)重復和忽略的情況。同時,須具備對需求的向上和向下的追溯能力之后,團隊才能夠評估需求的覆蓋范圍。結(jié)構(gòu)化組織需求是控制和改善需求質(zhì)量的第一步。
經(jīng)驗2:重視非功能性需求(Constraints)
對于編寫需求說明書而言,涉及法規(guī)遵從和提高軟件系統(tǒng)質(zhì)量的非功能性需求(又稱約束條件,Constraints)同樣重要,它們通常包括軟件的性能、界面和可維護性等方面。編寫良好需求應包含對約束條件的覆蓋,原因是一旦如下領域(例如,性能、可靠性和易用性等)在開發(fā)完成后出現(xiàn)缺陷,通常都無法在系統(tǒng)中對其進行重新設計。因此,在項目初期將所有類型的非功能性需求考慮在內(nèi),可幫助開發(fā)團隊大幅提高項目成功的幾率。
經(jīng)驗3:將需求可視化(Visualization)
大多數(shù)需求分析人員發(fā)現(xiàn)建模有助于直觀化文字形式的需求。無論是在白板上繪圖、使用Microsoft PowerPoint演示工具,還是僅僅在腦海中構(gòu)建一個模型,都可視為一種建模方法。以上這種圖型化的文檔應與文字形式的需求描述一起統(tǒng)一管理,以確保一致性、可跟蹤性和變更控制能力??梢暬枨蠼L峁┝艘环N與客戶及最終用戶溝通的簡單而有效的方法,通過該方法可較容易地掌握客戶和最終用戶的需求。此外,圖型化還有助于闡明需求,增進軟件項目所有相關人員之間的溝通與協(xié)作。
經(jīng)驗4:管理好需求變更
大多數(shù)軟件工程項目中,來自用戶