第4章-總體設(shè)計new2017_第1頁
第4章-總體設(shè)計new2017_第2頁
第4章-總體設(shè)計new2017_第3頁
第4章-總體設(shè)計new2017_第4頁
第4章-總體設(shè)計new2017_第5頁
已閱讀5頁,還剩158頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章總體設(shè)計武漢大學(xué)計算機學(xué)院軟件工程

SoftwareEngineering軟件生存期維護軟件計劃需求分析測試軟件設(shè)計實現(xiàn)(編碼)

定義時期開發(fā)時期使用和維護時期退役一、軟件設(shè)計軟件設(shè)計總體設(shè)計什么是好的軟件結(jié)構(gòu)的設(shè)計軟件設(shè)計的啟發(fā)規(guī)則軟件結(jié)構(gòu)設(shè)計面向數(shù)據(jù)流的設(shè)計技術(shù)網(wǎng)絡(luò)的設(shè)計軟件體系結(jié)構(gòu)簡介軟件設(shè)計的任務(wù)

在完成需求分析之后,為了實現(xiàn)軟件需求規(guī)格書的要求,必須將用戶和系統(tǒng)的需求轉(zhuǎn)化為對計算機系統(tǒng)的邏輯定義(即模塊結(jié)構(gòu))?!狧owdo?設(shè)計說明書(“如何做”)物理模型(“怎樣做”)邏輯模型(“做什么”)需求分析——what?“應(yīng)用各種技術(shù)和原理,對設(shè)備、過程或系統(tǒng)做出足夠詳細(xì)的描述,使之能夠在物理上得以實現(xiàn)”軟件設(shè)計的任務(wù)從工程管理的角度,分為總體設(shè)計階段和詳細(xì)設(shè)計階段;從技術(shù)的角度,分體系結(jié)構(gòu)設(shè)計、數(shù)據(jù)(類)設(shè)計、接口設(shè)計和過程(構(gòu)件)設(shè)計總體設(shè)計的重要性總體設(shè)計是軟件開發(fā)過程中一個非常重要的階段。它將需求轉(zhuǎn)化為軟件的組成組件以及這些組件之間的通訊。。其基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如何實現(xiàn)目標(biāo)系統(tǒng)”。如果軟件系統(tǒng)沒有經(jīng)過認(rèn)真細(xì)致的總體設(shè)計,就直接考慮它的算法或直接編寫源程序,這個系統(tǒng)的質(zhì)量就很難保證。許多軟件就是因為結(jié)構(gòu)上的問題,使得它不能滿足用戶的要求,而且經(jīng)常發(fā)生故障,很難維護。總體設(shè)計分兩個階段:系統(tǒng)設(shè)計階段確定系統(tǒng)的具體實現(xiàn)方案。結(jié)構(gòu)設(shè)計階段確定軟件結(jié)構(gòu)確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。功能分解設(shè)計軟件結(jié)構(gòu)設(shè)計數(shù)據(jù)庫確定測試計劃書寫文檔審查與復(fù)審制定規(guī)范設(shè)想供選擇的方案選擇合理的方案推薦最佳的方案功能分解設(shè)計軟件的結(jié)構(gòu)設(shè)計數(shù)據(jù)結(jié)構(gòu)其它設(shè)計確定測試計劃書寫文檔審查與復(fù)審二、總體設(shè)計步驟制定規(guī)范

具有一定規(guī)模的軟件項目總是需要通過團隊形式實施開發(fā),在進入軟件開發(fā)階段之初,首先應(yīng)該先為團隊制定在設(shè)計時應(yīng)共同遵守的規(guī)范,以便協(xié)調(diào)和規(guī)范團隊內(nèi)各隊員的工作。設(shè)想并合理選取供選擇的方案在總體設(shè)計階段分析員應(yīng)該考慮各種可能的實現(xiàn)方案,進行效益分析,力求從中選出最佳方案。并且為推薦的方案制定詳細(xì)的實現(xiàn)計劃。技術(shù)可行性工程目標(biāo)和規(guī)模用戶意見推薦最佳方案最終方案結(jié)構(gòu)設(shè)計系統(tǒng)架構(gòu)設(shè)計當(dāng)用戶接受方案后,要為該最佳方案設(shè)計系統(tǒng)的基本架構(gòu)(包括程序、數(shù)據(jù)和環(huán)境),以獲得有關(guān)系統(tǒng)創(chuàng)建的總體方案。軟件結(jié)構(gòu)設(shè)計軟件結(jié)構(gòu)設(shè)計是在系統(tǒng)構(gòu)架確定以后,對組成系統(tǒng)的各個子系統(tǒng)/構(gòu)件/程序進行結(jié)構(gòu)設(shè)計。

一個問題可以有多種可供選擇的結(jié)構(gòu)軟件結(jié)構(gòu)設(shè)計公共數(shù)據(jù)結(jié)構(gòu)設(shè)計總體設(shè)計中還需確定那些被許多模塊共同使用的公共數(shù)據(jù)的構(gòu)造,如公共變量、數(shù)據(jù)文件以及數(shù)據(jù)庫中的數(shù)據(jù)等。安全性設(shè)計——指軟件不含有可能引起系統(tǒng)損害或人員傷亡的缺陷的能力。(GJB900要求重視軟件安全工作)故障處理設(shè)計軟件系統(tǒng)工作過程中難免出現(xiàn)故障,總體設(shè)計需要對各種可能出現(xiàn)的來自于軟件、硬件以及網(wǎng)絡(luò)通信方面的故障作出專門考慮。例如:提供備用設(shè)備、設(shè)置出錯處理模塊、設(shè)置數(shù)據(jù)備份模塊等??删S護性設(shè)計軟件系統(tǒng)在投入使用以后必將面臨維護,如:改正軟件錯誤、擴充軟件功能等。對此,總體設(shè)計需要作出專門安排,以方便日后的維護。例如,在軟件中設(shè)置用于系統(tǒng)檢測維護的專用模塊,預(yù)計今后進行功能擴充的模塊,并對這些接口進行專門定義。

編寫文檔應(yīng)該用正式的文檔記錄總體設(shè)計的結(jié)果,在這個階段應(yīng)該完成的文檔通常有下述幾種:系統(tǒng)設(shè)計說明書用戶手冊測試計劃數(shù)據(jù)庫設(shè)計說明書審查與復(fù)審最后應(yīng)該對總體設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查,在技術(shù)審查之后再由客戶從管理角度進行復(fù)審。思考?

什么是好的軟件?什么是好的設(shè)計?三、什么是好的軟件

——軟件質(zhì)量評價標(biāo)準(zhǔn)

有效可靠結(jié)構(gòu)清晰開發(fā)人員角度:良結(jié)構(gòu)、易測試、易維護、可移植…用戶角度:達(dá)到需求、界面友好、簡單易學(xué)文檔齊全重用性、開放性盡量簡單Thedesignshouldbetraceabletotheanalysismodel.Thedesignshould“minimizetheintellectualdistance”betweenthesoftwareandtheproblemasitexistsintherealworld.Thedesignshouldexhibituniformityandintegration.Thedesignshouldbestructuredtoaccommodatechange.Thedesignshouldbestructuredtodegradegently,evenwhenaberrantdata,events,oroperatingconditionsareencountered.Designisnotcoding,codingisnotdesign.Thedesignshouldbeassessedforqualityasitisbeingcreated,notafterthefact.Thedesignshouldbereviewedtominimizeconceptual(semantic)errors.Whatisagooddesign?結(jié)構(gòu)化分析與結(jié)構(gòu)化設(shè)計的關(guān)系proceduraldesigncegnturalgndatadesignTHEDESIGNMODELTHEANALYSISMODELinterfadesiarchitecdesiDataobjectdescriptionProcessspecificationControlspecificationE-RDFDSTDDD軟件結(jié)構(gòu)

軟件的各個組成部分之間的關(guān)系的表示,決定了整個系統(tǒng)的結(jié)構(gòu)和質(zhì)量。問題P同一個問題P的三種不同的軟件結(jié)構(gòu)模塊“模塊”,又稱“構(gòu)件”,一般指用一個名字可調(diào)用的一段程序。它一般具有如下三個基本屬性:⑴功能即指該模塊實現(xiàn)什么功能,做什么事情規(guī)定的功能出錯處理返回一個“結(jié)束標(biāo)志”⑵邏輯:描述模塊內(nèi)部如何實現(xiàn)要求的功能和數(shù)據(jù)。⑶接口:模塊的輸入輸出(4)狀態(tài):該模塊運行時的環(huán)境和條件。模塊化(modularity)模塊化模塊劃分,將系統(tǒng)分成若干模塊“模塊化”的作用容易設(shè)計,使軟件結(jié)構(gòu)清晰,易于理解;使軟件易于測試和調(diào)試,提高可靠性;提高可修改性;有助于軟件開發(fā)工程的組織管理模塊化的依據(jù)可集體開發(fā),縮短開發(fā)周期可以重用;便于維護;降低復(fù)雜性:c(x):問題x的復(fù)雜程度E(x):解決問題x需要的工作量(時間)對于兩個問題P1和P2 if C(P1)>C(P2) then E(P1)>E(P2)根據(jù)人們求解問題的經(jīng)驗,有規(guī)律:C(P1+P2)>C(P1)+C(P2)

則有E(P1+P2)>E(P1)+E(P2)即“分而治之”有助于復(fù)雜問題的求解。如果把軟件無限細(xì)分,會出現(xiàn)什么樣的情況?塊的劃分與總工作量之間的關(guān)系接口成本最小成本區(qū)域總成本塊成本成本(工作量)模塊數(shù)M

模塊劃分的合理性。模塊兩個定性的標(biāo)準(zhǔn):內(nèi)聚和耦合。模塊的重要特征

抽象(abstraction)我們在考慮問題時,集中考慮和當(dāng)前問題有關(guān)的方面,而忽略和當(dāng)前問題無關(guān)的方面,這就是抽象?;蛘哒f抽象就是抽出事物的本質(zhì)特性和各類問題的共性,找出聯(lián)系和相似性,加以概括和提取。處理復(fù)雜系統(tǒng)的唯一有效方法。包括過程抽象和數(shù)據(jù)抽象信息隱藏(informationhiding)數(shù)據(jù)隱藏、細(xì)節(jié)隱藏,黑盒子可理解性修改副作用小錯誤副作用小局部化把一些關(guān)系密切的軟件元素物理地放得彼此靠近模塊獨立性例:開發(fā)一個CAD軟件,實現(xiàn)一個二維繪圖系統(tǒng)的全部功能,供低級計算機輔助設(shè)計使用。抽象層次I

用問題環(huán)境的術(shù)語來描述這個軟件該軟件包括一個計算機繪圖界面,向繪圖員顯示圖形,以及一個數(shù)字化儀界面,用以代替繪圖板和丁字尺。所有直線、折線、矩形、圓及曲線的描畫、所有的幾何計算、所有的剖面圖和輔助視圖都可以用這個CAD軟件實現(xiàn)……模塊的抽象特征模塊的抽象特征抽象層次II

任務(wù)需求的描述,列出“What”而不是“How”CADSOFTWARETASKS:userinteractiontask;2-Ddrawingcreationtask;graphicsdisplaytask;drawingfilemanagementtask;END模塊的抽象特征抽象層次III

程序過程表示(以2-D繪圖生成任務(wù)為例)

PROCEDURE2-DdrawingcreationREPEATUNTILE(drawingcreationtaskterminates)DOWHILE(digitizerinteractionoccurs)Digitizerinterfacetask;DETERMINEdrawingrequestCASELine:linedrawingtask;Rectangle:rectangledrawingtask;Circle:circledrawingtask;……END;

DOWHILE(keyboardinteractionoccurs)keyboardinteractiontask;PROCESSanalysis/computationCASEView:auxiliaryviewtask;Section:crosssectioningtask;……END;

……ENDREPETITION;

ENDPROCEDURE.MagicalNumberSeven,PlusorMinusTwo,SomeLimitsonOurCapacityforProcessingInformation模塊的抽象特征抽象1CAD圖形軟件抽象2CAD圖形軟件用戶界面任務(wù)創(chuàng)建二維圖形顯示圖形任務(wù)管理圖形文件模塊化抽象抽象3創(chuàng)建二維圖形任務(wù)畫線任務(wù)畫圓任務(wù)…模塊化逐步求精信息隱藏(DavidParnas)

《onthecriteriatobeusedindecomposingsystemsintomodules》如何分解軟件、確定模塊?信息隱藏模塊應(yīng)當(dāng)被這樣規(guī)定和設(shè)計,使得一個模塊所包含的信息對于其他模塊來說應(yīng)該是隱蔽的。在設(shè)計的高層,一個模塊有1個或多個秘密;在設(shè)計的底層,一個模塊只有一個秘密每個模塊實現(xiàn)了一個重要決策,而且只有自己知道細(xì)節(jié),不同決策之間相互獨立修改局部化

——常見的可修改性決策

《missinginaction:informationhiding》Hardwaredependencies;Input&outputformats;Nonstandardlanguagefeatures&libraryroutines;Difficultdesign&implementationareas;Complexdatastructrues;Globalvariables;Constraints&businessrules.模塊獨立性(Moduleindependence)好設(shè)計的關(guān)鍵:

模塊分解的目的是每個模塊完成一個相對獨立的子功能,并且與其它模塊間的接口簡單。獨立性的度量(Yourdon&Constantine,1978)

耦合(Coupling)—塊間聯(lián)系

內(nèi)聚(Cohesion)—塊內(nèi)聯(lián)系(1)耦合(Coupling)GreatdealofdependenceIndependent

HighlycoupledLooselycoupledUncoupled

Goal:aslooseaspossible=asindependentaspossible

對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量

零耦合(uncoupling)彼此完全獨立,這意味著模塊間無任何連接,耦合程度最低Uncoupled

AB數(shù)據(jù)耦合(DataCoupling)一個模塊訪問另一個模塊時,彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)系統(tǒng)中至少存在這種耦合;

ThemostdesirableABData特征耦合(stampcoupling)一個模塊訪問另一個模塊時,傳遞的是整個數(shù)據(jù)結(jié)構(gòu)(地址)。調(diào)用模塊只需要使用整個數(shù)據(jù)結(jié)構(gòu)中的一部分?jǐn)?shù)據(jù)元素。被調(diào)用模塊可使用的數(shù)據(jù)多余它確實需要的數(shù)據(jù),將導(dǎo)致對數(shù)據(jù)的訪問失去控制,從而給計算機犯罪提供了機會。把指針作為參數(shù)進行傳遞時,一定要檢查該耦合??刂岂詈希–ontrolCoupling)指一個模塊調(diào)用另一個模塊時,傳遞的信息中有控制信息(盡管有時這種控制信息以數(shù)據(jù)的形式出現(xiàn))ABFlagF2FnF1…………Flag控制耦合增加了理解與編程及修改的復(fù)雜性??刂岂詈贤嵌嘤嗟模涯K適當(dāng)分解之后通??梢杂脭?shù)據(jù)耦合代替它。公共環(huán)境耦合(CommonCoupling)兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………問題:

復(fù)雜程度隨耦合模塊的個數(shù)增加而增加

公共部分的數(shù)據(jù)存取無法控制,計算機犯罪危險

公共部分的改動將影響所有調(diào)用它的模塊,可維護性差

難于重用,需全局變量清單內(nèi)容耦合(ContentCoupling)當(dāng)一個模塊直接修改或操作另一個模塊的內(nèi)部信息,被修改模塊完全依賴于修改它的模塊時,就發(fā)生了內(nèi)容耦合。包括下列情形:一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù)一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部兩個模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中)一個模塊有多個入口(非結(jié)構(gòu)化程序)

Theleastdesirable內(nèi)容耦合例1. A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入C的內(nèi)部?!瑼BCDA:……………………gotoC1……………………C:……………………C1:…………內(nèi)容耦合例2. 部分代碼重疊 (常出現(xiàn)在匯 編程序中)BA例3. 一個模塊有 多 個入口(功能)A:………………………………entry1:………………………………entry2:………………………………耦合度與軟件結(jié)構(gòu)類型耦合度模塊獨立性軟件結(jié)構(gòu)零耦合低高強弱好差數(shù)據(jù)耦合特征耦合控制耦合公共環(huán)境耦合內(nèi)容耦合原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。思考題ABDCFE132456模塊互連圖模塊接口描述編號輸入輸出1飛機類型狀態(tài)標(biāo)志2飛機零件清單3功能代碼4飛機零件清單5零件編號零件制造商6零件編號零件名稱

已知模塊A、E和F更新同一個數(shù)據(jù)庫,請確定模塊之間的耦合類型。(2)內(nèi)聚(Cohesion)Goal: ascohesiveaspossible!一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度

理想內(nèi)聚的模塊只做一件事情模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合內(nèi)聚更重要!偶然內(nèi)聚(Coincidentalcohesion)指一個模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。ABABC語句相同可理解性差;模塊不可重用;修改副作用。邏輯內(nèi)聚(LogicalCohesion)指模塊內(nèi)執(zhí)行幾個邏輯上相似的功能,通過參數(shù)確定該模塊完成哪一個功能。XYZABCXYZABCS接口難以理解,造成整體不易理解;完成多個操作的代碼互相糾纏在一起,局部功能的修改有時會影響全局,導(dǎo)致嚴(yán)重的維護問題;難以重用。時間內(nèi)聚(Temporalcohesion)把需要同時執(zhí)行的動作組合在一起形成的模塊為時間內(nèi)聚模塊initialxInitialy時間關(guān)系在一定的程度上反應(yīng)了程序某些實質(zhì),所以時間內(nèi)聚比邏輯內(nèi)聚好些;模塊內(nèi)操作之間的關(guān)系很弱,與其他模塊的操作卻有很強的關(guān)聯(lián);這種模塊在20世紀(jì)80年代的應(yīng)用程序中使用較多。沒有任何復(fù)用價值過程內(nèi)聚(Proceduralcohesion)一個模塊包含的一組任務(wù)是相關(guān)的而且必須按特定次序執(zhí)行。使用DFD來設(shè)計軟件,劃分模塊時,往往是過程內(nèi)聚模塊;比時間內(nèi)聚好,至少操作之間是過程關(guān)聯(lián)的;完整性不好,仍是弱連接,不太可能重用模塊。通信內(nèi)聚(Communicationalcohesion)指模塊內(nèi)所有處理元素都在同一個數(shù)據(jù)結(jié)構(gòu)上操作(有時稱之為信息內(nèi)聚),或者指各處理使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù)。特點:模塊中各操作緊密相連,比過程內(nèi)聚好;單個操作無法重用,但是整個模塊有時具有很好的重用性該模塊把數(shù)據(jù)和操作都放在一個模塊內(nèi),可達(dá)到信息隱蔽。X從文件file讀出數(shù)據(jù)由數(shù)據(jù)產(chǎn)生日報表由數(shù)據(jù)產(chǎn)生單項產(chǎn)品報表順序內(nèi)聚(Sequentialcohesion)指一個模塊中各個處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能元素輸出就是下一功能元素的輸入。X輸入系數(shù)求根打印方程的根在通信內(nèi)聚的基礎(chǔ)上要求模塊內(nèi)的操作順序執(zhí)行;它非常接近于問題的結(jié)構(gòu)維護起來不如功能內(nèi)聚方便,要修改模塊中的一個功能,會影響到同一個模塊中的其他功能。功能內(nèi)聚(Functionalcohesion)這是最強的內(nèi)聚,指模塊內(nèi)所有元素共同完成一個功能,缺一不可。與其他模塊的耦合是最弱的X求閏年模塊可重用;可隔離錯誤,維護更容易。內(nèi)聚度與軟件結(jié)構(gòu)軟件結(jié)構(gòu)模塊獨立性內(nèi)聚度內(nèi)聚評分差好弱強低偶然內(nèi)聚0分邏輯內(nèi)聚1分時間內(nèi)聚3分中過程內(nèi)聚5分通信內(nèi)聚7分高順序內(nèi)聚9分功能內(nèi)聚10分設(shè)計時識別出低內(nèi)聚模塊,力爭做到高內(nèi)聚!不要低內(nèi)聚!內(nèi)聚更重要!1計算雇員年齡并給出生日的模塊2按給出的生日計算雇員年齡、退休時間的模塊。如果利用所計算的年齡來確定雇員將要退休的時間,是什么內(nèi)聚;如果分別計算年齡和退休時間,但使用相同生日數(shù)據(jù),是什么內(nèi)聚3打印季度開支報告、月份開支報告和日開支報告。具體打印哪一個,將由傳入的控制標(biāo)志決定。如何提高內(nèi)聚性?

功能內(nèi)聚

順序內(nèi)聚

通信內(nèi)聚

邏輯內(nèi)聚好的軟件結(jié)構(gòu)具有層次性,無回路塊調(diào)用的軟件結(jié)構(gòu)。模塊的獨立性好?!€性型樹型半序型非良結(jié)構(gòu)的調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)AB合并循環(huán)節(jié)點良結(jié)構(gòu)AB模塊內(nèi)部復(fù)雜性增加了衡量軟件結(jié)構(gòu)設(shè)計的準(zhǔn)則軟件實體有清晰的結(jié)構(gòu),利于軟件元素間控制;軟件實體要模塊化,模塊具有獨立功能;軟件實體與環(huán)境的界面清晰;設(shè)計規(guī)格說明清晰、簡介、完整和無二義性四、軟件設(shè)計的啟發(fā)規(guī)則1、通過合并和分解,改進軟件結(jié)構(gòu),提高模塊獨立性模塊功能完善化。若兩模塊含有重復(fù)的部分,應(yīng)設(shè)法將重復(fù)的功能消去2025年1月20日第四章軟件總體設(shè)計63×邏輯內(nèi)聚√√√三、設(shè)計的啟發(fā)規(guī)則2、模塊規(guī)模適中過大不易理解,分解不充分太小則接口開銷過大注意分解后不應(yīng)降低模塊的獨立性optimalnumber

ofmodules

costof

softwarenumberofmodulesmoduleintegrationcostmoduledevelopmentcost四、設(shè)計的啟發(fā)規(guī)則

3、深度、寬度、扇入、扇出適當(dāng)

深度=軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù)過大表示分工過細(xì)管理模塊過分簡單,適當(dāng)合并

寬度

=跨度數(shù)的最大值過大表示系統(tǒng)復(fù)雜扇出:直接由一個塊所控制的塊數(shù)扇入:直接調(diào)用它的上級塊數(shù)目四、設(shè)計的啟發(fā)規(guī)則扇出=模塊直接調(diào)用或控制的模塊數(shù)

3fan-out9扇入=直接調(diào)用該模塊的上級模塊數(shù)在不破壞獨立性的前提下,fan-in大的比較好AA的扇出AA的扇入一個好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。減少高扇出爭取高扇入編外人員工資取得工資數(shù)據(jù)計時制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款計算實發(fā)工資避免平鋪結(jié)構(gòu)增加中間層降低扇出編外人員工資取得工資數(shù)據(jù)計時制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款計算實發(fā)工資計時工人實發(fā)工資計薪工人實發(fā)工資編外人員實發(fā)工資四、設(shè)計的啟發(fā)規(guī)則4、作用域在控制域內(nèi)控制域(控制范圍)模塊本身以及所有直接或間接從屬于它的模塊的集合作用域(影響范圍)受該模塊內(nèi)一個判定影響的所有模塊的集合SD方法認(rèn)為:當(dāng)作用域為控制域的子集時,才能獲得較低的塊間聯(lián)系。存在判斷調(diào)用的模塊,所在層次不要與那些屬于判斷作用范圍的模塊所在的層次相隔太遠(yuǎn)----越近越好。MACBABCIfflagThenBElseCM的控制域={M,A,B,C}A的作用域={B,C}作用域在控制域內(nèi)A:…………if……thengotoB1……………………B:……………………B1:……………………A作用域在控制域內(nèi)MACBA的控制域={A,B}A:…………if……thengotoM1……………………M:……………………M1:gotoC1……………………A作用域超出了控制域C:……………………C1:……………………模塊A中有一條判斷調(diào)用M的語句,違反了原則A如何修改?判斷點上移把A中的if移到M中受影響塊下移把C移到A下面71總體設(shè)計的原則和概念A(yù)BCDEFG模塊C中有一條判斷調(diào)用G的語句,違反了原則B四、設(shè)計的啟發(fā)規(guī)則5、降低接口的復(fù)雜程度接口盡可能簡單,接口復(fù)雜可能表明模塊的獨立性差可理解性好【例】求一元二次方程的根解法1……Vara,b,c,x1,x2:real;Beginread(a,b,c);

P;write(x1,x2)End.ProcedureP;beginend;解法2……TypeTA=array[1..3]ofreal;TB=array[1..2]ofreal;VarA:TA;B:TB;Beginread(A[1],A[2],A[3]);

P(A,B);write(B[1],B[2])End.ProcedureA(A:TA;varB:TB);beginend;解法3……Vara,b,c,x1,x2:real;Beginread(a,b,c);

P(a,b,c,x1,x2);write(x1,x2)End.ProcedureP(a,b,c:real;varx1,x2:real);begin

end;

全局變量,緊耦合!

可讀性差!

局部變量,可讀性好!四、設(shè)計的啟發(fā)規(guī)則6、單出單入,避免內(nèi)容耦合7、模塊功能可預(yù)測相同輸入必產(chǎn)生相同輸出模塊中使用全局變量可能導(dǎo)致不可預(yù)測A:………………………………entry1:………………………………entry2:………………………………四、設(shè)計的啟發(fā)規(guī)則

有重要的參考價值不是設(shè)計的目標(biāo)不是設(shè)計時應(yīng)該普遍遵循的原理軟件結(jié)構(gòu)設(shè)計方法:

Fourdesignphilosophy分而治之現(xiàn)有的設(shè)計案例,對這些案例加以改進誰也沒有現(xiàn)成的解決方案,大伙一起creativedesign,協(xié)商解決已有產(chǎn)品,在產(chǎn)品上打補丁的設(shè)計模塊分解的方式

水平劃分垂直劃分子問題整個問題問題的廣度問題的廣度問題的廣度按深度分而治之問題的深度問題的深度問題的深度按廣度分而治之子問題子問題子問題子問題子問題水平劃分(HorizontalPartitioning)

按主要功能定義模塊結(jié)構(gòu)的各分支頂層控制模塊,下層輸入、處理、輸出三個分支優(yōu)點:功能分離,并行開發(fā)、易修改擴充,代碼相對安全缺點:模塊接口傳遞數(shù)據(jù)多,信息流的整體控制復(fù)雜化function1function3function2垂直劃分(VerticalPartitioning:Factoring)

自頂向下逐層分布工作頂層模塊控制,低層模塊實際處理表明每個層次所提供的功能模塊優(yōu)點:降低復(fù)雜性、對低層模塊的修改不易引起副作用便于將來的維護缺點:不利于團隊協(xié)作模塊分解的過程:業(yè)務(wù)域分解/問題域分解領(lǐng)域?qū)<?,企業(yè)戰(zhàn)略;系統(tǒng)

子系統(tǒng)業(yè)務(wù)功能域分解服務(wù),資源;子系統(tǒng)拆分為多個服務(wù)技術(shù)域分解功能需求和非功能需求,當(dāng)前IT技術(shù);業(yè)務(wù)域和業(yè)務(wù)功能域分解出的元素進行整合在模塊分解時,要注意以下幾點:低耦合高內(nèi)聚:“從弱耦合入手,切斷聯(lián)系”層次性:先業(yè)務(wù)后技術(shù),循序漸進正交原則:相互獨立,職責(zé)沒有重疊抽象原則穩(wěn)定性原則復(fù)用性原則迭代演化

五、面向數(shù)據(jù)流的結(jié)構(gòu)化設(shè)計方法(SD)ProgramArchitectureDataFlowDiagram映射/變換1、軟件結(jié)構(gòu)設(shè)計中的圖形工具層次圖(H圖)-----系統(tǒng)結(jié)構(gòu)圖;------HierarchyHIPO圖=H圖+IPO圖/表結(jié)構(gòu)圖------模塊聯(lián)系圖;系統(tǒng)結(jié)構(gòu)圖

層次圖用來描繪軟件功能和子功能的層次結(jié)構(gòu),圖中的一個矩形框代表一個模塊,方框間的連線表示調(diào)用關(guān)系而不表示組成關(guān)系。正文加工系統(tǒng)輸入輸出存儲檢索加標(biāo)題編輯格式化編目錄添加插入刪除修改合并列表HIPO圖1.HIPO圖:H圖+IPO圖;2.在H圖中,除最頂層方框外,在每一個方框內(nèi)加上一個編號,編號次序依次為:1.0,2.0,…;2.1,2.2,…;3.1,3.2…;3.對于H圖中的每一個方框,有一張IPO圖描述這個方框所代表模塊的處理過程.86軟件結(jié)構(gòu)設(shè)計帶編號的層次圖(H圖)和H圖中每個方框相對應(yīng),有一張IPO圖描繪這個方框代表的模塊的處理過程。HIPO圖中的每張IPO圖內(nèi)都應(yīng)該明顯地標(biāo)出它所描繪的模塊在H圖中的編號,以便追蹤了解這個模塊在軟件結(jié)構(gòu)中的位置。87

IPO表系統(tǒng):

作者:.

模塊:

日期:.

編號:.

注釋:被調(diào)用:調(diào)用:輸入:輸出:處理:局部數(shù)據(jù)元素:調(diào)用本模塊的模塊清單被本模塊調(diào)用的模塊清單本模塊使用的局部元素數(shù)據(jù)流圖中的各個處理,也可以簡略描述系統(tǒng)的主要算法。88結(jié)構(gòu)圖1.結(jié)構(gòu)圖是軟件結(jié)構(gòu)設(shè)計的另一種工具,與層次圖類似。用來確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系2.它在層次圖的每一個方框內(nèi)注明的是模塊的名字或主要功能。3.方框之間的直線表示模塊的調(diào)用關(guān)系。4.用帶注解的箭頭表示模塊調(diào)用過程中傳遞的信息。【例】產(chǎn)生最佳解得到好輸入計算最佳解輸出結(jié)果讀輸入編輯輸入結(jié)果格式化顯示結(jié)果好輸入原始輸入原始輸入編輯結(jié)果解好輸入解解格式化的解格式化的解利用層次圖和IPO圖或DD中的信息可以得到模塊調(diào)用時傳遞的信息,即結(jié)構(gòu)圖,僅用于檢查設(shè)計的正確性和模塊獨立性。結(jié)構(gòu)圖一般不入文檔。90又稱為結(jié)構(gòu)化設(shè)計方法;目標(biāo):給出設(shè)計軟件結(jié)構(gòu)的一個系統(tǒng)化途徑;作用:該方法定義了一些不同的“映射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。2、基于數(shù)據(jù)流(SD)的設(shè)計方法(1)DF的類型

信息流的類型決定了映射的方法變換流事務(wù)流混合型①變換流(TransformFlow)

所有信息流都可歸結(jié)為變換流InternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTime變換流參看圖形,信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)過加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流具有這些特征時,這種信息流稱為變換流。12345678abcdefhgyxz變換型的軟件結(jié)構(gòu)圖②事務(wù)流(TransactionFlow)輸入通路到達(dá)一個處理T,這個處理根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行。這種“以事務(wù)為中心的”的數(shù)據(jù)流,稱為“事務(wù)流”。

T稱為事務(wù)中心接收輸入數(shù)據(jù);分析每個事務(wù)以確定它的類型;根據(jù)事務(wù)類型選取一條活動通路?!璗Transactionrequest…Actionpaths……T=Calloneoftheseveralsubroutinesdependingon

thetypeoftheincomingtransactionrequest.事務(wù)型的軟件結(jié)構(gòu)圖③混合型

兩種DFD的混合體(2)面向數(shù)據(jù)流方法的設(shè)計過程“變換”“事務(wù)”精化數(shù)據(jù)流圖流類型區(qū)分事務(wù)中心和數(shù)據(jù)接收通路區(qū)分輸入和輸出分支映射成事務(wù)結(jié)構(gòu)映射成變換結(jié)構(gòu)用啟發(fā)式設(shè)計規(guī)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查詳細(xì)設(shè)計變換設(shè)計事務(wù)設(shè)計“Getittowork,thenmakeitfast.”DFDSystemHierarchy(3)從DFD導(dǎo)出軟件結(jié)構(gòu)圖

變換設(shè)計事務(wù)設(shè)計綜合設(shè)計法①變換設(shè)計InternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTime第一步:確定輸入流和輸出流的邊界

某裝配廠有一座存放零件的倉庫,倉庫中現(xiàn)有的各種零件的數(shù)量以及每種零件的庫存量臨界值等數(shù)據(jù)記錄在庫存清單主文件中。當(dāng)倉庫中零件數(shù)量有變化時,應(yīng)該及時修改庫存清單主文件,如果哪種零件的庫存量少于它的庫存量臨界值,則應(yīng)該報告給采購部門以便定貨,規(guī)定每天向采購部門送一次定貨報告。該裝配廠使用一臺小型計算機處理更新庫存清單主文件和產(chǎn)生定貨報告的任務(wù)。零件庫存量的每一次變化稱為一個事務(wù),由放在倉庫中的CRT終端輸入到計算機中;系統(tǒng)中的庫存清單程序?qū)κ聞?wù)進行處理,更新存儲在磁盤上的庫存清單主文件,并且把必要的定貨信息寫在磁帶上。最后,每天由報告生成程序讀一次磁帶,并且打印出定貨報告。一個例子:102訂貨系統(tǒng)的系統(tǒng)流程圖系統(tǒng)流程圖103數(shù)據(jù)流圖104數(shù)據(jù)流圖出發(fā)設(shè)想供選擇的物理方案一訂貨系統(tǒng)數(shù)據(jù)流圖事務(wù)隨時可能發(fā)生,因此處理1.1(“接收事務(wù)”)必須是聯(lián)機的;采購員每天需要一次定貨報表,因此處理2(“產(chǎn)生報表”)應(yīng)該以批量方式進行??梢月?lián)機地接收事務(wù)并放入隊列中更新庫存清單、處理定貨和產(chǎn)生報表以批量方式進行105數(shù)據(jù)流圖出發(fā)設(shè)想供選擇的物理方案二訂貨系統(tǒng)數(shù)據(jù)流圖改變自動化邊界,把處理1.1,1.2和1.3放在同一個邊界內(nèi),這個系統(tǒng)將聯(lián)機地接收事務(wù)、更新庫存清單和處理定貨及輸出定貨信息;處理2將以批量方式產(chǎn)生定貨報表如果把處理1.1和處理1.2放在一個自動化邊界內(nèi),把處理1.3和處理2放在另一個邊界內(nèi),意味著什么樣的物理系統(tǒng)呢?第二步:進行一級分解Output輸入流輸出流變換流第三步:進行二級分解方法一:輸入模塊要向調(diào)用它的上級模塊提供數(shù)據(jù),因而它必須有兩個下屬模塊:一個是接收數(shù)據(jù);另一個是把這些數(shù)據(jù)變換成它的上級模塊所需的數(shù)據(jù)。而接收模塊有時輸入模塊,重復(fù)上述工作,循環(huán)下去。

輸出模塊是從調(diào)用它的上級模塊接收數(shù)據(jù),用以輸出,因而也應(yīng)當(dāng)有兩個下屬模塊:一個是將上級模塊提供的數(shù)據(jù)變換成輸出的形式;另一個是將它們輸出。

變換中心模塊的下層模塊沒有通用的設(shè)計方法,一般應(yīng)參照數(shù)據(jù)流圖的中心變換部分和功能分解、模塊獨立性的原則來考慮如何對中心變換模塊進行分解。方法二:從變換中心的邊界開始沿輸入通路向外推移,把輸入通路中的每個處理映射為受輸入模塊控制的一個下層模塊;然后沿輸出通路向外推移,把輸出通路中的每個處理映射為直接或間接接受輸出模塊控制的一個下層模塊。最后把變換中心內(nèi)的每個處理映射成變換模塊控制的一個模塊?!纠?/p>

汽車數(shù)字儀表板的設(shè)計功能:①通過模-數(shù)轉(zhuǎn)換實現(xiàn)傳感器和微處理機接口;②在發(fā)光二極管面板上顯示數(shù)據(jù);③指示每小時英里數(shù)(mph),行駛的里程,每加侖油行駛的英里數(shù)(mpg)等等;④(箭頭)指示加速或減速;⑤如果車速超過55mph,則發(fā)出警告鈴聲。1、確定輸入流和輸出流的邊界燃料流傳感器信號SPS旋轉(zhuǎn)信號讀旋轉(zhuǎn)信號收集和求平均確定加/減速轉(zhuǎn)換成轉(zhuǎn)/分計算里程計算mph,超速值產(chǎn)生加/減速顯示計算燃料消耗計算gph讀和校核產(chǎn)生mpg顯示產(chǎn)生mph顯示發(fā)出鈴聲產(chǎn)生里程顯示SPS

SPS箭頭指示燃燒流上箭頭水平線下箭頭rpmrpmgphmphmpgmph超速值英里顯示鈴聲mph顯示mpg顯示2、第一級分解燃料流傳感器信號SPS旋轉(zhuǎn)信號讀旋轉(zhuǎn)信號收集和求平均確定加/減速轉(zhuǎn)換成轉(zhuǎn)/分計算里程計算mph,超速值產(chǎn)生加/減速顯示計算燃料消耗計算gph讀和校核產(chǎn)生mpg顯示產(chǎn)生mph顯示發(fā)出鈴聲產(chǎn)生里程顯示SPS

SPS箭頭指示燃燒流上箭頭水平線下箭頭rpmrpmgphmphmpgmph超速值英里顯示鈴聲mph顯示mpg顯示數(shù)字儀表板控制數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動儀表板接收傳感器信號輸入控制變換控制輸出控制3、第二級分解ADCBMI每個加工映射成受P控制的一個下層模塊P由邊界向外移動,將每個遇到的加工映射成I控制下的一個低層模塊I沿輸出通路向外移動,將每個加工映射成直接或間接受O控制的低層模塊OCBDA軟件結(jié)構(gòu)數(shù)字儀表板控制數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動儀表板接收傳感器信號計算gph轉(zhuǎn)換成rpm讀燃料流收集sps讀旋轉(zhuǎn)信號確定加/減速計算mph計算mpg計算里程加/減速顯示顯示mph顯示mpg顯示里程發(fā)出鈴聲發(fā)光二極管顯示轉(zhuǎn)換成rpm求精:高內(nèi)聚、低耦合!為初步設(shè)計的結(jié)果中的模塊寫一份初步的簡要說明,包括:內(nèi)部信息、接口、內(nèi)容、約束求精系統(tǒng)軟件結(jié)構(gòu)數(shù)字儀表板控制數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動儀表板接收傳感器信號計算gph讀燃料流讀旋轉(zhuǎn)信號確定加/減速計算mph計算mpg計算里程加/減速顯示顯示mph顯示mpg顯示里程發(fā)出鈴聲發(fā)光二極管顯示轉(zhuǎn)換成rpm模塊說明為每個模塊附一個簡要說明/IPO表進出該模塊的信息(接口描述)模塊內(nèi)部的信息過程陳述,包括主要判定點及任務(wù)等對約束和特殊特點的簡短討論117通過以上可以看出:在總體設(shè)計中(1)將一個給定的DFD轉(zhuǎn)換為初始的模塊結(jié)構(gòu)圖基本上是一個“機械”的過程,一般體現(xiàn)不了設(shè)計人員的創(chuàng)造力;(2)優(yōu)化設(shè)計-將一個初始的模塊結(jié)構(gòu)圖轉(zhuǎn)換為最終的模塊結(jié)構(gòu)圖,對設(shè)計人員將是一種挑戰(zhàn),其結(jié)果將直接影響軟件系統(tǒng)開發(fā)的質(zhì)量。②事務(wù)設(shè)計……TTransactionrequest…Actionpaths……IIITBAC………總控III調(diào)度ABC………在汽車的數(shù)字儀表板上有一些選擇功能,駕駛員可以按功能按鈕進行選擇。在面板上設(shè)置的按鈕是:(1)點火,啟動汽車。同時還提供一排數(shù)字按鈕,駕駛員可以設(shè)置一個數(shù)字密碼,只有密碼正確汽車才能安全啟動;(2)雷達(dá)探測。它可以給出障礙物的距離,如果太近了,就發(fā)出警告;(3)顯示發(fā)動機工作狀態(tài)。如油壓、油溫、水箱溫度等;(4)顯示行程,計算信息;(5)清除上一鍵?!纠?/p>

汽車數(shù)字儀表板的設(shè)計(1)復(fù)審并精化數(shù)據(jù)流圖。

(2)確定事務(wù)中心,找出輸入通路和每條活動路徑。(3)設(shè)計頂層和第一層模塊

(4)設(shè)計中下層模塊

中下層模塊主要是為數(shù)據(jù)流圖中的每個活動路徑設(shè)計相應(yīng)的模塊。每條活動路徑可以看作是下一級的數(shù)據(jù)流圖,可按前面介紹的方法,把它映射成與其流特征相對應(yīng)的結(jié)構(gòu)。

本例中輸入部分比較簡單,不需要再分解。我們以2號按鈕雷達(dá)檢查的活動路徑為例細(xì)化。它可以看成一個變換流,可用變換流的映射方法設(shè)計軟件模塊.③綜合設(shè)計法對于大型的軟件系統(tǒng),常常把變換分析和事務(wù)分析應(yīng)用到同一個數(shù)據(jù)流圖的不同部分,由此得到的軟件結(jié)構(gòu)圖是變換型和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。

分層DFD的映射對于一個復(fù)雜問題的DFD,往往是分層的。分層的DFD映射成SC圖也應(yīng)該是分層的,這樣便于設(shè)計,也便于修改。模塊說明為每個模塊附一個簡要說明/IPO表進出該模塊的信息(接口描述)模塊內(nèi)部的信息過程陳述,包括主要判定點及任務(wù)等對約束和特殊特點的簡短討論練習(xí)1:

假設(shè)現(xiàn)要開發(fā)一個考務(wù)處理系統(tǒng)以實現(xiàn)計算機處理考生報名、成績通知、成績分析等事務(wù),印制各種表格和通知書。該考務(wù)系統(tǒng)應(yīng)具有以下功能:審查考生填寫的報名表(包括考生姓名、通信地址等基本信息)是否合格,合格的為之自動生成報名號,編制準(zhǔn)考證(包括準(zhǔn)考證號、報名號、考生姓名)并打印發(fā)給考生。將考生的相關(guān)信息(報名號、準(zhǔn)考證號、姓名、通信地址)錄入考生名冊。對閱卷點送來的考生成績清單進行檢查,合格的錄入成績冊,該成績冊包含準(zhǔn)考證號、科目號、成績等數(shù)據(jù)項。自動生成成績通知書,寄送考生。根據(jù)考試中心提供的錄取標(biāo)準(zhǔn),自動生成錄取通知書,寄送考生。對考生成績進行匯總統(tǒng)計,打印成績分布表,報送考試中心。根據(jù)考生成績分析試題難度,打印試題難度分析表,報送考試中心。

試采用SA/SD方法進行需求分析和軟件設(shè)計,并完成以下各題(請寫明必要的步驟):請給出該考務(wù)處理系統(tǒng)的數(shù)據(jù)流圖和數(shù)據(jù)字典。根據(jù)數(shù)據(jù)流圖,設(shè)計出該系統(tǒng)的軟件結(jié)構(gòu),并畫出結(jié)構(gòu)圖。六、網(wǎng)絡(luò)的設(shè)計與集成當(dāng)要求新系統(tǒng)是一個網(wǎng)絡(luò)應(yīng)用系統(tǒng),則要對網(wǎng)絡(luò)進行設(shè)計。根據(jù)整體的戰(zhàn)略計劃來構(gòu)建網(wǎng)絡(luò)系統(tǒng)設(shè)計方案要適應(yīng)已有的網(wǎng)絡(luò)計劃考慮網(wǎng)絡(luò)應(yīng)用系統(tǒng)的可靠性、安全性、吞吐量,以及同步性等技術(shù)。七、軟件體系結(jié)構(gòu)(

Softwarearchitecture)設(shè)計不同系統(tǒng)的設(shè)計方案存在許多共性問題,把這些共性部分抽取出來,就形成了具有廣泛代表性和可廣泛接受的軟件體系結(jié)構(gòu)風(fēng)格對于高質(zhì)量的軟件產(chǎn)品而言,首先要為其選擇合適的體系結(jié)構(gòu)風(fēng)格,這樣就能夠更好地重用已有的設(shè)計方案和實現(xiàn)方案軟件體系結(jié)構(gòu)設(shè)計側(cè)重于系統(tǒng)宏觀結(jié)構(gòu)的設(shè)計。它是處理質(zhì)量屬性的主要手段軟件體系結(jié)構(gòu)影響了一些非功能的關(guān)鍵屬性,如可修改性、性能、可靠性、部分安全性、可重用性和可移植性等等。比起算法設(shè)計和編碼,體系結(jié)構(gòu)對一些屬性有更顯著的影響軟件體系結(jié)構(gòu)如同人的骨架。重中之重用戶界面如同人的外表,最容易讓人一見鐘情或一見惡心。數(shù)據(jù)庫是大腦,是存儲和處理數(shù)據(jù)用的。模塊如同人的器官依附于架構(gòu)數(shù)據(jù)結(jié)構(gòu)與算法如同人的神經(jīng)和肌肉。

軟件體系結(jié)構(gòu)設(shè)計涉及的因素舉例1).校園學(xué)生的在線調(diào)查客戶端服務(wù)器

數(shù)據(jù)庫httphttpJDBCAccess2).帶驗證的校園學(xué)生在線調(diào)查

客戶端服務(wù)器數(shù)據(jù)庫驗證服務(wù)器httphttpJDBCAccess3).增加緩沖區(qū)的結(jié)構(gòu)客戶端服務(wù)器數(shù)據(jù)庫驗證服務(wù)器高速緩存管理httphttphttphttphttpJDBCAccesshttp圖5.5擁有高速緩存的調(diào)查系統(tǒng)體系結(jié)構(gòu)ASoftwarearchitecture(SA)defines:ComponentsConnectorsControlstyle幾種典型的軟件結(jié)構(gòu)風(fēng)格數(shù)據(jù)流風(fēng)格調(diào)用/返回風(fēng)格面向?qū)ο箫L(fēng)格分層結(jié)構(gòu)數(shù)據(jù)共享風(fēng)格數(shù)據(jù)流風(fēng)格把系統(tǒng)任務(wù)分成幾個處理步驟(過濾器),每個處理步驟是一個獨立的程序,通過系統(tǒng)的數(shù)據(jù)流(管道)連接。一個步驟的輸出是下一個步驟的輸入。管道/過濾器批處理方式圖示:輸入數(shù)據(jù)輸出數(shù)據(jù)數(shù)據(jù)流風(fēng)格優(yōu)點:每個組件功能獨立,一個組件的行為不受其他組件的影響,簡單、支持并行執(zhí)行、復(fù)用和維護缺點:數(shù)據(jù)必須是完整的,批處理方式,執(zhí)行過程也是事先設(shè)計好的,弱控制性、弱交互性不適合處理交互的應(yīng)用,不適合增量開發(fā)在數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個過濾器都需要增加解析和合成數(shù)據(jù)的工作,導(dǎo)致系統(tǒng)性能下降,增加開發(fā)的復(fù)雜性。調(diào)用-返回風(fēng)格(最常見的影響最深遠(yuǎn)的風(fēng)格)傳統(tǒng)的主程序/子程序體系結(jié)構(gòu)將功能分解為一個控制層次,其中“主”程序調(diào)用一組程序構(gòu)件,這些程序構(gòu)件又去調(diào)用別的程序構(gòu)件,如下圖所示。這種結(jié)構(gòu)總體上為樹狀結(jié)構(gòu),可以在底層存在公共模塊。調(diào)用-返回風(fēng)格優(yōu)點:從數(shù)據(jù)流圖開始,從抽象到具體,從模糊到清晰地給出實現(xiàn)程序的過程。自頂向下、逐步分解,控制復(fù)雜性程序的執(zhí)行由設(shè)計好的過程單線程控制(結(jié)構(gòu)化程序設(shè)計語言支持)流程清晰簡單,性能高缺點:頂在何方、下到何處子程序的正確性難于判斷。丟掉了數(shù)據(jù)設(shè)計主程序太重,山下級模塊間耦合度高,不易擴展,難以復(fù)用面向?qū)ο箫L(fēng)格系統(tǒng)的構(gòu)件封裝了數(shù)據(jù)和必須應(yīng)用到數(shù)據(jù)上的操作,構(gòu)件間通過消息傳遞進行通信和合作。優(yōu)點:一個對象對外界隱藏了自己的詳細(xì)信息,所以,改變一個對象的表示,不會影響其它對象,模塊的獨立性高。繼承和封裝方法為對象復(fù)用提供了技術(shù)支持其缺點如下:(1)為了使一個對象和另一個對象通過過程調(diào)用等進行交互,必須知道對象的標(biāo)識。只要一個對象的標(biāo)識改變了,就必須修改所有其他明確調(diào)用它的對象。(2)必須修改所有顯式調(diào)用它的其他對象,并消除由此帶來的一些副作用。例如,如果A使用了對象B,C

也使用了對象B,那么,C對B的使用所造成的對A

的影響可能是料想不到的。分層風(fēng)格在分層體系結(jié)構(gòu)中,整個系統(tǒng)被組織成一個分層結(jié)構(gòu),每一層為上層提供服務(wù),并作為下一層的客戶。這種風(fēng)格允許將復(fù)雜問題分解成一個增量步驟序列的實現(xiàn)分層結(jié)構(gòu)風(fēng)格的缺點并非所有系統(tǒng)都能夠按照層次來進行劃分。例如,有時出于對系統(tǒng)性能的考慮,需

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論