软件架构の一般步骤
架構目標即是組成設計過程、確定使用范圍并幫你確定什么時候該結束的因素。在設定架構目標的時候請考慮以下基本點:1、從一開始就要對架構目標有個清楚的認識。架構與設計的各個階段所花費的時間將取決于這些目標。比如,你是在搭建一個原型?測試潛在的方式?還是準備為新應用創建一個長遠的架構環境。2、了解架構的消費者。要確定架構是否會被其他設計師、開發人員、測試人員、業務人員或管理人員使用。確定架構受眾的需求,以讓架構更為成功、更有影響力。3、了解條件限制。了解技術限制、使用限制、和部署限制。從一開始就要了解這些限制,這樣你才不會在將來遇到一些意想不到的麻煩。
步驟2 關鍵場景。關鍵場景包括使應用獲得成功的最重要的場景,還有能突出架構特點的用例。重要的場景標準如下:1.這些場景是業務關鍵的,比其它功能具有更高的使用要求,或者具有很高的技術/工藝風險。2.關系到功能屬性和質量屬性兩個方面,或者具有交叉性的影響。比如CRUD操作對安全性非常敏感。3.它們是最重要的場景,貫穿應用的各層(級),或者對應用整體都有重要的影響。架構突出的用例標準如下:1.這些用例對應用部署的成功和驗收非常重要。2.能夠對設計進行足夠的檢驗。區別系統場景與用戶場景的不同是很重要的。系統場景指主要對應用與設備的內部操作產生影響的場景。比如在各層間傳遞的信息、連接數據存儲、執行驗證等。用戶場景指用戶發起或受用戶控制的場景。比如創建一個定單、瀏覽產品、或者更新客戶記錄。突出架構特點的用例舉例:用在線商場的程序創建一個訂單并接收定單被確認的信息。使用庫存管理程序更新某個產品記錄,并更新所有相關的記錄(比如價格列表)。在CRM程序中搜索并顯示某個客戶的細節。
步驟3 對應用的了解。了解你的應用在完成的時候的大概情況。這將會使你的架構更實際,并與具體的條件限制和決定有更密切的聯系。創建應用的大概視圖應該包括以下步驟:1.決定應用的類型。首先決定所構建的應用的類型。它是一個移動應用、富客戶端、服務、網絡應用、還是組合應用?2.了解部署限制。然后,了解所部署的目標環境和它將對架構產生什么影響。3.確定重要的架構特點。確定你的架構將使用哪些類型。面向服務的架構?客戶服務器?分層?消息總線或是某幾種的組合?4.確定相關的技術。最后,根據應用類型和各種條件限制確定相關的技術。
步驟4 主要危險區域。確定架構中最容易出錯的區域。可以通過質量屬性和交叉問題對危險區域進行整理。質量屬性找出對于應用和場景很重要的質量屬性。比如,大部分應用程序都需要解決安全性與性能的問題,而這些問題還需要根據易用性、靈活性等可能更為重要的屬性進行權衡分析。以下是需要注意的重要的質量屬性。?| 范疇 | 注意事項 |
| 有效性 | 如何設計故障轉移支持 |
| ? | 如何設計一個備用站點 |
| ? | 怎樣計劃備份與恢復 |
| ? | 如何設計運行時的更新 |
| 概念完整性 | 如何分離對外部的依賴性 |
| ? | 如何整合舊技術 |
| ? | 如何在不打斷客戶的情況下發展系統 |
| 靈活性 | 如何處理動態業務規則 |
| ? | 如何處理動態UI |
| ? | 如何處理數據與邏輯過程中的變化 |
| ? | 如何處理業務需要的變化 |
| 互操作性 | 如何讓應用在獨立發展的同時實現互操作 |
| ? | 如何通過服務接口分離系統 |
| ? | 如何通過層的映射分離系統 |
| 易維護性 | 如何減少層與組件之間的依賴性 |
| ? | 如何實現一個插件式的架構 |
| ? | 如何選擇合適的通信模型 |
| 易管理性 | 如何了解主要的失敗模式 |
| ? | 如何對系統操作與健康狀態進行監控 |
| ? | 如何根據負載對系統進行調整 |
| 性能 | 如何確定緩存策略 |
| ? | 如何設計層間的高性能通信 |
| ? | 如何設計高性能數據存取 |
| ? | 如何有效地管理資源 |
| 可靠性 | 如何處理不可靠的外部系統 |
| ? | 如何審查請求與任務 |
| ? | 如何對負載進行重定向 |
| ? | 如何處理失效的通信 |
| ? | 如何處理失效的操作 |
| ? | 如何處理異常 |
| 重用性 | 如何減少層與組件之間的重復性 |
| ? | 如何實現跨系統的共享 |
| ? | 如何實現組件和層之間的功能共享 |
| 可擴展性 | 如何設計可擴展的層與級 |
| ? | 如何擴展 |
| ? | 如何處理傳輸與負載的測試點 |
| 安全性 | 如何解決認證與授權問題 |
| ? | 如何防止惡意輸入 |
| ? | 如何保護敏感數據 |
| 支持 | 如何設計審查與記錄 |
| ? | 如何設計使用問題信息的記錄 |
| 易測性 | 如何設計才能方便測試 |
| ? | 如何設計單元測試 |
| ? | 如何設計UI自動化 |
| 可用性 | 如何設計才能讓用戶有更多的權限 |
| ? | 如何改善響應性 |
| ? | 如何避免常見的用戶體驗問題 |
?
?
轉載于:https://www.cnblogs.com/hehejeson/articles/6426244.html
總結
- 上一篇: 《构架之美》阅读笔记六
- 下一篇: 软件体系结构课后作业03