软件项目需求开发过程实践之软件需求说明书
? ? ? ? 軟件需求說明書為誰而編寫?把這個問題搞清楚是非常有意義的。
? ? ? ??先講個故事。
? ? ? ??在軟件項目開始時,需求及架構設計人員把需求和架構方案講給開發人員聽,開發人員還在設計“他那輛車”,沒有聽明白?需求及架構設計人員接著寫出一些列文檔后,開發人員還在設計稍作調整“他那輛車”,溝通出現了問題了嗎?項目完成后,最后結果仍是開發人員所設計的,已經變形的“他那輛車”。
? ? ? ??問題的源頭當然在需求,需求人員又如何把需求調研結果無損的分享給“相關人員”呢?其他原因,例如項目團隊學習等不在本文中分析了。
? ? ? ??首先,我們先回顧軟件工程中的需求分類和需求層次。
? ? ? ??需求的分類
- 軟件需求就是系統必須完成的事,以及必須具備的品質。具體來說,軟件需求包括功能需求、非功能需求和設計約束三個方面的內容;
- 業務需求是指反映組織機構或客戶對系統、產品高層次的目標要求,通常問題定義本身就是業務需求;
- 用戶需求是指描述用戶使用產品必須要完成什么任務、怎么完成的需求,通常是在問題定義的基礎上進行用戶訪談、調查,對用戶使用的場景進行整理,然后建立的從用戶角度的需求;
- 系統需求是從系統的角色來說明軟件的需求,它包括了用特性說明的功能需求,質量屬性及其他非功能需求,還有設計約束。
? ? ? ??需求的層次
? ? ? ??需求包括三個不同的層次:業務需求、用戶需求和功能需求,也包括非功能需求。
? ? ? ??在需求調研、需求分析、編寫需求說明書時,上述需求分類和層面都應涉及,否則,將缺項,讓人無法了解全面。如下表1“業務流程需求”為例所示,用戶層次及角色至少分為8個層面,他們的需求及視角很多都不同。
? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表1
? ? ? ??在需求調研中,表1中,很難訪談到領導層,其他各層也很難面面俱到,而寫出來的需求說明書,這些人也看不到,或者說也不可能看,就是項目團隊中的開發人員也很少看。這樣,軟件界的需求故事不停的上演。
? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1
? ? ? ??如何解決這些問題呢?
? ? ? ??首先,必須寫需求說明書,而且寫成相關各個用戶層次都能看到各自關注內容,滿足現有業務需求,并高于現有的業務,也就是業務建模。只有這樣,需求變更才恢復到本來的面貌,而不是理解偏差出現的變更。
? ? ? ??下面列表是早期寫的需求說明書目錄內容截取,需求內容非常的多。例如:用戶有很多待建流程,如果逐一展開寫到文檔中,先不說寫的工作量,還有誰看呀!
? ? ? ??
? ? ? ??調整思維后,需求說明書目錄截圖發生較大的變化,不是以往點、面的模式描述需求,而是立體模型方式描述需求,需求建模。而需求建模需要需求開發人員能力很多,例如屬于這個方案業務專家或者管理方案的專家。
? ? ? ??
? ? ? ? 需求分析真的需要豐富的經驗,領域專家。企業管理方面呢?是不是需要企業老總呢?企業管理專家又是誰?誰能指點流程能力、執行力、效率、效益……。所以,從各個視角關注流程是非常必要的,而且,要體現這些,需要在需求說明書中編寫。
? ? ? ? 軟件需求說明書參考模版如下列表所示。
? ? ? ??
? ? ? ? 總之,軟件需求僅按用戶需求直譯方式去理解并開發,哪將是惡夢的剛剛開始。真正的需要是去偽求真的,真的需求不可能是由普通用戶(業務接口人)能全部提供的,層次不夠,覆蓋面不夠,真的來源于業務領域知識、國家政策法規、企業規章制度,以及社會及其信息化發展方向。例如參考我早先的博客《信息化建設適應當前改革的思考——簡化流程與信息透明》,關注社會及企業發展的視角。把這些內容都體現到需求說明書中,就方便各層領導閱讀了,也提供普通員工和開發人員的認識層次了。通過次需求說明書,開發人員知道并理解做什么,減少,最好防止“一千個人心中有一千個哈姆雷特”的情況發生。
? ? ? ? 項目經驗之談分享,精力有限,難免有誤,僅供參考,歡迎討論、再補充完善。
參考:
百度百科.“軟件需求”
使用云技術升級改造現有應用系統的思考 2013.11 肖永威
面向集團客戶的云計算運營平臺概述——之云計算運營平臺方案(一) 2013.12 肖永威
總結
以上是生活随笔為你收集整理的软件项目需求开发过程实践之软件需求说明书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有赞下拉菜单html,有赞vant-ui
- 下一篇: 宏定义函数container_of的解释