軟件需求編寫的幾點經驗之談

發表于:2008-06-03來源:作者:點擊數: 標簽:需求經驗之談編寫軟件
近年來,“ 需求管理 ”正成為中國當前工程應用和商業熱域的熱點。目前,有關需求管理的實踐大量應用于軟件 開發 工程等領域,軟件開發團隊在開始一個新的項目之前,會通過詳細的用戶需求調研準確捕獲了用戶需求并匯總分析后,再進行下一步的設計與實施工作
  近年來,“需求管理”正成為中國當前工程應用和商業熱域的熱點。目前,有關需求管理的實踐大量應用于軟件開發工程等領域,軟件開發團隊在開始一個新的項目之前,會通過詳細的用戶需求調研準確捕獲了用戶需求并匯總分析后,再進行下一步的設計與實施工作,以避免因未能正確識別用戶的真正需求而導致不斷返工和工作成本增加。對于從事軟件工程程序員們來說,在進行項目開發之前創建和管理良好的需求是非常重要的第一步,同時也是一項挑戰。需求表述不當可帶來重大影響,如耗時返工、延期交付及預算超支,嚴重的還可造成業務違規。因此,開發團隊需要首先有效定義和管理需求,才能確保在保證進度和控制預算的同時,產品能夠滿足用戶所需。本文旨在闡述良好需求描述的特征,并介紹有助于更好地編寫軟件工程需求說明文檔的幾點經驗,以幫助軟件開發團隊能夠更快更好地取得投資收益。

1.高質量需求的特征
        首先的問題是,何為良好的需求?一般而言,一項編寫良好的需求描述,應該包含以下特征:
        良好需求的特征 含義
        正確(Correct) 技術可行,內容合法
        完整(Complete) 能夠表達一個完整的想法
        清晰(Clear) 不模棱兩可,不易被誤導
        一致性(Consistent) 不與其它需求相沖突
        可驗證性(Verifiable) 可驗證系統能夠滿足用戶需要
        可追蹤性(Traceable) 可唯一識別并進行跟蹤
        可行性(Feasible) 可在預期成本和計劃進度內完成
        模塊化(Modular) 可單獨變更而不會造成較大影響
        獨立于設計(Design-independent) 不包括項目設計和實現的細節、計劃信息等

2. 提高需求編寫質量的十佳經驗
        在明確了何為良好的需求之后,以下介紹幾點可以幫助開發團隊編寫出更好的需求描述的方法,加速軟件工程投資回報率。
經驗1:將需求結構化(Structuring)
        每一項需求既不能被重復描述也不能被遺漏,訣竅之一是將需求結構化。需求組織應具有良好的結構,以增進理解,同時避免出現重復和忽略的情況。同時,須具備對需求的向上和向下的追溯能力之后,團隊才能夠評估需求的覆蓋范圍。結構化組織需求是控制和改善需求質量的第一步。

經驗2:重視非功能性需求(Constraints)
        對于編寫需求說明書而言,涉及法規遵從和提高軟件系統質量的非功能性需求(又稱約束條件,Constraints)同樣重要,它們通常包括軟件的性能、界面和可維護性等方面。編寫良好需求應包含對約束條件的覆蓋,原因是一旦如下領域(例如,性能、可靠性和易用性等)在開發完成后出現缺陷,通常都無法在系統中對其進行重新設計。因此,在項目初期將所有類型的非功能性需求考慮在內,可幫助開發團隊大幅提高項目成功的幾率。

經驗3:將需求可視化(Visualization)
        大多數需求分析人員發現建模有助于直觀化文字形式的需求。無論是在白板上繪圖、使用Microsoft PowerPoint演示工具,還是僅僅在腦海中構建一個模型,都可視為一種建模方法。以上這種圖型化的文檔應與文字形式的需求描述一起統一管理,以確保一致性、可跟蹤性和變更控制能力??梢暬枨蠼L峁┝艘环N與客戶及最終用戶溝通的簡單而有效的方法,通過該方法可較容易地掌握客戶和最終用戶的需求。此外,圖型化還有助于闡明需求,增進軟件項目所有相關人員之間的溝通與協作。

經驗4:使需求具備可測試性(Testable)
        產生良好需求的另一種行之有效的方法,就是從初期就確保每個需求具備明確的可驗證性,這種做法不僅有助于為項目后續階段做好準備,還可以幫助編寫者保持正確的思路。對于非功能性需求此規則也同樣適用,例如,對于“軟件必須具有高可用性”這種表述的需求我們無法進行測試,而改寫為明確的“普通用戶應能夠在3分鐘內生成一個報告”就使該需求具備了可測試性。

經驗5:管理好需求變更
        大多數軟件工程項目中,來自用戶的需求經常會發生變化。隨著項目的進展,開發團隊要保持清醒的頭腦、按照工程要求做出相應調整,并響應不斷變化的市場形勢和客戶需要。僅僅編寫出完美的首版需求描述是不夠的,如果未能對需求的變更過程進行恰當管理,那么控制不善的變更便可能導致系統和軟件功能缺失、返工以及利潤損失。開發團隊應該實施可靠的、可重復的變更控制流程。

經驗6:在客戶需求和開發能力之間找到平衡
        許多情況下,較少的需求數量有助于產生更加優秀的需求描述。軟件工程項目不可能實現既采納和滿足企業所有用戶的需求、營銷理念和商業計劃,同時還符合預算并能按期交付。項目經理必須找到客戶需求和開發能力之間的平衡點,確定可為客戶帶來最大價值,并幫助企業提升創新能力的那些需求,而不是一味地試圖滿足用戶所有需求。

經驗7:正確的重用以往優秀需求
        當之前項目的已編寫的良好需求適用于當前情況時,不要單純地將原有需求直接復制。重新使用以往需求的正確方法是繼續維持兩個需求之間的聯系,如通常打上re-use標記。此標記使分析人員能夠隨時查找到原始需求,以檢查需求分解分配等信息。通過靈活的方法重新用以往需求,開發團隊可以獲得技能、經驗和知識的共享。

經驗8:建立范例知識庫( Knowledge Database)
        提高需求質量的另一有效途徑是建立范例知識庫,并參考其中的典型范例。知識庫內容應該包括:良好需求和文檔的正、反面示例,以往項目中可反映團隊在特定領域內專門知識的良好(和不良)需求。為了使開發團隊可以更好的參考,知識庫中的需求案例應具備明顯的積極或消極意義,而非中規中矩的。通過知識庫示例開發團隊可以參考以往的經驗、吸取教訓,避免重蹈覆轍,進而提高需求編寫的質量、一致性和完整性。

        編寫好的需求說明是一個開發項目最為重要的活動之一,優秀的需求描述可以改善并加速項目的投資回報。就好像“垃圾輸入,垃圾輸出(garbage in, garbage out)”所表明的那樣,如果前期用戶需求收集得不明確,那么后期的開發過程注定生產錯誤的產品。開發團隊可以通過經驗提升需求編寫質量。此外,通過應用業界領先的需求管理工具,可以優化項目開發的溝通和協作的過程,提升軟件項目過程質量。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97