軟件體系結(jié)構(gòu)_第1頁(yè)
軟件體系結(jié)構(gòu)_第2頁(yè)
軟件體系結(jié)構(gòu)_第3頁(yè)
軟件體系結(jié)構(gòu)_第4頁(yè)
軟件體系結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件體系結(jié)構(gòu)2012年9月軟件體系結(jié)構(gòu)

出版社:清華大學(xué)出版社

作者:張友生軟件體系結(jié)構(gòu)第一章軟件體系結(jié)構(gòu)概論軟件體系結(jié)構(gòu)軟件危機(jī)是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題。軟件危機(jī)的表現(xiàn)軟件成本日益增長(zhǎng)開(kāi)發(fā)進(jìn)度難以控制軟件質(zhì)量差軟件維護(hù)困難1.1從軟件危機(jī)談起軟件體系結(jié)構(gòu)

軟件成本日益增長(zhǎng)

20世紀(jì)50年代,軟件成本在整個(gè)計(jì)算機(jī)系統(tǒng)成本中所占的比例為10%-20%。到20世紀(jì)60年代中期,軟件成本在計(jì)算機(jī)系統(tǒng)中所占的比例已經(jīng)增長(zhǎng)到50%左右。而且,該數(shù)字還在不斷地遞增,下面是一組來(lái)自美國(guó)空軍計(jì)算機(jī)系統(tǒng)的數(shù)據(jù):1955年,軟件費(fèi)用約占總費(fèi)用的18%,1970年達(dá)到60%,1975年達(dá)到72%,1980年達(dá)到80%,1985年達(dá)到85%左右。軟件危機(jī)的表現(xiàn)軟件體系結(jié)構(gòu)開(kāi)發(fā)進(jìn)度難以控制由于軟件是邏輯、智力產(chǎn)品,軟件的開(kāi)發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。在軟件開(kāi)發(fā)過(guò)程中,用戶需求變化等各種意想不到的情況層出不窮,令軟件開(kāi)發(fā)過(guò)程很難保證按預(yù)定的計(jì)劃實(shí)現(xiàn),給項(xiàng)目計(jì)劃和論證工作帶來(lái)了很大的困難。盲目增加軟件開(kāi)發(fā)人員并不能成比例地提高軟件開(kāi)發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問(wèn)題將更為嚴(yán)重。軟件體系結(jié)構(gòu)軟件質(zhì)量差軟件項(xiàng)目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。1965年至1970年,美國(guó)范登堡基地發(fā)射火箭多次失敗,絕大部分故障是由應(yīng)用程序錯(cuò)誤造成的。在“軟件作坊”里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對(duì)軟件的需求,軟件設(shè)計(jì)帶有隨意性,很多功能只是程序員的“一廂情愿”而已,這是造成軟件不能令人滿意的重要因素。軟件體系結(jié)構(gòu)軟件維護(hù)困難由于在軟件設(shè)計(jì)和開(kāi)發(fā)過(guò)程中,沒(méi)有嚴(yán)格遵循軟件開(kāi)發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒(méi)有完整的真實(shí)反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。特別是在軟件使用過(guò)程中,原來(lái)的開(kāi)發(fā)人員可能因各種原因已經(jīng)離開(kāi)原來(lái)的開(kāi)發(fā)組織,使得軟件幾乎不可維護(hù)。有資料表明,工業(yè)界為維護(hù)軟件支付的費(fèi)用占全部硬件和軟件費(fèi)用的40%-75%。軟件體系結(jié)構(gòu)用戶需求不明確在軟件開(kāi)發(fā)完成之前,用戶不清楚軟件的具體需求;用戶對(duì)軟件需求的描述不精確,可能有遺漏、有二義性、甚至有錯(cuò)誤;在軟件開(kāi)發(fā)過(guò)程中,用戶還提出修改軟件功能、界面、支撐環(huán)境等方面的要求;開(kāi)發(fā)人員對(duì)用戶需求的理解與用戶本來(lái)愿望有差異。軟件危機(jī)的原因軟件體系結(jié)構(gòu)缺乏正確的理論指導(dǎo)缺乏有力的方法學(xué)和工具方面的支持。由于軟件不同于大多數(shù)其他工業(yè)產(chǎn)品,其開(kāi)發(fā)過(guò)程是復(fù)雜的邏輯思維過(guò)程,其產(chǎn)品極大程度地依賴于開(kāi)發(fā)人員高度的智力投入。由于過(guò)分地依靠程序設(shè)計(jì)人員在軟件開(kāi)發(fā)過(guò)程中的技巧和創(chuàng)造性,加劇軟件產(chǎn)品的個(gè)性化,也是發(fā)生軟件危機(jī)的一個(gè)重要原因。軟件體系結(jié)構(gòu)軟件規(guī)模越來(lái)越大隨著軟件應(yīng)用范圍的增廣,軟件規(guī)模愈來(lái)愈大。大型軟件項(xiàng)目需要組織一定的人力共同完成,而多數(shù)管理人員缺乏開(kāi)發(fā)大型軟件系統(tǒng)的經(jīng)驗(yàn),而多數(shù)軟件開(kāi)發(fā)人員又缺乏管理方面的經(jīng)驗(yàn)。各類人員的信息交流不及時(shí)、不準(zhǔn)確、有時(shí)還會(huì)產(chǎn)生誤解。軟件項(xiàng)目開(kāi)發(fā)人員不能有效地、獨(dú)立自主地處理大型軟件的全部關(guān)系和各個(gè)分支,因此容易產(chǎn)生疏漏和錯(cuò)誤。軟件體系結(jié)構(gòu)軟件復(fù)雜度越來(lái)越高軟件不僅僅是在規(guī)模上快速地發(fā)展擴(kuò)大,而且其復(fù)雜性也急劇地增加。軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無(wú)力處理“復(fù)雜問(wèn)題”。所謂“復(fù)雜問(wèn)題”的概念是相對(duì)的,一旦人們采用先進(jìn)的組織形式、開(kāi)發(fā)方法和工具提高了軟件開(kāi)發(fā)效率和能力,新的、更大的、更復(fù)雜的問(wèn)題又?jǐn)[在人們的面前。軟件體系結(jié)構(gòu)如何克服軟件危機(jī)軟件危機(jī)的原因:“人們面臨的不光是技術(shù)問(wèn)題,更重要的是管理問(wèn)題。管理不善必然導(dǎo)致失敗?!币岣哕浖_(kāi)發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開(kāi)發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)----軟件工程在技術(shù)上,應(yīng)該采用基于重用的軟件生產(chǎn)技術(shù);在管理上,應(yīng)該采用多維的工程管理模式。軟件體系結(jié)構(gòu)軟件工程的三大要素:方法:完成軟件工程項(xiàng)目的技術(shù)手段工具:為軟件工程方法提供自動(dòng)或半自動(dòng)的軟件支撐環(huán)境過(guò)程:軟件工程的方法和工具綜合起來(lái)以達(dá)到合理、及時(shí)地進(jìn)行計(jì)算機(jī)軟件開(kāi)發(fā)的目的軟件體系結(jié)構(gòu)當(dāng)前社會(huì)的信息化過(guò)程對(duì)軟件需求的增長(zhǎng)非常迅速,但是目前軟件的開(kāi)發(fā)與生產(chǎn)能力卻相對(duì)不足。提高軟件開(kāi)發(fā)效率和軟件產(chǎn)品質(zhì)量,則必須采用工程化的開(kāi)發(fā)方法與工程化的生產(chǎn)技術(shù)。技術(shù)方面:采用基于重用的軟件生產(chǎn)技術(shù)管理方面:采用多維的工程管理模式1.2構(gòu)件與軟件重用軟件體系結(jié)構(gòu)在工程化的軟件開(kāi)發(fā)過(guò)程中構(gòu)件是核心和基礎(chǔ)重用是必要的手段軟件體系結(jié)構(gòu)構(gòu)件是指語(yǔ)義完整、語(yǔ)法正確和有可重用價(jià)值的單位軟件,是軟件重用過(guò)程中可以明確辨識(shí)的系統(tǒng);結(jié)構(gòu)上,它是語(yǔ)義描述、通訊接口和實(shí)現(xiàn)代碼的復(fù)合體。具有一定功能,能夠獨(dú)立工作或能同其他構(gòu)件裝配起來(lái)協(xié)調(diào)工作的程序體,使用上同它的開(kāi)發(fā)、生產(chǎn)無(wú)關(guān)。軟件體系結(jié)構(gòu)軟件重用是指在兩次或多次不同的軟件開(kāi)發(fā)過(guò)程中重復(fù)使用相同或相近軟件元素的過(guò)程。軟件元素包括:程序代碼測(cè)試用例設(shè)計(jì)文檔設(shè)計(jì)過(guò)程需求分析文檔領(lǐng)域知識(shí)軟件體系結(jié)構(gòu)構(gòu)件模型是對(duì)構(gòu)件本質(zhì)特征的抽象描述。構(gòu)件模型的三個(gè)主要流派:OMG(ObjectManagementGroup,對(duì)象管理集團(tuán))的CORBA(CommonObjectRequestBrokerArchitecture,通用對(duì)象請(qǐng)求代理結(jié)構(gòu))Sun的EJB(EnterpriseJavaBean)Microsoft的DCOM(DistributedComponentObjectModel,分布式構(gòu)件對(duì)象模型)。軟件體系結(jié)構(gòu)構(gòu)件獲取途徑:從現(xiàn)有構(gòu)件中獲得符合要求的構(gòu)件,直接使用或作適應(yīng)性修改,得到可重用的構(gòu)件;通過(guò)遺留工程,將具有潛在重用價(jià)值的構(gòu)件提取出來(lái),得到可重用的構(gòu)件;從市場(chǎng)上購(gòu)買現(xiàn)成的商業(yè)構(gòu)件,即COTS(CommercialOff-The-Shell)構(gòu)件;開(kāi)發(fā)新的符合要求的構(gòu)件。軟件體系結(jié)構(gòu)構(gòu)件描述構(gòu)件模型是對(duì)構(gòu)件本質(zhì)的抽象描述,主要是為構(gòu)件的制作與構(gòu)件的重用提供依據(jù);從管理角度出發(fā),也需要對(duì)構(gòu)件進(jìn)行描述,例如:實(shí)現(xiàn)方式、實(shí)現(xiàn)體、注釋、生產(chǎn)者、生產(chǎn)日期、大小、價(jià)格、版本和關(guān)聯(lián)構(gòu)件等信息,它們與構(gòu)件模型共同組成了對(duì)構(gòu)件的完整描述。構(gòu)件管理軟件體系結(jié)構(gòu)構(gòu)件分類與組織為了給使用者在查詢構(gòu)件時(shí)提供方便,同時(shí)也為了更好地重用構(gòu)件,必須對(duì)收集和開(kāi)發(fā)的構(gòu)件進(jìn)行分類并置于構(gòu)件庫(kù)德適當(dāng)位置。構(gòu)件庫(kù)組織方法的要求:支持構(gòu)件庫(kù)的各種維護(hù)動(dòng)作不僅要支持精確匹配,還要支持相似構(gòu)件的查找不僅能進(jìn)行簡(jiǎn)單的語(yǔ)法匹配,而且能夠查找在功能或行為方面的等價(jià)或相似的構(gòu)件對(duì)應(yīng)用領(lǐng)域具有較強(qiáng)的描述能力和較好的描述精度庫(kù)管理員和用戶容易使用軟件體系結(jié)構(gòu)分類方法:關(guān)鍵字分類法是一種最簡(jiǎn)單的構(gòu)件庫(kù)組織方法。思路是:根據(jù)領(lǐng)域分析的結(jié)果將應(yīng)用領(lǐng)域的概念按照從抽象到具體的順序逐次分解為樹(shù)形或有向無(wú)回路圖結(jié)構(gòu)。每個(gè)概念用一個(gè)描述性的關(guān)鍵字表示。不可分解的原子級(jí)關(guān)鍵字包含隸屬它的某些構(gòu)件。軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)刻面分類法定義若干用于刻畫(huà)構(gòu)件特征的“面”,每個(gè)面包含若干概念,這些概念表述構(gòu)件在面上的特征??堂婵梢悦枋鰳?gòu)件執(zhí)行的功能被操作的數(shù)據(jù)構(gòu)件應(yīng)用的語(yǔ)境任意其他特征格式:{function,objecttype,systemtype,...}軟件體系結(jié)構(gòu)超文本組織法是基于全文檢索技術(shù)。是所有構(gòu)件必須輔以詳盡的功能或行為說(shuō)明文檔。說(shuō)明中出現(xiàn)的重要概念或構(gòu)件以網(wǎng)狀鏈接方式相互連接;檢索者在閱讀文檔的過(guò)程中可按照人類的聯(lián)想思維方式任意跳轉(zhuǎn)到包含相關(guān)概念或構(gòu)件的文檔。全文檢索系統(tǒng)將用戶給出的關(guān)鍵字與說(shuō)明文檔中的文字進(jìn)行匹配,實(shí)現(xiàn)構(gòu)件的瀏覽式檢索。軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)商業(yè)構(gòu)件的分類:用戶界面類、數(shù)據(jù)庫(kù)類商務(wù)應(yīng)用類工具類、網(wǎng)絡(luò)通訊類核心技術(shù)類軟件體系結(jié)構(gòu)構(gòu)件的外部形態(tài)分類:獨(dú)立而成熟的構(gòu)件有限制的構(gòu)件適應(yīng)性構(gòu)件裝配的構(gòu)件可修改的構(gòu)件軟件體系結(jié)構(gòu)人員及權(quán)限管理訪問(wèn)構(gòu)件庫(kù)的不用使用者的訪問(wèn)權(quán)限作出適當(dāng)?shù)南拗?,以保證數(shù)據(jù)安全。一般來(lái)講,構(gòu)件庫(kù)系統(tǒng)可包括五類用戶,即注冊(cè)用戶、公共用戶、構(gòu)件提交者、一般系統(tǒng)管理員和超級(jí)系統(tǒng)管理員。軟件體系結(jié)構(gòu)構(gòu)件重用為了讓構(gòu)件在新的軟件項(xiàng)目中發(fā)揮作用,構(gòu)件庫(kù)的使用者必須完成以下的工作:檢索與提取構(gòu)件

理解與評(píng)價(jià)構(gòu)件修改構(gòu)件構(gòu)件組裝軟件體系結(jié)構(gòu)檢索與提取構(gòu)件基于關(guān)鍵字的檢索刻面檢索法構(gòu)造查詢檢索構(gòu)件對(duì)構(gòu)件進(jìn)行排序超文本檢索法其他檢索方法軟件體系結(jié)構(gòu)理解與評(píng)價(jià)構(gòu)件構(gòu)件的功能與行為相關(guān)的領(lǐng)域知識(shí)可適應(yīng)性約束條件與例外情形可以預(yù)見(jiàn)的修改部分及修改方法軟件體系結(jié)構(gòu)修改構(gòu)件理想的情形是對(duì)庫(kù)中的構(gòu)件不作修改而直接用于新的軟件項(xiàng)目。但是,在大多數(shù)情況下,必須對(duì)構(gòu)件進(jìn)行或多或少的修改,以適應(yīng)新的需求。為了減少構(gòu)件修改的工作量,要求開(kāi)發(fā)人員盡量使構(gòu)件的功能、行為和接口設(shè)計(jì)更為抽象化、通用化和參數(shù)化。軟件體系結(jié)構(gòu)基于功能的組裝技術(shù)基于功能的組裝技術(shù)采用子程序調(diào)用和參數(shù)傳遞的方式將構(gòu)件組裝起來(lái)。它要求庫(kù)中的構(gòu)件以子程序/過(guò)程/函數(shù)的形式出現(xiàn),并且接口說(shuō)明必須清晰。當(dāng)使用這種組裝技術(shù)進(jìn)行軟件開(kāi)發(fā)時(shí),開(kāi)發(fā)人員首先應(yīng)對(duì)目標(biāo)軟件系統(tǒng)進(jìn)行功能分解,將系統(tǒng)分解為強(qiáng)內(nèi)聚、松耦合的功能模塊。然后根據(jù)各模塊的功能需求提取構(gòu)件,對(duì)它進(jìn)行適應(yīng)性修改后再掛接在上述功能分解框架中。構(gòu)件組裝軟件體系結(jié)構(gòu)基于數(shù)據(jù)的組裝技術(shù)首先根據(jù)當(dāng)前軟件問(wèn)題的核心數(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ù)也要求庫(kù)中構(gòu)件以子程序形式出現(xiàn),但它所依賴的軟件設(shè)計(jì)方法不再是功能分解,而是面向數(shù)據(jù)的設(shè)計(jì)方法,例如Jackson系統(tǒng)開(kāi)發(fā)方法。軟件體系結(jié)構(gòu)面向?qū)ο蟮慕M裝技術(shù)如果類庫(kù)中的基類能夠滿足新軟件需求,則可以直接應(yīng)用;否則,必須以類庫(kù)中的基類為父類,采用構(gòu)造法或子類法生成子類。構(gòu)造法在子類中引進(jìn)基類的對(duì)象作為子類的成員變量,然后在子類中通過(guò)成員變量重用基類的屬性和方法。子類法將新子類直接說(shuō)明為庫(kù)中基類的子類,通過(guò)繼承和修改基類的屬性與行為完成新子類的定義。軟件體系結(jié)構(gòu)classPerson{public: Person(char*name,intage) ~Person();protected: char*name; intage;};//基類構(gòu)造函數(shù)Person::Person(char*name,intage){ Person::name=newchar[strlen(name)+1]; strcpy(Person::name,name); Person::age=age; cout<<"ConstructPerson"<<name<<","<<age<<".\n";}//基類析構(gòu)函數(shù)Person::~Person(){ cout<<"DestructPerson"<<name<<","<<age<<".\n"; deletename; return;}軟件體系結(jié)構(gòu)//采用構(gòu)造法生成TeacherclassTeacher{public: Teacher(char*name,intage,char*teaching); ~Teacher();protected: Tperson*Person; char*course;};Teacher::Teacher(char*name,intage,char*teaching){ Tperson=newPerson(name,age); strcpy(course,teaching); return;}Teacher::~Teacher(){ deleteTperson;}軟件體系結(jié)構(gòu)classPerson{public: Person(char*name,intage) ~Person();protected: char*name; intage;};//基類構(gòu)造函數(shù)Person::Person(char*name,intage){ Person::name=newchar[strlen(name)+1]; strcpy(Person::name,name); Person::age=age; cout<<"ConstructPerson"<<name<<","<<age<<".\n";}//基類西溝函數(shù)Person::~Person(){ cout<<"DestructPerson"<<name<<","<<age<<".\n"; deletename; return;}軟件體系結(jié)構(gòu)//采用子類法構(gòu)造TeacherclassTeacher::Person{public: Teacher(char*name,intage,char*teaching):Person(name,age)

{ course=newchar[strlen(teaching)+1]; strcpy(course,teaching); return;

} ~Teacher()

{ deletecourse; return;

}protected: char*course;};軟件體系結(jié)構(gòu)隨著軟件系統(tǒng)規(guī)模越來(lái)越大、越來(lái)越復(fù)雜,整個(gè)系統(tǒng)的結(jié)構(gòu)和規(guī)格說(shuō)明顯得越來(lái)越重要。對(duì)于大規(guī)模的復(fù)雜軟件系統(tǒng)來(lái)說(shuō),對(duì)總體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和規(guī)格說(shuō)明比起對(duì)計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu)的選擇已經(jīng)變得明顯重要得多。對(duì)軟件體系結(jié)構(gòu)的系統(tǒng)、深入的研究將會(huì)成為提高軟件生產(chǎn)率和解決軟件維護(hù)問(wèn)題的新的最有希望的途徑。事實(shí)上,軟件總是有體系結(jié)構(gòu)的,不存在沒(méi)有體系結(jié)構(gòu)的軟件。軟件體系結(jié)構(gòu)雖脫胎于軟件工程,但其形成同時(shí)借鑒了計(jì)算機(jī)體系結(jié)構(gòu)和網(wǎng)絡(luò)體系結(jié)構(gòu)中很多寶貴的思想和方法,最近幾年軟件體系結(jié)構(gòu)研究已完全獨(dú)立于軟件工程的研究,成為計(jì)算機(jī)科學(xué)的一個(gè)最新的研究方向和獨(dú)立學(xué)科分支。1.3體系結(jié)構(gòu)的興起和發(fā)展軟件體系結(jié)構(gòu)◎DewaynePerry和A1exanderWo1f軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工數(shù)據(jù)構(gòu)件是被加工的信息連接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來(lái)。這一定義注重區(qū)分處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件,這一方法在其他的定義和方法中基本上得到保持。軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)◎MaryShaw和DavidGarlan軟件體系結(jié)構(gòu)是軟件設(shè)計(jì)過(guò)程中的一個(gè)層次,這一層次超越計(jì)算過(guò)程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)問(wèn)題包括總體組織和全局控制、通訊協(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ì)和描述方面的一些問(wèn)題,如全局組織和全局控制結(jié)構(gòu)、關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,設(shè)計(jì)構(gòu)件功能定義,物理分布與合成,設(shè)計(jì)方案的選擇、評(píng)估與實(shí)現(xiàn)等。軟件體系結(jié)構(gòu)◎Kruchten軟件體系結(jié)構(gòu)有四個(gè)角度,它們從不同方面對(duì)系統(tǒng)進(jìn)行描述:概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運(yùn)行角度描述了一個(gè)系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu);代碼角度描述了各種代碼和庫(kù)函數(shù)在開(kāi)發(fā)環(huán)境中的組織。軟件體系結(jié)構(gòu)◎HayesRoth軟件體系結(jié)構(gòu)是一個(gè)抽象的系統(tǒng)規(guī)范,主要包括用其行為來(lái)描述的功能構(gòu)件和構(gòu)件之間的相互連接、接口和關(guān)系。軟件體系結(jié)構(gòu)◎DavidGarlan和DewnePerry軟件體系結(jié)構(gòu)是一個(gè)程序/系統(tǒng)各構(gòu)件的結(jié)構(gòu)、它們之間的相互關(guān)系以及進(jìn)行設(shè)計(jì)的原則和隨時(shí)間演化的指導(dǎo)方針。軟件體系結(jié)構(gòu)◎BarryBoehm軟件體系結(jié)構(gòu)包括一個(gè)軟件和系統(tǒng)構(gòu)件,互聯(lián)及約束的集合;一個(gè)系統(tǒng)需求說(shuō)明的集合;一個(gè)基本原理用以說(shuō)明這一構(gòu)件,互聯(lián)和約束能夠滿足系統(tǒng)需求。軟件體系結(jié)構(gòu)◎Bass,Ctements和Kazman軟件體系結(jié)構(gòu)包括一個(gè)或一組軟件構(gòu)件、軟件構(gòu)件的外部的可見(jiàn)特性及其相互關(guān)系。其中,“軟件外部的可見(jiàn)特性”是指軟件構(gòu)件提供的服務(wù)、性能、特性、錯(cuò)誤處理、共享資源使用等。軟件體系結(jié)構(gòu)◎我們的定義軟件體系結(jié)構(gòu)為軟件系統(tǒng)提供了一個(gè)結(jié)構(gòu)、行為和屬性的高級(jí)抽象,由構(gòu)成系統(tǒng)的元素的描述、這些元素的相互作用、指導(dǎo)元素集成的模式以及這些模式的約束組成。軟件體系結(jié)構(gòu)不僅指定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),并且顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對(duì)應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。軟件體系結(jié)構(gòu)架構(gòu)要涵蓋的內(nèi)容和決策太多了,超過(guò)了人腦“一蹴而就”的能力范圍,因此采用“分而治之”的辦法從不同視角分別設(shè)計(jì);同時(shí),也為軟件架構(gòu)的理解、交流和歸檔提供了方便。軟件體系結(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)識(shí),互相交流。體系結(jié)構(gòu)提供了一種共同語(yǔ)言來(lái)表達(dá)各種關(guān)注和協(xié)商,進(jìn)而對(duì)大型復(fù)雜系統(tǒng)能進(jìn)行理智的管理。這對(duì)項(xiàng)目最終的質(zhì)量和使用有極大的影響。*“風(fēng)險(xiǎn)承擔(dān)人”:最終用戶、開(kāi)發(fā)人員、系統(tǒng)工程師、項(xiàng)目經(jīng)理等。軟件體系結(jié)構(gòu)的意義軟件體系結(jié)構(gòu)體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn)

(1)軟件體系結(jié)構(gòu)明確了對(duì)系統(tǒng)實(shí)現(xiàn)的約束條件(2)軟件體系結(jié)構(gòu)決定了開(kāi)發(fā)和維護(hù)組織的組織結(jié)構(gòu)(3)軟件體系結(jié)構(gòu)制約著系統(tǒng)的質(zhì)量屬性(4)通過(guò)研究軟件體系結(jié)構(gòu)可能預(yù)測(cè)軟件的質(zhì)量(5)軟件體系結(jié)構(gòu)使推理和控制更改更簡(jiǎn)單(6)軟件體系結(jié)構(gòu)有助于循序漸進(jìn)的原型設(shè)計(jì)(7)軟件體系結(jié)構(gòu)可以作為培訓(xùn)的基礎(chǔ)軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)是可傳遞和可重用的模型軟件體系結(jié)構(gòu)級(jí)的重用意味著體系結(jié)構(gòu)的決策能在具有相似需求的多個(gè)系統(tǒng)中發(fā)生影響,這比代碼級(jí)的重用要有更大的好處。軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的發(fā)展史“無(wú)體系結(jié)構(gòu)”設(shè)計(jì)階段萌芽階段以匯編語(yǔ)言進(jìn)行小規(guī)模應(yīng)用程序開(kāi)發(fā)為特征以描述系統(tǒng)的高層抽象結(jié)構(gòu)為中心,不關(guān)心具體的建模細(xì)節(jié),劃分了體系結(jié)構(gòu)模型與傳統(tǒng)軟件結(jié)構(gòu)的界限,該階段以Kruchten提出的“4+1”模型為標(biāo)志出現(xiàn)了從不同側(cè)面描述系統(tǒng)的結(jié)構(gòu)模型,以UML為典型代表。出現(xiàn)了程序結(jié)構(gòu)設(shè)計(jì)主題,以控制流圖和數(shù)據(jù)流圖構(gòu)成軟件結(jié)構(gòu)為特征高級(jí)階段初期階段軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)描述語(yǔ)言ADL提供了具體的語(yǔ)法與刻畫(huà)體系結(jié)構(gòu)的概念框架。ADL使得系統(tǒng)開(kāi)發(fā)者能夠很好地描述他們?cè)O(shè)計(jì)的體系結(jié)構(gòu),以便與他人交流,能夠用提供的工具對(duì)許多實(shí)例進(jìn)行分析。1.4體系結(jié)構(gòu)的應(yīng)用現(xiàn)狀軟件體系結(jié)構(gòu)體系結(jié)構(gòu)描述構(gòu)造與表示(1)按照一定的描述方法,用體系結(jié)構(gòu)描述語(yǔ)言對(duì)體系結(jié)構(gòu)進(jìn)行說(shuō)明的結(jié)果則稱為體系結(jié)構(gòu)的表示,而將描述體系結(jié)構(gòu)的過(guò)程稱為體系結(jié)構(gòu)構(gòu)造軟件體系結(jié)構(gòu)(1)Kruchten提出的“4+1”模型。(2)Booch從UML的角度給出了一種由設(shè)計(jì)視圖、過(guò)程視圖、實(shí)現(xiàn)視圖和部署視圖,再加上一個(gè)用例視圖構(gòu)成的體系結(jié)構(gòu)描述模型。(3)IEEE于1995年成立了體系結(jié)構(gòu)工作組,起草了體系結(jié)構(gòu)描述框架標(biāo)準(zhǔn)IEEEP1471。(4)Rational從資產(chǎn)重用的角度提出了體系結(jié)構(gòu)描述的規(guī)格說(shuō)明框架。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(1)體系結(jié)構(gòu)分析的內(nèi)容可分為:結(jié)構(gòu)分析功能分析非功能分析。非功能分析:定量分析方法推斷分析方法。軟件體系結(jié)構(gòu)Kazman等人提出了一種非功能分析的體系結(jié)構(gòu)分析方法SAAM,并運(yùn)用場(chǎng)景技術(shù),提出了基于場(chǎng)景的體系結(jié)構(gòu)分析方法Barbacci等人提出了多質(zhì)量屬性情況下的體系結(jié)構(gòu)質(zhì)量模型、分析與權(quán)衡方法ATAM。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(2)生成一個(gè)滿足軟件需求的體系結(jié)構(gòu)的過(guò)程即為體系結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)設(shè)計(jì)過(guò)程的本質(zhì)在于:將系統(tǒng)分解成相應(yīng)的組成成分(如構(gòu)件、連接件),并將這些成分重新組裝成一個(gè)系統(tǒng)。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(3)體系結(jié)構(gòu)設(shè)計(jì)有兩大類方法:過(guò)程驅(qū)動(dòng)方法問(wèn)題列表驅(qū)動(dòng)方法?;谶^(guò)程驅(qū)動(dòng)的體系結(jié)構(gòu)設(shè)計(jì)方法適用范圍廣,易于裁減,具備動(dòng)態(tài)特點(diǎn),通用性與實(shí)踐性強(qiáng)。問(wèn)題列表驅(qū)動(dòng)法的基本思想是枚舉設(shè)計(jì)空間,并考慮設(shè)計(jì)維的相關(guān)性,以此來(lái)選擇體系結(jié)構(gòu)的風(fēng)格。該方法適用于特定領(lǐng)域,是靜態(tài)的,并可以實(shí)現(xiàn)量化體系結(jié)構(gòu)設(shè)計(jì)空間。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(4)體系結(jié)構(gòu)設(shè)計(jì)研究的重點(diǎn)內(nèi)容之一就是體系結(jié)構(gòu)風(fēng)格或模式。體系結(jié)構(gòu)模式在本質(zhì)上反映了一些特定的元素、按照特定的方式組成一個(gè)特定的結(jié)構(gòu),該結(jié)構(gòu)應(yīng)有利于上下文環(huán)境下的特定問(wèn)題的解決。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(5)體系結(jié)構(gòu)模式分為兩個(gè)大類:固定術(shù)語(yǔ)參考模型。已知的固定術(shù)語(yǔ)類的體系結(jié)構(gòu)模型包括管道過(guò)濾器、客戶/服務(wù)器、面向?qū)ο?、黑板、分層、?duì)等模式、狀態(tài)轉(zhuǎn)換、一些派生的固定術(shù)語(yǔ)類的體系結(jié)構(gòu)模式,包括GenVoca,C2和REST等;參考模型則相對(duì)較多,常常與特定領(lǐng)域相關(guān)。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)分析、設(shè)計(jì)與驗(yàn)證(6)體系結(jié)構(gòu)測(cè)試著重于仿真系統(tǒng)模型,解決體系結(jié)構(gòu)層的主要問(wèn)題。由于測(cè)試的抽象層次不同,體系結(jié)構(gòu)測(cè)試策略可以分為單元/子系統(tǒng)/集成/驗(yàn)收測(cè)試等階段的測(cè)試策略。在體系結(jié)構(gòu)集成測(cè)試階段,Debra等人提出了一組針對(duì)體系結(jié)構(gòu)的測(cè)試覆蓋標(biāo)準(zhǔn),PaolaInveradi提出了一種基于CHAM的體系結(jié)構(gòu)語(yǔ)義驗(yàn)證技術(shù)。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用(1)體系結(jié)構(gòu)發(fā)現(xiàn)解決如何從已經(jīng)存在的系統(tǒng)中提取軟件的體系結(jié)構(gòu),屬于逆向工程范疇。Waters等人提出了一種迭代式體系結(jié)構(gòu)發(fā)現(xiàn)過(guò)程,即由不同的人員對(duì)系統(tǒng)進(jìn)行描述,然后對(duì)這些描述進(jìn)行分類并融合,發(fā)現(xiàn)并解除沖突,將體系結(jié)構(gòu)新屬性加入到已有的體系結(jié)構(gòu)模型中,并重復(fù)該過(guò)程直至體系結(jié)構(gòu)描述充分。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用(2)由于系統(tǒng)需求、技術(shù)、環(huán)境、分布等因素的變化而最終導(dǎo)致軟件體系結(jié)構(gòu)的變動(dòng),稱之為軟件體系結(jié)構(gòu)演化。軟件系統(tǒng)在運(yùn)行時(shí)刻的體系結(jié)構(gòu)變化稱為體系結(jié)構(gòu)的動(dòng)態(tài)性,而將體系結(jié)構(gòu)的靜態(tài)修改稱為體系結(jié)構(gòu)擴(kuò)展。體系結(jié)構(gòu)擴(kuò)展與體系結(jié)構(gòu)動(dòng)態(tài)性都是體系結(jié)構(gòu)適應(yīng)性和演化性的研究范疇。軟件體系結(jié)構(gòu)體系結(jié)構(gòu)發(fā)現(xiàn)、演化與重用(3)體系結(jié)構(gòu)重用屬于設(shè)計(jì)重用,比代碼重用更抽象。由于軟件體系結(jié)構(gòu)是系統(tǒng)的高層抽象,反映了系統(tǒng)的主要組成元素及其交互關(guān)系,因而較算法更穩(wěn)定,更適合于重用。體系結(jié)構(gòu)模式就是體系結(jié)構(gòu)重用研究的一個(gè)成果,而體系結(jié)構(gòu)參考模型則是特定域軟件體系結(jié)構(gòu)的重用的成熟的象征。軟件體系結(jié)構(gòu)基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法(1)在引入了體系結(jié)構(gòu)的軟件開(kāi)發(fā)之后,應(yīng)用系統(tǒng)的構(gòu)造過(guò)程變?yōu)椤皢?wèn)題定義—>軟件需求—>軟件體系結(jié)構(gòu)—>軟件設(shè)計(jì)—>軟件實(shí)現(xiàn)”,可以認(rèn)為軟件體系結(jié)構(gòu)架起了軟件需求與軟件設(shè)計(jì)之間的一座橋梁。軟件體系結(jié)構(gòu)基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法(2)軟件開(kāi)發(fā)模型是跨越整個(gè)軟件生存周期的系統(tǒng)開(kāi)發(fā)、運(yùn)行、維護(hù)所實(shí)施的全部工作和任務(wù)的結(jié)構(gòu)框架,給出了軟件開(kāi)發(fā)活動(dòng)各階段之間的關(guān)系。目前,常見(jiàn)的軟件開(kāi)發(fā)模型大致可分為三種類型:(1)以軟件需求完全確定為前提的瀑布模型。(2)在軟件開(kāi)發(fā)初始階段只能提供基本需求時(shí)采用的漸進(jìn)式開(kāi)發(fā)模型,如螺旋模型等。(3)以形式化開(kāi)發(fā)方法為基礎(chǔ)的變換模型。軟件體系結(jié)構(gòu)基于體系結(jié)構(gòu)的軟件開(kāi)發(fā)方法(3)所有開(kāi)發(fā)方法都是要解決需求與實(shí)現(xiàn)之間的差距。但是,這三種類型的軟件開(kāi)發(fā)模型都存在這樣或那樣的缺陷,不能很好地支持基于軟件體系結(jié)構(gòu)的開(kāi)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論