軟件設計與體系結構-第三章-軟件設計基礎_第1頁
軟件設計與體系結構-第三章-軟件設計基礎_第2頁
軟件設計與體系結構-第三章-軟件設計基礎_第3頁
軟件設計與體系結構-第三章-軟件設計基礎_第4頁
軟件設計與體系結構-第三章-軟件設計基礎_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

軟件設計基礎教學內(nèi)容軟件設計的基本概念軟件設計過程軟件設計的質(zhì)量軟件體系結構設計高可信軟件設計軟件設計規(guī)格說明軟件設計評審軟件設計的基本概念軟件設計主要針對需求分析過程中得到的軟件需求規(guī)格說明,綜合考慮各種制約因素,探求切實可行的軟件解決方案并最終給出方案的邏輯表示,包括文檔,模型制約因素資源:時間,人力,財力、開發(fā)工具技術:方法、技術、平臺最終目標:滿足需求的解決方案明確:設計模型易于理解可行:在可用的技術平臺和軟件項目的可用資源條件下,須用預定的開發(fā)語言可構造技術可以完整地實現(xiàn)設計模型高質(zhì)量:設計模型給出需求的實現(xiàn)方案,非功能需求的約束,設計模型優(yōu)化抽象與求精模塊化與信息隱藏模塊劃分的準則可分解性可組裝性可理解性連續(xù)性保護模塊獨立性(Moduleindependence)好設計的關鍵:每個模塊完成一個相對獨立的子功能,并且與其它模塊間的接口簡單。信息隱蔽(Informationhiding)支持模塊的并行開發(fā)減少測試和維護的工作量提高了系統(tǒng)的靈活性和可擴展性內(nèi)聚與耦合內(nèi)聚性:模塊內(nèi)部各成分之間關聯(lián)程度的度量偶然性內(nèi)聚:一個模塊內(nèi)各成分為完成一組功能而組合在一起,它們相互之間即使用關系,也很松散邏輯性內(nèi)聚:模塊完成的諸任務邏輯上相關時序內(nèi)聚:一個模塊包含的任務必須在同一時間內(nèi)執(zhí)行過程性內(nèi)聚:模塊內(nèi)成分彼此相關,并且必須按特定的次序執(zhí)行通信內(nèi)聚:模塊中各成分都將對數(shù)據(jù)結構的同一區(qū)域進行操作順序性內(nèi)聚:各成分均與同一功能相關,且處理按序執(zhí)行功能性內(nèi)聚:所有成分形成一個整體,完成單個功能內(nèi)聚與耦合⑴耦合(Coupling)GreatdealofdependenceIndependent

HighlycoupledLooselycoupledUncoupled

獨立性的度量:耦合(Coupling)&內(nèi)聚(Cohesion)(Yourdon&Constantine,1978)內(nèi)聚與耦合例1:A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉入C的內(nèi)部?!瑼BCDA:……………………gotoC1……………………C:……………………C1:…………獨立性由弱到強排列為:內(nèi)容耦合(ContentCoupling):Onemodulemodifiesanother.一個模塊直接修改或操作另一個模塊的數(shù)據(jù),或者直接轉入另一個模塊。內(nèi)聚與耦合例2:部分代碼重疊(常出現(xiàn)在匯編程序中)BA例3:一個模塊有多個入口(功能)A:………………………………entry1:………………………………entry2:………………………………

Theleastdesirable內(nèi)聚與耦合

公共耦合

(Commoncoupling):Dataareaccessiblefromacommondatastore.通過一個公共數(shù)據(jù)環(huán)境相互作用的那些模塊間的耦合。Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………問題:

公共部分的改動將影響所有調(diào)用它的模塊;

公共部分的數(shù)據(jù)存取無法控制;

復雜程度隨耦合模塊的個數(shù)增加而增加。內(nèi)聚與耦合

控制耦合(Controlcoupling):Onemodulepassesparameterstocontroltheactivityofanothermodule.模塊間傳遞的信息不但有數(shù)據(jù),還包括控制信息,這種塊間聯(lián)系方式稱為控制耦合。ABFlagF2F1Fn…………Flag接口單一,但仍然影響被控模塊的內(nèi)部邏輯。

數(shù)據(jù)耦合(Datacoupling):Onlydataarepassed.Itiseasytotracedataandmakechanges.數(shù)據(jù)耦合指兩個模塊之間有調(diào)用關系,傳遞的是簡單的數(shù)據(jù)值,相當于高級語言的值傳遞.

Themostdesirable.原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。內(nèi)聚與耦合模塊間的耦合內(nèi)聚與耦合模塊內(nèi)聚

低內(nèi)聚

巧合內(nèi)聚(Coincidentalcohesion):Unrelatedfunctions,processes,ordataarefoundinthesamemodule(forconvenience).A:Readinputsfromdiskfromtapefrom……

邏輯內(nèi)聚(Logicalcohesion):Logicallyrelatedfunctionsordataareplacedinthesamemodule.邏輯內(nèi)聚指模塊內(nèi)執(zhí)行個邏輯上相似的功能,通過參數(shù)確定該模塊完成哪一個功能。例如:⑵內(nèi)聚(Cohesion):Theelementsofamodulearedirectedtoperformthesametask.Goal:ascohesiveaspossible.內(nèi)聚與耦合

時間內(nèi)聚(Temporalcohesion):Thefunctionsarerelatedonlybythetiminginvolved.例如:系統(tǒng)的初始化問題:不同功能混在一個模塊中,有時共用部分編碼,使局部功能的修改牽動全局。內(nèi)聚與耦合

通信內(nèi)聚(Communicationalcohesion):Allthefunctionsinamoduleoperateonorproducethesamedataset.如果一個模塊的所有成分都操作同一數(shù)據(jù)集或生成同一數(shù)據(jù)集例如:從同一磁帶上讀取不相干的數(shù)據(jù)——

可能破壞獨立性。

中內(nèi)聚過程內(nèi)聚(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.如果一個模塊內(nèi)部的處理成分是相關的,而且這些處理必須以特定的次序執(zhí)行。例如:enterdatacheckdatamanipulatedata內(nèi)聚與耦合

高內(nèi)聚:

順序內(nèi)聚(Sequentialcohesion):Theoutputfromonepartofamoduleistheinputtothenextpart.一個模塊中各個處理元素都密切相關于同一功能且必須順序執(zhí)行,前一功能元素的輸出就是下一功能元素的輸入。

功能內(nèi)聚(Functionalcohesion):Everyprocessingelementisessentialtotheperformanceofasinglefunction.模塊內(nèi)所有元素共同完成一個功能內(nèi)聚與耦合模塊內(nèi)聚啟發(fā)性規(guī)則1.爭取低耦合、高內(nèi)聚(增加內(nèi)聚>減少耦合)2.模塊規(guī)模適中:過大不易理解;太小則接口開銷過大。注意分解后不應降低模塊的獨立性。3.適當控制——

深度=分層的層數(shù)。過大表示分工過細。

寬度=同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復雜度大。啟發(fā)性規(guī)則系統(tǒng)結構啟發(fā)性規(guī)則

扇出=一個模塊直接調(diào)用\控制的模塊數(shù)。3fan-out9AA的扇出AA的扇入

扇入=直接調(diào)用該模塊的模塊數(shù)在不破壞獨立性的前提下,fan-in

大的比較好。啟發(fā)性規(guī)則盡可能減少高扇出結構,隨著深度增大扇入。

如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復雜,需要協(xié)調(diào)和控制過多的下屬模塊。應當適當增加中間層次的控制模塊啟發(fā)性規(guī)則4、作用域在控制域內(nèi)

控制域MACBM的控制域為{M,A,B,C}

作用域:M中的一個判定所影響的模塊。例如:A:…………if……thengotoB1……………………B:……………………B1:……………………作用域在控制域內(nèi)A:…………if……thengotoM1……………………M:……………………M1:gotoC1……………………作用域超出了控制域上例中A的作用超出了控制域。改進方法之一,可以把A中的if

移到M中;方法之二,可以把C移到A下面。啟發(fā)性規(guī)則5、降低接口的復雜程度:接口復雜可能表明模塊的獨立性差。6、單出單入,避免內(nèi)容耦合。7、模塊功能可預測——相同輸入必產(chǎn)生相同輸出。反例:模塊中使用全局變量或靜態(tài)變量,則可能導致不可預測。小結耦合:模塊間依賴程度的度量非直接耦合:兩模塊中任一個都不依賴對方能獨立工作數(shù)據(jù)耦合:通過參數(shù)交換信息,而信息公限于數(shù)據(jù)內(nèi)容耦合:一個模塊使用另一模塊內(nèi)部的數(shù)據(jù)或控制信息;一個模塊直接轉移到另一模塊內(nèi)部量化指標:類耦合度:一個類的耦合度定義為與它耦合的其他類的數(shù)目(包括調(diào)用其他類的一個方法,使用其他類的一個實例變量。方法內(nèi)聚缺乏程度:定義為不訪問相同成員變量的方法對(即兩個方法)的數(shù)目減去訪問相同成員變量的方法對的數(shù)目。相似方法的數(shù)量越大,類的內(nèi)聚度就越高軟件設計過程軟件設計的一般過程迭代:第一層迭代,第二層迭代設計過程:軟件體系結構設計,界面設計,模塊、子系統(tǒng)設計,數(shù)據(jù)模型設計,過程算法設計數(shù)據(jù)庫設計,類設計,接口設計,構件設計界面設計,數(shù)據(jù)模型設計,體系結構設計,模塊設計形成設計規(guī)格說明,評審軟件設計過程軟件設計的主要活動軟件設計計劃:確定設計的目標和驗收準則,明確標準和規(guī)范,風險管理,制訂工作計劃,對計劃進行評審體系結構設計:適用性,結構穩(wěn)定性,可擴展性,可復用性界面設計:適用,易理解性,一致性,靈敏性,容錯性,人性化,國際化,個性化,合理的布局,和諧的色彩模塊或子系統(tǒng)設計:子系統(tǒng)獨立構成系統(tǒng),不依賴其他子系統(tǒng)提供的服務,子系統(tǒng)由模塊組成一個模塊通常是一個能夠提供一個或多個服務的系統(tǒng)部件。它能得用其他模塊的服務,一般不被看成一個獨立的系統(tǒng)。模塊由更簡單的模塊組馬,模塊也需要定義接口。過程/算法設計軟件設計過程過程/算法設計對模塊內(nèi)部的工作和執(zhí)行過程進行描述,給出有關處理的精確說明事件的順序、確切的決策位置、循環(huán)操作,數(shù)據(jù)的組成使用UML活動圖進行描述數(shù)據(jù)模型設計:數(shù)據(jù)結構設計、數(shù)據(jù)庫設計、數(shù)據(jù)文件設計的總稱數(shù)據(jù)結構描述各數(shù)據(jù)分量之間的邏輯關系。持久數(shù)據(jù)操作:包括寫入、查詢、更新和刪除四類基本操作及及由它們復合而成的業(yè)務數(shù)據(jù)操作數(shù)據(jù)庫設計:確定設計模型中需要持久保存的數(shù)據(jù)條目數(shù)據(jù):數(shù)據(jù)元素的格式、結構、訪存、表示等機制進行良好的建模和優(yōu)化,是提高軟件設計質(zhì)量和系統(tǒng)性能的基礎,對軟件系統(tǒng)的應用具有重要意義軟件設計的質(zhì)量軟件設計的質(zhì)量要素:結構良好:軟件設計的結構合理,模塊滿足功能獨立、信息隱藏和高內(nèi)聚、低耦合的要求,子系統(tǒng)和模塊之間接口定義明確,清晰,一致充分性、可行性、簡單性、實用性靈活性、可移植性、可復用性標準化軟件設計的質(zhì)量正確性目標:每個項目都要滿足指定的需求,然后一起滿足所有應用程序的需求實現(xiàn)正確性的途徑:達到正確性的非正式方法完全理解->模塊化達到正確性的正式方法:軟件設計的質(zhì)量達到正確性的非正式方法:充分設計一個設計足以實現(xiàn)需求一個正確的設計有時稱為設計必須完全可理解接下來設計非常模塊化達到這個目標的方法是:。。。最小目標軟件設計的質(zhì)量達到正確性的正式方法基于在嚴密的控制下跟蹤變量的變化,一般會指定一個不變式。不變式在變量值之間表示的是一種不變關系。例如:length>=0length*breadth==areaoverdraft<OVERDRAFT_MAX用在類級別設計中的不變式稱為類不變式。例如1)mileage>=02)mileage<10000004)value>=-300($300是一輛報費汽車的處理價格5)originalPrice>=06)(type==“REGULAR”&&value<=originalPrice)||(type==“VINTAGE”&&value>=originalPrice)考慮不變式,將變量設為私有,只能通過公有的存取方法才能改變他們的值??梢詫Υ嫒》椒ㄟM行編碼來保持不變式。如通過setter方法來設置類不變式精心設計的類通常擁有可理解的不變式集。軟件設計的質(zhì)量為正確性和充分性而重整

首先為給定的需求進行設計,然后在額外的需求變得透明時對設計和實現(xiàn)進行修改,這個過程稱為重整重整:為類提升一個原始屬性為了適應范圍的增長,我們常常需要引入一個新類來進行重整重整:引入抽象基類可接口面向?qū)ο筇峁┏橄?,但是什么樣時候應該使用抽象呢?一個關鍵的標志就是每當應用程序包含幾個具有廣泛通用性的類時。抽象類可以包含類的所有特性,除了當類的對象自己不能被創(chuàng)建之外。應該是一個接口而不是一個類軟件設計的質(zhì)量1.防止錯誤輸入用戶輸入不是用戶的輸入數(shù)據(jù)通信其他應用方法調(diào)用2.防止開發(fā)錯誤錯誤的設計錯誤的實現(xiàn)提高健壯性:錯誤原因軟件設計的質(zhì)量健壯性檢查輸入在繼續(xù)進行處理之前,可以檢查應用程序的所有輸入的方法。檢查類型(例如:整形);

檢查與前置條件和不變式的輸入為提高健壯性而初始化提供靜態(tài)方法,用來為類產(chǎn)生標準的默認值提高健壯性的參數(shù)傳遞技術保證方法正確調(diào)用引入一個捕獲參數(shù)的類并將約束條件合并強化意圖通過防止設計和實現(xiàn)中的錯誤來提高健壯性強化計劃,按計劃使用相應功能軟件設計的質(zhì)量提高健壯性在使用數(shù)據(jù)之前進行檢查,可以提高健壯性。通過強化我們的意圖來提高健壯性。軟件設計的質(zhì)量Example:intcomputeArea(intaLength,intaBreadth){…}如果可行,捕獲在類中的參數(shù)約束intcomputeArea(RectangleDimensionaRectangleDimension)

在方法中說明所有的參數(shù)約束aLength>0andaBreadth>0andaLength>=aBreadth

調(diào)用者遵循參數(shù)的顯示要求問題是方法的設計者沒有控制調(diào)用者在方法代碼中首先檢查約束if(aLength<=0)……如果預計這種情況將會出現(xiàn),則拋出異常否則,如果可能就中止程序否則如果返回的默認值在上下文之間有意義,就將其返回并且產(chǎn)生警告或日志參數(shù)的約束軟件設計的質(zhì)量靈活性的表現(xiàn)靈活性的預期目標:用于增加更多類型功能的設計例如(銀行應用):處理更多類型的賬號而不需要修改已存在的代碼用于增加不同類型功能的設計例如:在存款功能的基礎上增加提款功能修改功能例如:可透支軟件設計的質(zhì)量應用中增加同類型功能的設計

WebSiteregister()Member0..nmembersclassWebsite{ Member[]members;//ormaybe:vectormembers; voidregister(MemberaMember){...}}怎樣才能使設計更靈活以注冊新類型的成員?舉例:網(wǎng)站成員注冊軟件設計的質(zhì)量注冊網(wǎng)站的靈活性WebSiteMember0..nStandardMemberXMemberYMembermembers解決方案:引入一個基類,將基類抽象化,根據(jù)需要產(chǎn)生繼承類軟件設計的質(zhì)量用于增加不同類型功能的設計在以下范圍內(nèi)…一系列相關的函數(shù)Example:航空旅行(travelitinerary)函數(shù)中增加Pint功能一個已存在的基類Example:增加“打印航空路線”的功能兩者都不是Example:增加“同時打印航空路線和航海路線“軟件設計的質(zhì)量

TripprintItinerary()StandardTripprintItinerary()SomeApplicationClassMethod(s)callprintItinerary()向一個基類中增加功能軟件設計的質(zhì)量通過繼承基本類的方法來增加功能TripprintItinerary()SeaTripprintItinerary()SomeApplicationClassLandTripprintItinerary()StandardTripprintItinerary()解決方案:通過繼承基類的方法來增加功能每個子類都可以擁有各自版本的printItinerary()方法。依賴和繼承的結合可以形成委托形式。軟件設計的質(zhì)量靈活性的方面:可以…描述點…通過運行時確定的變量來產(chǎn)生對象創(chuàng)建型設計模式運行時表示變化的對象樹或其他結構“結構型l”設計模式改變、重組或捕獲一組對象的相互行為“行為型”

designpatterns產(chǎn)生和存儲復雜類的對象組件技術配置預定義的復雜類或類組的對象,從而能以多種方式進行交互組件技術附加的靈活性的類型軟件設計的質(zhì)量靈活性意義

我們之所以進行靈活的設計,因為變化和重用是經(jīng)常出現(xiàn)的軟件設計的質(zhì)量可重用性盡可能的降低成本重用原有的工作可以獲得最大生產(chǎn)率重用:函數(shù)重用、類重用、重用類組合可重用設計,可重用組件函數(shù)設計的可重用性基于重用的類選擇用于重用的類組合軟件設計的質(zhì)量使一個方法具有可重用性完全指定前置條件等避免不必要的封裝類耦合如果可行,讓方法成為靜態(tài)的參數(shù)化讓方法功能化但要限制參數(shù)的個數(shù)讓名字更具表達性可理解性促進可重用性解釋算法重用者要知道算法如何工作重用的方法必須給出完整的定義,以便使重用者知道這些方法的功能及使用條件一個方法相關對于上下文越獨立,其可重用性的性能就越高。靜態(tài)方法就屬于這種類型軟件設計的質(zhì)量使一個類成為可重用的完整的描述類使類名與功能與實際情況相符定義一個有用的抽象類以獲得更廣泛的應用于性減少對其他類的依賴性通過繼承獲得軟件設計的質(zhì)量減少類間的依賴性CustomerReplace…Piano如果類A依賴于類B,沒有類B就不可以使用類A,這就減少了類A的重用性。Piano類依賴Custumer類,因為鋼琴是賣給用戶的,限制了Piano類的使用。一個庫存應用程序可能需要Piano類,但卻不需要Customer類。重用Piano類。能否讓Custumer類依賴Piano類,因為用戶只有購買鋼琴時才成為用戶。有沒有更好的解決方案呢?降低依賴性。軟件設計的質(zhì)量減少類間的依賴性with…CustomerPianoPianoOrder引入第三個類PianoOrder將其關聯(lián)起來。這個設計具有一定的作用,但在現(xiàn)實情況中可能是不行的。例如,可能需要訪問某一給定用戶的訂單,而不必檢查每個PianoOrder訂單對象。中介者設計模式解決問題減少類之間的依賴關系,抽象級的依賴關系是可以接受的。通過減少類的依賴性來增加其可重用性軟件設計的質(zhì)量類組合的重用:利用繼承、組合和相關技術來實現(xiàn)CustomercomputeBill()RegularCustomercomputeBill()CustomercomputeBill()Billcompute()CustomercomputeBill(Orders)Ordersvalue()(1)利用繼承(3)利用依賴性(2)利用聚合CustomercomputeBill()軟件設計的質(zhì)量高效性應用程序必須在指導定的時間內(nèi)完成特定的功能執(zhí)行效率處理循環(huán)問題消除遠程調(diào)用消除或制定函數(shù)調(diào)用存儲效率

RAM的大?。ㄟ\行時)代碼本身的規(guī)模輔助存儲器的大小軟件設計的質(zhì)量

先按其它原則設計,再考慮效率以靈活性,可重用性等原則進行設計找出效率低的部分有針對性的修改一開始就按效率原則進行設計確認當前關鍵的效率需求在整個階段都按需求進行設計以上兩種方法的結合在設計時為效率需求做出折中在初始設計之后,也要繼續(xù)考慮效率問題針對時間效率的基本方法軟件設計的質(zhì)量時空折中Space處理一個項目的時間通常的目標軟件設計的質(zhì)量時間、空間、開發(fā)的折中空間時間開發(fā)的設備限制可接受的值不可接受的值好于可接受的值軟件設計的質(zhì)量影響執(zhí)行效率的一些因素循環(huán)while,for,do遠程調(diào)用:消除遠程調(diào)用Requiringanetwork需要網(wǎng)絡LANTheInternet函數(shù)調(diào)用:消除函數(shù)調(diào)用如果函數(shù)調(diào)用導致以上情況發(fā)生對象創(chuàng)建高效的設計并不要求簡單,甚至會比較凌亂高效原則會減少函數(shù)調(diào)用,會導致產(chǎn)生大量的方法和類,難于擴展和重用軟件設計的質(zhì)量遠程調(diào)用的次數(shù)遠程調(diào)用的次數(shù)每次訪問取得的信息典型的目標軟件設計的質(zhì)量存儲效率應用程序需要存儲數(shù)據(jù),以務將來在執(zhí)行時提取,這需要對存儲數(shù)據(jù)的空間進行有效的利用。有三種存儲問題:RAM的大小(運行時)代碼本身規(guī)模輔助存儲器(磁盤驅(qū)動)的大小提高存儲效率往往要消耗一定的時間軟件設計的質(zhì)量獲得存儲效率只需存儲的數(shù)據(jù)在存儲效率和數(shù)據(jù)提取以及重整時間之間獲得折中壓縮數(shù)據(jù)在存儲效率與數(shù)據(jù)壓縮和解壓縮之間獲得折中按相關訪問頻率存儲數(shù)據(jù)在存儲效率與決定存儲位置的時間之間獲得折中軟件設計的質(zhì)量健壯性、靈活性、高效性和可重用之間的折中1A.

極限編程法或完全為效率而設計1B.

靈活性驅(qū)動法著眼于將來的需求 附帶考慮可重用性2.

確保健壯性3.

提供足夠高的效率如果為了獲得效率那么會在可重用性方面做出折中軟件設計的質(zhì)量

極限編程vs.非極限編程+工作完成快(通常)+范圍清晰+可能更有效-未來可能較少用到-擴展需求代價很大+示來應用可能較多用到+需求可變-范圍劃分不清晰-可能會比較費力-需要更多的關注效率軟件設計的質(zhì)量一個更靈活的計算器應用程序的設計CommandLineCalculatormain()executeAdditions()solicitNumberAccounts()getAnInputFromUser()interactWithUser()已存在的設計新設計CalculatorsolicitNumAccounts()CalcDisplaydisplay()CalcOperationexecute()AddMultiplyDivide小結靈活性

==好修改可重用性在其它程序中應用高效性

時間空間軟件體系結構設計方法概述軟件體系結構的多視圖建模進程視圖邏輯視圖開發(fā)視圖物理視圖場景基于評估與轉換的軟件體系結構設計使用合適的體系結構風格的模式把非功能需求轉化為功能性解決方案采用“分而治之”策略模式驅(qū)動的軟件體系結構設計領域特定的軟件體系結構設計類模型參考模型軟件產(chǎn)品線方法其他軟件體系結構設計方法基于目標圖推理的體系結構設計方法基于屬性的體系結構設計方法體系結構“4+1”多視圖建模進程視圖物理視圖邏輯視圖開發(fā)視圖場景集成人員性能可擴展性系統(tǒng)工程師拓撲通信軟件體系結構的多視圖建模邏輯視圖:關注功能需求,系統(tǒng)為用戶提供的服務,與應用領域相關系統(tǒng)功能映射到概念構件和連接件與軟件和硬件的細節(jié)沒關若是面向?qū)ο笤O計,則將是一種對象模型進程視圖:捕獲設計中關于并發(fā)和同步的內(nèi)容,重視非功能需求(性能,可擴展性等,定義運行實體和他們的屬性)構件、連接件,構件可以是任務,連接件可以是消息、遠程過程調(diào)用(RPC)、事件廣播等開發(fā)視圖:描述軟件在開發(fā)環(huán)境中的靜態(tài)結構構件和連接件分別映射到子系統(tǒng)或模塊關注于軟件開發(fā)環(huán)境中軟件模塊的組織。軟件可被打包,并按層次進行組織軟件體系結構的多視圖建模物理視圖:描述軟件到硬件的映射關系,反映了軟件的分布特征把不同的軟件元素,例如進程和任務等,映射到不同的物理節(jié)點上,并關注物理環(huán)境的拓撲結構以及節(jié)點間的通信場景:使用一組重要場景,也就是用例的實例,把上述四種視圖緊密地聯(lián)系起來設計中發(fā)現(xiàn)體系結構元素的驅(qū)動器,設計完成后充當確認和驗證的依據(jù)。基于評估與轉換的軟件體系結構設計質(zhì)量優(yōu)化方案體系結構轉換質(zhì)量屬性評價基于功能的體系結構設計體系結構制品需求規(guī)格說明滿足不滿足針對功能特性,它基于一種人們最常見的開發(fā)思路:針對功能要求設計體系結構,對設計結果進行評審,如果不滿足要求則進行改進,一直迭代到滿足要求為止。基于評估與轉換的軟件體系結構設計體系結構的評估方式基于場景的評估仿真數(shù)學建?;窘?jīng)驗的推理對體系結構轉換的方式使用合適的體系結構風格和模式,或者設計模式來改進體系結構設計把非功能需求轉化為功能性解決方案,可以與問題域沒關,但可以滿足質(zhì)量屬性的要求。采用“分而治之”的方式,可以把系統(tǒng)級的質(zhì)量需求分配到子系統(tǒng)或模塊中,或者把質(zhì)量需求分解為多個與功能相關的質(zhì)量需求,分解后的質(zhì)量需求能夠較易得到滿足。模式驅(qū)動的軟件體系結構設計體系結構風格是描述某一特定應用方式中系統(tǒng)組織方式的慣用模式,為設計人員的交流提供了公共的模型,符號和術語表示,促進了設計復用甚至最終的代碼復用。體系結構模式是對設計模式的擴展,描述了軟件軟件系統(tǒng)基本的結構化組織方案,可以作為具體體系結構的模板。軟件開發(fā)中常用的設計模式也是對設計經(jīng)驗的一種總結和描述,以便于復用,但設計模式則是針對單一問題提供的解決方案。設計模式更接近于提供通用的實現(xiàn)方案,盡管實現(xiàn)可以不依賴于具體語言,而體系結構則需要綜合考慮整個系統(tǒng)各方面的需求。一個體系結構設計在繼續(xù)精化過程中可能會用到多種設計模式來解決其包含的子問題。常用體系結構風格管道和過濾器風格、層次風格、黑板模式等模式驅(qū)動的軟件體系結構設計需求規(guī)格說明系統(tǒng)特征初步分析搜索可用的體系結構風格選擇合適的體系結構風格對體系結構風格進行改造以體系結構風格為基礎進行設計自行設計體系結構擴展軟件體系結構風格庫軟件體系結構設計模型不存在模式驅(qū)動的軟件體系結構設計體系結構風格分類獨立體系結構數(shù)據(jù)流體系結構以數(shù)據(jù)為中心的體系結構虛擬機體系結構調(diào)用與返回體系結構領域特定的軟件體系結構設計特定領域的軟件復用更易成功領域特定的軟件體系結構(DSSA)是領域工程的核心部分,領域工程分析應用分析應用的共同特征和可變特征,對刻劃這些特征的對象和操作進行選擇和抽象,形成領域模型,并進一步生成DSSA。領域特定的軟件體系結構借鑒領域中已經(jīng)成熟的軟件體系結構,實現(xiàn)解決方案在某個領域內(nèi)的復用。雖然這些系統(tǒng)實例的細節(jié)會有不同,但共同的體系結構在開發(fā)新系統(tǒng)時是能夠復用的。DSSA和軟件體系結構風格都是對軟件體系結構的重用,但它們的目標、構造和應用過程存在以下不同之處:(1)DSSA與軟件體系結構風格是從不同角度出發(fā)研究問題的兩種結果,前者從問題哉出發(fā),而后者從解決哉出發(fā)。(2)DSSA只在某個特定領域中進行經(jīng)驗知識的提取、總結與組織,但可以同時使用多種軟件體系結構風格;而一種軟件體系結構風格所呈現(xiàn)的公共結構和設計方法可以擴展到多個應用領域。(3)DSSA的體系結構表示和工具一般只適用于一個較小的范圍,在其他領域中是不適用并難以復用的。領域特定的軟件體系結構設計DSSA應該包括多種組成要素,例如領域模型、參考需求、參考體系結構、相應的支持環(huán)境或設施、實例、精化和評估的方法與過程等,以促進DSSA在領域中復用。領域相關的軟件體系結構可分為兩種類型類模型:類模型是從許多實際系統(tǒng)抽象出來的一般模型,它們封裝這些系統(tǒng)的主要特征。參考模型:是更抽象且是描述一大類系統(tǒng)的模型,它是對設計者有關某類系統(tǒng)的一般結構指導。代表了一個理想化的體系結構,包含了系統(tǒng)所有應該具有的特征。OSI七層參考模型軟件產(chǎn)品線方法軟件產(chǎn)品線指一組具有公共的、可管理特征的軟件系統(tǒng),這些系統(tǒng)滿足特定的市場需求或者任務領域需求,并且按照預定義的方式基于公共的核心資產(chǎn)集合開發(fā)得到軟件產(chǎn)品線(SoftwareProductLine)是軟件復用發(fā)展的一個更高階段,它并不僅僅局限于函數(shù)、模塊、類、體系結構甚至子系統(tǒng)的重用可以有效地提高生產(chǎn)率、縮短產(chǎn)品上市時間,提高質(zhì)量和客戶滿意度軟件產(chǎn)品線主要由兩部分組成:核心資產(chǎn)庫和產(chǎn)品集合核心資產(chǎn)庫:是領域工程所有成果的集合,對支持產(chǎn)品開發(fā)的可復用資源進行管理。核心資產(chǎn)庫包括產(chǎn)品線中所有產(chǎn)品共享的體系結構、可復用的軟件構件、與軟件構件相關的測試計劃、測試用例、以及領域模型、領域范圍定義和所有的需求描述、設計文檔,各種性能模型和度量準則、日程安排、預算、工作計劃、過程描述、通信協(xié)議描述、用戶界面描述等。產(chǎn)品線方法的基本活動包括核心資產(chǎn)開發(fā)、產(chǎn)品開發(fā)和管理。核心資產(chǎn)開發(fā)指如何獲得核心資產(chǎn),可能通過自己構那家、直接購買、委托加工等各種方式。產(chǎn)品開發(fā)活動是產(chǎn)品線的目標,核心資產(chǎn)開發(fā)只是達到目標的一種手段。管理,各個活動合理分配資源,協(xié)調(diào)監(jiān)督、設置適當?shù)慕M織機構特征:循環(huán)重復軟件產(chǎn)品線方法新產(chǎn)品形在的步驟從公共資產(chǎn)庫中選取合適的構件使用預定義的變化機制進行裁剪,如參數(shù)化、繼承等必要時增加新的構件在整個產(chǎn)品線范圍內(nèi)共同的體系結構指導下,進行構件組裝,形成系統(tǒng)。其他軟件體系結構設計方法基于目標圖推理的體系結構設計方法:功能需求和非功能需求皆被表達為要達到的目標,特別是把非功能需求表過為通常沒有清晰的評價標準的“軟”目標;基于屬性的體系結構設計方法:軟件結構設計的步聚開發(fā)軟件頂層架構選取合適的體系結構風格明確架構中每個部件的職責、特征,各部件之間的通信及協(xié)作關系,可用UML包圖表示頂層架構組成,以及體系結構中子系統(tǒng)、構件之間的通信及協(xié)作關系搜索并選取可用設計資產(chǎn)設計術支撐設計資產(chǎn)包括相同或相關業(yè)務領域中的模塊、子系統(tǒng)、構件、框架、類庫、應用軟件系統(tǒng)、設計模式等。“可用”的設計資產(chǎn)是指在婁前項目中直接可供復用或借鑒的設計資產(chǎn)設計技術支撐方案技術支撐方案應該為軟件多個用例的實現(xiàn)提供技術服務,所以它應該成為整個目標軟件系統(tǒng)中全局性的公共技術平臺。良好穩(wěn)定性軟件結構設計的步聚確定設計元素子系統(tǒng)、構件、設計類確定設計元素的主要過程:確定子系統(tǒng)及其接口確定構件及其接口確定關鍵設計類整合設計元素開發(fā)軟件部署模型軟件部署模型軟件部署模型負責展示軟件中各子系統(tǒng)、構件在哪些計算結點上運行,以及這些結點之間的網(wǎng)絡連接方式反映了軟件系統(tǒng)的網(wǎng)絡運行環(huán)境和物理分布狀況設計并發(fā)機制針對目標軟件系統(tǒng)的性能需求(包括界面的靈敏性需求),將一些可以并行執(zhí)行的序列劃分成不同的任務,明確這些任務在并發(fā)執(zhí)行過程中可能的同步點,并研究并發(fā)任務在目標軟件系統(tǒng)所基于的計算平臺上的實現(xiàn)方法軟件結構設計的步聚構建軟件體系結構模型整理、改進前述工作成果,以正式文檔形式完整地描述系統(tǒng)的體系結構模型。文檔內(nèi)容引言體系結構概述需求視圖邏輯視圖進程視圖實施視圖部署視較長應用指南評審軟件體系結構模型發(fā)現(xiàn)可能存在的缺陷,使相關人員能夠達成一致關注點是否能夠滿足需求,以及怎樣滿足需求當異常或者臨界條件出現(xiàn)時,體系結構是否以令人滿意的方式動作詳略程度是否恰當是否存在可行性方面的危險軟件結構設計的步聚需求規(guī)圖說明軟件設計計劃開發(fā)軟件項層架構選取設計資產(chǎn)設計技術支撐方案確定設計元素開發(fā)軟件部署模型設計并發(fā)機制構建體系結構模型評審體系結構模型軟件體系結構文檔高可信軟件設計可信軟件特點容錯設計軟件失效模式和影響分析軟件故障樹分析形式化方法凈室方法嵌入式和實時軟件設計高可信軟件設計--可信軟件特點可靠性(Reliability):在規(guī)定的環(huán)境在下規(guī)定的時間內(nèi),軟件無失效運行的概率。可靠安全性(Safefy):軟件運行不引起危險、災難的能力保密安全性(Security):軟件系統(tǒng)對數(shù)據(jù)和信息提供保密性、完整性、可用性、真實性保障的能力可生存性(Survivability):軟件在受到攻擊或失效出現(xiàn)時連續(xù)提供服務并在規(guī)定時間內(nèi)恢復所有服務的能力實時性(RealTime):軟件在指定的時間內(nèi)完成反應或提交輸出的能力高可信軟件設計--容錯設計軟件容錯技術:使得軟件能發(fā)現(xiàn)失效危險并從臨失效狀態(tài)恢復的軟件設計技術恢復塊技術:檢測到錯誤后將執(zhí)行軟件模塊的另一個不同版本。在執(zhí)行模塊的一個版本前,首先要創(chuàng)建檢查點,因為這有助于在該版本執(zhí)行失效后恢復狀態(tài),并為檢測到錯誤后執(zhí)行下一個版本提供一個有效的起始點。N-版本編程:N-版本編程是一種多版本技術,關鍵模塊的不同版本被設計成滿足同樣的基本需求,每個版本完成同樣的任務,但卻使用不同的方式。這些版本同時執(zhí)行,它們的輸出結果提交給一個表決系統(tǒng)以決定正確的結果,并把該結果返回給模塊,對輸出正確性的判定基于對所有輸出的比較。出現(xiàn)不一致的情況下,利用多數(shù)表決來決定一個最優(yōu)先的結果。基于設計多樣性,通過以下方式可以達到設計多樣性:使用不同的設計方法來實現(xiàn)需求使用不同的程序設計語言來完成實現(xiàn)使用不同的開發(fā)工具,且在不同的開發(fā)環(huán)境中完成。明確要求在實現(xiàn)某些關鍵過程時使用不同的算法高可信軟件設計--軟件失效模式和影響分析軟件失效模式和影響分析:主要是在軟件開發(fā)階段的早期,通過識別軟件失效模式,研究分析各種答失效模式產(chǎn)生的原因及其造成的后果,尋找消除和減少其有害后果的方法,以盡早發(fā)現(xiàn)潛在的問題,并采取相應的措施,從而提高軟件的可靠性和安全性。軟件失效:程序在中喪失了全部或部分功能、出現(xiàn)偏離預期的正常狀態(tài)的事件。軟件失效模式:軟件失效的不同類型,通常用于描述軟件失效發(fā)生的方式以及對設備運行可能產(chǎn)生的影響軟件失效的影響:指軟件失效模式對軟件系統(tǒng)的運行、功能或狀態(tài)等造成的后果高可信軟件設計--軟件故障樹分析軟件故障樹分析就是在軟件系統(tǒng)設計過程中,通過對可能造成的系統(tǒng)故障的各種因素(包括硬件、軟件、環(huán)境、人為因素等)進行分析,畫出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論