《軟件體系結構1第1章軟件體系結構概述》由會員分享,可在線閱讀,更多相關《軟件體系結構1第1章軟件體系結構概述(72頁珍藏版)》請在裝配圖網上搜索。
1、第 1章 軟件體系結構概述 劉 偉 (Sunny Liu) weiliu_ 教學內容 引言 軟件體系結構的意義 軟件體系結構的定義 軟件體系結構的發(fā)展 軟件體系結構的優(yōu)勢 教材 教材 參考資料 軟件架構 參考資料 設計模式 教學內容 引言 軟件體系結構的意義 軟件體系結構的定義 軟件體系結構的發(fā)展 軟件體系結構的優(yōu)勢 引言 三個小故事 故事一: 做“俯臥撐”的 大樓 故事二: 著名的美國塔科 馬海峽大橋 故事三: 瓦薩戰(zhàn)艦 引言 做“俯臥撐”的大樓 引言 做“俯臥撐”的大樓 引言 做“俯臥撐”的大樓 根據上海市政府公布的調查結果,房屋傾倒的主要原因是緊貼 7號 樓北側在短期內堆土過高,最高處達
2、 10米左右。與此同時,緊臨 大樓南側的地下車庫基坑正在開挖,開挖深度達 4.6米。 大樓兩側 的壓力差使土體產生水平位移,過大的水平力超過了樁基的抗側能 力,導致房屋傾倒。 ( 山寨版原因之一: 此棟樓房系自殺,原因是 房價太高,自愧不值,畏罪自殺 。 ) 引言 著名的美國塔科馬海峽大橋 (Tacoma Narrows Bridge) 引言 著名的美國塔科馬海峽大橋 (Tacoma Narrows Bridge) 引言 著名的美國塔科馬海峽大橋 (Tacoma Narrows Bridge) 1940年 7月 1日通車 的塔科馬海峽大橋是一座主跨 853米的懸索橋, 橋梁長度 1524米,橋
3、下通航凈高 59.40米, 1940年 11月 7日上午 11點 15分(美國太平洋時間),戲劇性地被海風摧毀而坍塌,可 憐的小狗 Tubby隨之一同掉落進普及特海峽,成為這次事故的唯一 遇難者,后人稱之為“ 橋梁建筑史上的珍珠港 ”。對普及特海峽來 說,倒塌的大橋也成為了世界上最大的人造礁石之一。 1940年 11 月 28日,美國海軍的水文辦公室報告稱,橋梁遺骸的地理坐標是 ( 47.1600N, 122.3300W),深度 180英尺( 55 m)。 引言 著名的美國塔科馬海峽大橋 (Tacoma Narrows Bridge) 從 20世紀 40年代后期開始,圍繞塔科馬海峽大橋風毀事故
4、的原因 后人進行了大量的分析與試驗研究。橋梁界最后給出的正式結論是 震撼而有深遠借鑒意義的:“ 塔科馬大橋使用了嶄新而沒有經過驗 證的橋梁設計結構,使大橋建成后毀于風力造成的風振。 ” 由于 橋梁設計(換成 IT界的話來講,就是 橋梁的架構 )的原因,導致了 這樣慘痛的工程失敗。 故事是令人震撼的,背后的教訓也是深刻的。雖然后續(xù)橋梁工程實 施的質量無可挑剔,但正是橋梁設計使用了全新的架構,并且該架 構沒有經過實踐的檢驗,從而導致最終橋梁崩潰性災難的發(fā)生。 人 類所有工程領域的進步都是建立在這樣一系列失敗的基礎之上,并 逐漸走向成熟和成功。 引言 瓦薩戰(zhàn)艦 引言 瓦薩戰(zhàn)艦 “瓦薩”號戰(zhàn)艦是現存最
5、古老的戰(zhàn) 艦殘骸之一 ,也是 世界上第一批風 帆炮艦和當時世界最大的炮艦 。它 在處女航中離岸 10多分鐘 就沉沒了, 其終點是水下 30米,當時船上 150 人中有數十人喪生。直到 300多年 后,它才被打撈上岸。 1628年 8月 10日,斯德哥爾摩碼頭 人頭攢動,人們都在焦急地等待, 翹首企盼著堪稱世界最頂級的“瓦 薩”號戰(zhàn)艦。 引言 瓦薩戰(zhàn)艦 “瓦薩”號首航僅僅 10多分鐘就結 束了。其建造過程中埋下的很多隱 患: 安臵太多重炮卻沒有足夠的壓 艙物,導致戰(zhàn)艦重心過高;首航前 沒有經過嚴格測試 等等,都是“瓦 薩”號沉沒的罪魁。但因為一切都 是依照國王的要求建造的,所以, 這個轟動一時的
6、沉船事件最后也就 不了了之。 引言 瓦薩戰(zhàn)艦 瓦薩戰(zhàn)艦的故事雖然發(fā)生在 370多年前,但卻 很好地說明了軟件架構的重要性: 系統(tǒng)需求來 自于企業(yè)目標,架構來自于系統(tǒng)需求,系統(tǒng)來 自于架構 。 構架與設計師的經驗、當時的技術水平有著密 切的聯系。 瓦薩戰(zhàn)艦的設計師 Henrik Hybertsson雖然是當時享有盛譽的知名設計 師,但是無論從他本人的經驗(從未設計過類 似規(guī)模的戰(zhàn)艦)還是當時的技術水平來看,都 不具備相應的條件。 引言 看一組數字 引言 建筑行業(yè) 華盛頓州立大學計算機系某項目 延誤幾個月且超支 2050萬美 元 (計算機科學與工程大樓建設項目 不是軟件項目, Sanchez 19
7、98) 西雅圖水手隊棒球館 1995年估算成本 2億 5千萬美元 ,它最后 建成于 1999年,耗資 5億 1700萬美元 ( Withers 1999) 波士頓 Big Dig公路(美國歷史上最昂貴的公路項目)建造項目, 最初估算成本為 26億美元 ,最終成本總計超過 150億美元 ( Associated Press 2003) 引言 軟件行業(yè) 愛爾蘭人力資源管理系統(tǒng)( Personnel Payroll and Related Systems, PPARS) 最初的預算為 880萬 歐元 ,在成本超支達 到 1億 4千萬歐元 后被取消( The Irish Times 2005) 美國聯
8、邦調查局 (FBI)虛擬案件檔案 (Virtual Case File, VCF)系 統(tǒng) 在花費了 1億 7千萬美元 卻只交付了 1/10的計劃功能的情況 下被擱臵 (Arnone 2005),該項目更換了 5任信息總監(jiān)和 10位項 目經理,合同變更 36次( Knorr 2005) 教學內容 引言 軟件體系結構的意義 軟件體系結構的定義 軟件體系結構的發(fā)展 軟件體系結構的優(yōu)勢 軟件體系結構的意義 簡單 VS復雜 隱藏在簡單背后的復雜 軟件體系結構的意義 曲線一 全球 IT從業(yè)人員數量 Nu m be r o f I T pr o f e s s i o n a l s w o r l dw
9、i de y = - 1 2 8 . 4 7 x 3 + 1 2 8 0 0 x 2 - 5 9 2 9 4 x + 1 4 6 6 2 3 0 2 , 0 0 0 , 0 0 0 4 , 0 0 0 , 0 0 0 6 , 0 0 0 , 0 0 0 8 , 0 0 0 , 0 0 0 1 0 , 0 0 0 , 0 0 0 1 2 , 0 0 0 , 0 0 0 1 4 , 0 0 0 , 0 0 0 1 6 , 0 0 0 , 0 0 0 1 9 4 5 1 9 4 8 1 9 5 1 1 9 5 4 1 9 5 7 1 9 6 0 1 9 6 3 1 9 6 6 1 9 6 9 1 9
10、 7 2 1 9 7 5 1 9 7 8 1 9 8 1 1 9 8 4 1 9 8 7 1 9 9 0 1 9 9 3 1 9 9 6 1 9 9 9 2 0 0 2 2 0 0 5 Nu m be r o f I T pr o f e s s i o n a l s w o r l dw i de ( a s s u m pt i o n s ) P o l y . ( Nu m be r o f I T pr o f e s s i o n a l s w o r l dw i de ( a s s u m pt i o n s ) ) 軟件體系結構的意義 曲線二 每年新產生或修改的源代
11、碼行數(開發(fā) /累積) Ne w o r m o di f i e d s o u r c e l i n e s o f c o de pe r y e a r pe r de v e l o pe r changing them will have significant ripple effects. 軟件體系結構的定義 定義 * SEI軟件體系結構討論群定義如下: 一個程序 /系統(tǒng)構件 的結構,它們之間的相互關系, 以及在設計和交付的整 個過程中的原則和指導方針 。 一般來說,軟件體系結構定義需要考慮到 系統(tǒng)中的構件 及其它們之間的相互作用 。 軟件體系結構的定義 定義 Kruchte
12、n指出,軟件體系結構具有四個角度,它們從 不同方面對系統(tǒng)進行描述,其中 概念角度 描述系統(tǒng)的主 要構件及它們之間的關系; 模塊角度 包含功能分解與層 次結構; 運行角度 描述了一個系統(tǒng)的動態(tài)結構; 代碼角 度 描述了各種代碼和庫函數在開發(fā)環(huán)境中的組織。 軟件體系結構的定義 定義 David Garlan和 Dewne Perry于 1995年在 IEEE軟件 工程學報上采用如下的定義: 軟件體系結構是一個程序 /系統(tǒng)各構件的結構、它們之間的相互關系以及進行設 計的原則和隨時間進化的指導方針 。 軟件體系結構的定義 定義 Barry Boehm和他的學生提出, 一個軟件體系結構包 括一個軟件和系
13、統(tǒng)構件,互聯及約束的集合 ;一個系統(tǒng) 需求說明的集合;一個基本原理用以說明這一構件,互 聯和約束能夠滿足系統(tǒng)需求。 軟件體系結構的定義 定義 1997年, Bass, Ctements和 Kazman在 實用軟件 體系結構 一書中給出如下的定義: 一個程序或計算機 系統(tǒng)的軟件體系結構包括一個或一組軟件構件、軟件構 件的外部的可見特性及其相互關系 。其中,“軟件外部 的可見特性”是指軟件構件提供的服務、性能、特性、 錯誤處理、共享資源使用等。 軟件體系結構的定義 定義 * Mary Shaw和 David Garlan認為 軟件體系結構包括構 成系統(tǒng)的設計元素的描述,設計元素的交互,設計元素 組
14、合的模式,以及在這些模式中的約束 。 軟件體系結構包括 構件 (Component)、 連接件 (Connector)和 約束 (Constrain)或 配臵 (Configuration)三大要素。 軟件體系結構的定義 定義 Mary Shaw和 David Garlan Professor of Computer Science at Carnegie Mellon University Professor of Computer Science at Carnegie Mellon University 軟件體系結構的定義 定義 軟件體系結構的定義 定義 * 國內普遍接受的定義:軟件體系
15、結構包括 構件、連接件 和約束 ,它是 可預制 和 可重構 的軟件框架結構。 構件 是可預制和可重用的軟件部件,是組成體系結構的基 本計算單元或數據存儲單元 連接件 也是可預制和可重用的軟件部件,是構件之間的連 接單元 構件和連接件之間的關系用 約束 來描述 軟件體系結構 = 構件 + 連接件 + 約束 軟件體系結構的定義 構件 構件是 指一個計算單元或者數據存儲單元,可以是一個 處理過程或數據元素 。 構件是用于實現計算和狀態(tài)的單元 ,可以工作在:客戶 端、服務器端、數據庫或層等。 構件可簡單可復雜:復雜構件描述一個系統(tǒng),一個體系 結構由一些描述系統(tǒng)的復雜構件組成。 軟件體系結構的定義 連接
16、件 連接件是體系結構的一個元素,它可以用于建模: 構件之間的相互作用 控制這些相互作用的規(guī)則 簡單相互作用: 過程的調用 訪問共享變量 復雜和語義相關的相互作用: 客戶端 -服務器協(xié)議 數據庫訪問協(xié)議 異步事件的多點傳送 管道數據流 軟件體系結構的定義 約束 約束描述了體系結構的配臵和拓撲要求,配臵或拓撲是指構 件和連接件組成的一個連接圖,它用于描述軟件體系結構的 構成,確定了體系結構的構件與連接件之間的連接關系 : 正確的連接性 并發(fā)和分布性 符合設計的啟發(fā)式和風格規(guī)則 教學內容 引言 軟件體系結構的意義 軟件體系結構的定義 軟件體系結構的發(fā)展 軟件體系結構的優(yōu)勢 軟件體系結構的發(fā)展 建筑架
17、構的發(fā)展 基礎研究階段 軟件體系結構的發(fā)展 軟件架構的發(fā)展 基礎研究階段 1985年 -1994年 軟件系統(tǒng)的設計人員習慣使用一些沒有統(tǒng)一格式和語義的圖形來描述系統(tǒng) 的結構。雖然描述的是各自負責的不同類型的系統(tǒng),但在 描述風格和手段 方面卻有著很多共性 ,不同系統(tǒng)之間也有著很多 設計手段或風格上的共性 。 一些重要的基本思想和基礎概念開始浮出水面:數據 /信息隱藏和封裝、 抽象數據類型、 面向對象軟件設計與開發(fā) 等 開始嘗試一些為了解決 特定行業(yè) 、 特定問題 所采用的具有明顯針對性的設 計手段和設計結構。 試圖識別出通用的 體系結構風格 和設計方式,嘗試找到和應用一些通用的 方法來描述不同類
18、型的系統(tǒng)結構 軟件體系結構的發(fā)展 建筑架構的發(fā)展 概念確立階段 軟件體系結構的發(fā)展 軟件架構的發(fā)展 概念確立階段 1992年 -1996年 設計模式 軟件體系結構(架構)基本概念和模型的確立 體系結構描述語言( ADL) 的發(fā)展 體系結構表述及分析規(guī)則的制定 體系結構 元素及風格 的分類研究 體系結構 評估方法 (如 SAAM等) 架構視圖 ( 4+1視圖) 軟件體系結構的發(fā)展 建筑架構的發(fā)展 探索發(fā)展階段 軟件體系結構的發(fā)展 軟件架構的發(fā)展 探索發(fā)展階段 1995年 -2000年 1995年 IEEE專門針對軟件體系結構的特刊 1997年, ACME體系結構交互語言 ,為不同體系結構描述語言
19、之 間的交互提供一個統(tǒng)一的平臺 1998年,軟件體系結構工作會議 WICSA (Working IEEE/IFIP Conference on Software Architecture) 2000年,軟件架構的路線圖 架構模式 與設計模式 軟件體系結構的發(fā)展 軟件架構的發(fā)展 探索發(fā)展階段 體系結構評估方法的發(fā)展: SAAMATAM 經驗和成果開始在工業(yè)界大規(guī)模應用,如 Raytheon公司的 REAP (Raytheon Enterprise Architecture Process) UML (Unified Modeling Language)的發(fā)展 RUP (Rational Unif
20、ied Process) 面向對象軟件架構框架 (Architecture Framework)或架構平臺 (Architecture Platform): Sun的 Java EE和 Microsoft的 .net Framework 特定領域 的體系結構 基于構件 的軟件體系結構 軟件體系結構的發(fā)展 建筑架構的發(fā)展 普及應用階段 軟件體系結構的發(fā)展 軟件架構的發(fā)展 普及應用階段 2000年至今 新架構風格: N層的 C/S架構、 B/S架構、基于代理的架構、 SOA等 Web Service OMG提出: MDA (Model Driven Architecture) 軟件架構師 (Sof
21、tware Architect):比爾 .蓋茨(微軟首席架構師) 越來越多的軟件架構國際性會議召開( 2005年, SEI舉辦的一系列會議增 加了 25個與軟件架構相關的會議),越來越多的架構技術人員參與 美國大學 2000年、中國大學 2001年開始, 軟件體系結構進入本科教育 2004年秋天, IEEE和 ACM聯合提出 軟件工程大學本科教育指南 ,軟 件體系結構占軟件設計的內容的 20%。 軟件體系結構的發(fā)展 軟件架構的發(fā)展 普及應用階段 微軟前首席軟件架構師雷 奧茲 PHP之父、雅虎架構師 Rasmus Lerdorf 軟件體系結構的發(fā)展 軟件架構的發(fā)展 普及應用階段 教學內容 引言
22、軟件體系結構的意義 軟件體系結構的定義 軟件體系結構的發(fā)展 軟件體系結構的優(yōu)勢 軟件體系結構的優(yōu)勢 實例 軟件體系結構的優(yōu)勢 容易理解 它從一個 高層設計的抽象層次 來表征一個系統(tǒng) 簡化了 我們理解龐大系統(tǒng)的能力 重用 重用大的構件 重用一些集成構件的框架 特定領域的軟件體系結構 設計模式 軟件體系結構的優(yōu)勢 控制成本 系統(tǒng)維護者可以更好的理解變更帶來的影響,因而可以 更加精確的估算變更所需的成本 軟件體系結構的優(yōu)勢 可分析性 對系統(tǒng)的一致性檢查提供高層次的視圖 研究系統(tǒng)是否與某種體系結構風格相符合 對符合特定風格的特定領域系統(tǒng)的體系結構分析 分析依賴于其中的構件 軟件體系結構的優(yōu)勢 軟件體系結構的優(yōu)勢 http:/ eeles/ http:/www.sei.cmu.edu/architecture/ http:/en.wikipedia.org/wiki/Software_architecture http:/ http:/www.ics.uci.edu/fielding/pubs/dissertation/software _arch.htm 參考資料 END