![L-第四章_軟件體系結(jié)構(gòu)基礎(chǔ)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba1.gif)
![L-第四章_軟件體系結(jié)構(gòu)基礎(chǔ)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba2.gif)
![L-第四章_軟件體系結(jié)構(gòu)基礎(chǔ)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba3.gif)
![L-第四章_軟件體系結(jié)構(gòu)基礎(chǔ)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba4.gif)
![L-第四章_軟件體系結(jié)構(gòu)基礎(chǔ)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba/8c9f4721-37d2-42c4-b9f1-3c3ae2d5ebba5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第四章第四章 軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)(Software Architecture)軟件體系結(jié)構(gòu)基礎(chǔ)軟件體系結(jié)構(gòu)基礎(chǔ)建筑的例子建筑的例子狗舍狗舍一個(gè)人搭建,需要一個(gè)人搭建,需要最小化建模最小化建模簡(jiǎn)單的過程簡(jiǎn)單的過程簡(jiǎn)單的工具簡(jiǎn)單的工具建筑的例子建筑的例子住房住房一個(gè)團(tuán)隊(duì)高效和適時(shí)地建造,需要一個(gè)團(tuán)隊(duì)高效和適時(shí)地建造,需要仔細(xì)的建模仔細(xì)的建模良好定義的過程良好定義的過程良好的工具良好的工具建筑的例子建筑的例子摩天大樓摩天大樓 軟件體系結(jié)構(gòu)的開發(fā)是大型軟件系統(tǒng)開發(fā)軟件體系結(jié)構(gòu)的開發(fā)是大型軟件系統(tǒng)開發(fā)的關(guān)鍵環(huán)節(jié)。體系結(jié)構(gòu)在軟件生產(chǎn)線的開的關(guān)鍵環(huán)節(jié)。體系結(jié)構(gòu)在軟件生產(chǎn)線的開發(fā)中具有至關(guān)重要的作用。發(fā)
2、中具有至關(guān)重要的作用。 在這種開發(fā)生產(chǎn)中,基于同一個(gè)軟件體系在這種開發(fā)生產(chǎn)中,基于同一個(gè)軟件體系結(jié)構(gòu),可以創(chuàng)建具有結(jié)構(gòu),可以創(chuàng)建具有不同功能的多個(gè)系統(tǒng)不同功能的多個(gè)系統(tǒng)。 在軟件產(chǎn)品族之間在軟件產(chǎn)品族之間共享體系結(jié)構(gòu)和一組可共享體系結(jié)構(gòu)和一組可重用的構(gòu)件重用的構(gòu)件,可以增加軟件工程和降低開,可以增加軟件工程和降低開發(fā)和維護(hù)成本。發(fā)和維護(hù)成本。 從軟件危機(jī)談起從軟件危機(jī)談起 軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題過程中遇到的一系列嚴(yán)重問題 1968年國際軟件工程會(huì)議提出,并被人們廣泛年國際軟件工程會(huì)議提出,并被人們廣泛認(rèn)識(shí)到認(rèn)識(shí)到 軟件
3、危機(jī)的表現(xiàn)軟件危機(jī)的表現(xiàn) 軟件成本日益增長軟件成本日益增長 開發(fā)進(jìn)度難以控制開發(fā)進(jìn)度難以控制 軟件質(zhì)量差軟件質(zhì)量差 軟件維護(hù)困難軟件維護(hù)困難軟件危機(jī)的表現(xiàn)軟件危機(jī)的表現(xiàn) 軟件成本日益增長軟件成本日益增長 20世紀(jì)世紀(jì)50年代,軟件成本在整個(gè)計(jì)算機(jī)系統(tǒng)成年代,軟件成本在整個(gè)計(jì)算機(jī)系統(tǒng)成本中所占的比例為本中所占的比例為10%-20%。到。到20世紀(jì)世紀(jì)60年年代中期,軟件成本在計(jì)算機(jī)系統(tǒng)中所占的比例代中期,軟件成本在計(jì)算機(jī)系統(tǒng)中所占的比例已經(jīng)增長到已經(jīng)增長到50%左右。左右。 而且,該數(shù)字還在不斷地遞增,下面是一組來而且,該數(shù)字還在不斷地遞增,下面是一組來自美國空軍計(jì)算機(jī)系統(tǒng)的數(shù)據(jù):自美國空軍計(jì)算
4、機(jī)系統(tǒng)的數(shù)據(jù):1955年,軟件年,軟件費(fèi)用約占總費(fèi)用的費(fèi)用約占總費(fèi)用的18%,1970年達(dá)到年達(dá)到60%,1975年達(dá)到年達(dá)到72%,1980年達(dá)到年達(dá)到80%,1985年達(dá)年達(dá)到到85%左右。左右。軟件危機(jī)的表現(xiàn)軟件危機(jī)的表現(xiàn) 開發(fā)進(jìn)度難以控制開發(fā)進(jìn)度難以控制 由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。一樣的。 在軟件開發(fā)過程中,用戶需求變化等各種意想在軟件開發(fā)過程中,用戶需求變化等各種意想不到的情況層出不窮,令軟件開發(fā)過程很難保不到的情況層出不窮,令軟件開發(fā)過程很難
5、保證按預(yù)定的計(jì)劃實(shí)現(xiàn),給項(xiàng)目計(jì)劃和論證工作證按預(yù)定的計(jì)劃實(shí)現(xiàn),給項(xiàng)目計(jì)劃和論證工作帶來了很大的困難。帶來了很大的困難。 盲目增加軟件開發(fā)人員并不能成比例地提高軟盲目增加軟件開發(fā)人員并不能成比例地提高軟件開發(fā)能力。相反,隨著人員數(shù)量的增加,人件開發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問題將更為嚴(yán)重問題將更為嚴(yán)重軟件危機(jī)的表現(xiàn)軟件危機(jī)的表現(xiàn) 軟件質(zhì)量差軟件質(zhì)量差 軟件項(xiàng)目即使能按預(yù)定日期完成,結(jié)果卻不盡軟件項(xiàng)目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。人意。1965年至年至1970年,美國范登堡基地發(fā)射年,美國范登堡基地發(fā)射
6、火箭多次失敗,絕大部分故障是由應(yīng)用程序錯(cuò)火箭多次失敗,絕大部分故障是由應(yīng)用程序錯(cuò)誤造成的。誤造成的。 在在“軟件作坊軟件作坊”里,由于缺乏工程化思想的指里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對(duì)軟件的需求,軟件設(shè)計(jì)帶有隨意性,代替用戶對(duì)軟件的需求,軟件設(shè)計(jì)帶有隨意性,很多功能只是程序員的很多功能只是程序員的“一廂情愿一廂情愿”而已,這而已,這是造成軟件不能令人滿意的重要因素。是造成軟件不能令人滿意的重要因素。軟件危機(jī)的表現(xiàn)軟件危機(jī)的表現(xiàn) 軟件維護(hù)困難軟件維護(hù)困難 由于在軟件設(shè)計(jì)和開發(fā)過程中,沒有嚴(yán)格遵循由于在軟件設(shè)計(jì)和開
7、發(fā)過程中,沒有嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的真實(shí)反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造真實(shí)反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。成了巨大的困難。 特別是在軟件使用過程中,原來的開發(fā)人員可特別是在軟件使用過程中,原來的開發(fā)人員可能因各種原因已經(jīng)離開原來的開發(fā)組織,使得能因各種原因已經(jīng)離開原來的開發(fā)組織,使得軟件幾乎不可維護(hù)。軟件幾乎不可維護(hù)。 有資料表明,工業(yè)界為維護(hù)軟件支付的費(fèi)用占有資料表明,工業(yè)界為維護(hù)軟件支付的費(fèi)用占全部硬件和軟件費(fèi)用的全部硬件和軟件費(fèi)用的40%-75%。 從軟件危機(jī)談起從軟件危機(jī)談起 軟件危機(jī)的原因軟件
8、危機(jī)的原因 用戶需求不明確用戶需求不明確 缺乏正確的理論指導(dǎo)缺乏正確的理論指導(dǎo) 軟件規(guī)模越來越大軟件規(guī)模越來越大 軟件復(fù)雜度越來越高軟件復(fù)雜度越來越高軟件危機(jī)的原因軟件危機(jī)的原因 用戶需求不明確用戶需求不明確 在軟件開發(fā)完成之前,用戶不清楚軟件的具體在軟件開發(fā)完成之前,用戶不清楚軟件的具體需求;需求; 用戶對(duì)軟件需求的描述不精確,可能有遺漏、用戶對(duì)軟件需求的描述不精確,可能有遺漏、有二義性、甚至有錯(cuò)誤;有二義性、甚至有錯(cuò)誤; 在軟件開發(fā)過程中,用戶還提出修改軟件功能、在軟件開發(fā)過程中,用戶還提出修改軟件功能、界面、支撐環(huán)境等方面的要求;界面、支撐環(huán)境等方面的要求; 開發(fā)人員對(duì)用戶需求的理解與用
9、戶本來愿望有開發(fā)人員對(duì)用戶需求的理解與用戶本來愿望有差異差異軟件危機(jī)的原因軟件危機(jī)的原因 缺乏正確的理論指導(dǎo)缺乏正確的理論指導(dǎo) 缺乏有力的方法學(xué)和工具方面的支持。由于軟缺乏有力的方法學(xué)和工具方面的支持。由于軟件不同于大多數(shù)其他工業(yè)產(chǎn)品,其開發(fā)過程是件不同于大多數(shù)其他工業(yè)產(chǎn)品,其開發(fā)過程是復(fù)雜的邏輯思維過程,其產(chǎn)品極大程度地依賴復(fù)雜的邏輯思維過程,其產(chǎn)品極大程度地依賴于開發(fā)人員高度的智力投入。由于過分地依靠于開發(fā)人員高度的智力投入。由于過分地依靠程序設(shè)計(jì)人員在軟件開發(fā)過程中的技巧和創(chuàng)造程序設(shè)計(jì)人員在軟件開發(fā)過程中的技巧和創(chuàng)造性,加劇軟件產(chǎn)品的個(gè)性化,也是發(fā)生軟件危性,加劇軟件產(chǎn)品的個(gè)性化,也是發(fā)
10、生軟件危機(jī)的一個(gè)重要原因。機(jī)的一個(gè)重要原因。 軟件危機(jī)的原因軟件危機(jī)的原因 軟件規(guī)模越來越大軟件規(guī)模越來越大 隨著軟件應(yīng)用范圍的增廣,軟件規(guī)模愈來愈大。隨著軟件應(yīng)用范圍的增廣,軟件規(guī)模愈來愈大。大型軟件項(xiàng)目需要組織一定的人力共同完成,大型軟件項(xiàng)目需要組織一定的人力共同完成,而多數(shù)管理人員缺乏開發(fā)大型軟件系統(tǒng)的經(jīng)驗(yàn),而多數(shù)管理人員缺乏開發(fā)大型軟件系統(tǒng)的經(jīng)驗(yàn),而多數(shù)軟件開發(fā)人員又缺乏管理方面的經(jīng)驗(yàn)。而多數(shù)軟件開發(fā)人員又缺乏管理方面的經(jīng)驗(yàn)。各類人員的信息交流不及時(shí)、不準(zhǔn)確、有時(shí)還各類人員的信息交流不及時(shí)、不準(zhǔn)確、有時(shí)還會(huì)產(chǎn)生誤解。會(huì)產(chǎn)生誤解。 軟件項(xiàng)目開發(fā)人員不能有效地、獨(dú)立自主地處軟件項(xiàng)目開發(fā)人員
11、不能有效地、獨(dú)立自主地處理大型軟件的全部關(guān)系和各個(gè)分支,因此容易理大型軟件的全部關(guān)系和各個(gè)分支,因此容易產(chǎn)生疏漏和錯(cuò)誤。產(chǎn)生疏漏和錯(cuò)誤。 軟件危機(jī)的原因軟件危機(jī)的原因 軟件復(fù)雜度越來越高軟件復(fù)雜度越來越高 軟件不僅僅是在規(guī)模上快速地發(fā)展擴(kuò)大,而且軟件不僅僅是在規(guī)模上快速地發(fā)展擴(kuò)大,而且其復(fù)雜性也急劇地增加。軟件產(chǎn)品的特殊性和其復(fù)雜性也急劇地增加。軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無力處理人類智力的局限性,導(dǎo)致人們無力處理“復(fù)雜復(fù)雜問題問題”。 所謂所謂“復(fù)雜問題復(fù)雜問題”的概念是相對(duì)的,一旦人們的概念是相對(duì)的,一旦人們采用先進(jìn)的組織形式、開發(fā)方法和工具提高了采用先進(jìn)的組織形式、開發(fā)方
12、法和工具提高了軟件開發(fā)效率和能力,新的、更大的、更復(fù)雜軟件開發(fā)效率和能力,新的、更大的、更復(fù)雜的問題又?jǐn)[在人們的面前的問題又?jǐn)[在人們的面前從軟件危機(jī)談起從軟件危機(jī)談起 如何克服軟件危機(jī)如何克服軟件危機(jī) 人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必然導(dǎo)致失敗然導(dǎo)致失敗 。 要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。 在技術(shù)上,應(yīng)該采用基于復(fù)用的軟件生產(chǎn)技術(shù);在管理上,應(yīng)該在技術(shù)上,應(yīng)該采用基于復(fù)用的軟件生產(chǎn)技
13、術(shù);在管理上,應(yīng)該采用多維的工程管理模式。采用多維的工程管理模式。 誕生了軟件工程誕生了軟件工程 用工程、科學(xué)和數(shù)學(xué)的原則和方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)用工程、科學(xué)和數(shù)學(xué)的原則和方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法技術(shù)及管理方法 方法:方法:“如何做如何做”的技術(shù)手段的技術(shù)手段 工具:為方法提供的自動(dòng)或者半自動(dòng)的軟件支撐環(huán)境工具:為方法提供的自動(dòng)或者半自動(dòng)的軟件支撐環(huán)境 過程:將軟件工程的方法和共計(jì)綜合起來以達(dá)到合理、及時(shí)地進(jìn)行過程:將軟件工程的方法和共計(jì)綜合起來以達(dá)到合理、及時(shí)地進(jìn)行計(jì)算機(jī)軟件開發(fā)地目的計(jì)算機(jī)軟件開發(fā)地目的 軟件體系結(jié)構(gòu)是軟件工程學(xué)科的分支軟件體系結(jié)構(gòu)是軟件工程學(xué)科
14、的分支軟件重用軟件重用 軟件重用是指在兩次或多次不同的軟件開軟件重用是指在兩次或多次不同的軟件開發(fā)過程中重復(fù)使用相同或者相近軟件元素發(fā)過程中重復(fù)使用相同或者相近軟件元素的過程的過程 軟件元素軟件元素包括程序代碼、測(cè)試用例、設(shè)計(jì)文檔、包括程序代碼、測(cè)試用例、設(shè)計(jì)文檔、設(shè)計(jì)過程、需求分析文檔甚至領(lǐng)域知識(shí)設(shè)計(jì)過程、需求分析文檔甚至領(lǐng)域知識(shí)軟件重用軟件重用 軟件系統(tǒng)極少是全新的軟件系統(tǒng)極少是全新的 它們通常是它們通常是“主旋律的變奏主旋律的變奏” 建造建造“每類一個(gè)每類一個(gè)”的系統(tǒng)過于昂貴的系統(tǒng)過于昂貴 在任何工程領(lǐng)域都是如此在任何工程領(lǐng)域都是如此 在軟件工程領(lǐng)域,尤其如此在軟件工程領(lǐng)域,尤其如此 針
15、對(duì)針對(duì)“新新”問題,有大量現(xiàn)成的解決方案問題,有大量現(xiàn)成的解決方案 OTS (off-the-shelf 現(xiàn)成的現(xiàn)成的)系統(tǒng)系統(tǒng) 可能只提供部分解決方案可能只提供部分解決方案 代碼行不再是基本的軟件構(gòu)造單元代碼行不再是基本的軟件構(gòu)造單元 模塊模塊/構(gòu)件成為開發(fā)、功能、演化構(gòu)件成為開發(fā)、功能、演化/維護(hù)和復(fù)用的單元維護(hù)和復(fù)用的單元 類似于土木工程類似于土木工程重用的好處重用的好處 減少開發(fā)時(shí)間減少開發(fā)時(shí)間 潛在的潛在的“即插即用即插即用” 增加可靠性增加可靠性 通過測(cè)試通過測(cè)試 多重使用多重使用 改善質(zhì)量改善質(zhì)量 可移植性可移植性 互操作性互操作性 快速重新配置快速重新配置 用戶編程用戶編程 通
16、過構(gòu)件組裝通過構(gòu)件組裝軟件重用的經(jīng)濟(jì)環(huán)境軟件重用的經(jīng)濟(jì)環(huán)境 為復(fù)用而設(shè)計(jì)需要更高的前期投資為復(fù)用而設(shè)計(jì)需要更高的前期投資 開發(fā)成本增加開發(fā)成本增加10%至至50% 維護(hù)可復(fù)用資產(chǎn)庫的附加成本維護(hù)可復(fù)用資產(chǎn)庫的附加成本 可復(fù)用構(gòu)件的維護(hù)可復(fù)用構(gòu)件的維護(hù) 當(dāng)一個(gè)構(gòu)件被復(fù)用時(shí),這些成本將得到補(bǔ)償當(dāng)一個(gè)構(gòu)件被復(fù)用時(shí),這些成本將得到補(bǔ)償 成本節(jié)省成本節(jié)省 2倍倍 至至 20倍倍 需要遠(yuǎn)見需要遠(yuǎn)見 管理層的支持是必須的管理層的支持是必須的 OTS復(fù)用伴隨著一定的風(fēng)險(xiǎn)復(fù)用伴隨著一定的風(fēng)險(xiǎn) 缺乏信任缺乏信任 被復(fù)用軟件未知的可靠性被復(fù)用軟件未知的可靠性 被復(fù)用軟件不充分的理解被復(fù)用軟件不充分的理解 成本和預(yù)算
17、超支的可能成本和預(yù)算超支的可能復(fù)用的技術(shù)困難復(fù)用的技術(shù)困難 OTS系統(tǒng)沒有包含可清晰辨識(shí)的構(gòu)件系統(tǒng)沒有包含可清晰辨識(shí)的構(gòu)件 OTS構(gòu)件粒度過大或過小構(gòu)件粒度過大或過小 OTS構(gòu)件沒有正好提供所要求的功能集構(gòu)件沒有正好提供所要求的功能集 OTS構(gòu)件的規(guī)約和集成不可預(yù)見地復(fù)雜構(gòu)件的規(guī)約和集成不可預(yù)見地復(fù)雜 復(fù)用一個(gè)構(gòu)件的附加成本可能比重新開發(fā)更高復(fù)用一個(gè)構(gòu)件的附加成本可能比重新開發(fā)更高 定位定位/選取選取 理解理解 提取提取 評(píng)估評(píng)估/適應(yīng)性改造適應(yīng)性改造 集成集成軟件復(fù)用的實(shí)情軟件復(fù)用的實(shí)情Krueger 1992 復(fù)用技術(shù)要想有效,必須縮短系統(tǒng)的初始概念和復(fù)用技術(shù)要想有效,必須縮短系統(tǒng)的初始概
18、念和最終可執(zhí)行實(shí)現(xiàn)之間的距離最終可執(zhí)行實(shí)現(xiàn)之間的距離 復(fù)用技術(shù)要想有效,必須使復(fù)用制品的難度低于復(fù)用技術(shù)要想有效,必須使復(fù)用制品的難度低于重新構(gòu)造的難度重新構(gòu)造的難度 選擇一個(gè)制品復(fù)用,必須知道它做什么選擇一個(gè)制品復(fù)用,必須知道它做什么 要想有效地復(fù)用一個(gè)軟件制品,必須能夠以比構(gòu)要想有效地復(fù)用一個(gè)軟件制品,必須能夠以比構(gòu)造它更短的時(shí)間內(nèi)發(fā)現(xiàn)它造它更短的時(shí)間內(nèi)發(fā)現(xiàn)它軟件體系結(jié)構(gòu)的焦點(diǎn)和范圍軟件體系結(jié)構(gòu)的焦點(diǎn)和范圍 軟件體系結(jié)構(gòu)是一個(gè)軟件系統(tǒng)的設(shè)計(jì)圖軟件體系結(jié)構(gòu)是一個(gè)軟件系統(tǒng)的設(shè)計(jì)圖(blueprint) 解決復(fù)雜性問題解決復(fù)雜性問題 提高復(fù)用和構(gòu)件市場(chǎng)的潛力提高復(fù)用和構(gòu)件市場(chǎng)的潛力 包含形式化方
19、法包含形式化方法 兩個(gè)主要焦點(diǎn)兩個(gè)主要焦點(diǎn) 系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu) 需求和實(shí)現(xiàn)之間的對(duì)應(yīng)需求和實(shí)現(xiàn)之間的對(duì)應(yīng) 構(gòu)件構(gòu)件 + 組裝規(guī)則組裝規(guī)則 + 行為規(guī)則行為規(guī)則 理解系統(tǒng)級(jí)關(guān)注的框架理解系統(tǒng)級(jí)關(guān)注的框架 全局流動(dòng)率,通訊模式,執(zhí)行控制機(jī)構(gòu),可升級(jí)性,全局流動(dòng)率,通訊模式,執(zhí)行控制機(jī)構(gòu),可升級(jí)性,系統(tǒng)演化路徑,容量,吞吐量,一致性,構(gòu)件兼容性,系統(tǒng)演化路徑,容量,吞吐量,一致性,構(gòu)件兼容性,等等軟件體系結(jié)構(gòu)的軟件體系結(jié)構(gòu)的發(fā)展史發(fā)展史“無體系結(jié)構(gòu)無體系結(jié)構(gòu)”設(shè)計(jì)階段設(shè)計(jì)階段萌芽階段萌芽階段以匯編語言進(jìn)行小規(guī)模應(yīng)用程序開以匯編語言進(jìn)行小規(guī)模應(yīng)用程序開發(fā)為特征發(fā)為特征以描述系統(tǒng)的高層抽象結(jié)構(gòu)為中心,以描
20、述系統(tǒng)的高層抽象結(jié)構(gòu)為中心,不關(guān)心具體的建模細(xì)節(jié),劃分了體系不關(guān)心具體的建模細(xì)節(jié),劃分了體系結(jié)構(gòu)模型與傳統(tǒng)軟件結(jié)構(gòu)的界限,該結(jié)構(gòu)模型與傳統(tǒng)軟件結(jié)構(gòu)的界限,該階段以階段以KruchtenKruchten提出的提出的“4+14+1”模型為模型為標(biāo)志標(biāo)志出現(xiàn)了從不同側(cè)面描述系統(tǒng)的結(jié)構(gòu)模出現(xiàn)了從不同側(cè)面描述系統(tǒng)的結(jié)構(gòu)模型,以型,以UMLUML為典型代表為典型代表。出現(xiàn)了程序結(jié)構(gòu)設(shè)計(jì)主題,以控制流出現(xiàn)了程序結(jié)構(gòu)設(shè)計(jì)主題,以控制流圖和數(shù)據(jù)流圖構(gòu)成軟件結(jié)構(gòu)為特征圖和數(shù)據(jù)流圖構(gòu)成軟件結(jié)構(gòu)為特征高級(jí)階段高級(jí)階段初期階段初期階段軟件體系結(jié)構(gòu)的軟件體系結(jié)構(gòu)的發(fā)展史發(fā)展史PerryPerry和和WolfWolf認(rèn)為認(rèn)
21、為未來的年代是研究軟件體系結(jié)構(gòu)的時(shí)代未來的年代是研究軟件體系結(jié)構(gòu)的時(shí)代 概念起源概念起源(1) 對(duì)軟件體系結(jié)構(gòu)的研究可以追溯到對(duì)軟件體系結(jié)構(gòu)的研究可以追溯到20世紀(jì)世紀(jì)60年代,年代,當(dāng)時(shí)主要是對(duì)軟件結(jié)構(gòu)的研究。當(dāng)時(shí)主要是對(duì)軟件結(jié)構(gòu)的研究。 1969年,年,Brooks提出提出“概念結(jié)構(gòu)概念結(jié)構(gòu)” In programming, the term architecture was first used to mean a description of a computer system that applied equally to more than one actual system 體系
22、結(jié)構(gòu)和實(shí)現(xiàn)被仔細(xì)區(qū)分開來體系結(jié)構(gòu)和實(shí)現(xiàn)被仔細(xì)區(qū)分開來 Architecture tells what happens Implementation tells how it is made to happen 體系結(jié)構(gòu)作為體系結(jié)構(gòu)作為“一組系統(tǒng)的公共描述一組系統(tǒng)的公共描述”的想法被保持的想法被保持下來,并成為概念的核心下來,并成為概念的核心概念起源概念起源(2) 1968年,年,Edsger Dijkstra提出提出“層次結(jié)構(gòu)層次結(jié)構(gòu)”的想的想法法 當(dāng)時(shí),軟件體系結(jié)構(gòu)的研究主要是針對(duì)軟件結(jié)構(gòu),即當(dāng)時(shí),軟件體系結(jié)構(gòu)的研究主要是針對(duì)軟件結(jié)構(gòu),即軟件如何劃分和結(jié)構(gòu)化,而不是簡(jiǎn)單地編程以產(chǎn)生正軟件如何
23、劃分和結(jié)構(gòu)化,而不是簡(jiǎn)單地編程以產(chǎn)生正確的結(jié)果確的結(jié)果 以操作系統(tǒng)為例,以操作系統(tǒng)為例,Dijkstra首次提出首次提出“層次結(jié)構(gòu)層次結(jié)構(gòu)”的想的想法,程序被歸結(jié)到不同的層次,只有相鄰層次的程序法,程序被歸結(jié)到不同的層次,只有相鄰層次的程序可以互相訪問可以互相訪問 通過上述系統(tǒng)組織所展現(xiàn)出的概念完整性,可以減輕通過上述系統(tǒng)組織所展現(xiàn)出的概念完整性,可以減輕開發(fā)和維護(hù)的負(fù)擔(dān)開發(fā)和維護(hù)的負(fù)擔(dān)概念起源概念起源(3) 1970年代初,年代初,David Parnas提出一系列重要的思提出一系列重要的思想想 1972年,信息隱蔽年,信息隱蔽 (information-hiding) 1974年,軟件結(jié)構(gòu)
24、年,軟件結(jié)構(gòu) (software structures) 1975年,程序家族年,程序家族 (program families) 一個(gè)程序家族是一組程序(并非所有這些程序已一個(gè)程序家族是一組程序(并非所有這些程序已經(jīng)或?qū)⒈粯?gòu)造),把它們作為一組看待是有益或經(jīng)或?qū)⒈粯?gòu)造),把它們作為一組看待是有益或有用的有用的 理論上,一個(gè)程序家族可以通過遍歷一個(gè)決策樹進(jìn)行理論上,一個(gè)程序家族可以通過遍歷一個(gè)決策樹進(jìn)行枚舉,樹的葉節(jié)點(diǎn)代表裝配好的、可執(zhí)行的系統(tǒng)枚舉,樹的葉節(jié)點(diǎn)代表裝配好的、可執(zhí)行的系統(tǒng) 這個(gè)概念支持從現(xiàn)存的家族成員導(dǎo)出新成員的想法,這個(gè)概念支持從現(xiàn)存的家族成員導(dǎo)出新成員的想法,過程是在決策樹上回
25、溯,直到達(dá)到一個(gè)公共的節(jié)點(diǎn)過程是在決策樹上回溯,直到達(dá)到一個(gè)公共的節(jié)點(diǎn)(決策點(diǎn)),然后沿著新的路徑導(dǎo)出希望的成員(決策點(diǎn)),然后沿著新的路徑導(dǎo)出希望的成員概念起源概念起源(4) 在決策樹上越靠近根節(jié)點(diǎn)的部分,越代表了對(duì)程在決策樹上越靠近根節(jié)點(diǎn)的部分,越代表了對(duì)程序家族成員保持穩(wěn)定的那些早期設(shè)計(jì)決策序家族成員保持穩(wěn)定的那些早期設(shè)計(jì)決策 在這樣的上下文中,早期決策代表特定的體系結(jié)構(gòu)在這樣的上下文中,早期決策代表特定的體系結(jié)構(gòu) 后期決策(靠近葉節(jié)點(diǎn))代表瑣細(xì)、易變的決策,例后期決策(靠近葉節(jié)點(diǎn))代表瑣細(xì)、易變的決策,例如編譯時(shí)刻、甚至加載時(shí)刻的常量如編譯時(shí)刻、甚至加載時(shí)刻的常量 程序家族概念對(duì)軟件體
26、系結(jié)構(gòu)的意義在于,軟件程序家族概念對(duì)軟件體系結(jié)構(gòu)的意義在于,軟件體系結(jié)構(gòu)包含了決策樹根部或靠近根部的那些決體系結(jié)構(gòu)包含了決策樹根部或靠近根部的那些決策策 1976年,年,F(xiàn)rank DeRemer和和Hans Kron提出了模提出了模塊連接語言塊連接語言MIL75 “Programming-in-large versus programming-in-small”,IEEE Trans. on SE, June 1976概念起源概念起源(5) 以編譯器為例,在以編譯器為例,在19701980年代,編譯器設(shè)計(jì)年代,編譯器設(shè)計(jì)發(fā)展成為標(biāo)準(zhǔn)的程序發(fā)展成為標(biāo)準(zhǔn)的程序 對(duì)所有編譯器公共的決策被復(fù)用,例如
27、,詞法分析器、對(duì)所有編譯器公共的決策被復(fù)用,例如,詞法分析器、語法分析器、語義樹、屬性文法、目標(biāo)代碼生成器、語法分析器、語義樹、屬性文法、目標(biāo)代碼生成器、優(yōu)化器,等優(yōu)化器,等 許多其他領(lǐng)域的成員之間,呈現(xiàn)出許多其他領(lǐng)域的成員之間,呈現(xiàn)出 公共結(jié)構(gòu),互連策略,功能到構(gòu)件的分配,構(gòu)件接口,公共結(jié)構(gòu),互連策略,功能到構(gòu)件的分配,構(gòu)件接口,整體合理化基礎(chǔ)整體合理化基礎(chǔ) 軟件體系結(jié)構(gòu)的工作可被看作一種事后努力軟件體系結(jié)構(gòu)的工作可被看作一種事后努力 為可復(fù)用的家族范圍的設(shè)計(jì)信息提供結(jié)構(gòu)化的倉庫為可復(fù)用的家族范圍的設(shè)計(jì)信息提供結(jié)構(gòu)化的倉庫 試圖整理程序家族各成員之間的共性,從而家族成員試圖整理程序家族各成員
28、之間的共性,從而家族成員內(nèi)在的高層設(shè)計(jì)決策不需要重復(fù)地發(fā)明、驗(yàn)證和描述內(nèi)在的高層設(shè)計(jì)決策不需要重復(fù)地發(fā)明、驗(yàn)證和描述概念起源概念起源(6) 從從1980年代初期開始,人們?cè)谲浖O(shè)計(jì)方面的注年代初期開始,人們?cè)谲浖O(shè)計(jì)方面的注意力逐漸集中到面向?qū)ο蠓椒ㄉ?。?jīng)過二十多年意力逐漸集中到面向?qū)ο蠓椒ㄉ稀=?jīng)過二十多年的研究和實(shí)踐,人們形成了這樣一個(gè)共識(shí):的研究和實(shí)踐,人們形成了這樣一個(gè)共識(shí): 對(duì)象并不是解決所有設(shè)計(jì)問題的靈丹妙藥,軟件工程對(duì)象并不是解決所有設(shè)計(jì)問題的靈丹妙藥,軟件工程必須超越面向?qū)ο蠓椒?,形成以體系結(jié)構(gòu)為中心的新必須超越面向?qū)ο蠓椒ǎ纬梢泽w系結(jié)構(gòu)為中心的新方法方法 面向?qū)ο蠓椒ㄔ谲浖w
29、系結(jié)構(gòu)設(shè)計(jì)中存在的誤區(qū)面向?qū)ο蠓椒ㄔ谲浖w系結(jié)構(gòu)設(shè)計(jì)中存在的誤區(qū) 基本特征:模塊化、封裝、繼承、多態(tài)等基本特征:模塊化、封裝、繼承、多態(tài)等 OO程序員更多關(guān)注的是低層次,而不是高層次的抽象程序員更多關(guān)注的是低層次,而不是高層次的抽象 對(duì)象(類)的粒度過?。黑呄蛴趯?shí)現(xiàn)層次對(duì)象(類)的粒度過?。黑呄蛴趯?shí)現(xiàn)層次 對(duì)象(類)之間的關(guān)系類型過于一般化:依賴對(duì)象(類)之間的關(guān)系類型過于一般化:依賴(dependency),泛化,泛化(generalization),關(guān)聯(lián),關(guān)聯(lián)(association)發(fā)展現(xiàn)狀發(fā)展現(xiàn)狀(1) 真正現(xiàn)在意義上的軟件體系結(jié)構(gòu)的研究始于,真正現(xiàn)在意義上的軟件體系結(jié)構(gòu)的研究始于,
30、Dewayne Perry和和Alexander Wolf PW1992, and David Garlan和和Mary Shaw GS1993的奠基性工作的奠基性工作, and 其他人對(duì)體系結(jié)構(gòu)風(fēng)格的分類和評(píng)價(jià)其他人對(duì)體系結(jié)構(gòu)風(fēng)格的分類和評(píng)價(jià) KBA+1994, and 特定領(lǐng)域軟件體系結(jié)構(gòu)特定領(lǐng)域軟件體系結(jié)構(gòu) (DSSAs)的研究和應(yīng)用的研究和應(yīng)用 DSSA1992 應(yīng)用現(xiàn)狀應(yīng)用現(xiàn)狀 體系結(jié)構(gòu)的設(shè)計(jì)是建立在直覺和經(jīng)驗(yàn)、而非堅(jiān)實(shí)的工體系結(jié)構(gòu)的設(shè)計(jì)是建立在直覺和經(jīng)驗(yàn)、而非堅(jiān)實(shí)的工程原則之上的程原則之上的 體系結(jié)構(gòu)的描述是非形式化的和隨意的,經(jīng)常采用框體系結(jié)構(gòu)的描述是非形式化的和隨意的,經(jīng)常采用
31、框線圖(線圖(box-and-line diagram)加文字注釋的方法)加文字注釋的方法發(fā)展現(xiàn)狀發(fā)展現(xiàn)狀(2) 應(yīng)用后果應(yīng)用后果 體系結(jié)構(gòu)設(shè)計(jì)只是被開發(fā)人員含糊地理解體系結(jié)構(gòu)設(shè)計(jì)只是被開發(fā)人員含糊地理解 難以對(duì)體系結(jié)構(gòu)設(shè)計(jì)作出一致性或完整性的分析難以對(duì)體系結(jié)構(gòu)設(shè)計(jì)作出一致性或完整性的分析 隨著系統(tǒng)的演化,難以保持同系統(tǒng)原有體系結(jié)構(gòu)的一隨著系統(tǒng)的演化,難以保持同系統(tǒng)原有體系結(jié)構(gòu)的一致,并且致,并且 難以開發(fā)有效的工具,輔助人們進(jìn)行體系結(jié)構(gòu)的設(shè)計(jì)、難以開發(fā)有效的工具,輔助人們進(jìn)行體系結(jié)構(gòu)的設(shè)計(jì)、性質(zhì)分析和驗(yàn)證性質(zhì)分析和驗(yàn)證發(fā)展現(xiàn)狀發(fā)展現(xiàn)狀(3) 在在“軟件復(fù)用的展望和策略軟件復(fù)用的展望和策略”
32、DoD1992報(bào)告中,報(bào)告中,美國國防部強(qiáng)調(diào)了美國國防部強(qiáng)調(diào)了“以體系結(jié)構(gòu)為中心的復(fù)用以體系結(jié)構(gòu)為中心的復(fù)用”在整個(gè)軟件生存周期中,對(duì)于軟件開發(fā)和支持的在整個(gè)軟件生存周期中,對(duì)于軟件開發(fā)和支持的重要性。重要性。 以下是一些同體系結(jié)構(gòu)相關(guān)的研究項(xiàng)目,以下是一些同體系結(jié)構(gòu)相關(guān)的研究項(xiàng)目, STARS, DOD CARDS, DOD PRISM, DOD RAPIDE , Stanford Uni. C2 style and ADL, California Uni. Able (Architecture Based Languages and Environments), CMU ACME Arch
33、itecture Interchange Language, CMU Vitruvius, CMU發(fā)展現(xiàn)狀發(fā)展現(xiàn)狀(4) 鑒于是否有一個(gè)穩(wěn)定的軟件體系結(jié)構(gòu),對(duì)軟件的鑒于是否有一個(gè)穩(wěn)定的軟件體系結(jié)構(gòu),對(duì)軟件的質(zhì)量和成本影響很大,因此如何獲得一個(gè)良好的質(zhì)量和成本影響很大,因此如何獲得一個(gè)良好的體系結(jié)構(gòu)就成為當(dāng)今軟件界研究的重點(diǎn)。體系結(jié)構(gòu)就成為當(dāng)今軟件界研究的重點(diǎn)。 當(dāng)前軟件體系結(jié)構(gòu)研究和實(shí)踐中,一些最活躍的當(dāng)前軟件體系結(jié)構(gòu)研究和實(shí)踐中,一些最活躍的領(lǐng)域包括:領(lǐng)域包括: 各種體系結(jié)構(gòu)風(fēng)格的匯編和總結(jié)各種體系結(jié)構(gòu)風(fēng)格的匯編和總結(jié) 體系結(jié)構(gòu)描述語言體系結(jié)構(gòu)描述語言 體系結(jié)構(gòu)的形式化基礎(chǔ)體系結(jié)構(gòu)的形式化基
34、礎(chǔ) 體系結(jié)構(gòu)分析技術(shù)體系結(jié)構(gòu)分析技術(shù) 基于體系結(jié)構(gòu)的開發(fā)方法基于體系結(jié)構(gòu)的開發(fā)方法 體系結(jié)構(gòu)恢復(fù)和再工程體系結(jié)構(gòu)恢復(fù)和再工程 支持體系結(jié)構(gòu)設(shè)計(jì)的工具和環(huán)境支持體系結(jié)構(gòu)設(shè)計(jì)的工具和環(huán)境 特定領(lǐng)域的軟件體系結(jié)構(gòu)特定領(lǐng)域的軟件體系結(jié)構(gòu)(DSSA) 軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的定義(1) Perry and Wolf, 1992 軟件體系結(jié)構(gòu)(元素,形態(tài),基本理論)軟件體系結(jié)構(gòu)(元素,形態(tài),基本理論) 軟件體系結(jié)構(gòu)是一組具有特定形式的設(shè)計(jì)元素。這里軟件體系結(jié)構(gòu)是一組具有特定形式的設(shè)計(jì)元素。這里的設(shè)計(jì)元素被分為三類:處理元素的設(shè)計(jì)元素被分為三類:處理元素 (processing elements)、
35、數(shù)據(jù)元素、數(shù)據(jù)元素 (data elements)和連接元素和連接元素(connection elements) Kruchten, 1994 軟件體系結(jié)構(gòu)涉及軟件高層結(jié)構(gòu)的設(shè)計(jì)和實(shí)現(xiàn)軟件體系結(jié)構(gòu)涉及軟件高層結(jié)構(gòu)的設(shè)計(jì)和實(shí)現(xiàn),通過組通過組裝一定數(shù)量的具有良好形態(tài)的元素,以滿足主要的功裝一定數(shù)量的具有良好形態(tài)的元素,以滿足主要的功能和性能需求,例如,可擴(kuò)展性和可用性能和性能需求,例如,可擴(kuò)展性和可用性 涉及抽象、分解涉及抽象、分解/組裝、風(fēng)格組裝、風(fēng)格/審美審美軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的定義(2) Shaw and Garlan, 1996 一個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)定義了組成系統(tǒng)的計(jì)算構(gòu)件一
36、個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)定義了組成系統(tǒng)的計(jì)算構(gòu)件和構(gòu)件之間相互作用的關(guān)系和構(gòu)件之間相互作用的關(guān)系 軟件體系結(jié)構(gòu)層次的設(shè)計(jì)主要包括以下方面:軟件體系結(jié)構(gòu)層次的設(shè)計(jì)主要包括以下方面: 組成系統(tǒng)的構(gòu)件描述組成系統(tǒng)的構(gòu)件描述 構(gòu)件之間的交互構(gòu)件之間的交互 指導(dǎo)構(gòu)件交互的模式,以及指導(dǎo)構(gòu)件交互的模式,以及 施加在模式上的約束施加在模式上的約束 Bass, Clements, and Kazman, 1997 軟件體系結(jié)構(gòu)是一個(gè)系統(tǒng)的結(jié)構(gòu),包括軟件構(gòu)件、構(gòu)軟件體系結(jié)構(gòu)是一個(gè)系統(tǒng)的結(jié)構(gòu),包括軟件構(gòu)件、構(gòu)件的外部可見屬性、以及構(gòu)件關(guān)系件的外部可見屬性、以及構(gòu)件關(guān)系 這里,這里,“外部可見外部可見”屬性指的是其他構(gòu)
37、件可以對(duì)該構(gòu)件所做屬性指的是其他構(gòu)件可以對(duì)該構(gòu)件所做的假定,比如它提供的服務(wù)、性能特性、錯(cuò)誤處理、共享資的假定,比如它提供的服務(wù)、性能特性、錯(cuò)誤處理、共享資源的使用等源的使用等軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的定義(3) Booch, Rumbaugh, and Jacobson, 1999 軟件體系結(jié)構(gòu)是一組關(guān)于下述問題的重要決定,軟件體系結(jié)構(gòu)是一組關(guān)于下述問題的重要決定, 軟件系統(tǒng)的組織軟件系統(tǒng)的組織 構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素和它們接口的選擇構(gòu)成系統(tǒng)的結(jié)構(gòu)化元素和它們接口的選擇 這些模型元素之間的協(xié)作所描述的行為這些模型元素之間的協(xié)作所描述的行為 這些結(jié)構(gòu)化和行為元素的組裝,以形成更大的子系統(tǒng)這
38、些結(jié)構(gòu)化和行為元素的組裝,以形成更大的子系統(tǒng) 指導(dǎo)這種組織(靜態(tài)和動(dòng)態(tài)元素,以及它們的接口、協(xié)作和指導(dǎo)這種組織(靜態(tài)和動(dòng)態(tài)元素,以及它們的接口、協(xié)作和組裝)的體系結(jié)構(gòu)風(fēng)格組裝)的體系結(jié)構(gòu)風(fēng)格 軟件體系結(jié)構(gòu)不僅關(guān)注結(jié)構(gòu)和行為,也關(guān)注使用、功能、性軟件體系結(jié)構(gòu)不僅關(guān)注結(jié)構(gòu)和行為,也關(guān)注使用、功能、性能、彈性、復(fù)用、可理解性、經(jīng)濟(jì)和技術(shù)約束與折衷、審美能、彈性、復(fù)用、可理解性、經(jīng)濟(jì)和技術(shù)約束與折衷、審美考慮考慮軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的定義(5) 一個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)定義了組成系統(tǒng)的一個(gè)軟件系統(tǒng)的體系結(jié)構(gòu)定義了組成系統(tǒng)的 構(gòu)件(構(gòu)件(components),), 連接件(連接件(connec
39、tors),和),和 它們之間的匹配它們之間的匹配 這里,構(gòu)件用于實(shí)施計(jì)算和保存狀態(tài),連接件用這里,構(gòu)件用于實(shí)施計(jì)算和保存狀態(tài),連接件用于表達(dá)構(gòu)件之間的關(guān)系,構(gòu)件和連接件之間的匹于表達(dá)構(gòu)件之間的關(guān)系,構(gòu)件和連接件之間的匹配表示了系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。配表示了系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。A2A1A3B1B2程序的構(gòu)成以及發(fā)展 程序程序 = 算法算法 + 數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)(1960s ) 程序程序 = 子程序子程序 + 子程序(子程序(1970s ) 對(duì)象對(duì)象 = 算法算法 + 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)程序程序 = 對(duì)象對(duì)象 + 對(duì)象(對(duì)象(1980s) 程序程序 = 構(gòu)件構(gòu)件 + 連接件(連接件(1990s)構(gòu)件與軟件
40、重用構(gòu)件與軟件重用構(gòu)件的定義構(gòu)件的定義 構(gòu)件是指語義完整、語法正確和有可重用價(jià)值的單位軟件,是軟件重用過程中可以明確辨識(shí)的系統(tǒng);結(jié)構(gòu)上,它是語義描述、通訊接口和實(shí)現(xiàn)代碼的復(fù)合體。 簡(jiǎn)單說,構(gòu)件是具有一定的功能,能夠獨(dú)立工作或能同其他構(gòu)件裝配起來協(xié)調(diào)工作的程序體。 面向?qū)ο蠹夹g(shù)達(dá)到了類級(jí)重用(代碼重用)。構(gòu)件對(duì)一組類的組合進(jìn)行封裝。 構(gòu)件模型的三個(gè)主要流派構(gòu)件模型的三個(gè)主要流派構(gòu)件與軟件重用構(gòu)件與軟件重用 OMG(Object Management Group,對(duì)象管理集團(tuán))的CORBA(Common Object Request Broker Architecture,通用對(duì)象請(qǐng)求代理結(jié)構(gòu))S
41、un的EJB(Enterprise Java Bean)Microsoft的DCOM(Distributed Component Object Model,分布式構(gòu)件對(duì)象模型)。 構(gòu)件獲取構(gòu)件獲取構(gòu)件與軟件重用構(gòu)件與軟件重用 從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或作適應(yīng)性修改,得到可重用的構(gòu)件; 通過遺留工程,將具有潛在重用價(jià)值的構(gòu)件提取出來,得到可重用的構(gòu)件; 從市場(chǎng)上購買現(xiàn)成的商業(yè)構(gòu)件,即COTS(Commercial Off-The-Shell)構(gòu)件; 開發(fā)新的符合要求的構(gòu)件。 構(gòu)件管理構(gòu)件管理 構(gòu)件與軟件重用構(gòu)件與軟件重用 構(gòu)件描述構(gòu)件描述 構(gòu)件分類與組織構(gòu)件分類與組織 人員及權(quán)限
42、管理人員及權(quán)限管理對(duì)大量的構(gòu)件進(jìn)行有效的管理,以方便構(gòu)件的存對(duì)大量的構(gòu)件進(jìn)行有效的管理,以方便構(gòu)件的存儲(chǔ)、檢索和提取,是成功重用構(gòu)件的必要保證。儲(chǔ)、檢索和提取,是成功重用構(gòu)件的必要保證。構(gòu)件管理的內(nèi)容包括:構(gòu)件管理的內(nèi)容包括:構(gòu)件模型及實(shí)現(xiàn)構(gòu)件模型及實(shí)現(xiàn) 構(gòu)件描述構(gòu)件描述 構(gòu)件模型是對(duì)構(gòu)件本質(zhì)的抽象描述,主要是為構(gòu)件模型是對(duì)構(gòu)件本質(zhì)的抽象描述,主要是為構(gòu)件的制作與構(gòu)件的復(fù)用提供依據(jù);構(gòu)件的制作與構(gòu)件的復(fù)用提供依據(jù); 從管理角度出發(fā),也需要對(duì)構(gòu)件進(jìn)行描述,例從管理角度出發(fā),也需要對(duì)構(gòu)件進(jìn)行描述,例如:實(shí)現(xiàn)方式、實(shí)現(xiàn)體、注釋、生產(chǎn)者、生產(chǎn)如:實(shí)現(xiàn)方式、實(shí)現(xiàn)體、注釋、生產(chǎn)者、生產(chǎn)日期、大小、價(jià)格、版
43、本和關(guān)聯(lián)構(gòu)件等信息,日期、大小、價(jià)格、版本和關(guān)聯(lián)構(gòu)件等信息,它們與構(gòu)件模型共同組成了對(duì)構(gòu)件的完整描述。它們與構(gòu)件模型共同組成了對(duì)構(gòu)件的完整描述。構(gòu)件管理構(gòu)件管理 構(gòu)件分類與組織構(gòu)件分類與組織 關(guān)鍵字分類法關(guān)鍵字分類法 刻面分類法刻面分類法 超文本組織方法超文本組織方法 構(gòu)件管理構(gòu)件管理 關(guān)鍵字分類法關(guān)鍵字分類法圖形用戶界面鍵盤事件處理拖放處理數(shù)據(jù)錄入對(duì)話框信息對(duì)話框文字窗口圖形窗口對(duì)話框菜單事件處理窗口點(diǎn)擊處理彈出式菜單主菜單 人員及權(quán)限管理人員及權(quán)限管理 一般來講,構(gòu)件庫系統(tǒng)可包括五類用戶,即注一般來講,構(gòu)件庫系統(tǒng)可包括五類用戶,即注冊(cè)用戶、公共用戶、構(gòu)件提交者、一般系統(tǒng)管冊(cè)用戶、公共用戶、
44、構(gòu)件提交者、一般系統(tǒng)管理員和超級(jí)系統(tǒng)管理員。理員和超級(jí)系統(tǒng)管理員。 4.1.4 4.1.4 軟件體系結(jié)構(gòu)設(shè)計(jì)原則軟件體系結(jié)構(gòu)設(shè)計(jì)原則抽象的原則抽象的原則分而治之的原則分而治之的原則封裝和信息隱蔽原則封裝和信息隱蔽原則模塊化原則模塊化原則高內(nèi)聚和低耦合高內(nèi)聚和低耦合關(guān)注點(diǎn)分離原則關(guān)注點(diǎn)分離原則策略和實(shí)現(xiàn)的分離原則策略和實(shí)現(xiàn)的分離原則接口和實(shí)現(xiàn)分離原則接口和實(shí)現(xiàn)分離原則4.1.5 4.1.5 軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方向向應(yīng)用現(xiàn)狀應(yīng)用現(xiàn)狀形成研究熱點(diǎn),仍處于非形式化水平形成研究熱點(diǎn),仍處于非形式化水平軟件體系結(jié)構(gòu)的形式化方法研究軟件體系結(jié)構(gòu)的形式化方法研究 軟件體系結(jié)構(gòu)的
45、建模研究軟件體系結(jié)構(gòu)的建模研究 發(fā)展基于體系結(jié)構(gòu)的軟件開發(fā)模型發(fā)展基于體系結(jié)構(gòu)的軟件開發(fā)模型 軟件產(chǎn)品線體系結(jié)構(gòu)的研究軟件產(chǎn)品線體系結(jié)構(gòu)的研究 4.1.5 4.1.5 軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方向向2. 研究熱點(diǎn)研究熱點(diǎn)提供新的軟件體系結(jié)構(gòu)描述語言提供新的軟件體系結(jié)構(gòu)描述語言對(duì)軟件體系結(jié)構(gòu)的專門知識(shí)的整理對(duì)軟件體系結(jié)構(gòu)的專門知識(shí)的整理 提供特定領(lǐng)域的體系結(jié)構(gòu)框架提供特定領(lǐng)域的體系結(jié)構(gòu)框架 提供軟件體系結(jié)構(gòu)的形式化基礎(chǔ)提供軟件體系結(jié)構(gòu)的形式化基礎(chǔ) 建立評(píng)價(jià)軟件體系結(jié)構(gòu)的方法建立評(píng)價(jià)軟件體系結(jié)構(gòu)的方法 4.1.5 4.1.5 軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方軟件體系結(jié)構(gòu)的現(xiàn)狀及
46、發(fā)展方向向3. 發(fā)展方向發(fā)展方向各種各種ADLs之間的信息互換之間的信息互換 設(shè)計(jì)工具和環(huán)境設(shè)計(jì)工具和環(huán)境 體系結(jié)構(gòu)再工程體系結(jié)構(gòu)再工程 4.2 4.2 通用的軟件體系結(jié)構(gòu)通用的軟件體系結(jié)構(gòu) 主機(jī)主機(jī)/終端結(jié)構(gòu)終端結(jié)構(gòu) 兩層結(jié)構(gòu)兩層結(jié)構(gòu)客戶客戶/服務(wù)器體系結(jié)構(gòu)服務(wù)器體系結(jié)構(gòu) 瀏覽器瀏覽器/服務(wù)器結(jié)構(gòu)服務(wù)器結(jié)構(gòu) 三層三層C/S結(jié)構(gòu)結(jié)構(gòu) 三層三層C/S結(jié)構(gòu)應(yīng)用實(shí)例結(jié)構(gòu)應(yīng)用實(shí)例 4.2.1 4.2.1 主機(jī)主機(jī)/ /終端結(jié)構(gòu)終端結(jié)構(gòu) 早期計(jì)算機(jī)系統(tǒng)多是單機(jī)系統(tǒng),多個(gè)用戶早期計(jì)算機(jī)系統(tǒng)多是單機(jī)系統(tǒng),多個(gè)用戶是通過聯(lián)機(jī)終端來訪問的,沒有網(wǎng)絡(luò)的概是通過聯(lián)機(jī)終端來訪問的,沒有網(wǎng)絡(luò)的概念。即所謂的主機(jī)分時(shí)系統(tǒng)。念。即所謂的主機(jī)分時(shí)系統(tǒng)。 連接的終端完全沒有事務(wù)處理的能力,只連接的終端完全沒有事務(wù)處理的能力,只是輸入和顯示信息。是輸入和顯示信息。 所有的事務(wù)處理功能完全放在主機(jī)進(jìn)行。所有的事務(wù)處理功能完全放在主機(jī)進(jìn)行。因此主機(jī)的負(fù)載很重,整個(gè)系統(tǒng)的事務(wù)處因此主機(jī)的負(fù)載很重,整個(gè)系統(tǒng)的事務(wù)處理能力全部取決于主機(jī)。理能力全部取決于主機(jī)。 目前,主機(jī)終端模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年供水設(shè)施建設(shè)協(xié)議書
- 2025年緊急出口門采購合同
- 2025年午休時(shí)段兒童看護(hù)服務(wù)協(xié)議
- 兒童領(lǐng)養(yǎng)程序指導(dǎo)協(xié)議
- 2025年產(chǎn)品市場(chǎng)分隔協(xié)議范本
- 2025年防水建材項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 2025年公共場(chǎng)所消防設(shè)施供應(yīng)及維護(hù)合同
- 2025年同心同行策劃合作框架協(xié)議
- 2025年醫(yī)療用品分銷合作伙伴協(xié)議范例
- 2025年共同策劃長遠(yuǎn)發(fā)展協(xié)同計(jì)劃協(xié)議書標(biāo)準(zhǔn)樣式
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 上海市楊浦區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期英語期末考卷(含筆試答案無聽力答案、原文及音頻)
- 《監(jiān)理安全培訓(xùn)》課件
- 最新六年級(jí)英語下冊(cè)《全套教材分析解讀》外研版課件
- 勞動(dòng)合同法草案的立法背景與創(chuàng)新黎建飛中國人民大學(xué)法學(xué)院教授
- 第三章 檢測(cè)儀表與傳感器
- 服裝QC尾期查貨報(bào)告(中英雙語)
- 電機(jī)學(xué)辜承林(第三版)第1章
- 肩鎖關(guān)節(jié)脫位的分型及其endobutton手術(shù)治療
- 管理系統(tǒng)中計(jì)算機(jī)應(yīng)用PPT課件
- 標(biāo)準(zhǔn)的個(gè)人簡(jiǎn)歷表格()
評(píng)論
0/150
提交評(píng)論