版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二次調(diào)用返回體系結(jié)構(gòu)
CallbackSoftwareArchitecturestyle
任課老師:黃武2023/7/21提綱軟件體系結(jié)構(gòu)概述調(diào)用返回體系結(jié)構(gòu)2023/7/21軟件體系結(jié)構(gòu)概述提綱背景軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的意義軟件體系結(jié)構(gòu)和軟件質(zhì)量屬性軟件體系結(jié)構(gòu)風(fēng)格2023/7/211.1背景Edsger.Dijstra指出“軟件的規(guī)模越大,其整體構(gòu)架就越重要”20世紀(jì)90年代,軟件體系結(jié)構(gòu)逐漸被工業(yè)界和學(xué)術(shù)界廣泛接受,并且業(yè)內(nèi)普遍認(rèn)為:對(duì)于大規(guī)模復(fù)雜軟件系統(tǒng)而言,構(gòu)架的設(shè)計(jì)比數(shù)據(jù)結(jié)構(gòu)以及算法的設(shè)計(jì)更為重要2023/7/211.2軟件體系結(jié)構(gòu)的概念MaryShaw和DavidGarlan的定義:軟件體系結(jié)構(gòu)用于描述系統(tǒng)的構(gòu)成要素、構(gòu)成要素之間的交互和組合模式以及在進(jìn)行組合時(shí)的約束條件LenBass的定義:軟件體系結(jié)構(gòu)是指程序或者系統(tǒng)的組成關(guān)系,這種組成關(guān)系包括軟件、軟件的外部可見屬性以及這些軟件之間的關(guān)系2023/7/211.2.1軟件體系結(jié)構(gòu)的概念(續(xù))IEEE1471-2000中的定義:軟件體系結(jié)構(gòu)是系統(tǒng)的基本組織結(jié)構(gòu),包括系統(tǒng)構(gòu)成要素,這些要素相互之間以及與運(yùn)行環(huán)境之間的關(guān)系,還包括系統(tǒng)設(shè)計(jì)及演化時(shí)應(yīng)遵循的原則軟件體系結(jié)構(gòu)包括三個(gè)基本要素:構(gòu)件、連接件和約束2023/7/211.3軟件體系結(jié)構(gòu)的意義軟件體系結(jié)構(gòu)是軟件相關(guān)人員之間進(jìn)行交流的手段軟件體系結(jié)構(gòu)是一種高層次的設(shè)計(jì)復(fù)用手段軟件體系結(jié)構(gòu)是早期設(shè)計(jì)決策的體現(xiàn),決定了最終軟件的質(zhì)量2023/7/211.4軟件體系結(jié)構(gòu)與軟件質(zhì)量屬性軟件體系結(jié)構(gòu)的優(yōu)劣依賴于各種因素,這些因素通常被稱為軟件質(zhì)量屬性(qualities)質(zhì)量屬性包括:性能,可伸縮性,可用性,可維護(hù)性,安全性,易用性,可重復(fù)性,可測(cè)試性以及可移植性等2023/7/211.5軟件體系結(jié)構(gòu)的風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格是對(duì)軟件體系結(jié)構(gòu)的分類,每一種軟件體系結(jié)構(gòu)風(fēng)格都代表一類軟件的結(jié)構(gòu)組織模式軟件體系結(jié)構(gòu)風(fēng)格是在實(shí)踐中被重復(fù)使用的構(gòu)件設(shè)計(jì)的總結(jié)2023/7/211.5.1軟件體系結(jié)構(gòu)的風(fēng)格(續(xù))軟件體系結(jié)構(gòu)風(fēng)格包括:數(shù)據(jù)流風(fēng)格,順序批處理風(fēng)格,管道-過濾器風(fēng)格,調(diào)用-返回風(fēng)格,主程序-子程序風(fēng)格,面向?qū)ο箫L(fēng)格,分層的風(fēng)格,獨(dú)立構(gòu)件風(fēng)格,進(jìn)程通訊,事件系統(tǒng),虛擬機(jī)風(fēng)格,解釋器,基于規(guī)則的系統(tǒng),以數(shù)據(jù)為中心的風(fēng)格,數(shù)據(jù)庫,超文本以及黑板風(fēng)格等。另外還有分布式的風(fēng)格,比如云計(jì)算,P2P風(fēng)格等2023/7/212調(diào)用-返回風(fēng)格提綱非結(jié)構(gòu)化的編程簡(jiǎn)介調(diào)用-返回風(fēng)格軟件體系結(jié)構(gòu)的概念主程序-子程序軟件體系結(jié)構(gòu)面向?qū)ο筌浖w系結(jié)構(gòu)主程序-子程序與面向?qū)ο篌w系結(jié)構(gòu)舉例2023/7/212.1非結(jié)構(gòu)化的編程簡(jiǎn)介非結(jié)構(gòu)化的編程技術(shù)是歷史上最早的編程范型非結(jié)構(gòu)化語言(比如匯編語言)編寫的程序通常包內(nèi)含一系列有序的命令,每行有一個(gè)行號(hào)標(biāo)記,便于程序跳轉(zhuǎn)2023/7/212.1.1非結(jié)構(gòu)化編程的特點(diǎn)非結(jié)構(gòu)化編程已經(jīng)引入了循環(huán),分支及子程序的概念非結(jié)構(gòu)化編程中的子程序允許有多個(gè)入口和多個(gè)出口程序的執(zhí)行順序可以被任意變換2023/7/212.1.2非結(jié)構(gòu)化編程的舉例01main02movAX,045;03movBX,012;04addAX,BX;05jnz17;06…07jump012;08…2023/7/212.2調(diào)用-返回風(fēng)格軟件體系結(jié)構(gòu)調(diào)用-返回風(fēng)格體系結(jié)構(gòu)(CallandReturnArchitecture)采用分而治之的策略,其主要思想是將一個(gè)復(fù)雜的大系統(tǒng)分解為一些子系統(tǒng),以便降低復(fù)雜度,并且增加可修改性這種系統(tǒng)的程序執(zhí)行順序通常只由一個(gè)單線程控制2023/7/212.2.1調(diào)用-返回風(fēng)格體系結(jié)構(gòu)示意AMainBCDE12910456738程序運(yùn)行的控制流示意2023/7/212.2.2調(diào)用-返回風(fēng)格體系的概念每個(gè)軟件都設(shè)計(jì)為有一個(gè)唯一的程序執(zhí)行入口和一個(gè)唯一的程序執(zhí)行出口;程序執(zhí)行結(jié)束后,則控制被返回給程序的調(diào)用構(gòu)件;這些程序的構(gòu)件被稱為子程序(Subroutine)從一個(gè)構(gòu)件到另一個(gè)構(gòu)件的控制傳遞被稱為程序調(diào)用(call)2023/7/212.2.3調(diào)用-返回風(fēng)格體系的組織擁有整個(gè)軟件入口的構(gòu)件叫做主程序(MainProgram),它控制子程序的執(zhí)行順序可以被所有構(gòu)件訪問的共享數(shù)據(jù)被稱為全局變量(Globalvarible)MainSub1Sub2Sub3GlobalDataSub4Sub52023/7/212.2.4調(diào)用-返回風(fēng)格體系的層次組織調(diào)用-返回風(fēng)格體系結(jié)構(gòu)可以被組織成任何形式。但層次結(jié)構(gòu)的組織形式更清晰層次結(jié)構(gòu)的設(shè)計(jì)被稱為共享數(shù)據(jù)的主程序-子程序軟件體系結(jié)構(gòu)MainSub1Sub2Sub3Sub4Sub5Sub6Sub7Sub8DataSub10DataSub9Sub112023/7/212.3主程序-子程序軟件體系結(jié)構(gòu)主程序-子程序軟件體系結(jié)構(gòu)在設(shè)計(jì)上使用層次化的劃分方法,該體系結(jié)構(gòu)中使用由編程語言直接支持的單一控制線程相比于非結(jié)構(gòu)化編程,主程序-子程序軟件體系結(jié)構(gòu)能夠較好地支持系統(tǒng)的可改變性和可伸縮性等性能,其采用分而治之的策略2023/7/212.3.1
自頂向下的設(shè)計(jì)方法主程序-子程序軟件體系結(jié)構(gòu)通常采用自頂向下的設(shè)計(jì)方法,即從系統(tǒng)的功能角度出發(fā),從高層開始,將整個(gè)功能逐步細(xì)化為子功能MainSub1Sub2Sub3Sub11Sub12Sub21Sub22Sub31Sub211Sub121Sub1112023/7/212.3.2
自頂向下的設(shè)計(jì)舉例一個(gè)藥品成本計(jì)算系統(tǒng)(MedicineCostComputation)要計(jì)算一種藥品的單位成本,要求輸入藥品的名稱(MedicineName),然后系統(tǒng)輸出該藥品的單位成本(MedicineCostperUnit)MedicineCostComputationMedicineNameMedicineCost系統(tǒng)的第一層數(shù)據(jù)流圖(DFD)2023/7/212.3.2.1
系統(tǒng)層次化數(shù)據(jù)流圖結(jié)構(gòu)化設(shè)計(jì)從數(shù)據(jù)流圖開始,然后將數(shù)據(jù)流圖轉(zhuǎn)換為程序結(jié)構(gòu)圖系統(tǒng)的第三層數(shù)據(jù)流圖(DFD)系統(tǒng)的第二層數(shù)據(jù)流圖(DFD)MedicineCostComputationEnterMedicineNameOutputMedicineCostGetResearchCostperUnitEnterMedicineNameGetProductionCostperUnitOutputMedicineCost2023/7/212.3.2.2
系統(tǒng)結(jié)構(gòu)圖設(shè)計(jì)數(shù)據(jù)流圖從數(shù)據(jù)輸入開始,對(duì)數(shù)據(jù)的各個(gè)處理過程以及最后的輸出進(jìn)行描述,然后構(gòu)建結(jié)構(gòu)圖GetResearchCostperUnitEnterMedicineNameGetProductionCostperUnitOutputMedicineCostMedicineCostComputationSystemCalculatemedineCost132456782023/7/212.3.2.3自頂向下結(jié)構(gòu)化設(shè)計(jì)的問題功能演化困難現(xiàn)實(shí)中的系統(tǒng)功能不容易描述,比如服務(wù)請(qǐng)求式的系統(tǒng)難于找到頂層功能模塊功能化設(shè)計(jì)丟掉了數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)由功能設(shè)計(jì)得到的軟件產(chǎn)品產(chǎn)生的可復(fù)用代碼較少2023/7/212.3.3
結(jié)構(gòu)化設(shè)計(jì)的優(yōu)缺點(diǎn)優(yōu)點(diǎn)邏輯設(shè)計(jì)與物理設(shè)計(jì)分離開發(fā)過程中形成一套規(guī)范化的文檔,便于將來修改和維護(hù)缺點(diǎn)開發(fā)周期長(zhǎng),開發(fā)過程復(fù)雜系統(tǒng)難于適應(yīng)環(huán)境變化經(jīng)驗(yàn)表明,較小的程序(小于10萬行)適合于結(jié)構(gòu)化開發(fā)2023/7/212.4
面向?qū)ο蟮捏w系結(jié)構(gòu)結(jié)構(gòu)化編程中的數(shù)據(jù)可以被程序的任何語句訪問,當(dāng)程序變大時(shí),這種做法使得程序缺陷可能被傳到很遠(yuǎn),難于維護(hù)面向?qū)ο笤O(shè)計(jì)可以將數(shù)據(jù)和操作封裝起來,使數(shù)據(jù)的訪問受到限制。這種將數(shù)據(jù)和操作捆綁的方式被稱為對(duì)象2023/7/212.4.1
面向?qū)ο蟮捏w系結(jié)構(gòu)面向?qū)ο蟮脑O(shè)計(jì)中,系統(tǒng)被看作為一些對(duì)象的集合,消息從一個(gè)對(duì)象發(fā)送到另一個(gè)對(duì)象,每個(gè)對(duì)象完成一定的功能Obj1Obj7Obj6Obj5Obj4Obj3Obj2CallCallCallCallCallCallCallCall面向?qū)ο蟮捏w系結(jié)構(gòu)2023/7/212.4.2
面向?qū)ο蟮奶攸c(diǎn)封裝性繼承性多態(tài)復(fù)用和可維護(hù)性對(duì)象是對(duì)現(xiàn)實(shí)世界的抽象并且可以管理自己系統(tǒng)功能通過對(duì)象服務(wù)表示共享數(shù)據(jù)區(qū)域被取消對(duì)象可以是分布式的2023/7/212.4.3面向?qū)ο蟮睦^承機(jī)制繼承的目的是代碼復(fù)用繼承提供了一個(gè)統(tǒng)一的接口,容易實(shí)現(xiàn)多態(tài)AnimalLandAnimalAquaticAnimalBirdfamilyMammalsElephantWhale2023/7/212.4.4面向?qū)ο蟮膬?yōu)點(diǎn)面向?qū)ο笤O(shè)計(jì)有如下優(yōu)點(diǎn):容易維護(hù),沒有共享的數(shù)據(jù)可復(fù)用性好映射現(xiàn)實(shí)世界,便于理解容易對(duì)一個(gè)系統(tǒng)進(jìn)行分解2023/7/212.4.5面向?qū)ο蟮娜秉c(diǎn)面向?qū)ο笤O(shè)計(jì)有如下缺點(diǎn):程序占用的內(nèi)容大一個(gè)對(duì)象要和其它對(duì)象交互,必須知道其它對(duì)象的身份2023/7/212.5主程序-子程序與面向?qū)ο蟮捏w系結(jié)構(gòu)比較設(shè)計(jì)一個(gè)文檔更新系統(tǒng),對(duì)符合一定格式的輸入文檔進(jìn)行更新,系統(tǒng)的功能描述如下:政治問題,將文檔中的Japanese修改為Germany兩千年問題,將兩位日期修改為四位日期對(duì)商品按字典序排序2023/7/212.5.1文檔更新系統(tǒng)的數(shù)據(jù)變化原始文件 Printer$230Germany89-02-01 Refrigerator$380Japaness88-12-08 Refrigerator$360Taiwan89-05-12 Printer$330Japaness89-07-11政治修改后的文件 Printer$230Germany89-02-01 Refrigerator$380Germany88-12-08 Refrigerator$360Taiwan89-05-12 Printer$330Germany89-07-112023/7/212.5.2文檔更新系統(tǒng)的數(shù)據(jù)變化經(jīng)過兩千年問題修改的文件 Printer$230Germany1989-02-01 Refrigerator$380Germany1988-12-08 Refrigerator$360Taiwan1989-05-12 Printer$330Germany1989-07-11排序后的文件 Printer$230Germany1989-02-01 Printer$330Germany1989-07-11 Refrigerator$360Taiwan1989-05-12 Refrigerator$380Germany1988-12-082023/7/212.5.3結(jié)構(gòu)化程序設(shè)計(jì)文檔更新系統(tǒng)結(jié)構(gòu)化程序中包含一個(gè)主程序和5個(gè)子程序結(jié)構(gòu)化設(shè)計(jì)的程序包含數(shù)據(jù)與函數(shù),程序中的全局變量沒有被封裝,由每個(gè)函數(shù)訪問與修改MainInputCorrectPoliticalErrorCorrectY2KErrorSortOutput2023/7/212.5.4面向?qū)ο笤O(shè)計(jì)文檔更新系統(tǒng)面向?qū)ο蟮脑O(shè)計(jì)將數(shù)據(jù)、政治問題,排序及輸出功能封裝在不同的類中,類之間的數(shù)據(jù)通過參數(shù)進(jìn)行傳遞Legacy《Interface》+update():voidInput-+update():voidPoliticalIssue-+update():voidSorting-+update():voidOutput-+update():void2023/7/212.6主程序-子程序與面向?qū)ο篌w系結(jié)構(gòu)的比較主程序-子程序和面向?qū)ο笤O(shè)計(jì)相似之處都屬于調(diào)用-返回風(fēng)格主程序-子程序體系結(jié)構(gòu)所產(chǎn)生的程序中,每個(gè)軟件構(gòu)件都有一個(gè)唯一的程序執(zhí)行入口和出口,當(dāng)一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí),另一個(gè)函數(shù)獲得控制權(quán),該函數(shù)執(zhí)行完后控制權(quán)返回給調(diào)用函數(shù)面向?qū)ο笤O(shè)計(jì)結(jié)構(gòu)中,當(dāng)一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象的方法時(shí),被調(diào)用對(duì)象控制程序,運(yùn)行完后控制權(quán)又交給調(diào)用對(duì)象2023/7/212.6.1兩種體系結(jié)構(gòu)的系統(tǒng)分析區(qū)別結(jié)構(gòu)化設(shè)計(jì)面向?qū)ο笤O(shè)計(jì)根據(jù)用戶需求產(chǎn)生數(shù)據(jù)流圖根據(jù)數(shù)據(jù)流圖生成結(jié)構(gòu)圖使用結(jié)構(gòu)化英語描述算法通過數(shù)據(jù)關(guān)系分析產(chǎn)生數(shù)據(jù)關(guān)系圖建立領(lǐng)域模型類圖根據(jù)用戶需求產(chǎn)生用例模型用例實(shí)現(xiàn)建立對(duì)象互動(dòng)圖,包括:時(shí)序圖,協(xié)作圖及狀態(tài)圖等2023/7/212.6.2兩種體系結(jié)構(gòu)的設(shè)計(jì)區(qū)別結(jié)構(gòu)化設(shè)計(jì)面向?qū)ο笤O(shè)計(jì)數(shù)據(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保行業(yè)采購工作經(jīng)驗(yàn)分享
- 2025-2030全球鍍鎳服務(wù)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球液密柔性非金屬導(dǎo)管行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球水電解用全氟磺酸膜行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)半自動(dòng)焊接機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)癸二酸二酰肼行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球小尺寸工業(yè)平板電腦行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)二氧化碳捕獲機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)叉車機(jī)器人行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球制藥用乙酰氯行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- QFD模板含計(jì)算公式計(jì)分標(biāo)準(zhǔn)說明模板
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢(shì)管理與擺位》
- 《論文的寫作技巧》課件
- 國(guó)有資產(chǎn)管理辦法-國(guó)有資產(chǎn)管理辦法條例
- 00015-英語二自學(xué)教程-unit3
- 第二章共混改性基本原理
- 碳納米管及其應(yīng)用課件
- 病故軍人證明書如何辦理
- 企業(yè)合規(guī)管理實(shí)務(wù)
- 安宮牛黃丸課件
- GB/T 21117-2007磁致伸縮液位計(jì)
評(píng)論
0/150
提交評(píng)論