軟件需求,概要設計,詳細設計(文檔)怎麼作,作什麼?
寫在前面
因爲項目工做須要 ,須要提供《軟件需求規格說明書》,《軟件概要設計說明書》和《軟件詳細設計說明書》。因此這裏整理學習一下相關文檔須要的內容。文章並不設計對全部需求分析,概要設計和詳細設計的詳細描述。由於這其中的任何一點均可以單獨提取出來成爲軟件工程學科中的一本書籍內容。程序員
1 軟件設計的總體流程:
- 軟件需求分析階段:輸出了《軟件需求規格說明書》,不涉及具體實現方法。用戶能看得明白,開發人員也可據此進行下面的工做,搞清楚「要解決什麼問題」。
- 概要設計階段:肯定軟件系統的整體佈局,各個子模塊的功能和模塊間的關係,與外部系統的關係,選擇的技術路線。有一些研究與論證性的內容。並輸出《軟件概要設計說明書》。搞清楚「整體實現方案」
- 詳細設計階段:對概要設計的進一步細化,通常由各部分的擔當人員依據概要設計分別完成,而後在集成,是具體的實現細節。是「程序」的藍圖,肯定每一個模塊採用的算法、數據結構、接口的實現、屬性、參數。並輸出《軟件詳細設計說明書》。搞清楚「每一個模塊怎麼作」
2 需求分析
2.1 咱們爲何須要《軟件需求規格說明書》 ?
若是需求的編寫只是爲了解釋說明軟件實現的功能,那麼良好的編碼結構,代碼註釋就能夠很好的實現軟件的功能說明,程序員能夠將編寫需求的時間節約下來進行更多功能的實現; 但是,這樣的狀況可能更多適用於中小型項目,或者互聯網項目,由於這樣的項目需求不復雜,而且需求變化很快,因此研發的效率很是重要。然而,針對大型軟件項目或者功能比較複雜的系統,軟件研發多是多人協做的成果,因此在信息傳遞過程當中, 咱們只有提早考慮好軟件需求的內容,才能正確評估開發軟件所須要的時間,成本的要素,從而更好的管理項目。算法
2.2 《軟件需求規格說明書》的通常結構
- 正文的第一章內容是1.概述,包含
- 1.1.編寫目的;1.2.術語與定義;1.3.參考資料;三個部分
- 第二章要給出該項目的標準和規範,在文檔的後續內容編寫中以及項目開發過程當中必須遵守這個標準和規範進行。
- 第三章應該說明該項目的相關假設、限制和一些依賴條件,在後續系統部署的過程當中能夠有參考意義。
- 第四章「功能規格」是重點,重點介紹這個系統的角色,界面設計思路,系統的功能視圖和功能點清單,以及系統的需求用例。這個內容必須詳細描述,這樣才能對後續的開發和測試提供指導意義。
- 第五章「非功能規格」要對項目的性能、安全、數據的備份恢復等內容解釋解釋說明,一個項目除了功能完整以外,還要考慮性能、安全等相應的要求。
- 第六章「附錄」,是對軟件需求規格說明書的一些補充說明文檔,其中的「軟件需求跟蹤矩陣」是重點,這份文檔是對後續需求的完善程度進行了嚴格的控制。
3 概要設計
3.1 《概要設計說明書》的通常結構:
- 總述:需求或目標(講一下事情的起源)、環境、侷限;
- 整體設計:從全局的角度說一下 組織結構、功能、處理流程、有哪些模塊、模塊間的關係,運行環境等。(輸出圖:系統結構圖,系統流程圖,數據流程圖,推薦在線畫圖工具https://www.processon.com/)
- 外部接口:整體說明外部用戶、軟、硬件接口(可用資源);
- 模塊設計:每一個模塊「作什麼」、簡要說明「怎麼作」(輸入、輸出、處理邏輯、與其它模塊或系統的接口),處在什麼邏輯位置、物理位置。
模塊設計,能夠寫如下內容: 一、模塊描述:說明哪些模塊實現了哪些功能; 二、模塊層次結構:可使用某個視角的軟件框架圖來表達; 三、模塊間的關係:模塊間依賴關係的描述,通訊機制描述; 四、模塊的核心接口:說明模塊傳遞的信息、信息的結構; 五、處理方式設計:說一些知足功能和性能的算法;
- 數據結構:邏輯結構、物理結構。
- 容災設計:出錯信息、出錯處理。(可選)
- 監控設計:運行模塊組合、控制、時間。(可選)
- 用戶界面設計:(可選)。
- 安全設計:(可選)。
- 其它設計:(可選)。
- 制定規範(附錄): 設計原則,代碼規範、接口規約、命名規則。
3.2 概要設計須要注意的地方
- 用來評價整體設計的可行性。
- 用來檢查設計的模塊是否完整,保證每個功能都有對應的模塊來實現。
- 用來評估開發工做量、指導開發計劃(在不寫詳細設計的狀況下)。
- 概要設計階段過於重視業務流程是個誤區.
- 概要設計階段過於重視細節實現是個誤區.
4 詳細設計
4.1 《詳細設計說明書》的通常結構:
參考如何撰寫軟件詳細設計內容?數據庫
-
引言,包含:
編寫目的,背景,參考資料,術語定義及說明安全 -
設計概述,包含:任務和目標,需求概述,運行環境概述, 條件與限制,詳細設計方法和工具數據結構
-
系統詳細需求分析,包含:詳細需求分析,詳細系統運行環境及限制條件分析接口需求分析框架
-
整體方案確認,包含: 系統整體結構確認, 系統詳細界面劃分工具
-
系統詳細設計,包含: 系統結構設計及子系統劃分,系統功能模塊詳細設計(採用HIPO圖進行功能分解與模塊描述,,用IPO或結構圖描述各模塊的組成結構、算法、模塊間的接口關係,以及需求、功能和模塊三者之間的交叉參照關係。), 系統界面詳細設計佈局
每一個模塊的描述說明可參照如下格式: **模塊編號:** **模塊名稱:** **輸入:** **處理:** **算法描述:** **輸出:**
- 數據庫系統設計
4.2 詳細設計須要注意的地方
若是有或者有必要,特別是大型的軟件系統,詳細設計階段劃分系統功能模塊或子系統。性能
5 概要設計和詳細設計的區別
5.1 概要設計階段:
在這個階段,設計者會大體考慮並照顧模塊的內部實現,但不過多糾纏於此。主要集中於劃分模塊、分配任務、定義調用關係。模塊間的接口與傳參在這個階段要定得十分細緻明確,應編寫嚴謹的數據字典,避免後續設計產生不解或誤解。概要設計通常不是一次就能作到位,而是反覆地進行結構調整。典型的調整是合併功能重複的模塊,或者進一步分解出能夠複用的模塊。在概要設計階段,應最大限度地提取能夠重用的模塊,創建合理的結構體系,節省後續環節的工做量。
概要設計文檔最重要的部分是分層數據流圖、結構圖、數據字典以及相應的文字說明等。以概要設計文檔爲依據,各個模塊的詳細設計就能夠並行展開了。學習
5.2 詳細設計階段
在這個階段,各個模塊能夠分給不一樣的人去並行設計。在詳細設計階段,設計者的工做對象是一個模塊,根據概要設計賦予的局部任務和對外接口,設計並表達出模塊的算法、流程、狀態轉換等內容。這裏要注意,若是發現有結構調整(如分解出子模塊等)的必要,必須返回到概要設計階段,將調整反應到概要設計文檔中,而不能就地解決,不打招呼。 詳細設計文檔最重要的部分是模塊的流程圖、狀態圖、局部變量及相應的文字說明等