體系結(jié)構(gòu)第1章認(rèn)識體系結(jié)構(gòu)ppt課件
《體系結(jié)構(gòu)第1章認(rèn)識體系結(jié)構(gòu)ppt課件》由會員分享,可在線閱讀,更多相關(guān)《體系結(jié)構(gòu)第1章認(rèn)識體系結(jié)構(gòu)ppt課件(86頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
軟件體系結(jié)構(gòu),1,第1章 軟件體系結(jié)構(gòu)概論,從軟件危機(jī)談起 ◎ 軟件成本日益增長 ◎ 開發(fā)進(jìn)度難以控制 ◎ 軟件質(zhì)量差 ◎ 軟件維護(hù)困難,2,,軟件成本日益增長 20世紀(jì)50年代,軟件成本在整個(gè)計(jì)算機(jī)系統(tǒng)成本中所占的比例為10%-20%。到20世紀(jì)60年代中期,軟件成本在計(jì)算機(jī)系統(tǒng)中所占的比例已經(jīng)增長到50%左右。 而且,該數(shù)字還在不斷地遞增,下面是一組來自美國空軍計(jì)算機(jī)系統(tǒng)的數(shù)據(jù):1955年,軟件費(fèi)用約占總費(fèi)用的18%,1970年達(dá)到60%,1975年達(dá)到72%,1980年達(dá)到80%,1985年達(dá)到85%左右。,3,,開發(fā)進(jìn)度難以控制 由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。 在軟件開發(fā)過程中,用戶需求變化等各種意想不到的情況層出不窮,令軟件開發(fā)過程很難保證按預(yù)定的計(jì)劃實(shí)現(xiàn),給項(xiàng)目計(jì)劃和論證工作帶來了很大的困難。 盲目增加軟件開發(fā)人員并不能成比例地提高軟件開發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問題將更為嚴(yán)重。,4,,軟件質(zhì)量差 軟件項(xiàng)目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。1965年至1970年,美國范登堡基地發(fā)射火箭多次失敗,絕大部分故障是由應(yīng)用程序錯(cuò)誤造成的。 在“軟件作坊”里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對軟件的需求,軟件設(shè)計(jì)帶有隨意性,很多功能只是程序員的“一廂情愿”而已,這是造成軟件不能令人滿意的重要因素。,5,,軟件維護(hù)困難 由于在軟件設(shè)計(jì)和開發(fā)過程中,沒有嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的真實(shí)反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。 特別是在軟件使用過程中,原來的開發(fā)人員可能因各種原因已經(jīng)離開原來的開發(fā)組織,使得軟件幾乎不可維護(hù)。 有資料表明,工業(yè)界為維護(hù)軟件支付的費(fèi)用占全部硬件和軟件費(fèi)用的40%-75%。,6,軟件危機(jī)的原因,用戶需求不明確 缺乏正確的理論指導(dǎo) 軟件規(guī)模越來越大 軟件復(fù)雜度越來越高,7,,用戶需求不明確 在軟件開發(fā)完成之前,用戶不清楚軟件的具體需求; 用戶對軟件需求的描述不精確,可能有遺漏、有二義性、甚至有錯(cuò)誤; 在軟件開發(fā)過程中,用戶還提出修改軟件功能、界面、支撐環(huán)境等方面的要求; 開發(fā)人員對用戶需求的理解與用戶本來愿望有差異。,8,,缺乏正確的理論指導(dǎo) 缺乏有力的方法學(xué)和工具方面的支持。由于軟件不同于大多數(shù)其他工業(yè)產(chǎn)品,其開發(fā)過程是復(fù)雜的邏輯思維過程,其產(chǎn)品極大程度地依賴于開發(fā)人員高度的智力投入。由于過分地依靠程序設(shè)計(jì)人員在軟件開發(fā)過程中的技巧和創(chuàng)造性,加劇軟件產(chǎn)品的個(gè)性化,也是發(fā)生軟件危機(jī)的一個(gè)重要原因。,9,,軟件規(guī)模越來越大 隨著軟件應(yīng)用范圍的增廣,軟件規(guī)模愈來愈大。大型軟件項(xiàng)目需要組織一定的人力共同完成,而多數(shù)管理人員缺乏開發(fā)大型軟件系統(tǒng)的經(jīng)驗(yàn),而多數(shù)軟件開發(fā)人員又缺乏管理方面的經(jīng)驗(yàn)。各類人員的信息交流不及時(shí)、不準(zhǔn)確、有時(shí)還會產(chǎn)生誤解。 軟件項(xiàng)目開發(fā)人員不能有效地、獨(dú)立自主地處理大型軟件的全部關(guān)系和各個(gè)分支,因此容易產(chǎn)生疏漏和錯(cuò)誤。,10,,軟件復(fù)雜度越來越高 軟件不僅僅是在規(guī)模上快速地發(fā)展擴(kuò)大,而且其復(fù)雜性也急劇地增加。軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無力處理“復(fù)雜問題”。 所謂“復(fù)雜問題”的概念是相對的,一旦人們采用先進(jìn)的組織形式、開發(fā)方法和工具提高了軟件開發(fā)效率和能力,新的、更大的、更復(fù)雜的問題又?jǐn)[在人們的面前。,11,如何克服軟件危機(jī),人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必然導(dǎo)致失敗 。 要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。 在技術(shù)上,應(yīng)該采用基于重用的軟件生產(chǎn)技術(shù);在管理上,應(yīng)該采用多維的工程管理模式。,12,“建筑體系結(jié)構(gòu)”,13,前言 體系結(jié)構(gòu)簡稱架構(gòu)或構(gòu)架。 構(gòu):本義架木造屋,引申為構(gòu)造 構(gòu)架:建筑的結(jié)構(gòu) 結(jié):用繩、線、皮條等綰成的疙瘩;關(guān)鍵點(diǎn);被聯(lián)結(jié)狀態(tài) 結(jié)構(gòu):組成整體的各部分的搭配和安排 對住房的功能需求:能夠居住。 對住房的質(zhì)量需求: 安全性:能避免地震、臺風(fēng)、暴雨等各種自然災(zāi)害。 居住者在建筑內(nèi)的健康性,舒適性。 美觀性:有親和感,社會文化的體現(xiàn)。 不同住房具有相同的功能,但其架構(gòu)不同,所滿足的居住質(zhì)量也不相同。,14,人類最早的居住方式:巢居和穴居,炎熱或高海拔地區(qū)的穴居方式,可獲得相對穩(wěn)定的室內(nèi)熱環(huán)境,頂部的天窗既可采光又可排煙。,15,愛斯基摩雪屋的外觀和室內(nèi)布置,用干雪沏成,厚度500mm的墻體可以提供較好的保溫性能。當(dāng)室外平均溫度-30℃時(shí)可維持室內(nèi)溫度-5℃以上。,16,大陸氣候的中國民居,土窯洞借助土壤大熱慣性,達(dá)到冬暖夏涼的目的。,17,利用太陽高度角的特點(diǎn),僅在北方出現(xiàn)。 四合院建筑冬季有效地利用了太陽能采暖和抵御北風(fēng)侵襲,屋頂設(shè)計(jì)避免了夏季室內(nèi)過熱。,中國四合院:座北朝南的典范,18,濕熱地區(qū)的中國民居,云南干闌竹樓:防雨,防濕和防熱。,19,地球環(huán)境還可持續(xù)發(fā)展嗎?,? 遍布全球的玻璃和鋼筋盒子建筑,空調(diào)的普及使人們不再關(guān)心建筑的冷暖,但高能耗又使環(huán)境受到影響。,20,為什么研究軟件架構(gòu)? 思想有多遠(yuǎn),我們就能走多遠(yuǎn) 高度決定思路,思路決定出路 系統(tǒng)的建立是為了滿足組織的需求(包括功能和質(zhì)量),質(zhì)量需求決定了系統(tǒng)必須達(dá)到的特征, 包括性能, 可靠性, 互操作性以及生命周期等。隨著軟件系統(tǒng)的日益復(fù)雜,涉眾對軟件的要求已不局限于功能上的滿足,而是更加注重質(zhì)量。 很少有人注意到組織(開發(fā)組織、客戶等)在系統(tǒng)設(shè)計(jì)和系統(tǒng)成敗上扮演的角色。 系統(tǒng)的質(zhì)量特征受到軟件架構(gòu)的限制,或者說構(gòu)架設(shè)計(jì)的選擇受到要達(dá)到的質(zhì)量特征的影響。,21,,本課程的目的:對軟件體系結(jié)構(gòu)的產(chǎn)生、演化做通俗介紹,減少對軟件體系結(jié)構(gòu)認(rèn)識的神秘感,對軟件體系結(jié)構(gòu)設(shè)計(jì)提供實(shí)用的指導(dǎo)。,22,,第1部分: 軟件構(gòu)架的基礎(chǔ) 第2部分: 構(gòu)架的創(chuàng)建 第3部分: 構(gòu)架的分析與評審,23,,課程形式 理論課、專題課、作業(yè) 成績評定 作業(yè)、考勤、考試 作業(yè) +考勤 30%、考試 70%,24,軟件架構(gòu)的概念,25,軟件架構(gòu)—在一定的設(shè)計(jì)原則基礎(chǔ)上,從不同角度對組成系統(tǒng)的各部分進(jìn)行搭配和安排,形成系統(tǒng)的多個(gè)結(jié)構(gòu)而組成架構(gòu),它包括該系統(tǒng)的各個(gè)組件、組件的外部可見屬性及相互關(guān)系。 外部可見屬性—指其它組件可對該組件所做的假設(shè),如該組件提供的服務(wù)、具備的性能特征、錯(cuò)誤處理、共享資源的使用。 為什么設(shè)計(jì)原則是架構(gòu)的一部分? 做事先做人 很多人不懂或不遵守走路的規(guī)則,結(jié)果丟掉性命 很多人不遵守開車的規(guī)則,結(jié)果造成嚴(yán)重交通事故 同樣,不遵循架構(gòu)設(shè)計(jì)的原則,架構(gòu)也容易失敗。,軟件架構(gòu)的定義,26,架構(gòu)定義可以從下面六個(gè)方面來理解: 架構(gòu)應(yīng)建立在一定的設(shè)計(jì)原則之上,否則很容易失敗。 系統(tǒng)可能由多個(gè)結(jié)構(gòu)組成,其中任何一個(gè)結(jié)構(gòu)都不能與構(gòu)架等同。 每個(gè)軟件系統(tǒng)都有自己的架構(gòu)。 軟件架構(gòu)決定了各個(gè)組件。 只要某個(gè)組件的行為可以從其它組件的角度觀察到或區(qū)別開,這樣的行為就是軟件架構(gòu)的內(nèi)容。 軟件架構(gòu)是抽象的,它不考慮實(shí)現(xiàn)、算法和數(shù)據(jù)表示的細(xì)節(jié),而集中研究“黑盒”組件的行為和交互,是設(shè)計(jì)第一步。,27,其它觀點(diǎn),觀點(diǎn)1 軟件架構(gòu)是高層次的設(shè)計(jì) 觀點(diǎn)2 軟件架構(gòu)是軟件系統(tǒng)的總體結(jié)構(gòu) 觀點(diǎn)3 IEEE的定義:軟件架構(gòu)是一個(gè)程序或系統(tǒng)的組件結(jié)構(gòu)、組件之間的相互聯(lián)系及支配組件設(shè)計(jì)和進(jìn)化的指導(dǎo)原則 觀點(diǎn)4 Perry和Wo1f提出:軟件架構(gòu)是具有一定形式的結(jié)構(gòu)化元素,包括處理元素、數(shù)據(jù)元素和連接元素。處理元素負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)元素是被加工的信息,連接元素把架構(gòu)的不同部分組合連接起來。,28,觀點(diǎn)5 Mary Shaw和David Garlan認(rèn)為軟件體系結(jié)構(gòu)是軟件設(shè)計(jì)過程中的一個(gè)層次,這一層次超越計(jì)算過程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)問題包括總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取,給設(shè)計(jì)元素分配特定功能,設(shè)計(jì)元素的組織,規(guī)模和性能,在各設(shè)計(jì)方案間進(jìn)行選擇等。軟件體系結(jié)構(gòu)處理算法與數(shù)據(jù)結(jié)構(gòu)之上關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和描述方面的一些問題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計(jì)構(gòu)件功能定義,物理分布與合成,設(shè)計(jì)方案的選擇、評估與實(shí)現(xiàn)等。 觀點(diǎn)6 Kruchten指出,軟件體系結(jié)構(gòu)有四個(gè)角度,它們從不同方面對系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運(yùn)行角度描述了一個(gè)系統(tǒng)的動態(tài)結(jié)構(gòu);代碼角度描述了各種代碼和庫函數(shù)在開發(fā)環(huán)境中的組織。,29,這些角度形成了一個(gè)“4+1”的視角模型?!?+1”模型從5個(gè)不同的視角包括邏輯視角、過程視角、物理視角、開發(fā)視角和場景視角來描述軟件體系結(jié)構(gòu)。每一個(gè)視角只關(guān)心系統(tǒng)的一個(gè)側(cè)面,5個(gè)視角結(jié)合在一起才能夠反映系統(tǒng)的軟件體系結(jié)構(gòu)的全部內(nèi)容?!?+1”模型如圖所示:,30,觀點(diǎn)7 Hayes Roth則認(rèn)為軟件架構(gòu)是一個(gè)抽象的系統(tǒng)規(guī)范,主要包括用其行為來描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系 。 觀點(diǎn)8 Barry Boehm提出,軟件架構(gòu)包括系統(tǒng)構(gòu)件,互聯(lián)及約束的集合;系統(tǒng)需求說明的集合;一個(gè)基本原理用以說明這一構(gòu)件,互聯(lián)和約束能夠滿足系統(tǒng)需求。 觀點(diǎn)9 軟件架構(gòu)為軟件系統(tǒng)提供了一個(gè)結(jié)構(gòu)、行為和屬性的高級抽象,由構(gòu)成系統(tǒng)的元素的描述、這些元素的相互作用、指導(dǎo)元素集成的模式以及這些模式的約束組成。軟件架構(gòu)不僅指定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),并且顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。,31,設(shè)計(jì)僅是系統(tǒng)功能需求分析的產(chǎn)物? 功能需求?設(shè)計(jì)?系統(tǒng)開發(fā)?,否也?。?!,2009年1月3號廣州火車站16萬張票同時(shí)出閘致系統(tǒng)癱瘓。,911中是世界貿(mào)易大廈的倒塌。,2007年1月18日,招商證券的客戶發(fā)現(xiàn),在公司進(jìn)行網(wǎng)絡(luò)交易時(shí),公司網(wǎng)站竟然無法登陸。一部分客戶轉(zhuǎn)向電話服務(wù)尋求幫助,卻發(fā)現(xiàn)電話線路出現(xiàn)同樣的阻塞。行情轉(zhuǎn)瞬即逝。擁堵是由于交易量激增,原有系統(tǒng)容量不足引起的 。,奧運(yùn)門票銷售系統(tǒng)的失敗,軟件架構(gòu)的產(chǎn)生?,32,軟件體系結(jié)構(gòu)研究的問題,結(jié)構(gòu)性問題 系統(tǒng)的組織,由哪些組件構(gòu)成 全局性的控制結(jié)構(gòu) 通訊,同步或訪問的協(xié)議 將功能分配到不同的系統(tǒng)組成部分 設(shè)計(jì)元素的組成 系統(tǒng)的物理分布 可擴(kuò)展性,性能,33,,主要內(nèi)容包括 A對系統(tǒng)組成元素的描述 B這些元素相互之間的交互 C系統(tǒng)組成的模式 D模式的約束 所以在軟件構(gòu)架中,系統(tǒng)以組件和組件之間的交互進(jìn)行定義 當(dāng)前的系統(tǒng)同時(shí)可以作為更高層設(shè)計(jì)的一個(gè)系統(tǒng)組件,34,軟件設(shè)計(jì)的層次,軟件設(shè)計(jì)可以在多個(gè)不同的層次,在每一層我們都會發(fā)現(xiàn)相應(yīng)的組件以及由這些組件組成更大的組件的組合機(jī)制. 二進(jìn)制執(zhí)行文件層 位模式 代碼層 編程語言的原語,操作符; 記錄,數(shù)組,過程; 構(gòu)架層 模塊,35,軟件體系結(jié)構(gòu)的意義,體系結(jié)構(gòu)是風(fēng)險(xiǎn)承擔(dān)者進(jìn)行交流的手段 軟件體系結(jié)構(gòu)代表了系統(tǒng)的公共的高層次的抽象。這樣,系統(tǒng)的大部分有關(guān)人員(即使不是全部)能把它作為建立一個(gè)互相理解的基礎(chǔ),形成統(tǒng)一認(rèn)識,互相交流。 體系結(jié)構(gòu)提供了一種共同語言來表達(dá)各種關(guān)注和協(xié)商,進(jìn)而對大型復(fù)雜系統(tǒng)能進(jìn)行理智的管理。這對項(xiàng)目最終的質(zhì)量和使用有極大的影響。,36,,體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn) 軟件體系結(jié)構(gòu)明確了對系統(tǒng)實(shí)現(xiàn)的約束條件 軟件體系結(jié)構(gòu)決定了開發(fā)和維護(hù)組織的組織結(jié)構(gòu) 軟件體系結(jié)構(gòu)制約著系統(tǒng)的質(zhì)量屬性 通過研究軟件體系結(jié)構(gòu)可能預(yù)測軟件的質(zhì)量 軟件體系結(jié)構(gòu)使推理和控制更改更簡單 軟件體系結(jié)構(gòu)有助于循序漸進(jìn)的原型設(shè)計(jì) 軟件體系結(jié)構(gòu)可以作為培訓(xùn)的基礎(chǔ),37,,軟件體系結(jié)構(gòu)是可傳遞和可重用的模型 軟件體系結(jié)構(gòu)級的重用意味著體系結(jié)構(gòu)的決策能在具有相似需求的多個(gè)系統(tǒng)中發(fā)生影響,這比代碼級的重用要有更大的好處。,38,軟件體系結(jié)構(gòu)的發(fā)展史,,“無體系結(jié)構(gòu)”設(shè)計(jì)階段,39,,Perry和Wolf認(rèn)為 未來的年代是研究軟件體系結(jié)構(gòu)的時(shí)代,40,軟件體系結(jié)構(gòu)的應(yīng)用現(xiàn)狀,軟件體系結(jié)構(gòu)描述語言 體系結(jié)構(gòu)描述構(gòu)造與表示 體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證 體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用 基于體系結(jié)構(gòu)的軟件開發(fā)方法 特定領(lǐng)域的體系結(jié)構(gòu)框架 軟件體系結(jié)構(gòu)支持工具 軟件產(chǎn)品線體系結(jié)構(gòu) 建立評價(jià)軟件體系結(jié)構(gòu)的方法,41,我們的目標(biāo),在軟件開發(fā)過程中使用軟件體系結(jié)構(gòu) 成為系統(tǒng)架構(gòu)師,42,系統(tǒng)架構(gòu)師,系統(tǒng)架構(gòu)師負(fù)責(zé)設(shè)計(jì)系統(tǒng)整體架構(gòu),從需求到設(shè)計(jì)的每個(gè)細(xì)節(jié)都要考慮到,把握整個(gè)項(xiàng)目,使設(shè)計(jì)的項(xiàng)目盡量效率高,開發(fā)容易,維護(hù)方便,升級簡單等。 系統(tǒng)構(gòu)架師是近幾年來在國內(nèi)外迅速成長并發(fā)展良好的一個(gè)職位。比爾? 蓋茨 (首席軟件架構(gòu)師);丁磊 (首席架構(gòu)師 ),43,,系統(tǒng)架構(gòu)師的職責(zé) l、領(lǐng)導(dǎo)與協(xié)調(diào)整個(gè)項(xiàng)目中的技術(shù)活動(分析、設(shè)計(jì)和實(shí)施等) 2、推動主要的技術(shù)決策,并最終表達(dá)為軟件構(gòu)架 3、確定和文檔化系統(tǒng)的相對構(gòu)架而言意義重大的方面,包括系統(tǒng)的需求、設(shè)計(jì)、實(shí)施和部署等“視圖” 4、確定設(shè)計(jì)元素的分組以及這些主要分組之間的接口 5、為技術(shù)決策提供規(guī)則,平衡各類涉眾的不同關(guān)注點(diǎn),化解技術(shù)風(fēng)險(xiǎn),并保證相關(guān)決定被有效的傳達(dá)和貫徹 6、理解、評價(jià)并接收系統(tǒng)需求 7、評價(jià)和確認(rèn)軟件架構(gòu)的實(shí)現(xiàn),44,,某集團(tuán)公司要開發(fā)一個(gè)網(wǎng)絡(luò)財(cái)務(wù)程序,使各地員工能在互聯(lián)網(wǎng)絡(luò)上進(jìn)行財(cái)務(wù)處理和報(bào)銷。在設(shè)計(jì)該財(cái)務(wù)程序的體系結(jié)構(gòu)時(shí),項(xiàng)目組產(chǎn)生了分歧: 張工程師認(rèn)為應(yīng)該采用客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。各分公司財(cái)務(wù)部要安裝一個(gè)軟件客戶端,通過這個(gè)客戶端連接到總公司財(cái)務(wù)部主機(jī)。如果員工在外地出差,需要報(bào)銷帳務(wù)的,也需要安裝這個(gè)客戶端才能進(jìn)行。 李工程師認(rèn)為應(yīng)該采用瀏覽器/服務(wù)器(BS)結(jié)構(gòu),各分公司及出差員工直接通過Windows操作系統(tǒng)自帶的IE瀏覽器就可以連接到總公司的財(cái)務(wù)部主機(jī)。,45,架構(gòu)受系統(tǒng)風(fēng)險(xiǎn)承擔(dān)者的影響 風(fēng)險(xiǎn)承擔(dān)者—對構(gòu)建軟件系統(tǒng)感興趣的人或組織,包括合同中的客戶、系統(tǒng)最終用戶、開發(fā)人員、開發(fā)組織、系統(tǒng)維護(hù)人員等,他們所關(guān)注的問題各不相同,但都要求系統(tǒng)在他們所關(guān)注的方面提供保證或優(yōu)化。,事物有主要矛盾和次要矛盾之分。 開發(fā)系統(tǒng)時(shí),首先要確定其軟件構(gòu)架。借助于構(gòu)架,設(shè)計(jì)師可以分析眾多風(fēng)險(xiǎn)承擔(dān)者所提出的各種要求的優(yōu)先級,并將這些要求轉(zhuǎn)化為系統(tǒng)的各個(gè)特性,再針對它們在系統(tǒng)結(jié)構(gòu)上做折衷,從而得到和諧的架構(gòu)。,46,開發(fā)組織所關(guān)心的問題不同于客戶,它對軟件構(gòu)架的影響分為3類: · 直接影響 如希望向產(chǎn)品線發(fā)展 · 長遠(yuǎn)影響 如行業(yè)布局 · 組織結(jié)構(gòu)的影響 如軟件外包 · 開發(fā)團(tuán)隊(duì)的經(jīng)驗(yàn)對設(shè)計(jì)師的影響,47,架構(gòu)受設(shè)計(jì)師的素質(zhì)和經(jīng)驗(yàn)的影響,1 熟悉.NET的設(shè)計(jì)師在設(shè)計(jì)時(shí)會考慮.NET的框架和技術(shù)。 2 熟悉J2EE的設(shè)計(jì)師在設(shè)計(jì)時(shí)會考慮J2EE的框架和技術(shù)。 3 設(shè)計(jì)師具有數(shù)據(jù)庫方向的背景,系統(tǒng)會被認(rèn)為是數(shù)據(jù)庫的應(yīng)用。 4 設(shè)計(jì)師具有網(wǎng)絡(luò)安全的背景,系統(tǒng)的安全會被放在很突出的位置。,48,構(gòu)架受技術(shù)環(huán)境的影響,現(xiàn)在B/S樣式很流行,設(shè)計(jì)師在設(shè)計(jì)時(shí)往往首先考慮系統(tǒng)能否在互聯(lián)網(wǎng)環(huán)境下運(yùn)行。,49,架構(gòu)所受的影響,50,軟件的架構(gòu)不是靜止的,51,軟件在開發(fā)過程中或交付使用后,都可能會發(fā)生修改,這些修改往往涉及到架構(gòu)的變更。因此軟件版本的演進(jìn)也是軟件架構(gòu)的演進(jìn)。 軟件架構(gòu)影響設(shè)計(jì)師的經(jīng)驗(yàn)。 軟件架構(gòu)影響開發(fā)組織的內(nèi)部結(jié)構(gòu)和經(jīng)營目標(biāo)。 軟件架構(gòu)可能會影響客戶對下個(gè)系統(tǒng)的需求 有些系統(tǒng)甚至?xí)绊懖?shí)際改變軟件工程的發(fā)展,以及開發(fā)人員學(xué)習(xí)和實(shí)踐的技術(shù)環(huán)境,如互聯(lián)網(wǎng)、嵌入式、手機(jī)等。,52,架構(gòu)商業(yè)周期—架構(gòu)是軟件開發(fā)的必經(jīng)之路和必要手段,它受到來自客戶和開發(fā)組織的影響,也受到設(shè)計(jì)師的素質(zhì)和經(jīng)驗(yàn)以及技術(shù)環(huán)境的影響;反過來,構(gòu)架也影響著被開發(fā)的系統(tǒng),對客戶、開發(fā)組織、構(gòu)架和技術(shù)環(huán)境也都有影響,還影響著客戶及其開發(fā)組織的未來目標(biāo)。圍繞著構(gòu)架的這些影響和反饋循環(huán)構(gòu)成構(gòu)架商業(yè)周期。 事物是靜止的,也是運(yùn)動、發(fā)展和變化的,軟件架構(gòu)也不例外。軟件的架構(gòu)是運(yùn)動、發(fā)展和變化的。,53,構(gòu)件與軟件重用,構(gòu)件模型及實(shí)現(xiàn) 構(gòu)件是指語義完整、語法正確和有可重用價(jià)值的單位軟件,是軟件重用過程中可以明確辨識的系統(tǒng);結(jié)構(gòu)上,它是語義描述、通訊接口和實(shí)現(xiàn)代碼的復(fù)合體。,54,,在大多數(shù)工程學(xué)科中,系統(tǒng)是通過組合現(xiàn)有構(gòu)件進(jìn)行設(shè)計(jì)的,這些構(gòu)件已經(jīng)在其它系統(tǒng)上使用過。 軟件工程一直以來注重于原始開發(fā),現(xiàn)在已經(jīng)認(rèn)識到要更快、更低成本的獲得更好的軟件,我們需要采取一種基于系統(tǒng)化軟件復(fù)用(systematic software reuse)的設(shè)計(jì)過程。,55,,在軟件演化的過程中,重復(fù)使用的行為可能發(fā)生在三個(gè)維上: 1. 時(shí)間維:使用以前的軟件版本作為新版本的基礎(chǔ),加入新功能,適應(yīng)新需求,即軟件維護(hù)。 2. 平臺維:以某平臺上的軟件為基礎(chǔ),修改其和運(yùn)行平臺相關(guān)的部分,使其運(yùn)行于新平臺,即軟件移植。 3. 應(yīng)用維:將某軟件(或其中構(gòu)件)用于其他應(yīng)用系統(tǒng)中,新系統(tǒng)具有不同功能和用途,即真正的軟件復(fù)用。,56,,促進(jìn)從手工作坊式的軟件開發(fā)向工業(yè)化開發(fā)發(fā)展: 核心的就是軟件構(gòu)件技術(shù)。工業(yè)化的軟件生產(chǎn),應(yīng)該有一個(gè)工業(yè)化的軟件生產(chǎn)線,軟件生產(chǎn)應(yīng)該做成什么樣,應(yīng)該有不同的車間,有的車間專門是做構(gòu)架的,就是框架。有的車間做構(gòu)件,零件。,57,復(fù)用的好處,增強(qiáng)可靠性(Increased reliability) 復(fù)用構(gòu)件在工作系統(tǒng)上試用過,應(yīng)該比新軟件更可靠。失誤已經(jīng)在初始使用中暴露和解決,復(fù)用軟件的失效數(shù)目應(yīng)比較低。 減少過程風(fēng)險(xiǎn)(Reduced process risk) 有現(xiàn)成的軟件,成本比重新開發(fā)低。同時(shí)降低了項(xiàng)目成本估算的不確定性。在大型系統(tǒng)中,如果子系統(tǒng)是復(fù)用的,效果最明顯。 符合標(biāo)準(zhǔn)(Standards compliance) 有些象用戶界面這樣的標(biāo)準(zhǔn),,就可以制成一組可復(fù)用的標(biāo)準(zhǔn)構(gòu)件。例如,如果把用戶界面中的菜單(Menu)做成可復(fù)用的構(gòu)件,并讓所有的應(yīng)用都采用相同的菜單格式展現(xiàn)給用戶。使用這樣的標(biāo)準(zhǔn)用戶界面就使系統(tǒng)的可信度得到改善,因?yàn)橛脩粼谙嗨频慕缑嫦赂蝗菀壮鲥e(cuò)。 加速開發(fā)(Accelerated development) 盡快地把一個(gè)系統(tǒng)投入市場有時(shí)候比它的總開發(fā)成本更重要。因?yàn)闇p少了開發(fā)和確認(rèn)的時(shí)間,復(fù)用軟件能夠加速系統(tǒng)生產(chǎn)。,58,,構(gòu)件模型的三個(gè)主要流派 OMG(Object Management Group,對象管理集團(tuán))的CORBA(Common Object Request Broker Architecture,通用對象請求代理結(jié)構(gòu)) Sun的EJB(Enterprise Java Bean) Microsoft的DCOM(Distributed Component Object Model,分布式構(gòu)件對象模型)。,59,,“九五”期間,青鳥工程研究軟件的工業(yè)化生產(chǎn)技術(shù),開發(fā)軟件工業(yè)化生產(chǎn)系統(tǒng) ——青鳥軟件生產(chǎn)線系統(tǒng),即基于構(gòu)件—構(gòu)架模式的軟件開發(fā)技術(shù)及系統(tǒng),為軟件開發(fā)提供整體解決方案,推行軟件工業(yè)化生產(chǎn)模式,促進(jìn)軟件產(chǎn)業(yè)規(guī)模的形成。,60,,61,,青鳥構(gòu)件模型,62,,構(gòu)件獲取 從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或作適應(yīng)性修改,得到可重用的構(gòu)件; 通過遺留工程,將具有潛在重用價(jià)值的構(gòu)件提取出來,得到可重用的構(gòu)件; 從市場上購買現(xiàn)成的商業(yè)構(gòu)件,即COTS(Commercial Off-The-Shell)構(gòu)件; 開發(fā)新的符合要求的構(gòu)件。,63,,64,構(gòu)件管理,構(gòu)件描述 構(gòu)件分類與組織 人員及權(quán)限管理,65,,構(gòu)件描述 構(gòu)件模型是對構(gòu)件本質(zhì)的抽象描述,主要是為構(gòu)件的制作與構(gòu)件的重用提供依據(jù); 從管理角度出發(fā),也需要對構(gòu)件進(jìn)行描述,例如:實(shí)現(xiàn)方式、實(shí)現(xiàn)體、注釋、生產(chǎn)者、生產(chǎn)日期、大小、價(jià)格、版本和關(guān)聯(lián)構(gòu)件等信息,它們與構(gòu)件模型共同組成了對構(gòu)件的完整描述。,66,,67,,構(gòu)件分類與組織 關(guān)鍵字分類法 刻面分類法 超文本組織方法,68,,關(guān)鍵字分類法,69,,刻面分類法 使用環(huán)境 應(yīng)用領(lǐng)域 功能 層次 表示方法,70,,71,,72,,超文本組織法,73,,,74,,人員及權(quán)限管理 一般來講,構(gòu)件庫系統(tǒng)可包括五類用戶,即注冊用戶、公共用戶、構(gòu)件提交者、一般系統(tǒng)管理員和超級系統(tǒng)管理員。,75,構(gòu)件重用,檢索與提取構(gòu)件 理解與評價(jià)構(gòu)件 修改構(gòu)件 構(gòu)件組裝,76,檢索與提取構(gòu)件,基于關(guān)鍵字的檢索 刻面檢索法 超文本檢索法 其他檢索方法,77,理解與評價(jià)構(gòu)件,構(gòu)件的功能與行為 相關(guān)的領(lǐng)域知識 可適應(yīng)性約束條件與例外情形 可以預(yù)見的修改部分及修改方法,78,修改構(gòu)件,理想的情形是對庫中的構(gòu)件不作修改而直接用于新的軟件項(xiàng)目。 但是,在大多數(shù)情況下,必須對構(gòu)件進(jìn)行或多或少的修改,以適應(yīng)新的需求。 為了減少構(gòu)件修改的工作量,要求開發(fā)人員盡量使構(gòu)件的功能、行為和接口設(shè)計(jì)更為抽象化、通用化和參數(shù)化。,79,構(gòu)件組裝,◇ 基于功能的組裝技術(shù) ◇ 基于數(shù)據(jù)的組裝技術(shù) ◇ 面向?qū)ο蟮慕M裝技術(shù),80,,基于功能的組裝技術(shù) 基于功能的組裝技術(shù)采用子程序調(diào)用和參數(shù)傳遞的方式將構(gòu)件組裝起來。它要求庫中的構(gòu)件以子程序/過程/函數(shù)的形式出現(xiàn),并且接口說明必須清晰。當(dāng)使用這種組裝技術(shù)進(jìn)行軟件開發(fā)時(shí),開發(fā)人員首先應(yīng)對目標(biāo)軟件系統(tǒng)進(jìn)行功能分解,將系統(tǒng)分解為強(qiáng)內(nèi)聚、松耦合的功能模塊。然后根據(jù)各模塊的功能需求提取構(gòu)件,對它進(jìn)行適應(yīng)性修改后再掛接在上述功能分解框架中。,81,,基于數(shù)據(jù)的組裝技術(shù) 首先根據(jù)當(dāng)前軟件問題的核心數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)出一個(gè)框架,然后根據(jù)框架中各結(jié)點(diǎn)的需求提取構(gòu)件并進(jìn)行適應(yīng)性修改,再將構(gòu)件逐個(gè)分配至框架中的適當(dāng)位置。此后,構(gòu)件的組裝方式仍然是傳統(tǒng)的子程序調(diào)用與參數(shù)傳遞。這種組裝技術(shù)也要求庫中構(gòu)件以子程序形式出現(xiàn),但它所依賴的軟件設(shè)計(jì)方法不再是功能分解,而是面向數(shù)據(jù)的設(shè)計(jì)方法,例如Jackson系統(tǒng)開發(fā)方法。,82,,面向?qū)ο蟮慕M裝技術(shù) · 構(gòu)造法 在子類中引進(jìn)基類的對象作為子類的成員變量,然后在子類中通過成員變量重用基類的屬性和方法。 · 子類法 將新子類直接說明為庫中基類的子類,通過繼承和修改基類的屬性與行為完成新子類的定義。,83,,84,,85,,86,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 體系結(jié)構(gòu) 認(rèn)識 ppt 課件
鏈接地址:http://www.820124.com/p-1921173.html