




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件設(shè)計基礎(chǔ)教學內(nèi)容軟件設(shè)計的基本概念軟件設(shè)計過程軟件設(shè)計的質(zhì)量軟件體系結(jié)構(gòu)設(shè)計高可信軟件設(shè)計軟件設(shè)計規(guī)格說明軟件設(shè)計評審軟件設(shè)計的基本概念軟件設(shè)計主要針對需求分析過程中得到的軟件需求規(guī)格說明,綜合考慮各種制約因素,探求切實可行的軟件解決方案并最終給出方案的邏輯表示,包括文檔,模型制約因素資源:時間,人力,財力、開發(fā)工具技術(shù):方法、技術(shù)、平臺最終目標:滿足需求的解決方案明確:設(shè)計模型易于理解可行:在可用的技術(shù)平臺和軟件項目的可用資源條件下,須用預(yù)定的開發(fā)語言可構(gòu)造技術(shù)可以完整地實現(xiàn)設(shè)計模型高質(zhì)量:設(shè)計模型給出需求的實現(xiàn)方案,非功能需求的約束,設(shè)計模型優(yōu)化抽象與求精模塊化與信息隱藏模塊劃分的準則可分解性可組裝性可理解性連續(xù)性保護模塊獨立性(Moduleindependence)好設(shè)計的關(guān)鍵:每個模塊完成一個相對獨立的子功能,并且與其它模塊間的接口簡單。信息隱蔽(Informationhiding)支持模塊的并行開發(fā)減少測試和維護的工作量提高了系統(tǒng)的靈活性和可擴展性內(nèi)聚與耦合內(nèi)聚性:模塊內(nèi)部各成分之間關(guān)聯(lián)程度的度量偶然性內(nèi)聚:一個模塊內(nèi)各成分為完成一組功能而組合在一起,它們相互之間即使用關(guān)系,也很松散邏輯性內(nèi)聚:模塊完成的諸任務(wù)邏輯上相關(guān)時序內(nèi)聚:一個模塊包含的任務(wù)必須在同一時間內(nèi)執(zhí)行過程性內(nèi)聚:模塊內(nèi)成分彼此相關(guān),并且必須按特定的次序執(zhí)行通信內(nèi)聚:模塊中各成分都將對數(shù)據(jù)結(jié)構(gòu)的同一區(qū)域進行操作順序性內(nèi)聚:各成分均與同一功能相關(guān),且處理按序執(zhí)行功能性內(nèi)聚:所有成分形成一個整體,完成單個功能內(nèi)聚與耦合⑴耦合(Coupling)GreatdealofdependenceIndependent
HighlycoupledLooselycoupledUncoupled
獨立性的度量:耦合(Coupling)&內(nèi)聚(Cohesion)(Yourdon&Constantine,1978)內(nèi)聚與耦合例1:A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入C的內(nèi)部?!瑼BCDA:……………………gotoC1……………………C:……………………C1:…………獨立性由弱到強排列為:內(nèi)容耦合(ContentCoupling):Onemodulemodifiesanother.一個模塊直接修改或操作另一個模塊的數(shù)據(jù),或者直接轉(zhuǎn)入另一個模塊。內(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ù)存取無法控制;
復(fù)雜程度隨耦合模塊的個數(shù)增加而增加。內(nèi)聚與耦合
控制耦合(Controlcoupling):Onemodulepassesparameterstocontroltheactivityofanothermodule.模塊間傳遞的信息不但有數(shù)據(jù),還包括控制信息,這種塊間聯(lián)系方式稱為控制耦合。ABFlagF2F1Fn…………Flag接口單一,但仍然影響被控模塊的內(nèi)部邏輯。
數(shù)據(jù)耦合(Datacoupling):Onlydataarepassed.Itiseasytotracedataandmakechanges.數(shù)據(jù)耦合指兩個模塊之間有調(diào)用關(guān)系,傳遞的是簡單的數(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)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行。例如:enterdatacheckdatamanipulatedata內(nèi)聚與耦合
高內(nèi)聚:
順序內(nèi)聚(Sequentialcohesion):Theoutputfromonepartofamoduleistheinputtothenextpart.一個模塊中各個處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能元素的輸出就是下一功能元素的輸入。
功能內(nèi)聚(Functionalcohesion):Everyprocessingelementisessentialtotheperformanceofasinglefunction.模塊內(nèi)所有元素共同完成一個功能內(nèi)聚與耦合模塊內(nèi)聚啟發(fā)性規(guī)則1.爭取低耦合、高內(nèi)聚(增加內(nèi)聚>減少耦合)2.模塊規(guī)模適中:過大不易理解;太小則接口開銷過大。注意分解后不應(yīng)降低模塊的獨立性。3.適當控制——
深度=分層的層數(shù)。過大表示分工過細。
寬度=同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜度大。啟發(fā)性規(guī)則系統(tǒng)結(jié)構(gòu)啟發(fā)性規(guī)則
扇出=一個模塊直接調(diào)用\控制的模塊數(shù)。3fan-out9AA的扇出AA的扇入
扇入=直接調(diào)用該模塊的模塊數(shù)在不破壞獨立性的前提下,fan-in
大的比較好。啟發(fā)性規(guī)則盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當適當增加中間層次的控制模塊啟發(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、降低接口的復(fù)雜程度:接口復(fù)雜可能表明模塊的獨立性差。6、單出單入,避免內(nèi)容耦合。7、模塊功能可預(yù)測——相同輸入必產(chǎn)生相同輸出。反例:模塊中使用全局變量或靜態(tài)變量,則可能導致不可預(yù)測。小結(jié)耦合:模塊間依賴程度的度量非直接耦合:兩模塊中任一個都不依賴對方能獨立工作數(shù)據(jù)耦合:通過參數(shù)交換信息,而信息公限于數(shù)據(jù)內(nèi)容耦合:一個模塊使用另一模塊內(nèi)部的數(shù)據(jù)或控制信息;一個模塊直接轉(zhuǎn)移到另一模塊內(nèi)部量化指標:類耦合度:一個類的耦合度定義為與它耦合的其他類的數(shù)目(包括調(diào)用其他類的一個方法,使用其他類的一個實例變量。方法內(nèi)聚缺乏程度:定義為不訪問相同成員變量的方法對(即兩個方法)的數(shù)目減去訪問相同成員變量的方法對的數(shù)目。相似方法的數(shù)量越大,類的內(nèi)聚度就越高軟件設(shè)計過程軟件設(shè)計的一般過程迭代:第一層迭代,第二層迭代設(shè)計過程:軟件體系結(jié)構(gòu)設(shè)計,界面設(shè)計,模塊、子系統(tǒng)設(shè)計,數(shù)據(jù)模型設(shè)計,過程算法設(shè)計數(shù)據(jù)庫設(shè)計,類設(shè)計,接口設(shè)計,構(gòu)件設(shè)計界面設(shè)計,數(shù)據(jù)模型設(shè)計,體系結(jié)構(gòu)設(shè)計,模塊設(shè)計形成設(shè)計規(guī)格說明,評審軟件設(shè)計過程軟件設(shè)計的主要活動軟件設(shè)計計劃:確定設(shè)計的目標和驗收準則,明確標準和規(guī)范,風險管理,制訂工作計劃,對計劃進行評審體系結(jié)構(gòu)設(shè)計:適用性,結(jié)構(gòu)穩(wěn)定性,可擴展性,可復(fù)用性界面設(shè)計:適用,易理解性,一致性,靈敏性,容錯性,人性化,國際化,個性化,合理的布局,和諧的色彩模塊或子系統(tǒng)設(shè)計:子系統(tǒng)獨立構(gòu)成系統(tǒng),不依賴其他子系統(tǒng)提供的服務(wù),子系統(tǒng)由模塊組成一個模塊通常是一個能夠提供一個或多個服務(wù)的系統(tǒng)部件。它能得用其他模塊的服務(wù),一般不被看成一個獨立的系統(tǒng)。模塊由更簡單的模塊組馬,模塊也需要定義接口。過程/算法設(shè)計軟件設(shè)計過程過程/算法設(shè)計對模塊內(nèi)部的工作和執(zhí)行過程進行描述,給出有關(guān)處理的精確說明事件的順序、確切的決策位置、循環(huán)操作,數(shù)據(jù)的組成使用UML活動圖進行描述數(shù)據(jù)模型設(shè)計:數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計、數(shù)據(jù)文件設(shè)計的總稱數(shù)據(jù)結(jié)構(gòu)描述各數(shù)據(jù)分量之間的邏輯關(guān)系。持久數(shù)據(jù)操作:包括寫入、查詢、更新和刪除四類基本操作及及由它們復(fù)合而成的業(yè)務(wù)數(shù)據(jù)操作數(shù)據(jù)庫設(shè)計:確定設(shè)計模型中需要持久保存的數(shù)據(jù)條目數(shù)據(jù):數(shù)據(jù)元素的格式、結(jié)構(gòu)、訪存、表示等機制進行良好的建模和優(yōu)化,是提高軟件設(shè)計質(zhì)量和系統(tǒng)性能的基礎(chǔ),對軟件系統(tǒng)的應(yīng)用具有重要意義軟件設(shè)計的質(zhì)量軟件設(shè)計的質(zhì)量要素:結(jié)構(gòu)良好:軟件設(shè)計的結(jié)構(gòu)合理,模塊滿足功能獨立、信息隱藏和高內(nèi)聚、低耦合的要求,子系統(tǒng)和模塊之間接口定義明確,清晰,一致充分性、可行性、簡單性、實用性靈活性、可移植性、可復(fù)用性標準化軟件設(shè)計的質(zhì)量正確性目標:每個項目都要滿足指定的需求,然后一起滿足所有應(yīng)用程序的需求實現(xiàn)正確性的途徑:達到正確性的非正式方法完全理解->模塊化達到正確性的正式方法:軟件設(shè)計的質(zhì)量達到正確性的非正式方法:充分設(shè)計一個設(shè)計足以實現(xiàn)需求一個正確的設(shè)計有時稱為設(shè)計必須完全可理解接下來設(shè)計非常模塊化達到這個目標的方法是:。。。最小目標軟件設(shè)計的質(zhì)量達到正確性的正式方法基于在嚴密的控制下跟蹤變量的變化,一般會指定一個不變式。不變式在變量值之間表示的是一種不變關(guān)系。例如:length>=0length*breadth==areaoverdraft<OVERDRAFT_MAX用在類級別設(shè)計中的不變式稱為類不變式。例如1)mileage>=02)mileage<10000004)value>=-300($300是一輛報費汽車的處理價格5)originalPrice>=06)(type==“REGULAR”&&value<=originalPrice)||(type==“VINTAGE”&&value>=originalPrice)考慮不變式,將變量設(shè)為私有,只能通過公有的存取方法才能改變他們的值。可以對存取方法進行編碼來保持不變式。如通過setter方法來設(shè)置類不變式精心設(shè)計的類通常擁有可理解的不變式集。軟件設(shè)計的質(zhì)量為正確性和充分性而重整
首先為給定的需求進行設(shè)計,然后在額外的需求變得透明時對設(shè)計和實現(xiàn)進行修改,這個過程稱為重整重整:為類提升一個原始屬性為了適應(yīng)范圍的增長,我們常常需要引入一個新類來進行重整重整:引入抽象基類可接口面向?qū)ο筇峁┏橄螅鞘裁礃訒r候應(yīng)該使用抽象呢?一個關(guān)鍵的標志就是每當應(yīng)用程序包含幾個具有廣泛通用性的類時。抽象類可以包含類的所有特性,除了當類的對象自己不能被創(chuàng)建之外。應(yīng)該是一個接口而不是一個類軟件設(shè)計的質(zhì)量1.防止錯誤輸入用戶輸入不是用戶的輸入數(shù)據(jù)通信其他應(yīng)用方法調(diào)用2.防止開發(fā)錯誤錯誤的設(shè)計錯誤的實現(xiàn)提高健壯性:錯誤原因軟件設(shè)計的質(zhì)量健壯性檢查輸入在繼續(xù)進行處理之前,可以檢查應(yīng)用程序的所有輸入的方法。檢查類型(例如:整形);
檢查與前置條件和不變式的輸入為提高健壯性而初始化提供靜態(tài)方法,用來為類產(chǎn)生標準的默認值提高健壯性的參數(shù)傳遞技術(shù)保證方法正確調(diào)用引入一個捕獲參數(shù)的類并將約束條件合并強化意圖通過防止設(shè)計和實現(xiàn)中的錯誤來提高健壯性強化計劃,按計劃使用相應(yīng)功能軟件設(shè)計的質(zhì)量提高健壯性在使用數(shù)據(jù)之前進行檢查,可以提高健壯性。通過強化我們的意圖來提高健壯性。軟件設(shè)計的質(zhì)量Example:intcomputeArea(intaLength,intaBreadth){…}如果可行,捕獲在類中的參數(shù)約束intcomputeArea(RectangleDimensionaRectangleDimension)
在方法中說明所有的參數(shù)約束aLength>0andaBreadth>0andaLength>=aBreadth
調(diào)用者遵循參數(shù)的顯示要求問題是方法的設(shè)計者沒有控制調(diào)用者在方法代碼中首先檢查約束if(aLength<=0)……如果預(yù)計這種情況將會出現(xiàn),則拋出異常否則,如果可能就中止程序否則如果返回的默認值在上下文之間有意義,就將其返回并且產(chǎn)生警告或日志參數(shù)的約束軟件設(shè)計的質(zhì)量靈活性的表現(xiàn)靈活性的預(yù)期目標:用于增加更多類型功能的設(shè)計例如(銀行應(yīng)用):處理更多類型的賬號而不需要修改已存在的代碼用于增加不同類型功能的設(shè)計例如:在存款功能的基礎(chǔ)上增加提款功能修改功能例如:可透支軟件設(shè)計的質(zhì)量應(yīng)用中增加同類型功能的設(shè)計
WebSiteregister()Member0..nmembersclassWebsite{ Member[]members;//ormaybe:vectormembers; voidregister(MemberaMember){...}}怎樣才能使設(shè)計更靈活以注冊新類型的成員?舉例:網(wǎng)站成員注冊軟件設(shè)計的質(zhì)量注冊網(wǎng)站的靈活性WebSiteMember0..nStandardMemberXMemberYMembermembers解決方案:引入一個基類,將基類抽象化,根據(jù)需要產(chǎn)生繼承類軟件設(shè)計的質(zhì)量用于增加不同類型功能的設(shè)計在以下范圍內(nèi)…一系列相關(guān)的函數(shù)Example:航空旅行(travelitinerary)函數(shù)中增加Pint功能一個已存在的基類Example:增加“打印航空路線”的功能兩者都不是Example:增加“同時打印航空路線和航海路線“軟件設(shè)計的質(zhì)量
TripprintItinerary()StandardTripprintItinerary()SomeApplicationClassMethod(s)callprintItinerary()向一個基類中增加功能軟件設(shè)計的質(zhì)量通過繼承基本類的方法來增加功能TripprintItinerary()SeaTripprintItinerary()SomeApplicationClassLandTripprintItinerary()StandardTripprintItinerary()解決方案:通過繼承基類的方法來增加功能每個子類都可以擁有各自版本的printItinerary()方法。依賴和繼承的結(jié)合可以形成委托形式。軟件設(shè)計的質(zhì)量靈活性的方面:可以…描述點…通過運行時確定的變量來產(chǎn)生對象創(chuàng)建型設(shè)計模式運行時表示變化的對象樹或其他結(jié)構(gòu)“結(jié)構(gòu)型l”設(shè)計模式改變、重組或捕獲一組對象的相互行為“行為型”
designpatterns產(chǎn)生和存儲復(fù)雜類的對象組件技術(shù)配置預(yù)定義的復(fù)雜類或類組的對象,從而能以多種方式進行交互組件技術(shù)附加的靈活性的類型軟件設(shè)計的質(zhì)量靈活性意義
我們之所以進行靈活的設(shè)計,因為變化和重用是經(jīng)常出現(xiàn)的軟件設(shè)計的質(zhì)量可重用性盡可能的降低成本重用原有的工作可以獲得最大生產(chǎn)率重用:函數(shù)重用、類重用、重用類組合可重用設(shè)計,可重用組件函數(shù)設(shè)計的可重用性基于重用的類選擇用于重用的類組合軟件設(shè)計的質(zhì)量使一個方法具有可重用性完全指定前置條件等避免不必要的封裝類耦合如果可行,讓方法成為靜態(tài)的參數(shù)化讓方法功能化但要限制參數(shù)的個數(shù)讓名字更具表達性可理解性促進可重用性解釋算法重用者要知道算法如何工作重用的方法必須給出完整的定義,以便使重用者知道這些方法的功能及使用條件一個方法相關(guān)對于上下文越獨立,其可重用性的性能就越高。靜態(tài)方法就屬于這種類型軟件設(shè)計的質(zhì)量使一個類成為可重用的完整的描述類使類名與功能與實際情況相符定義一個有用的抽象類以獲得更廣泛的應(yīng)用于性減少對其他類的依賴性通過繼承獲得軟件設(shè)計的質(zhì)量減少類間的依賴性CustomerReplace…Piano如果類A依賴于類B,沒有類B就不可以使用類A,這就減少了類A的重用性。Piano類依賴Custumer類,因為鋼琴是賣給用戶的,限制了Piano類的使用。一個庫存應(yīng)用程序可能需要Piano類,但卻不需要Customer類。重用Piano類。能否讓Custumer類依賴Piano類,因為用戶只有購買鋼琴時才成為用戶。有沒有更好的解決方案呢?降低依賴性。軟件設(shè)計的質(zhì)量減少類間的依賴性with…CustomerPianoPianoOrder引入第三個類PianoOrder將其關(guān)聯(lián)起來。這個設(shè)計具有一定的作用,但在現(xiàn)實情況中可能是不行的。例如,可能需要訪問某一給定用戶的訂單,而不必檢查每個PianoOrder訂單對象。中介者設(shè)計模式解決問題減少類之間的依賴關(guān)系,抽象級的依賴關(guān)系是可以接受的。通過減少類的依賴性來增加其可重用性軟件設(shè)計的質(zhì)量類組合的重用:利用繼承、組合和相關(guān)技術(shù)來實現(xiàn)CustomercomputeBill()RegularCustomercomputeBill()CustomercomputeBill()Billcompute()CustomercomputeBill(Orders)Ordersvalue()(1)利用繼承(3)利用依賴性(2)利用聚合CustomercomputeBill()軟件設(shè)計的質(zhì)量高效性應(yīng)用程序必須在指導定的時間內(nèi)完成特定的功能執(zhí)行效率處理循環(huán)問題消除遠程調(diào)用消除或制定函數(shù)調(diào)用存儲效率
RAM的大?。ㄟ\行時)代碼本身的規(guī)模輔助存儲器的大小軟件設(shè)計的質(zhì)量
先按其它原則設(shè)計,再考慮效率以靈活性,可重用性等原則進行設(shè)計找出效率低的部分有針對性的修改一開始就按效率原則進行設(shè)計確認當前關(guān)鍵的效率需求在整個階段都按需求進行設(shè)計以上兩種方法的結(jié)合在設(shè)計時為效率需求做出折中在初始設(shè)計之后,也要繼續(xù)考慮效率問題針對時間效率的基本方法軟件設(shè)計的質(zhì)量時空折中Space處理一個項目的時間通常的目標軟件設(shè)計的質(zhì)量時間、空間、開發(fā)的折中空間時間開發(fā)的設(shè)備限制可接受的值不可接受的值好于可接受的值軟件設(shè)計的質(zhì)量影響執(zhí)行效率的一些因素循環(huán)while,for,do遠程調(diào)用:消除遠程調(diào)用Requiringanetwork需要網(wǎng)絡(luò)LANTheInternet函數(shù)調(diào)用:消除函數(shù)調(diào)用如果函數(shù)調(diào)用導致以上情況發(fā)生對象創(chuàng)建高效的設(shè)計并不要求簡單,甚至會比較凌亂高效原則會減少函數(shù)調(diào)用,會導致產(chǎn)生大量的方法和類,難于擴展和重用軟件設(shè)計的質(zhì)量遠程調(diào)用的次數(shù)遠程調(diào)用的次數(shù)每次訪問取得的信息典型的目標軟件設(shè)計的質(zhì)量存儲效率應(yīng)用程序需要存儲數(shù)據(jù),以務(wù)將來在執(zhí)行時提取,這需要對存儲數(shù)據(jù)的空間進行有效的利用。有三種存儲問題:RAM的大小(運行時)代碼本身規(guī)模輔助存儲器(磁盤驅(qū)動)的大小提高存儲效率往往要消耗一定的時間軟件設(shè)計的質(zhì)量獲得存儲效率只需存儲的數(shù)據(jù)在存儲效率和數(shù)據(jù)提取以及重整時間之間獲得折中壓縮數(shù)據(jù)在存儲效率與數(shù)據(jù)壓縮和解壓縮之間獲得折中按相關(guān)訪問頻率存儲數(shù)據(jù)在存儲效率與決定存儲位置的時間之間獲得折中軟件設(shè)計的質(zhì)量健壯性、靈活性、高效性和可重用之間的折中1A.
極限編程法或完全為效率而設(shè)計1B.
靈活性驅(qū)動法著眼于將來的需求 附帶考慮可重用性2.
確保健壯性3.
提供足夠高的效率如果為了獲得效率那么會在可重用性方面做出折中軟件設(shè)計的質(zhì)量
極限編程vs.非極限編程+工作完成快(通常)+范圍清晰+可能更有效-未來可能較少用到-擴展需求代價很大+示來應(yīng)用可能較多用到+需求可變-范圍劃分不清晰-可能會比較費力-需要更多的關(guān)注效率軟件設(shè)計的質(zhì)量一個更靈活的計算器應(yīng)用程序的設(shè)計CommandLineCalculatormain()executeAdditions()solicitNumberAccounts()getAnInputFromUser()interactWithUser()已存在的設(shè)計新設(shè)計CalculatorsolicitNumAccounts()CalcDisplaydisplay()CalcOperationexecute()AddMultiplyDivide小結(jié)靈活性
==好修改可重用性在其它程序中應(yīng)用高效性
時間空間軟件體系結(jié)構(gòu)設(shè)計方法概述軟件體系結(jié)構(gòu)的多視圖建模進程視圖邏輯視圖開發(fā)視圖物理視圖場景基于評估與轉(zhuǎn)換的軟件體系結(jié)構(gòu)設(shè)計使用合適的體系結(jié)構(gòu)風格的模式把非功能需求轉(zhuǎn)化為功能性解決方案采用“分而治之”策略模式驅(qū)動的軟件體系結(jié)構(gòu)設(shè)計領(lǐng)域特定的軟件體系結(jié)構(gòu)設(shè)計類模型參考模型軟件產(chǎn)品線方法其他軟件體系結(jié)構(gòu)設(shè)計方法基于目標圖推理的體系結(jié)構(gòu)設(shè)計方法基于屬性的體系結(jié)構(gòu)設(shè)計方法體系結(jié)構(gòu)“4+1”多視圖建模進程視圖物理視圖邏輯視圖開發(fā)視圖場景集成人員性能可擴展性系統(tǒng)工程師拓撲通信軟件體系結(jié)構(gòu)的多視圖建模邏輯視圖:關(guān)注功能需求,系統(tǒng)為用戶提供的服務(wù),與應(yīng)用領(lǐng)域相關(guān)系統(tǒng)功能映射到概念構(gòu)件和連接件與軟件和硬件的細節(jié)沒關(guān)若是面向?qū)ο笤O(shè)計,則將是一種對象模型進程視圖:捕獲設(shè)計中關(guān)于并發(fā)和同步的內(nèi)容,重視非功能需求(性能,可擴展性等,定義運行實體和他們的屬性)構(gòu)件、連接件,構(gòu)件可以是任務(wù),連接件可以是消息、遠程過程調(diào)用(RPC)、事件廣播等開發(fā)視圖:描述軟件在開發(fā)環(huán)境中的靜態(tài)結(jié)構(gòu)構(gòu)件和連接件分別映射到子系統(tǒng)或模塊關(guān)注于軟件開發(fā)環(huán)境中軟件模塊的組織。軟件可被打包,并按層次進行組織軟件體系結(jié)構(gòu)的多視圖建模物理視圖:描述軟件到硬件的映射關(guān)系,反映了軟件的分布特征把不同的軟件元素,例如進程和任務(wù)等,映射到不同的物理節(jié)點上,并關(guān)注物理環(huán)境的拓撲結(jié)構(gòu)以及節(jié)點間的通信場景:使用一組重要場景,也就是用例的實例,把上述四種視圖緊密地聯(lián)系起來設(shè)計中發(fā)現(xiàn)體系結(jié)構(gòu)元素的驅(qū)動器,設(shè)計完成后充當確認和驗證的依據(jù)?;谠u估與轉(zhuǎn)換的軟件體系結(jié)構(gòu)設(shè)計質(zhì)量優(yōu)化方案體系結(jié)構(gòu)轉(zhuǎn)換質(zhì)量屬性評價基于功能的體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)制品需求規(guī)格說明滿足不滿足針對功能特性,它基于一種人們最常見的開發(fā)思路:針對功能要求設(shè)計體系結(jié)構(gòu),對設(shè)計結(jié)果進行評審,如果不滿足要求則進行改進,一直迭代到滿足要求為止。基于評估與轉(zhuǎn)換的軟件體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)的評估方式基于場景的評估仿真數(shù)學建?;窘?jīng)驗的推理對體系結(jié)構(gòu)轉(zhuǎn)換的方式使用合適的體系結(jié)構(gòu)風格和模式,或者設(shè)計模式來改進體系結(jié)構(gòu)設(shè)計把非功能需求轉(zhuǎn)化為功能性解決方案,可以與問題域沒關(guān),但可以滿足質(zhì)量屬性的要求。采用“分而治之”的方式,可以把系統(tǒng)級的質(zhì)量需求分配到子系統(tǒng)或模塊中,或者把質(zhì)量需求分解為多個與功能相關(guān)的質(zhì)量需求,分解后的質(zhì)量需求能夠較易得到滿足。模式驅(qū)動的軟件體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)風格是描述某一特定應(yīng)用方式中系統(tǒng)組織方式的慣用模式,為設(shè)計人員的交流提供了公共的模型,符號和術(shù)語表示,促進了設(shè)計復(fù)用甚至最終的代碼復(fù)用。體系結(jié)構(gòu)模式是對設(shè)計模式的擴展,描述了軟件軟件系統(tǒng)基本的結(jié)構(gòu)化組織方案,可以作為具體體系結(jié)構(gòu)的模板。軟件開發(fā)中常用的設(shè)計模式也是對設(shè)計經(jīng)驗的一種總結(jié)和描述,以便于復(fù)用,但設(shè)計模式則是針對單一問題提供的解決方案。設(shè)計模式更接近于提供通用的實現(xiàn)方案,盡管實現(xiàn)可以不依賴于具體語言,而體系結(jié)構(gòu)則需要綜合考慮整個系統(tǒng)各方面的需求。一個體系結(jié)構(gòu)設(shè)計在繼續(xù)精化過程中可能會用到多種設(shè)計模式來解決其包含的子問題。常用體系結(jié)構(gòu)風格管道和過濾器風格、層次風格、黑板模式等模式驅(qū)動的軟件體系結(jié)構(gòu)設(shè)計需求規(guī)格說明系統(tǒng)特征初步分析搜索可用的體系結(jié)構(gòu)風格選擇合適的體系結(jié)構(gòu)風格對體系結(jié)構(gòu)風格進行改造以體系結(jié)構(gòu)風格為基礎(chǔ)進行設(shè)計自行設(shè)計體系結(jié)構(gòu)擴展軟件體系結(jié)構(gòu)風格庫軟件體系結(jié)構(gòu)設(shè)計模型不存在模式驅(qū)動的軟件體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)風格分類獨立體系結(jié)構(gòu)數(shù)據(jù)流體系結(jié)構(gòu)以數(shù)據(jù)為中心的體系結(jié)構(gòu)虛擬機體系結(jié)構(gòu)調(diào)用與返回體系結(jié)構(gòu)領(lǐng)域特定的軟件體系結(jié)構(gòu)設(shè)計特定領(lǐng)域的軟件復(fù)用更易成功領(lǐng)域特定的軟件體系結(jié)構(gòu)(DSSA)是領(lǐng)域工程的核心部分,領(lǐng)域工程分析應(yīng)用分析應(yīng)用的共同特征和可變特征,對刻劃這些特征的對象和操作進行選擇和抽象,形成領(lǐng)域模型,并進一步生成DSSA。領(lǐng)域特定的軟件體系結(jié)構(gòu)借鑒領(lǐng)域中已經(jīng)成熟的軟件體系結(jié)構(gòu),實現(xiàn)解決方案在某個領(lǐng)域內(nèi)的復(fù)用。雖然這些系統(tǒng)實例的細節(jié)會有不同,但共同的體系結(jié)構(gòu)在開發(fā)新系統(tǒng)時是能夠復(fù)用的。DSSA和軟件體系結(jié)構(gòu)風格都是對軟件體系結(jié)構(gòu)的重用,但它們的目標、構(gòu)造和應(yīng)用過程存在以下不同之處:(1)DSSA與軟件體系結(jié)構(gòu)風格是從不同角度出發(fā)研究問題的兩種結(jié)果,前者從問題哉出發(fā),而后者從解決哉出發(fā)。(2)DSSA只在某個特定領(lǐng)域中進行經(jīng)驗知識的提取、總結(jié)與組織,但可以同時使用多種軟件體系結(jié)構(gòu)風格;而一種軟件體系結(jié)構(gòu)風格所呈現(xiàn)的公共結(jié)構(gòu)和設(shè)計方法可以擴展到多個應(yīng)用領(lǐng)域。(3)DSSA的體系結(jié)構(gòu)表示和工具一般只適用于一個較小的范圍,在其他領(lǐng)域中是不適用并難以復(fù)用的。領(lǐng)域特定的軟件體系結(jié)構(gòu)設(shè)計DSSA應(yīng)該包括多種組成要素,例如領(lǐng)域模型、參考需求、參考體系結(jié)構(gòu)、相應(yīng)的支持環(huán)境或設(shè)施、實例、精化和評估的方法與過程等,以促進DSSA在領(lǐng)域中復(fù)用。領(lǐng)域相關(guān)的軟件體系結(jié)構(gòu)可分為兩種類型類模型:類模型是從許多實際系統(tǒng)抽象出來的一般模型,它們封裝這些系統(tǒng)的主要特征。參考模型:是更抽象且是描述一大類系統(tǒng)的模型,它是對設(shè)計者有關(guān)某類系統(tǒng)的一般結(jié)構(gòu)指導。代表了一個理想化的體系結(jié)構(gòu),包含了系統(tǒng)所有應(yīng)該具有的特征。OSI七層參考模型軟件產(chǎn)品線方法軟件產(chǎn)品線指一組具有公共的、可管理特征的軟件系統(tǒng),這些系統(tǒng)滿足特定的市場需求或者任務(wù)領(lǐng)域需求,并且按照預(yù)定義的方式基于公共的核心資產(chǎn)集合開發(fā)得到軟件產(chǎn)品線(SoftwareProductLine)是軟件復(fù)用發(fā)展的一個更高階段,它并不僅僅局限于函數(shù)、模塊、類、體系結(jié)構(gòu)甚至子系統(tǒng)的重用可以有效地提高生產(chǎn)率、縮短產(chǎn)品上市時間,提高質(zhì)量和客戶滿意度軟件產(chǎn)品線主要由兩部分組成:核心資產(chǎn)庫和產(chǎn)品集合核心資產(chǎn)庫:是領(lǐng)域工程所有成果的集合,對支持產(chǎn)品開發(fā)的可復(fù)用資源進行管理。核心資產(chǎn)庫包括產(chǎn)品線中所有產(chǎn)品共享的體系結(jié)構(gòu)、可復(fù)用的軟件構(gòu)件、與軟件構(gòu)件相關(guān)的測試計劃、測試用例、以及領(lǐng)域模型、領(lǐng)域范圍定義和所有的需求描述、設(shè)計文檔,各種性能模型和度量準則、日程安排、預(yù)算、工作計劃、過程描述、通信協(xié)議描述、用戶界面描述等。產(chǎn)品線方法的基本活動包括核心資產(chǎn)開發(fā)、產(chǎn)品開發(fā)和管理。核心資產(chǎn)開發(fā)指如何獲得核心資產(chǎn),可能通過自己構(gòu)那家、直接購買、委托加工等各種方式。產(chǎn)品開發(fā)活動是產(chǎn)品線的目標,核心資產(chǎn)開發(fā)只是達到目標的一種手段。管理,各個活動合理分配資源,協(xié)調(diào)監(jiān)督、設(shè)置適當?shù)慕M織機構(gòu)特征:循環(huán)重復(fù)軟件產(chǎn)品線方法新產(chǎn)品形在的步驟從公共資產(chǎn)庫中選取合適的構(gòu)件使用預(yù)定義的變化機制進行裁剪,如參數(shù)化、繼承等必要時增加新的構(gòu)件在整個產(chǎn)品線范圍內(nèi)共同的體系結(jié)構(gòu)指導下,進行構(gòu)件組裝,形成系統(tǒng)。其他軟件體系結(jié)構(gòu)設(shè)計方法基于目標圖推理的體系結(jié)構(gòu)設(shè)計方法:功能需求和非功能需求皆被表達為要達到的目標,特別是把非功能需求表過為通常沒有清晰的評價標準的“軟”目標;基于屬性的體系結(jié)構(gòu)設(shè)計方法:軟件結(jié)構(gòu)設(shè)計的步聚開發(fā)軟件頂層架構(gòu)選取合適的體系結(jié)構(gòu)風格明確架構(gòu)中每個部件的職責、特征,各部件之間的通信及協(xié)作關(guān)系,可用UML包圖表示頂層架構(gòu)組成,以及體系結(jié)構(gòu)中子系統(tǒng)、構(gòu)件之間的通信及協(xié)作關(guān)系搜索并選取可用設(shè)計資產(chǎn)設(shè)計術(shù)支撐設(shè)計資產(chǎn)包括相同或相關(guān)業(yè)務(wù)領(lǐng)域中的模塊、子系統(tǒng)、構(gòu)件、框架、類庫、應(yīng)用軟件系統(tǒng)、設(shè)計模式等。“可用”的設(shè)計資產(chǎn)是指在婁前項目中直接可供復(fù)用或借鑒的設(shè)計資產(chǎn)設(shè)計技術(shù)支撐方案技術(shù)支撐方案應(yīng)該為軟件多個用例的實現(xiàn)提供技術(shù)服務(wù),所以它應(yīng)該成為整個目標軟件系統(tǒng)中全局性的公共技術(shù)平臺。良好穩(wěn)定性軟件結(jié)構(gòu)設(shè)計的步聚確定設(shè)計元素子系統(tǒng)、構(gòu)件、設(shè)計類確定設(shè)計元素的主要過程:確定子系統(tǒng)及其接口確定構(gòu)件及其接口確定關(guān)鍵設(shè)計類整合設(shè)計元素開發(fā)軟件部署模型軟件部署模型軟件部署模型負責展示軟件中各子系統(tǒng)、構(gòu)件在哪些計算結(jié)點上運行,以及這些結(jié)點之間的網(wǎng)絡(luò)連接方式反映了軟件系統(tǒng)的網(wǎng)絡(luò)運行環(huán)境和物理分布狀況設(shè)計并發(fā)機制針對目標軟件系統(tǒng)的性能需求(包括界面的靈敏性需求),將一些可以并行執(zhí)行的序列劃分成不同的任務(wù),明確這些任務(wù)在并發(fā)執(zhí)行過程中可能的同步點,并研究并發(fā)任務(wù)在目標軟件系統(tǒng)所基于的計算平臺上的實現(xiàn)方法軟件結(jié)構(gòu)設(shè)計的步聚構(gòu)建軟件體系結(jié)構(gòu)模型整理、改進前述工作成果,以正式文檔形式完整地描述系統(tǒng)的體系結(jié)構(gòu)模型。文檔內(nèi)容引言體系結(jié)構(gòu)概述需求視圖邏輯視圖進程視圖實施視圖部署視較長應(yīng)用指南評審軟件體系結(jié)構(gòu)模型發(fā)現(xiàn)可能存在的缺陷,使相關(guān)人員能夠達成一致關(guān)注點是否能夠滿足需求,以及怎樣滿足需求當異常或者臨界條件出現(xiàn)時,體系結(jié)構(gòu)是否以令人滿意的方式動作詳略程度是否恰當是否存在可行性方面的危險軟件結(jié)構(gòu)設(shè)計的步聚需求規(guī)圖說明軟件設(shè)計計劃開發(fā)軟件項層架構(gòu)選取設(shè)計資產(chǎn)設(shè)計技術(shù)支撐方案確定設(shè)計元素開發(fā)軟件部署模型設(shè)計并發(fā)機制構(gòu)建體系結(jié)構(gòu)模型評審體系結(jié)構(gòu)模型軟件體系結(jié)構(gòu)文檔高可信軟件設(shè)計可信軟件特點容錯設(shè)計軟件失效模式和影響分析軟件故障樹分析形式化方法凈室方法嵌入式和實時軟件設(shè)計高可信軟件設(shè)計--可信軟件特點可靠性(Reliability):在規(guī)定的環(huán)境在下規(guī)定的時間內(nèi),軟件無失效運行的概率??煽堪踩裕⊿afefy):軟件運行不引起危險、災(zāi)難的能力保密安全性(Security):軟件系統(tǒng)對數(shù)據(jù)和信息提供保密性、完整性、可用性、真實性保障的能力可生存性(Survivability):軟件在受到攻擊或失效出現(xiàn)時連續(xù)提供服務(wù)并在規(guī)定時間內(nèi)恢復(fù)所有服務(wù)的能力實時性(RealTime):軟件在指定的時間內(nèi)完成反應(yīng)或提交輸出的能力高可信軟件設(shè)計--容錯設(shè)計軟件容錯技術(shù):使得軟件能發(fā)現(xiàn)失效危險并從臨失效狀態(tài)恢復(fù)的軟件設(shè)計技術(shù)恢復(fù)塊技術(shù):檢測到錯誤后將執(zhí)行軟件模塊的另一個不同版本。在執(zhí)行模塊的一個版本前,首先要創(chuàng)建檢查點,因為這有助于在該版本執(zhí)行失效后恢復(fù)狀態(tài),并為檢測到錯誤后執(zhí)行下一個版本提供一個有效的起始點。N-版本編程:N-版本編程是一種多版本技術(shù),關(guān)鍵模塊的不同版本被設(shè)計成滿足同樣的基本需求,每個版本完成同樣的任務(wù),但卻使用不同的方式。這些版本同時執(zhí)行,它們的輸出結(jié)果提交給一個表決系統(tǒng)以決定正確的結(jié)果,并把該結(jié)果返回給模塊,對輸出正確性的判定基于對所有輸出的比較。出現(xiàn)不一致的情況下,利用多數(shù)表決來決定一個最優(yōu)先的結(jié)果?;谠O(shè)計多樣性,通過以下方式可以達到設(shè)計多樣性:使用不同的設(shè)計方法來實現(xiàn)需求使用不同的程序設(shè)計語言來完成實現(xiàn)使用不同的開發(fā)工具,且在不同的開發(fā)環(huán)境中完成。明確要求在實現(xiàn)某些關(guān)鍵過程時使用不同的算法高可信軟件設(shè)計--軟件失效模式和影響分析軟件失效模式和影響分析:主要是在軟件開發(fā)階段的早期,通過識別軟件失效模式,研究分析各種答失效模式產(chǎn)生的原因及其造成的后果,尋找消除和減少其有害后果的方法,以盡早發(fā)現(xiàn)潛在的問題,并采取相應(yīng)的措施,從而提高軟件的可靠性和安全性。軟件失效:程序在中喪失了全部或部分功能、出現(xiàn)偏離預(yù)期的正常狀態(tài)的事件。軟件失效模式:軟件失效的不同類型,通常用于描述軟件失效發(fā)生的方式以及對設(shè)備運行可能產(chǎn)生的影響軟件失效的影響:指軟件失效模式對軟件系統(tǒng)的運行、功能或狀態(tài)等造成的后果高可信軟件設(shè)計--軟件故障樹分析軟件故障樹分析就是在軟件系統(tǒng)設(shè)計過程中,通過對可能造成的系統(tǒng)故障的各種因素(包括硬件、軟件、環(huán)境、人為因素等)進行分析,畫出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年部編版二年級上冊語文分層教學計劃
- 半導體廠重要環(huán)境因素控制措施
- 機場跑道施工進度計劃和進度保證措施
- 四年級健康與安全教育方案計劃
- 2024-2025學年度網(wǎng)絡(luò)安全保護計劃
- 2025年小學五年級科學教學信息化發(fā)展計劃
- 小學科學教研計劃課外拓展
- 口腔診所前臺接待話術(shù)及工作流程
- 五年級下冊體育課程安全保障計劃
- 以建模教學為翼展數(shù)學應(yīng)用之翅:探索數(shù)學教育新路徑
- 國網(wǎng)南瑞集團有限公司(國網(wǎng)電力科學研究院有限公司)招聘筆試沖刺題2024
- 2024新滬教版英語(五四學制)七年級上單詞表 (英譯漢)
- 加工中心操作工崗位實習周記原創(chuàng)范文
- 膝關(guān)節(jié)骨關(guān)節(jié)炎護理-減輕疼痛,保持關(guān)節(jié)活動能力
- 先天性心臟病的健康教育
- 02-第二章-黨的性質(zhì)與宗旨
- 2024年華東電網(wǎng)考試題庫
- 24年-注安建筑-必背簡答題
- 財務(wù)經(jīng)理招聘筆試題及解答(某大型央企)
- 【碩士研究生入學考試大綱】電動力學
- 2024年拍賣師資格考試題庫大全(含答案)
評論
0/150
提交評論