軟件架構設計方法理論_第1頁
軟件架構設計方法理論_第2頁
軟件架構設計方法理論_第3頁
軟件架構設計方法理論_第4頁
軟件架構設計方法理論_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件架構設計方法理論1 .軟件架構概述1.1 什么是軟件架構 軟件架構的概念很混亂。如果你問五個不同的人,可能會得到五種不同的答案。 軟件架構概念主要分為兩大流派:組成派:軟件架構=組件+交互。決策派:軟件架構=重要決策集。 組成派和決策派的概念相輔相成。1.2 軟件架構和子系統(tǒng)、框架之間的關系 復雜性是層次化的。 好的架構設計必須把變化點錯落有致地封裝到軟件系統(tǒng)的不同部分(即關注點分離)。通過關注點分離,達到系統(tǒng)中的一部分發(fā)生了變化,不會影響其他部分”的目標。 軟件單元的粒度:* 粒度最小的單元通常是類”。* 幾個類緊密協(xié)作形成模塊工* 完成相對獨立的功能的多個模塊構成了子系統(tǒng)”。* 多個子

2、系統(tǒng)相互配合才能滿足一個完整應用的需求,從而構成了軟件系統(tǒng)”。* 一個大型企業(yè)往往使用多套系統(tǒng),多套系統(tǒng)通過互操作形成集成系統(tǒng)”。 軟件單元的粒度是相對的。同一個軟件單元,在不同場景下我們會以不同的粒度看待它。 架構(Architecture)不等于框架(Framework)。框架只是一種特殊的軟件,框架也有架構。 可以通過架構框架化達到架構重用”的目的,如很多人都在用 Spring框架提供的控制反轉和依賴注入來構建自己的架構。1.3軟件架構的作用如果一個項目的系統(tǒng)架構(包括理論基礎)尚未確定,就不應該進行此系統(tǒng)的全面開發(fā)。-Barry Boehm, «Engineering Con

3、text » 一個缺陷充斥的系統(tǒng),將始終是一個缺陷充斥的系統(tǒng)。-Timothy C. Lethbridge,面向對象軟件工程軟件架構設計為什么這么難?因為它是跨越現(xiàn)實世界與計算機世界之間鴻溝的一座橋。軟件架構設計要完成從面向業(yè)務到面向技術的轉換,在鴻溝上架起一座橋梁。需求-> 架構設計-> 軟件架構-> 系統(tǒng)開發(fā)-> 軟件系統(tǒng) 軟件架構對新產品開發(fā)的作用:* 上承業(yè)務目標。* 下接技術決策。* 控制復雜性。先進行架構設計,后進行詳細設計和編碼實現(xiàn),符合基于問題深度分而治之”的理念* 組織開發(fā)。軟件架構方案在小組中間扮演了橋梁”和 誓作契約”的作用。* 利于迭代

4、開發(fā)和增量交付。以架構為中心進行開發(fā),為增量交付提供了良好的基礎。在架構經過驗證之后,可以專注于功能的增量提交。* 提高質量。軟件架構對軟件產品線開發(fā)的作用:* 固化核心知識;* 提供可重用資產;* 縮短推出產品的周期;* 降低開發(fā)和維護成本;* 提高產品質量;* 支持批量定制。軟件產品線:指具有一組可管理的、公共特性的、軟件密集性系統(tǒng)的集合,這些系統(tǒng)滿足特定 的市場需求或任務需求,并且按照預定義方式從一個公共的核心資產集開發(fā)得到。軟件產品線架構:針對一個公司或組織內的一系列產品而設計的通用架構。2.軟件架構設計方法2.1 軟件架構為誰而設計架構師應當為項目相關的不同角色而設計:* 架構師要為

5、客戶負責,滿足他們的業(yè)務目標和約束條件。* 架構師要為用戶負責,滿足他們關心的功能需求和運行期質量屬性。* 架構師必須顧及處于協(xié)作分工下游”的開發(fā)人員。* 架構師必須考慮 周邊”的管理人員,為他們進行分工管理、協(xié)調控制和評估監(jiān)控等工作提供清晰的基礎。2.2 五視圖法* 什么是軟件架構視圖?軟件架構視圖是對于從某一視角看到的系統(tǒng)所作的簡化描述,描述中涵蓋了系統(tǒng)的某一特定方面,而省略了與此無關的其他方面。* 軟件架構要涵蓋的內容和決策太多了,超過了人腦"蹴而就”的能力范圍,因此宜采用分而治之”的辦法。即通過不同的視圖來描述架構。* 軟件架構的五視圖法:* 邏輯架構邏輯架構關注功能。其設計

6、著重考慮功能需求。* 開發(fā)架構開發(fā)架構關注程序包。其設計著重考慮開發(fā)期質量屬性,如可擴展性、可重用性、可移植性、易理解性和易測試性等。* 運行架構運行架構關注進程、線程、對象等運行時概念,以及相關的并發(fā)、同步、通信等問題。其設計著重考慮運行期質量屬性,例如性能、可伸縮性、持續(xù)可用性和安全性等。* 物理架構安裝和物理架構關注軟件系統(tǒng)最終如何安裝或部署到物理機器。其設計著重考慮 部署需求”。* 數(shù)據(jù)架構數(shù)據(jù)架構關注持久化數(shù)據(jù)的存儲方案。其設計著重考慮數(shù)據(jù)需求2.3 從概念性架構到實際架構 少就是多(Less is more.) 。- 密斯凡德羅概念性架構是對系統(tǒng)設計的最初構想。 一般來說,實際的軟

7、件架構設計過程是,先進行概念性架構的設計,把最關鍵的設計 要素和交互機制確定下來,然后再考慮具體技術的運用,設計出實際架構。2.4 架構設計中的關鍵要素及解決策略策略是制勝的關鍵。-張明正,擋不住的趨勢最好的軟件開發(fā)人員都知道一個秘密:美的東西比丑的東西創(chuàng)建起來更廉價,也更快捷。-Robert C. Martin,軟件之美時間就是系統(tǒng)架構的生命。-Philippe Kruchten方法產生于恐懼。面對時間緊迫的壓力,我們有理由質疑那種不顧時間花銷、一味追求軟件架構高質量的 做法。軟件架構是軟件系統(tǒng)質量的核心,必須足夠重視,但在不適當?shù)臅r候用時間換完美”會毀掉整個項目。架構設計并非好的就是成功的

8、"而是適合的才是成功的軟件架構設計中的關鍵要素及解決策略:全面認識需求。關鍵需求決定架構。 多視圖探尋架構。及早驗證架構。關鍵要素策略1. 是否遺漏了至關重要的非功能需求?2. 能否馴服數(shù)量巨大且頻繁變化的需求?3. 能否從容地設計軟件架構的不同方面?4. 是否及早驗證架構方案并作出了調整?2.5軟件架構要設計到什么程度軟件系統(tǒng)的架構涵蓋了整個系統(tǒng),盡管架構的有些部分可能只有1寸深-Ivar Jacobson,統(tǒng)一軟件開發(fā)過程之路軟件架構是團隊開發(fā)的基礎。軟件架構要設計到什么程度?* 由于項目的不同、開發(fā)團隊情況的不同,軟件架構的設計程度會有不同。* 軟件架構應當為開發(fā)人員提供足夠的

9、指導和限制。高來高去式架構設計的癥狀:*缺失重要架構視圖遺漏了某些重要視圖,從而遺漏了對團隊某些角色的指導* 淺嘗輒止、不夠深入。將重大技術風險遺留到后續(xù)開發(fā)中。* 名不副實的分層架構。11/9對各層之間交互接口和交互機制的設計嚴重不足。3.軟件架構設計過程3.1軟件架構設計過程總覽一般的軟件過程:概念化階段->分析階段->架構設計階段->并行開發(fā)與測試階段->驗收與交付階段愿景需求架構可執(zhí)行系統(tǒng)交付的系統(tǒng)軟件架構設計過程:需求分析->領域建模->確定關鍵需求->I概念性架構設計-> 細化架構-> 驗證架構I,實際架構概念性架構分析階段架構

10、設計階段3.2需求分析3.2.1 幾個概念需求捕獲vs需求分析vs系統(tǒng)分析需求捕獲是獲取知識的過程,知識從無到有。需求分析是挖掘和整理知識的過程,它在已掌握知識的基礎上進行。系統(tǒng)分析如果說需求分析致力于做什么" 那么系統(tǒng)分析則涉及怎么做3.2.2架構師必須掌握的需求知識軟件架構師不必是需求捕獲專家,也不必是編寫軟件需求規(guī)格說明書的專家。 但他一定應在需求分類、需求折衷和需求變更的研究方面是專家,否則他和其他軟件架構師相比,就輸在了 軟件需求的類型起跑線”上。功能需求軟件需求TL非功能需求廠運行期質量屬性質量屬性TIL開發(fā)期質量屬性L約束軟件質量屬性分類方式運行期質量屬性性能(Perf

11、ormance) 安全性(Security) 易用性(Usability)* 持續(xù)可用性(Availability)* 可伸縮性(Scalability)* 互操作性(Interoperability)* 可靠性(Reliability)* 魯棒性(Robustness)開發(fā)期質量屬性* 易理解性(Understandability)* 可擴展性(Extensibility)* 可重用性(Reusability)* 可測試行(Testability)* 可維護性(Maintainability)* 可移植性(Portability)3.3領域建模 就像高效能人士的七個習慣提到的有內而外全面造就

12、自己”的觀點一樣,對待軟件開發(fā),要具備有內而外造就軟件”的理念。 想讓軟件系統(tǒng)隨需應變嗎?請給軟件一個支持變化的心”。 什么是領域模型?領域模型是對實際問題領域的抽象表示,它專注于分析問題領域本身,發(fā)掘重要的 業(yè)務領域概念,并建立業(yè)務領域概念之間的關系。 領域建模和需求分析活動是相互伴隨、互相支持、交疊演進的。 領域模型對軟件架構乃至整個軟件系統(tǒng)開發(fā)工作的作用:* 探索復雜問題、固化領域知識;* 決定功能范圍、影響可擴展性;* 提供交流基礎、促進有效溝通。3.4確定關鍵需求功能、質量和商業(yè)需求的某個集合塑造”了架構。-Len Bass,軟件架構實踐(第2版)»關鍵需求決定架構,其余需

13、求驗證架構。什么是對軟件架構關鍵的需求?* 關鍵的功能需求。* 關鍵的質量屬性需求。* 關鍵的商業(yè)需求。如何確定關鍵需求?,確定關鍵功能需求->全面整理需求-分析約束性需求TL確定關鍵質量屬性需求3.5概念性架構設計概念性架構設計的步驟(這三個步驟以迭代方式進行):1. 魯棒性分析;2. 引入架構模式;3. 質量屬性分析。3.5.1 魯棒性分析 所謂魯棒性分析是這樣一種方法:通過分析用例規(guī)約中的事件流,識別出實現(xiàn)用例規(guī)定 的功能所需的主要對象及其職責,形成以職責模型為主的初步設計。 魯棒性分析是從功能需求向設計方案過度的第一步,所獲得的初步設計是一種理想化的 職責模型,它的重點是識別組成

14、軟件系統(tǒng)的高級職責塊、規(guī)劃它們之間的關系。 魯棒性分析填補了分析和設計之間的鴻溝。 魯棒圖包含三種元素:邊界對象、控制對象和實體對象。(見書P196)3.5.2 引入架構模式較為經典的幾種架構模式:分層、MVC微內核、基于元模型的架構、管道-過濾器。關于架構模式的幾點說明:* 分層避免名不副實的分層架構,即對各層之間交互接口和交互機制的設計嚴重不足。* 微內核缺點:設計和實現(xiàn)的復雜性;性能較低。優(yōu)點:擴展性強,可移植性強,軟件系統(tǒng)的生命周期長。3.5.3質量屬性分析 屬性-場景-決策”表方法。舉例如下:1 I1I屬性 I場景I決策I1H可擴展性I數(shù)據(jù)庫類型可替換I建立數(shù)據(jù)庫存取層I1H允許加載

15、第三方模塊I采用插件機制I1H.3.6 細化架構設計架構細化工作主要體現(xiàn)在基于五視圖方法進行架構細化:約束I領域模型->基于五視圖方法關鍵需求->-> 架構方案概念架構->進行架構細化經驗架構細化設計的工作內容:1架構設計視圖1設計任務1邏輯架構1細化功能單元;發(fā)現(xiàn)通用機制;細化領域模型;確定子系統(tǒng)接口和交互機制。1開發(fā)架構1確定要開發(fā)或直接利用的程序包之間的依賴關系;確定采用的技術;確定采用的框架等。數(shù)據(jù)架構1持久化數(shù)據(jù)存儲方案;數(shù)據(jù)傳遞、數(shù)據(jù)復制、數(shù)據(jù)同步等策略(可選)。11運行架構1確定引入哪些進程與線程;確定主動對象、被動對象,以及控制關系;處理進程線程的創(chuàng)建、銷毀、通信機制、資源爭用等; 協(xié)議設計。1物理架構1確定物理配置方案;確定如何將目標程序映射到物理節(jié)點。邏輯架構設計中,發(fā)現(xiàn)通用機制”是應被特別強調的。機制(Mechanism)是模式的實例。機制是特定上下文中重復出現(xiàn)的問題的特定解決方案。具有良好架構的系統(tǒng)具備概念完整性。它通過對系統(tǒng)架構建立一種清晰的認識來發(fā)現(xiàn)通用的 抽象和機制。利用這種共性使最終產生的系統(tǒng)結構更為簡單。3.7 實現(xiàn)并驗證軟件架構好的策略必須是一再求證、測試、發(fā)現(xiàn)瑕疵漏洞,另想途徑或方法來彌補策略不足,有時 甚至得全盤放棄,重新策劃。- 張明正,擋不住的趨勢架構原型對功能性需求的實現(xiàn)非常有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論