版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章軟件設(shè)計(jì)的層次
丁二玉南京大學(xué),軟件學(xué)院課程交流有明確的體系結(jié)構(gòu)設(shè)計(jì)過程嗎?如何完成?質(zhì)量如何評(píng)價(jià)?有明確的模塊與類結(jié)構(gòu)設(shè)計(jì)過程嗎?如何完成?質(zhì)量如何評(píng)價(jià)?程序代碼編寫過程有明確規(guī)范嗎?如何完成?質(zhì)量如何評(píng)價(jià)主要內(nèi)容低層設(shè)計(jì):代碼設(shè)計(jì)中層設(shè)計(jì):模塊與類結(jié)構(gòu)設(shè)計(jì)高層設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)程序設(shè)計(jì)的建立1950s第一代語言,第二代語言語句為最小單位1960s第三代語言類型與函數(shù):第一次復(fù)雜系統(tǒng)分割1970s類型與函數(shù)的成熟:形式化方法數(shù)據(jù)結(jié)構(gòu)+算法=程序低層設(shè)計(jì)將基本的語言單位(類型與語句),組織起來,建立高質(zhì)量的數(shù)據(jù)結(jié)構(gòu)+算法常見設(shè)計(jì)場(chǎng)景:數(shù)組的使用,鏈表的使用,內(nèi)存的使用,遍歷算法,遞歸算法…經(jīng)典場(chǎng)景:堆棧,隊(duì)列,樹,排序算法,查找算法…質(zhì)量:數(shù)據(jù)結(jié)構(gòu)合理易用,算法高效易讀<計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)>低層設(shè)計(jì)的本質(zhì)屏蔽程序中復(fù)雜數(shù)據(jù)結(jié)構(gòu)與算法的實(shí)現(xiàn)細(xì)節(jié)!評(píng)價(jià):易讀,易維護(hù)抽象層接口層精化層實(shí)現(xiàn)層數(shù)據(jù)結(jié)構(gòu)的含義與使用算法的語義與復(fù)雜度結(jié)構(gòu)的類型定義存儲(chǔ)空間的使用與更改書寫控制語句分支的處理技巧對(duì)數(shù)據(jù)的操縱低層設(shè)計(jì):代碼設(shè)計(jì)對(duì)一個(gè)方法/函數(shù)的內(nèi)部代碼進(jìn)行設(shè)計(jì)又被稱為軟件構(gòu)造“softwareconstruction”,通常由程序員獨(dú)立完成依賴于語言提供的機(jī)制(程序設(shè)計(jì)課程)OOorStructuralReferenceorAddressPoint…有慣例用法(數(shù)據(jù)結(jié)構(gòu)課程)也存在一些方法與技巧(缺失?。┑蛯釉O(shè)計(jì):代碼設(shè)計(jì),常見技術(shù)防御式編程DefensiveProgramming斷言式編程AssertiveprogrammingDesign-by-Contract測(cè)試驅(qū)動(dòng)開發(fā)Test-Drivenprogramming配置式編程ConfiguringProgramming表驅(qū)動(dòng)編程Table-drivenProgramming基于狀態(tài)機(jī)編程State-machinebasedProgramming異常處理Errorhandling,exceptionhandling….低層設(shè)計(jì):代碼設(shè)計(jì)推薦資源《代碼大全》《從小工到專家》《HowToWriteUnmaintainableCode》低層設(shè)計(jì):代碼設(shè)計(jì)工具剖面性能分析切片工具主要內(nèi)容低層設(shè)計(jì):代碼設(shè)計(jì)中層設(shè)計(jì):模塊與類結(jié)構(gòu)設(shè)計(jì)高層設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)程序的分割1970s模塊1980sOO模塊模塊化信息隱藏面向?qū)ο笤O(shè)計(jì)模式…模塊劃分模塊劃分將系統(tǒng)分成簡(jiǎn)單片段片段有名字,可以被反復(fù)使用名字和使用方法稱為模塊的抽象與接口模塊內(nèi)部的程序片段為精華與實(shí)現(xiàn)模塊劃分:中層設(shè)計(jì)的開始模塊劃分隱藏一些程序片段(數(shù)據(jù)結(jié)構(gòu)+算法)的細(xì)節(jié),暴露接口于外界抽象層接口層精化層實(shí)現(xiàn)層數(shù)據(jù)結(jié)構(gòu)的含義與使用算法的語義與復(fù)雜度結(jié)構(gòu)的類型定義存儲(chǔ)空間的使用與更改書寫控制語句分支的處理技巧對(duì)數(shù)據(jù)的操縱程序細(xì)節(jié)模塊接口模塊化的初始考慮模塊劃分的質(zhì)量評(píng)價(jià)簡(jiǎn)潔性Simplicity易開發(fā)易修改易復(fù)用可觀察性O(shè)bservability看上去“顯然是正確的”“ObviouslyCorrect”易開發(fā),易調(diào)試,易維護(hù)模塊化的目標(biāo):完全獨(dú)立性完全獨(dú)立有助于理解使用與復(fù)用開發(fā)修改模塊化的問題與困難程序片段之間不可能是完全獨(dú)立的方法:實(shí)現(xiàn)盡可能的獨(dú)立低耦合CouplingMinimizingtherelationshipsamongmodules高內(nèi)聚CohesionMaximizingrelationshipsamongelementsinthesamemodule模塊間的聯(lián)系鏈接:Connections對(duì)名字的使用或者對(duì)地址的訪問Aconnectionisareferencetosomelabeloraddressdefinedelsewhere耦合就是衡量模塊間鏈接的強(qiáng)度強(qiáng)度越小,模塊越獨(dú)立耦合強(qiáng)度衡量耦合層次THESESAREFORBIDDEN!模塊化的啟示要求:PrinciplesfromModularization1:GlobalVariablesConsiderHarmful2:TobeExplicit3:DonotRepeat4:ProgrammingtoInterface5:DesignbyContract內(nèi)聚的衡量:連接因素bindingCoincidentalBinding:NoBindingLogicalBinding:BindingbylogicalsimilarityTemporalBinding:SameTimeCommunicationalBinding:SameDataSequentialBinding:SameProblemFunctionalBinding:SamegoalInformationalBinding:SameAbstraction內(nèi)聚Equalcohesion!Forbidden!判斷內(nèi)聚
用一句話描述一個(gè)模塊如果只有一個(gè)簡(jiǎn)單語句,功能內(nèi)聚組合語句,多個(gè)動(dòng)詞
不是功能內(nèi)聚 …ClassA{
Private: FinancialReportfr; WeatherDatawd; Inttotalcount; Public: voidinit();}voidinit(){/*initializationModule*///initializesfinancialreportfr=new(FinancialReport);fr.setRatio(5);fr.setYear(”2010”);//initializescurrentweatherwd=new(WeatherData);wd.setCity(“Nanjing”);wd.setCode(“210093”);//initializesmastercounttotalcount=0;}信息隱藏:DavidParnas
模塊化方法1按照處理流程,每個(gè)功能一個(gè)模塊模塊化方法2信息隱藏每個(gè)模塊有1或多個(gè)秘密Eachmodulehasoneormore"secrets”每個(gè)模塊實(shí)現(xiàn)了一個(gè)重要決策,而且只有自己知道細(xì)節(jié)決策類型1:需求,即一個(gè)模塊的接口功能與模塊內(nèi)部的程序細(xì)節(jié)分離決策類型2:變化,將要發(fā)生變化的程序部分需要進(jìn)行一個(gè)決策不同決策之間互相獨(dú)立《Onthecriteriatobeusedindecomposingsystemsintomodules》KWICExampleInput: barsock cardog townfog Output:
barsock cardog dogcar fogtown sockbar townfogFoursteps: Input Circularshift Alphabetize OutputIndex:Circularshiftpositions: 1510141823Alphabetize: 1101423518按功能設(shè)計(jì)按照信息隱藏設(shè)計(jì)Lineshowcharacters/linesarestoredCircularShifteralgorithmforshifting,storageforshiftsAlphabetizeralgorithmforalpha,lazinessofalpha可修改性比較可能的修改輸入數(shù)據(jù):(1,1)字符儲(chǔ)存:(all,1)字符打包:(all,1)更改轉(zhuǎn)置算法:(3,1)更改排序算法:(2,1模塊化與信息隱藏模塊化=按功能設(shè)計(jì)給出功能接口,隱藏功能實(shí)現(xiàn)程序的細(xì)節(jié)信息隱藏=模塊化+可修改性給出功能接口,隱藏功能實(shí)現(xiàn)程序的細(xì)節(jié)給出要修改部分的接口,隱藏待修改部分的實(shí)現(xiàn)程序細(xì)節(jié)不要只是按照流程設(shè)計(jì)信息隱藏的應(yīng)用:ModuleGuide為每一個(gè)模塊書寫一個(gè)規(guī)格說明:模塊在整個(gè)系統(tǒng)設(shè)計(jì)中扮演的角色,即承擔(dān)的功能模塊對(duì)外提供的接口主要秘密:模塊承擔(dān)的需求決策(0~N)來源與需求規(guī)格說明書次要秘密模塊承擔(dān)的修改決策(0~N)來源于對(duì)可修改性的預(yù)測(cè)在設(shè)計(jì)的高層,可以運(yùn)行一個(gè)模塊有多個(gè)秘密在設(shè)計(jì)的細(xì)節(jié)層,一個(gè)模塊只能有一個(gè)秘密《TheModularStructureofComplexSystems》常見的可修改性決策h(yuǎn)ardwaredependenciesinputandoutputformatsnonstandardlanguagefeaturesandlibraryroutines;difficultdesignandimplementationareascomplexdatastructurescomplexlogicglobalvariablesConstraintsandbusinessrules<“MissinginAction:InformationHiding”>面向?qū)ο竽K化+可修改性=信息隱藏抽象數(shù)據(jù)類型屬于信息隱藏?cái)?shù)據(jù)封裝屬于信息隱藏模塊化+信息隱藏+(抽象數(shù)據(jù)類型、封裝、繼承、多態(tài))=面向?qū)ο罄硐氲膶?duì)象信息內(nèi)聚代表現(xiàn)實(shí)世界中不超過一個(gè)事物功能內(nèi)聚只有一個(gè)目的信息隱藏只有一個(gè)秘密繼承符合多態(tài)思想LSP面向?qū)ο笤O(shè)計(jì)原則SingleResponsibilityPrinciple(SRP)Open/ClosedPrinciple(OCP)LiskovSubstitutionPrinciple(LSP)a.k.a.DesignbyContractDependencyInversionPrinciple(DIP)InterfaceSegregationPrinciple(ISP)中層設(shè)計(jì)隱藏程序片段(數(shù)據(jù)結(jié)構(gòu)+算法)的實(shí)現(xiàn)細(xì)節(jié),通過接口對(duì)外交互評(píng)價(jià)質(zhì)量標(biāo)準(zhǔn):模塊化;信息隱藏;OO原則抽象層接口層精化層實(shí)現(xiàn)層數(shù)據(jù)結(jié)構(gòu)的含義與使用算法的語義與復(fù)雜度結(jié)構(gòu)的類型定義存儲(chǔ)空間的使用與更改書寫控制語句分支的處理技巧對(duì)數(shù)據(jù)的操縱程序細(xì)節(jié)對(duì)象、模塊主要內(nèi)容低層設(shè)計(jì):代碼設(shè)計(jì)中層設(shè)計(jì):模塊與類結(jié)構(gòu)設(shè)計(jì)高層設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)Programming-in-the-SmallVS
Programming-in-the-Large
Programming-in-theSmall中低層設(shè)計(jì)的問題《Programming-in-the-SmallVS
Programming-in-the-Large》過于依賴細(xì)節(jié)連接與依賴,接口與實(shí)現(xiàn)忽略的關(guān)鍵因素:無法有效抽象部件的整體特性總體結(jié)構(gòu)質(zhì)量屬性大型軟件開發(fā)的一個(gè)根本不同是它更關(guān)注如何將大批獨(dú)立模塊組織形成一個(gè)“系統(tǒng)”,也就是說更重視系統(tǒng)的總體組織高層設(shè)計(jì):體系結(jié)構(gòu)部件承載了系統(tǒng)主要的計(jì)算與狀態(tài)連接件承載部件之間的交互部件與連接件都是抽象的類型定義(就像類定義),它們的實(shí)例(就像類的對(duì)象實(shí)例)組織構(gòu)成軟件系統(tǒng)的整體結(jié)構(gòu),配置將它們的實(shí)例連接起來連接件是一個(gè)與部件平等的單位體系結(jié)構(gòu)示例AbstractspecificationVSImplementationArchitectureas-designVSas-implementationFunctionalorganizationsVSimplementedmechanismstosoftware軟件體系結(jié)構(gòu)設(shè)計(jì)的關(guān)鍵在大型軟件系統(tǒng)的開發(fā)中,質(zhì)量屬性是影響軟件系統(tǒng)復(fù)雜度的關(guān)鍵因素,軟件體系結(jié)構(gòu)是處理質(zhì)量屬性和控制復(fù)雜性的主要手段為什么質(zhì)量屬性在高層設(shè)計(jì)中是重要的?影響廣泛。與質(zhì)量屬性相關(guān)的設(shè)計(jì)決策可能會(huì)影響到軟件體系結(jié)構(gòu)的很多元素,甚至是絕大部分的元素?;ハ嘟豢?。質(zhì)量屬性之間并不是完全獨(dú)立的,它們可能互相沖突,也可能互相促進(jìn),這擴(kuò)大了它們的影響范圍。易于被違反。因?yàn)榕c質(zhì)量屬性相關(guān)的設(shè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《倉庫現(xiàn)場(chǎng)管理》課件
- 《倉庫庫存管理系統(tǒng)》課件
- 《小學(xué)細(xì)節(jié)描寫》課件
- 單位管理制度集粹選集員工管理篇
- 單位管理制度合并匯編【職員管理】
- 四川省南充市重點(diǎn)高中2024-2025學(xué)年高三上學(xué)期12月月考地理試卷含答案
- 單位管理制度分享合集職員管理篇十篇
- 單位管理制度范文大合集【人事管理】十篇
- 單位管理制度呈現(xiàn)大全職工管理篇十篇
- 《運(yùn)算律》教案(20篇)
- 物流倉儲(chǔ)設(shè)備維護(hù)保養(yǎng)手冊(cè)
- 農(nóng)商銀行小微企業(yè)續(xù)貸實(shí)施方案
- 2024年山西廣播電視臺(tái)招聘20人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024山西太原文化局直屬事業(yè)單位招聘30人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 中國普通食物營(yíng)養(yǎng)成分表(修正版)
- 2024年北京市第一次普通高中學(xué)業(yè)水平合格性考試英語仿真模擬卷03(全解全析)
- 2024年江蘇省淮安技師學(xué)院長(zhǎng)期招聘高技能人才3人高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 應(yīng)急救援員五級(jí)理論考試題庫含答案
- 2024年導(dǎo)游服務(wù)技能大賽《導(dǎo)游綜合知識(shí)測(cè)試》題庫及答案
- 高中化學(xué)實(shí)驗(yàn)開展情況的調(diào)查問卷教師版
- 《聲聲慢(尋尋覓覓)》課件 統(tǒng)編版高中語文必修上冊(cè)
評(píng)論
0/150
提交評(píng)論