《《軟件體系結構L》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《軟件體系結構L》PPT課件.ppt(54頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、軟件體系結構,主講老師:周立新,2020年7月21日1時20分,1,教科書和參考書,教科書: 軟件架構實踐(第2版),L.Bass.P.Clements.and R.Kazman, 車立紅譯,清華大學出版社(2004) 參考書: 軟件構架編檔,Paul Clements, Felix Bachmann等著,朱崇高 譯,清華大學出版社(2004) 軟件體系結構一門初露端倪學科的展望,;M.Shaw and D.Garlan, Prentice Hall, 1996清華大學出版社(1998),科學出版社(2003),2020年7月21日1時20分,2,2020年7月21日1時20分,3,2020年
2、7月21日1時20分,4,體系結構(Architecture)的定義,IEEE的定義 體系結構是以組件、組件之間的關系、組件與環(huán)境之間的關系為內(nèi)容的某一系統(tǒng)的基本組織結構以及指導上述內(nèi)容設計與演化的原理。 對Software architecture的常見中文翻譯 軟件體系結構 軟件架構 軟件構架,2020年7月21日1時20分,5,軟件體系結構(構架)研究的問題,結構性問題 系統(tǒng)的組織,由哪些組件構成 全局性的控制結構 通訊、同步或訪問的協(xié)議 將功能分配到不同的系統(tǒng)組成部分 設計元素的組成 系統(tǒng)的物理分布 可擴展性、性能,2020年7月21日1時20分,6,軟件構架的主要內(nèi)容,軟件構架的主要
3、內(nèi)容包括 對系統(tǒng)組成元素的描述 這些元素相互之間的交互 系統(tǒng)組成的模式 模式的約束 所以在軟件構架中,系統(tǒng)以組件和組件之間的交互進行定義。 當前的系統(tǒng)同時可以作為更高層設計的一個系統(tǒng)組件。,2020年7月21日1時20分,7,軟件構架的描述,對軟件系統(tǒng)而言,有一個合適的體系結構是長期成功的保證。 當前對于軟件構架的描述是 非正式的 因人而異 針對特定系統(tǒng)的 通常由框圖和線條以及相關的解釋所組成,2020年7月21日1時20分,8,一些典型的構架描述,“Camlelot采用了C/S結構并且使用遠程方法調(diào)用(RPC)” ”系統(tǒng)設計中采用了抽象分層和模塊分解的方法“ ”我們采用了一種分布式的、面向?qū)?/p>
4、象的方法進行信息管理?!?”將傳統(tǒng)的順序編譯器改造成并發(fā)編譯器的最簡單的方法是將不同的編譯階段在多個處理上并發(fā)執(zhí)行?!?2020年7月21日1時20分,9,軟件設計的層次,軟件設計可以發(fā)生在多個不同的層次,在每一層我們都會發(fā)現(xiàn)相應的組件以及由這些組件組成更大的組件的組合機制。 二進制執(zhí)行文件層 位模式 代碼層 編程語言的原語、操作符; 記錄、數(shù)組、過程; 構架層 模塊,2020年7月21日1時20分,10,,需求:做什么 概要設計,總體,架構,:怎么做? 分模塊功能劃分,接口定義,模式, 詳細設計:算法設計,數(shù)據(jù)設計 實現(xiàn):編碼,測試,2020年7月21日1時20分,11,工程學科的演化,,
5、,手工制造,生產(chǎn),商業(yè)制造,科學,專業(yè)工程,2020年7月21日1時20分,12,工程學科的演化(2),2020年7月21日1時20分,13,科學與工程的記錄周期,業(yè)界傳說 臨時解決方案 正式記錄 新問題 模型與理論 改進的實踐,,,,,,,2020年7月21日1時20分,14,軟件工程的演化,,手工制造,生產(chǎn),科學,專業(yè)工程,1965-70 算法、數(shù)據(jù),一些獨立的案例(算法、數(shù)據(jù)結構、編譯器構造,1980s軟件開發(fā)方法學,,,,2020年7月21日1時20分,15,Software Archi
6、tecture in Practice第一章 構架商業(yè)周期,2020年7月21日1時20分,16,構架由什么決定?,構架是否由系統(tǒng)需求決定? 將一份需求說明書給兩個不同的架構師,他們是否能夠設計出同樣的架構? 軟件構架是技術、商業(yè)和社會等諸多因素共同作用的結果。,2020年7月21日1時20分,17,構架從哪里來?,影響構架的因素主要包括: 系統(tǒng)涉眾(stakeholder) 開發(fā)組織 構架師的素質(zhì)和經(jīng)驗 技術環(huán)境,2020年7月21日1時20分,18,2020年7月21日1時20分,19,系統(tǒng)涉眾(stakeholder),管理者:成本要低,人人都得干活 營銷人員:特性突出、投放市場快、成本
7、低、可與同類產(chǎn)品匹敵 終端用戶:行為、性能、安全性、可靠性、易用性 維護人員:可修改性強 客戶:成本低、及時交付、不要頻繁修改 ,2020年7月21日1時20分,20,,2020年7月21日1時20分,21,,2020年7月21日1時20分,22,開發(fā)組織,除了通過需求表示的組織目標外,構架還受開發(fā)組織的結構或本質(zhì)的影響 對現(xiàn)存構架的重用 對某一個基礎設施進行長期的商業(yè)投資以實現(xiàn)某些戰(zhàn)略目標 開發(fā)組織本身的結構也會影響構架的形成,2020年7月21日1時20分,23,構架師的素質(zhì)和經(jīng)驗,構架師先前的一些經(jīng)驗、教育、培訓以及所接觸到過的成功構架模式都會影響到他們對某種構架的選擇。,2020年7月
8、21日1時20分,24,,17世紀上半葉,北歐新教勢力與中歐天主教勢力發(fā)生了一場“三十年戰(zhàn)爭”,作為北歐新教勢力的代表,瑞典的軍事力量達到鼎盛時期。1625年,號稱“北方颶風”的瑞典國王古斯塔夫斯阿道弗斯(Gustavs Adolphus)決心建造一艘史無前例的巨型新戰(zhàn)艦瓦薩(Vasa)戰(zhàn)艦。瓦薩戰(zhàn)艦確實是一艘令人望而生畏的戰(zhàn)艦:艦長70米,載員300人,在三層的甲板上共裝有64門重炮,火力之強讓人難以置信。,2020年7月21日1時20分,25,,1628年8月10日,這艘巨大的戰(zhàn)艦終于完工。在斯德哥爾摩,瓦薩戰(zhàn)艦舉行了盛大的下水典禮。禮炮聲中,戰(zhàn)艦揚帆起航,乘風前進。在1萬多名圍觀者的目光
9、注視下,忽然,瓦薩號奇怪地搖晃了一下,便向左舷傾斜。海水從炮孔處涌入船艙,戰(zhàn)艦迅速翻入水中,幾分鐘后,這艘雄偉戰(zhàn)艦的處女航也是唯一的一次航行結束了。瓦薩戰(zhàn)艦在它壯麗的起航時刻,帶著全身飄揚的彩旗,沉沒于它誕生的港口。,2020年7月21日1時20分,26,,人們對瓦薩的沉沒做出了各種各樣的分析,最后的主要結論是:該艦制造工藝精良,但“比例嚴重失調(diào)”,也就是說,該戰(zhàn)艦的架構存在缺陷。瓦薩的沉沒早已成為往事。然而,300多年后的今天,在企業(yè)信息系統(tǒng)領域,類似“瓦薩”這樣的故事卻比比皆是。處在工業(yè)高度發(fā)達的今天,在機械、電子、建筑、車船制造等各個領域,作為學科和工業(yè)的基石“架構體系”早已形成完整的理
10、論和方法體系,但是,與這些成熟的工業(yè)領域相比,與企業(yè)信息系統(tǒng)相關的架構體系,幾乎還處在原始和蒙昧的狀態(tài)。,2020年7月21日1時20分,27,理解架構:瓦薩戰(zhàn)艦的故事,1625年,瑞典國王古斯塔夫斯阿道弗斯(Gustavs Adolphus)決心建造一艘史無前例的巨型新戰(zhàn)艦 瓦薩(Vasa)戰(zhàn)艦。 瓦薩戰(zhàn)艦確實是一艘令人望而生畏的戰(zhàn)艦:艦長70米,載員300人,在三層的甲板上共裝有64門重炮,火力超強。,2020年7月21日1時20分,28,瓦薩戰(zhàn)艦的處女航,1628年8月10日,這艘巨大的戰(zhàn)艦終于完工。在斯德哥爾摩的王宮前,瓦薩戰(zhàn)艦舉行了盛大的下水典禮。 在1萬多名圍觀者的目光注視下,忽
11、然,瓦薩號奇怪地搖晃了一下,便向左舷傾斜。海水涌入船艙,戰(zhàn)艦迅速翻入水中。幾分鐘后,這艘雄偉戰(zhàn)艦的處女航也是唯一的一次航行結束了。瓦薩戰(zhàn)艦在它壯麗的起航時刻,帶著全身飄揚的彩旗,沉沒于它誕生的港口。,2020年7月21日1時20分,29,瓦薩戰(zhàn)艦為什么沉沒?,人們對瓦薩的沉沒做出了分析,最后的主要結論是: 該艦制造工藝精良,但“比例嚴重失調(diào)”,也就是說,該戰(zhàn)艦的架構存在缺陷。,2020年7月21日1時20分,30,信息系統(tǒng)的“瓦薩”問題,同樣,在今天的企事業(yè)信息系統(tǒng)領域,“瓦薩”問題“架構”成為需要解決的關鍵問題。,2020年7月21日1時20分,31,,2020年7月21日1時20分,32,
12、技術環(huán)境,技術環(huán)境可以看作是對構架師素質(zhì)和經(jīng)驗的特殊反映 代表某個時代的構架師的普遍素質(zhì)和經(jīng)驗 比如:在當今的技術環(huán)境下,如果構架師對信息系統(tǒng)的設計不考慮使用基于WEB的,面向?qū)ο蟮暮椭С种虚g件的方法是很難想像的,2020年7月21日1時20分,33,2020年7月21日1時20分,34,構架所受的影響,,,,,,,,,,,,構架師所受的影響,涉眾,開發(fā)組織,需求(質(zhì)量屬性),構架師(小組),構架,系統(tǒng),構架師的經(jīng)驗,2020年7月21日1時20分,35,構架商業(yè)周期(ABC),,,,,,,,,,,,構架師所受的影響,涉眾,開發(fā)組織,需求(質(zhì)量屬性),構架師(小組),構架,系統(tǒng),構架師的經(jīng)驗,
13、2020年7月21日1時20分,36,ABC構架的反影響力,構架會影響開發(fā)組織的結構 構架會影響開發(fā)組織的目標 構架會影響客戶對一個系統(tǒng)的要求 構建系統(tǒng)的過程豐富了整個開發(fā)團隊的經(jīng)驗,從而將影響設計師對后繼系統(tǒng)的設計 一些系統(tǒng)會影響并實際改變軟件工程的環(huán)境,也就是系統(tǒng)開發(fā)人員學習或?qū)嵺`的技術環(huán)境,2020年7月21日1時20分,37,2020年7月21日1時20分,38,2020年7月21日1時20分,39,2020年7月21日1時20分,40,Data Banker,2020年7月21日1時20分,41,2020年7月21日1時20分,42,第二章 什么是軟件構架,,2020年7月21日1時
14、20分,43,構架概念的澄清,控制處理(CP),特征損失模型 (MODP),回響模型 (MODR),噪音模型 (MODN),,,,,,這是一個構架(描述)嗎?,水下聲學模擬系統(tǒng),2020年7月21日1時20分,44,構架定義,Len Bass, Paul Clements等人對構架所做的定義: 某一個軟件或計算系統(tǒng)的軟件構架是該系統(tǒng)的一個或多個結構,它由軟件元素、這些元素的外觀可見屬性以及這些元素之間的關系組成。,2020年7月21日1時20分,45,構架含義(1),1.構架定義了 軟件元素 構架必須省略元素中與其交互無關的某些信息 接口VS.內(nèi)部實現(xiàn) 2.系統(tǒng)可能而且確實由多個結構組成 其中
15、任何一個結構并不能與構架等同 結構的多重性是理解軟件構架的關鍵,2020年7月21日1時20分,46,構架的含義(2),3.具有軟件的每個計算系統(tǒng)都有一個軟件構架 每個軟件系統(tǒng)都可以看成由若干個元素及其相互聯(lián)系構成 系統(tǒng)構架VS.構架描述 4.如果某個元素的行為可以從其它元素的角度觀察到,這個元素的行為就是構架的內(nèi)容 這種行為使各元素的交互成為可能,是構架的一部分 5.構架的存在與構架的優(yōu)劣無關,2020年7月21日1時20分,47,構架的其他定義,構架是一種高層設計 構架是系統(tǒng)的總體結構 構架是以組件、組件之間的關系、組件與環(huán)境之間的關系為內(nèi)容的某一系統(tǒng)的基本組織結構以及指導上述內(nèi)容設計與演
16、化的原理 構架是組件和連接器,2020年7月21日1時20分,48,構架模式、參考模型和參考構架,構架模式是對元素和關系類型以及一組對其使用方式的限制的描述 參考模型是一種考慮數(shù)據(jù)流的功能劃分 參考架構是映射到軟件元素(它們相互使用,共同實現(xiàn)在參考模型中的定義的功能)及元素之間數(shù)據(jù)流上的參考模型 (這些都是理解架構中的元素的一些有用的概念),2020年7月21日1時20分,49,2020年7月21日1時20分,50,構架模式、參考模型和參考構架的關系,參考模型,構架模式,參考構架,軟件構架,,,,2020年7月21日1時20分,51,軟件構架的作用,涉眾之間的交流 代碼級別的系統(tǒng)抽象程序員的交
17、流工具 構架級別的系統(tǒng)的抽象包括程序員在內(nèi)的絕大多數(shù)系統(tǒng)涉眾都借助軟件體系結構來進行彼此理解、協(xié)商、達成共識或者相互溝通的基礎。 系統(tǒng)設計的前期決策 軟件構架是我們所開發(fā)的軟件系統(tǒng)最早期設計決策的體現(xiàn),它們對軟件系統(tǒng)的后續(xù)開發(fā)、部署和維護具有相當重要的影響。 構架設計是能夠?qū)λ_發(fā)系統(tǒng)進行分析的最早時間點。 可傳遞的系統(tǒng)級抽象 軟件構架是關于系統(tǒng)構造以及系統(tǒng)各個元素工作機制的相對較小、卻又能夠突出反映問題的模型。 這種模型可以在多個系統(tǒng)之間傳遞,特別是可以應用到具有相似質(zhì)量屬性和功能需求的系統(tǒng)中,并能夠促進大規(guī)模軟件的系統(tǒng)級復用。,2020年7月21日1時20分,52,2. What is Software Architecture,ANSI/IEEE Std 1471-2000, Recommended Practice for Architectural Description,2020年7月21日1時20分,53,Architecture metamodel,,2020年7月21日1時20分,54,