軟件開發文檔流程,指導怎樣從那些方面構建一個完善的軟件使用指南

1.在軟件文檔中最主要包括以下幾點,能夠幫助客戶和開發人員理解產品如何工作,如何演化

語境、功能性概覽、質量屬性、約束、原則、軟件架構、外部接口、代碼、數據、基礎設施架構、部署、運營和支持、決策和日記

(1)語境(必須)

*這個軟件/產品/系統是關於什麼的

*構建的是什麼(願景)

*如何融入現有環境

*誰在使用(用戶、角色、參與者)

(2)功能性概覽,瞭解系統的關鍵功能是什麼,能夠解釋爲什麼讓你可以在系統的功能切片之間建立明確的鏈接

*系統實際上做什麼是否清楚

*那些特性、功能、用列、用戶過時等對架構是重要的,是否清楚

*重要的用戶是誰,以及系統如何滿足他們的需求是否清楚

*上述已用於塑造和定義架構是否清楚

*從流程的角度系統做什麼是否清晰

*系統的主要流程和信息流是什麼

(3)質量屬性

*架構必須滿足的質量屬性有清晰的認識

*質量屬性是否滿足(可衡量、可達成、相關、及時)

*明確標出一些有影響的質量屬性(如多語言支持)

*列出每個質量屬性時一個很好的起點

性能(延遲和吞吐)、可伸縮性(數據和流量)、可用性(運行時間、停機時間、定期維護、全天)、安全性(認證、授權、數據保密性)、可擴展性、靈活性、審計、監測和管理、可依賴性、故障轉移、業務連續性、戶操作性、遵守法律法規、國際化、可訪問性、易用

(4)約束

*時間、預算和資源

*允許使用的技術清單和技術約束

*目標部署平臺

*已有系統和繼承標準

*局部標準(開發、編碼)

*公共標準(交換數據格式、請求方式等HTTP/SOAP/XML/XML機構/WSDL等)

*標準協議

*標準格式

*軟件開發團隊的規模、技能配置

*所構建的軟件的本質(比如戰術和戰略);

*政治約束;

*內部知識產權的使用;

(5)、開發原則

*架構分層原則

*視圖中業務邏輯

*接口的使用

*始終使用ORM

*依賴注入

*高內聚低耦合

*SOLID原則(單一職責原則,開閉原則,里氏代換原則,接口隔離原則,依賴倒置原則)

*所有組件都是無狀態的(讓伸縮性更容易)

*富域模型、貧血域模型、選擇存儲過程、不使用存儲過程、錯誤處理、日記等的通用方法、購買而非構建

(6)軟件架構

*關鍵內部接口是那些

*展示了主要的組件及其交互

*展示了主要的容器和技術選擇

*是否有清晰的結構,對於軟件架構圖的說明

(7)代碼

*生成、渲染HTML,對生成HTML的內部框架的簡短描述,包括主要的類和概念

*數據綁定:根據HTTPPOST 請求更新業務對象的方法

*多頁數據採集:描述構建網頁表單的內部框架

*web mvc

*安全性:使用windows身份基礎(WiF)進行認證和授權的方法

*域模型:域模型重要部分的概覽

*組件框架:簡短描述了正在運行時重新配置組件而構建的框架

*配置:簡短描述爲了在運行時重新配置組件而構建的框架

*架構分層:分層策略和用來實現的模式的概覽

*異常和日記

*模式和原則

(8)數據

*數據模型、數據存儲、數據需要多少存儲空間

*歸檔和備份

*日誌文件和審計跟蹤是否有相似的要求

*是否用單文件來存儲

(9)基礎設施架構

*是否有清晰的物理架構

*在所有層中,什麼硬件做了這件事

*如果使用,他是否滿足冗餘,故障轉移,和災難恢復

*選擇的硬件組件如何改變大小和被選中是否清楚

*如果使用了多個服務器和網站,他們之間的網絡聯繫是什麼

*誰負責基礎設施的支持和維護

*有照管通用基礎架構(比如,數據庫,消息總線、應用服務器、網絡、路由器,交換機、負載均衡器、方向代理、互聯網連接)

*誰擁有資源

*開發、測試、驗收、試製、生產等是否有合適的環境

(10)部署,軟件和基礎設施之間的一個映射

用來描述軟件(容器)和基礎設施之間的映射,有時候這是簡單的一對一映射,(如把一個Web應用程序部署到單個web服務器上),其它時候回更復雜,一個web應用程序部署到服務器的集羣的多個服務器上

*軟件安裝和配置軟件在哪裏,怎麼做

*軟件如何部署到基礎設施腳骨部分描述的基礎設施元素上是否清楚(一對一映射,每個服務器多個容器等)

*內存和CPU在運行於單塊基礎設施上的進程間如何分配是否清楚

*有容器和組件以主動-主動、主動-被動、熱備用、冷備用等形態運行嗎

*部署和回滾策略是否已經定義

*軟件或基礎設施出現故障時會發生什麼

*跨站點的數據如何複製是否清楚

(11)運營和支持,描述人們如何運行、監測和管理你的軟件

*軟件如何爲運營、支持團隊提供監測和管理系統的能力是否清楚

*在架構的各個分層中這是如何實現的

*運營人員要如何診斷問題

*錯誤和信息的紀錄在哪裏

*更改配置是否需要重新啓動

*有需要定期執行的手動管理任務嗎

*舊數據需要定期歸檔嗎

(12)、決策日記

簡單紀錄所做的重要決策,包括技術選擇(產品、框架),整體架構(軟件結構、架構風格、分解、模式)

*你爲什麼選擇技術或框架X,而不是Y和Z

*你是怎麼做的,產品評估還是概念證明

*你是否根據公司政策和企業架構戰略而被迫做出關於X的決策

*你爲什麼選擇所採用的軟件架構?你考慮過其它那些選項,你怎麼知道解決方案滿足主要的非功能性需求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章