.NET企業架構設計

綠龍術士發表於2018-04-11

軟體的需求和質量

系統的最終目標有一系列需求描述,這些需求最終決定了系統的架構。需求又分為功能需求和非功能需求:

功能性需求是指系統需要做的事情,即系統需要為特定的任務和達到使用者的目的提供哪些功能。通常而言,一個功能包含輸入,行為和輸出。軟體需求必須“清晰,正確,避免二義,明確且可檢驗的”

非功能需求是指不屬於工方面的需求。一個常見的例子是使用(或不使用)某一特定版本的某框架,或是需要讓最終產品可以和指定的遺留系統配合使用。還有一些比如支援可訪問性,安全性,可靠性等。

一般而言,非功能需求表示對系統的一種限制,進而影響系統的質量。

架構師的職責:接收需求,拆分系統,確定並評估技術,編寫詳細說明書。

軟體的生命週期

軟體開發是一個用來處理複雜性,並保證程式得到預期結果的流程。軟體工程的目的是控制複雜性,而不是增加複雜性。為了達到這個目標,軟體專案的各個階段都需要用某種方法論來指導。

根據ISO/IEC 12207標準,軟體開發週期分為23個步驟,每個步驟包含一系列的活動和結果。步驟分為3種型別:主要步驟,支援型步驟和組織型步驟。如圖所示:

 

具體內容可以參考:ISO 12207

獲取(Acquisition)步驟包含引出需求,評估可用方法,協商和約定。

供應(Supply)是指供方提供系統,軟體產品或軟體服務的活動

開發(Development)步驟包括分析需求,設計系統,實現系統,測試與部署,這也成為了架構師大顯身手的地方。

運營(Operation)包括讓軟體可以在公司中使用,與現有系統整合,進行小規模試驗,及輔助使用者熟悉軟體等。

維護(Maintenance)步驟著眼於保持系統良好執行,包括修復Bug,提供新功能等。這其中有限活動也許也需要架構師的參與。

墨菲法則:

1. 為一個趕不上進度的軟體專案增加人手只能讓其更加落後於進度。

2. 程式的複雜性會一直增加,直到負責維護的程式設計師力不從心為止。

3. 若建築師按照程式設計師寫的程式那樣造房子,那麼史上出現的第一隻啄木鳥也許會毀掉整個文明。

相關文章