1、通用的抽象集合。
可以將軟體系統簡單的理解成由多個容器構成,容器又由多個元件構成,元件由乙個或多個類實現。
類(在乙個物件導向系統裡,類是最小結構單元)
元件(元件可以想象成乙個或多個類組成的邏輯群組,通常由多個類在更高層次的約束下組合而成)
容器(指乙個在其內部可以執行元件或駐留資料的東西)
系統(系統是最高的抽象層次,代表了能夠提供價值的東西)
2、軟體的靜態檢視。
語境(設定場景的高層次圖,包括關鍵的系統依賴和參與者)
容器(容器圖顯示了高層次的技術選擇,容器如何分擔職責、如何通訊)
元件(元件圖可以看到每個容器的關鍵邏輯元件及之間的關係)
類(這是乙個可選的細節層次)
3、語境圖能回答以下問題:
(1)我們構建的(或已經構建的)軟體系統是什麼
(2)誰會用它
(3)如何融入已有的it環境
4、容器圖能回答以下問題:
(1)軟體系統的整體形態是什麼樣的
(2)高層次技術決策有哪些
(3)職責在系統中如何分布
(4)容器之間如何相互交流
(5)為了實現特性,作為乙個開發者,我需要在**寫**
5、容器間的通訊通常是程序間通訊。
互動的目的(如讀寫資料、傳送報告)
通訊方法(如web服務、遠端方法呼叫、訊息服務)
通訊方式(如同步、非同步、批量、兩階段提交等)
6、語境圖展示的軟體系統是乙個盒子,而容器圖是開啟盒子展示裡面的東西。
(1)讓高層次的技術選擇更明確
(2)展示了哪些容器之間有關聯,以及他們如何溝通
(3)提供了乙個放置元件的框架
(4)展示了高層次的語境圖和通常很亂的元件圖之間經常缺失的連線,元件圖畫的是整個軟體系統中所有的邏輯元件
7、元件圖可以回答以下問題:
(1)系統由哪些元件/服務組成
(2)在高層次上,系統如何工作是否清晰
(3)所有元件/服務都駐留在乙個容器中嗎
元件圖展示了駐留在每個容器中的邏輯元件,展示了在高層次上將軟體系統分解為職責不同的元件;展示了元件之間的關係和依賴;為軟體開發的高層次預估和如何分解交付提供了乙個框架。
8、明確技術選擇。
(1)這個元件如何與執行在單獨程序中的另乙個元件溝通
(2)這個元件如何初始化,職責又是什麼
(3)為什麼這個程序需要和另乙個程序溝通
(4)為什麼這個元件要用x技術而不是y技術實現
9、職責驅動設計和元件分解。
對於軟體架構,乙個重要的方面是理解軟體系統的重要元素是如何結合在一起的,這意味著深入元件、服務或模組的層次,他們各自有一組特定的職責。元件是介面背後的一組相關行為,可以用乙個或多個協作類實現。好的元件和好的類有一些共性,應該高內聚、低耦合、有良好定義的公共介面、良好的封裝等。
10、用層封裝**。
如果你開啟乙個**庫,就會看到域類包、ui素材包、業務服務包、資料訪問包、整合包等。
11、架構和設計軟體並不需要uml工具。但如果你不使用工具,就需要明確地思考各個抽象層次之間的可追溯性、規約和一致性。
軟體架構設計 五
五 業務流程圖 聊到這裡,其實還是一行 也沒寫,呵呵,不過我們已經成功了一大半。架子已經有了,現在就差專案的業務流程了。曾記得有次面試,面試官鄙視做客戶端或桌面應用程式的人,讓我感到很不爽,不過後來這個面試官居然成為我的領導。如果誰敢鄙視桌面應用程式,那我就會問他,中國除了求伯君的 wps,還有什麼...
軟體架構設計系列總結
出處 架構引用 維基百科 軟體體系結構是構建 計算機軟體 實踐的基礎。與建築師設定建築專案的設計原則和目標,作為繪圖員畫圖的基礎一樣,乙個 軟體架構師 或者系統架構師 陳述軟體構架以作為滿足不同客戶需求的實際系統設計方案的基礎。從和目的 主題 材料和結構的聯絡上來說,軟體架構可以和建築物的 架構相比...
常見的五種軟體架構
軟體架構 software architecture 就是軟體的基本結構。合適的架構是軟體成功的最重要因素之一。大型軟體公司通常有專門的架構師職位 architect 只有資深程式設計師才可以擔任。o reilly 出版過一本免費的小冊子 software architecture patterns...