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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

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

2、應(yīng)用的需求,從而構(gòu)成了軟件“系統(tǒng)”。* 一個大型企業(yè)往往使用多套系統(tǒng),多套系統(tǒng)通過互操作形成“集成系統(tǒng)”。軟件單元的粒度是相對的。同一個軟件單元,在不同場景下我們會以不同的粒度看待它。架構(gòu)(Architecture) 不等于框架(Framework)。框架只是一種特殊的軟件,框架也有架構(gòu)??梢酝ㄟ^架構(gòu)框架化達(dá)到“架構(gòu)重用”的目的,如很多人都在用Spring框架提供的控制反轉(zhuǎn)和依賴注入來構(gòu)建自己的架構(gòu)。1.3軟件架構(gòu)的作用如果一個項目的系統(tǒng)架構(gòu)(包括理論基礎(chǔ))尚未確定,就不應(yīng)該進行此系統(tǒng)的全面開發(fā)。-Barry Boehm, Engineering Context 一個缺陷充斥的系統(tǒng),將始終是一

3、個缺陷充斥的系統(tǒng)。-Timothy C. Lethbridge,面向?qū)ο筌浖こ誊浖軜?gòu)設(shè)計為什么這么難?因為它是跨越現(xiàn)實世界與計算機世界之間鴻溝的一座橋。軟件架構(gòu)設(shè)計要完成從面向業(yè)務(wù)到面向技術(shù)的轉(zhuǎn)換,在鴻溝上架起一座橋梁。需求- 架構(gòu)設(shè)計- 軟件架構(gòu)- 系統(tǒng)開發(fā)- 軟件系統(tǒng)軟件架構(gòu)對新產(chǎn)品開發(fā)的作用:*上承業(yè)務(wù)目標(biāo)。*下接技術(shù)決策。*控制復(fù)雜性。先進行架構(gòu)設(shè)計,后進行詳細(xì)設(shè)計和編碼實現(xiàn),符合“基于問題深度分而治之”的理念。*組織開發(fā)。軟件架構(gòu)方案在小組中間扮演了“橋梁”和“合作契約”的作用。*利于迭代開發(fā)和增量交付。以架構(gòu)為中心進行開發(fā),為增量交付提供了良好的基礎(chǔ)。在架構(gòu)經(jīng)過驗證之后,可以

4、專注于功能的增量提交。*提高質(zhì)量。軟件架構(gòu)對軟件產(chǎn)品線開發(fā)的作用:*固化核心知識;*提供可重用資產(chǎn);*縮短推岀產(chǎn)品的周期;*降低開發(fā)和維護成本;*提高產(chǎn)品質(zhì)量;*支持批量定制。軟件產(chǎn)品線:指具有一組可管理的、公共特性的、軟件密集性系統(tǒng)的集合,這些系統(tǒng)滿足特定 的市場需求或任務(wù)需求,并且按照預(yù)定義方式從一個公共的核心資產(chǎn)集開發(fā)得到。軟件產(chǎn)品線架構(gòu):針對一個公司或組織內(nèi)的一系列產(chǎn)品而設(shè)計的通用架構(gòu)。2. 軟件架構(gòu)設(shè)計方法2.1軟件架構(gòu)為誰而設(shè)計架構(gòu)師應(yīng)當(dāng)為項目相關(guān)的不同角色而設(shè)計:*架構(gòu)師要為客戶負(fù)責(zé),滿足他們的業(yè)務(wù)目標(biāo)和約束條件。*架構(gòu)師要為用戶負(fù)責(zé),滿足他們關(guān)心的功能需求和運行期質(zhì)量屬性。*架

5、構(gòu)師必須顧及處于協(xié)作分工“下游”的開發(fā)人員。*架構(gòu)師必須考慮“周邊”的管理人員,為他們進行分工管理、協(xié)調(diào)控制和評估監(jiān)控等工作提供清晰的基礎(chǔ)。2.2五視圖法什么是軟件架構(gòu)視圖?軟件架構(gòu)視圖是對于從某一視角看到的系統(tǒng)所作的簡化描述,描述中涵蓋了系統(tǒng)的某一特定方面,而省略了與此無關(guān)的其他方面。軟件架構(gòu)要涵蓋的內(nèi)容和決策太多了,超過了人腦“一蹴而就”的能力范圍,因此宜采用“分而治之”的辦法。即通過不同的視圖來描述架構(gòu)。軟件架構(gòu)的五視圖法:*邏輯架構(gòu)邏輯架構(gòu)關(guān)注功能。其設(shè)計著重考慮功能需求。*開發(fā)架構(gòu)開發(fā)架構(gòu)關(guān)注程序包。其設(shè)計著重考慮開發(fā)期質(zhì)量屬性,如可擴展性、可重用性、可移植性、易理解性和易測試性等。

6、*運行架構(gòu)運行架構(gòu)關(guān)注進程、線程、對象等運行時概念,以及相關(guān)的并發(fā)、同步、通信等問題。其設(shè)計著重考慮運行期質(zhì)量屬性,例如性能、可伸縮性、持續(xù)可用性和安全性等。*物理架構(gòu)物理架構(gòu)關(guān)注軟件系統(tǒng)最終如何安裝或部署到物理機器。其設(shè)計著重考慮“安裝和 部署需求”。*數(shù)據(jù)架構(gòu)數(shù)據(jù)架構(gòu)關(guān)注持久化數(shù)據(jù)的存儲方案。其設(shè)計著重考慮“數(shù)據(jù)需求”。2.3從概念性架構(gòu)到實際架構(gòu)少就是多(Less is more.)。-密斯凡德羅概念性架構(gòu)是對系統(tǒng)設(shè)計的最初構(gòu)想。 一般來說,實際的軟件架構(gòu)設(shè)計過程是,先進行概念性架構(gòu)的設(shè)計,把最關(guān)鍵的設(shè)計 要素和交互機制確定下來,然后再考慮具體技術(shù)的運用,設(shè)計岀實際架構(gòu)。2.4架構(gòu)設(shè)計中

7、的關(guān)鍵要素及解決策略策略是制勝的關(guān)鍵。-張明正,擋不住的趨勢最好的軟件開發(fā)人員都知道一個秘密:美的東西比丑的東西創(chuàng)建起來更廉價,也更快捷。-Robert C. Martin,軟件之美時間就是系統(tǒng)架構(gòu)的生命。-Philippe Kruchten方法產(chǎn)生于恐懼。面對時間緊迫的壓力,我們有理由質(zhì)疑那種不顧時間花銷、一味追求軟件架構(gòu)高質(zhì)量的 做法。軟件架構(gòu)是軟件系統(tǒng)質(zhì)量的核心,必須足夠重視,但在不適當(dāng)?shù)臅r候“用時間換 完美”會毀掉整個項目。架構(gòu)設(shè)計并非“好的就是成功的”,而是“適合的才是成功的”。軟件架構(gòu)設(shè)計中的關(guān)鍵要素及解決策略:全面認(rèn)識需求。 關(guān)鍵需求決定架構(gòu)。 多視圖探尋架構(gòu)。及早驗證架構(gòu)。關(guān)鍵

8、要素策略1. 是否遺漏了至關(guān)重要的非功能需求?2. 能否馴服數(shù)量巨大且頻繁變化的需求?3. 能否從容地設(shè)計軟件架構(gòu)的不同方面?4. 是否及早驗證架構(gòu)方案并作岀了調(diào)整?2.5軟件架構(gòu)要設(shè)計到什么程度軟件系統(tǒng)的架構(gòu)涵蓋了整個系統(tǒng),盡管架構(gòu)的有些部分可能只有“一寸深”-Ivar Jacobson,統(tǒng)一軟件開發(fā)過程之路軟件架構(gòu)是團隊開發(fā)的基礎(chǔ)。軟件架構(gòu)要設(shè)計到什么程度?*由于項目的不同、開發(fā)團隊情況的不同,軟件架構(gòu)的設(shè)計程度會有不同*軟件架構(gòu)應(yīng)當(dāng)為開發(fā)人員提供足夠的指導(dǎo)和限制。高來高去式架構(gòu)設(shè)計的癥狀:*缺失重要架構(gòu)視圖。遺漏了某些重要視圖,從而遺漏了對團隊某些角色的指導(dǎo)。*淺嘗輒止、不夠深入。將重大

9、技術(shù)風(fēng)險遺留到后續(xù)開發(fā)中。*名不副實的分層架構(gòu)。對各層之間交互接口和交互機制的設(shè)計嚴(yán)重不足。3. 軟件架構(gòu)設(shè)計過程3.1軟件架構(gòu)設(shè)計過程總覽一般的軟件過程:概念化階段-分析階段- 架構(gòu)設(shè)計階段- 并行開發(fā)與測試階段-驗收與交付階段1111 1愿景需求架構(gòu)可執(zhí)行系統(tǒng)交付的系統(tǒng)軟件架構(gòu)設(shè)計過程:需求分析- 領(lǐng)域建模- 確定關(guān)鍵需求- 概念性架構(gòu)設(shè)計- 細(xì)化架構(gòu)- 驗證架構(gòu)II !II概念性架構(gòu)實際架構(gòu)! !分析階段架構(gòu)設(shè)計階段3.2需求分析幾個概念需求捕獲vs需求分析vs系統(tǒng)分析*需求捕獲是獲取知識的過程,知識從無到有。*需求分析是挖掘和整理知識的過程,它在已掌握知識的基礎(chǔ)上進行。*系統(tǒng)分析?如果

10、說需求分析致力于“做什么”,那么系統(tǒng)分析則涉及“怎么做” 架構(gòu)師必須掌握的需求知識軟件架構(gòu)師不必是需求捕獲專家,也不必是編寫軟件需求規(guī)格說明書的專家。 但他一定應(yīng)在需求分類、需求折衷和需求變更的研究方面是專家,否則他和其他 軟件架構(gòu)師相比,就輸在了“起跑線”上。軟件需求的類型廠功能需求廠運行期質(zhì)量屬性軟件需求T廠質(zhì)量屬性T匚非功能需求TL開發(fā)期質(zhì)量屬性匚約束軟件質(zhì)量屬性分類方式 運行期質(zhì)量屬性* 性能(Performance)* 安全性(Security)* 易用性(Usability)*持續(xù)可用性(Availability)* 可伸縮性(Scalability)* 互操作性(Interope

11、rability)* 可靠性(Reliability)* 魯棒性(Robustness)開發(fā)期質(zhì)量屬性易理解性(Understandability)可擴展性(Extensibility)可重用性(Reusability)可測試行(Testability)可維護性(Maintainability)可移植性(Portability)3.3領(lǐng)域建模就像高效能人士的七個習(xí)慣提到的“有內(nèi)而外全面造就自己”的觀點一樣, 對待軟件開發(fā),要具備“有內(nèi)而外造就軟件”的理念。想讓軟件系統(tǒng)隨需應(yīng)變嗎?請給軟件一個支持變化的“心”。什么是領(lǐng)域模型?領(lǐng)域模型是對實際問題領(lǐng)域的抽象表示,它專注于分析問題領(lǐng)域本身,發(fā)掘重要

12、的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。領(lǐng)域建模和需求分析活動是相互伴隨、互相支持、交疊演進的。領(lǐng)域模型對軟件架構(gòu)乃至整個軟件系統(tǒng)開發(fā)工作的作用:*探索復(fù)雜問題、固化領(lǐng)域知識;*決定功能范圍、影響可擴展性;*提供交流基礎(chǔ)、促進有效溝通。3.4確定關(guān)鍵需求功能、質(zhì)量和商業(yè)需求的某個集合“塑造”了架構(gòu)。-Len Bass,軟件架構(gòu)實踐(第2版)關(guān)鍵需求決定架構(gòu),其余需求驗證架構(gòu)。什么是對軟件架構(gòu)關(guān)鍵的需求?*關(guān)鍵的功能需求。*關(guān)鍵的質(zhì)量屬性需求。*關(guān)鍵的商業(yè)需求。如何確定關(guān)鍵需求?p確定關(guān)鍵功能需求-全面整理需求- 分析約束性需求 TH$確定關(guān)鍵質(zhì)量屬性需求3.5概念性架構(gòu)設(shè)計概念性架構(gòu)設(shè)計

13、的步驟(這三個步驟以迭代方式進行):1. 魯棒性分析;2. 引入架構(gòu)模式;3. 質(zhì)量屬性分析。魯棒性分析所謂魯棒性分析是這樣一種方法:通過分析用例規(guī)約中的事件流,識別岀實現(xiàn)用例規(guī)定 的功能所需的主要對象及其職責(zé),形成以職責(zé)模型為主的初步設(shè)計。魯棒性分析是從功能需求向設(shè)計方案過度的第一步,所獲得的初步設(shè)計是一種理想化的 職責(zé)模型,它的重點是識別組成軟件系統(tǒng)的高級職責(zé)塊、規(guī)劃它們之間的關(guān)系。魯棒性分析填補了分析和設(shè)計之間的鴻溝。魯棒圖包含三種元素:邊界對象、控制對象和實體對象。(見書P196)引入架構(gòu)模式較為經(jīng)典的幾種架構(gòu)模式:分層、MVC、微內(nèi)核、基于元模型的架構(gòu)、管道-過濾器。關(guān)于架構(gòu)模式的幾

14、點說明:*分層避免名不副實的分層架構(gòu),即對各層之間交互接口和交互機制的設(shè)計嚴(yán)重不足。*微內(nèi)核缺點:設(shè)計和實現(xiàn)的復(fù)雜性;性能較低。優(yōu)點:擴展性強,可移植性強,軟件系統(tǒng)的生命周期長。質(zhì)量屬性分析 “屬性-場景-決策”表方法。舉例如下:1屬性111場景11I決策1111可擴展性I數(shù)據(jù)庫類型可替換111I建立數(shù)據(jù)庫存取層1111允許加載第三方模塊I采用插件機制1 11. 1 . 11 13.6細(xì)化架構(gòu)設(shè)計架構(gòu)細(xì)化工作主要體現(xiàn)在基于五視圖方法進行架構(gòu)細(xì)化:約束領(lǐng)域模型- I基于五視圖方法丨關(guān)鍵需求- I|-架構(gòu)方案概念架構(gòu)- I進行架構(gòu)細(xì)化 I經(jīng)驗架構(gòu)細(xì)化設(shè)計的工作內(nèi)容:1I架構(gòu)設(shè)計視圖1 11 1I設(shè)

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

溫馨提示

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

評論

0/150

提交評論