GIS軟件工程的總體設(shè)計-課件_第1頁
GIS軟件工程的總體設(shè)計-課件_第2頁
GIS軟件工程的總體設(shè)計-課件_第3頁
GIS軟件工程的總體設(shè)計-課件_第4頁
GIS軟件工程的總體設(shè)計-課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章GIS系統(tǒng)總體設(shè)計第一節(jié)總體設(shè)計的基本理論第二節(jié)軟件體系結(jié)構(gòu)設(shè)計第三節(jié)空間數(shù)據(jù)庫設(shè)計第四節(jié)GIS應(yīng)用分析模型設(shè)計第五節(jié)GIS用戶界面設(shè)計第六節(jié)系統(tǒng)總體設(shè)計報告1第五章GIS系統(tǒng)總體設(shè)計第一節(jié)總體設(shè)計的基本理論1從技術(shù)和管理的角度看設(shè)計的關(guān)系一、系統(tǒng)設(shè)計概述

系統(tǒng)設(shè)計是一個把系統(tǒng)需求變換成軟件表示的過程。最初這種表示只是描繪出系統(tǒng)的總的框架,然后進(jìn)一步細(xì)化,在此框架中填入細(xì)節(jié),把它加工成在程序細(xì)節(jié)上非常接近于源程序的軟件表示。第一節(jié)總體設(shè)計的基本理論2從技術(shù)和管理的角度看設(shè)計的關(guān)系一、系統(tǒng)設(shè)計概述兩類軟件工程的簡單比較3兩類軟件工程的簡單比較3翻譯分析模型到軟件設(shè)計THEANALYSISMODELproceduraldesigninterfacedesignarchitecturaldesigndatadesignTHEDESIGNMODELDataobjectdescriptionProcessspecificationControlspecificationE-RDFDSTDDD4翻譯分析模型到軟件設(shè)計THEANALYSISMODELp翻譯分析模型到軟件設(shè)計數(shù)據(jù)設(shè)計將分析時創(chuàng)建的信息域模型變換為軟件所需的數(shù)據(jù)結(jié)構(gòu),側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義。體系結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要結(jié)構(gòu)構(gòu)件之間的關(guān)系。過程設(shè)計則是把結(jié)構(gòu)構(gòu)件轉(zhuǎn)換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通過測試最終得到完整有效的軟件。接口設(shè)計是建立軟件內(nèi)部的關(guān)系以及軟件人-機(jī)之間的交互機(jī)制。5翻譯分析模型到軟件設(shè)計數(shù)據(jù)設(shè)計將分析時創(chuàng)建的信息域模型變換為軟件設(shè)計的重要性軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。6軟件設(shè)計的重要性軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)二、總體設(shè)計的任務(wù)GIS總體設(shè)計階段的主要任務(wù)是將系統(tǒng)需求轉(zhuǎn)換為數(shù)據(jù)結(jié)構(gòu)和軟件體系結(jié)構(gòu)。數(shù)據(jù)設(shè)計:把分析階段所建立的信息域模型變換成軟件實(shí)現(xiàn)中所需的數(shù)據(jù)結(jié)構(gòu)。體系結(jié)構(gòu)設(shè)計:則是把系統(tǒng)的功能需求分配給軟件結(jié)構(gòu),形成軟件的模塊結(jié)構(gòu)圖、并設(shè)計模塊之間的接口關(guān)系??傮w設(shè)計從回答“做什么”到回答“怎樣做”;7二、總體設(shè)計的任務(wù)GIS總體設(shè)計階段的主要任務(wù)是將系模塊指的是具有輸入和輸出、邏輯功能、運(yùn)行程序、內(nèi)部數(shù)據(jù)四種屬性的一組程序語句。除了上述四個主要屬性外,模塊還有其他的屬性。例如,它有一個名稱,可以使用別的模塊,也可以被別的模塊使用,即“調(diào)用”和“被調(diào)用”。模塊:8模塊指的是具有輸入和輸出、邏輯功能、運(yùn)行程序、內(nèi)部數(shù)據(jù)四種屬軟件結(jié)構(gòu):即由模塊組成的層次系統(tǒng);應(yīng)該把模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,從而完成程序的一個子功能,最下層的模塊完成最具體的功能。模塊(續(xù)):9軟件結(jié)構(gòu):即由模塊組成的層次系統(tǒng);應(yīng)該把模塊組織成良好的層次三、總體設(shè)計的方法由問題結(jié)構(gòu)導(dǎo)出系統(tǒng)結(jié)構(gòu),即問題結(jié)構(gòu)到系統(tǒng)結(jié)構(gòu)的映射。通過自頂向下分解和層次組織的方法來簡化系統(tǒng),產(chǎn)生模塊結(jié)構(gòu)。運(yùn)用一系列的圖表工具。提供一系列的系統(tǒng)設(shè)計策略。提供一組評價系統(tǒng)設(shè)計質(zhì)量的準(zhǔn)則。10三、總體設(shè)計的方法由問題結(jié)構(gòu)導(dǎo)出系統(tǒng)結(jié)構(gòu),即問題結(jié)構(gòu)到系統(tǒng)

模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶的需求。1.模塊化(Modularity)四、設(shè)計基本原理11模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模模塊化論據(jù):C(x)定義為問題x的感知復(fù)雜性E(x)定義為解決問題x所需要的工作量對p1和p2兩個問題,若C(p1)>C(p2),則E(p1)>E(p2)C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)這個不等式“各個擊破”的結(jié)論——把復(fù)雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。這就是模塊化的根據(jù)。12模塊化論據(jù):這個不等式“各個擊破”的結(jié)論——把如何確定最小成本區(qū)?成本成本/模塊最小成本區(qū)接口成本軟件總成本模塊數(shù)目模塊化和軟件成本:不要過度模塊化!每個模塊的簡單性將被集成的復(fù)雜性所掩蓋。每個程序都相應(yīng)地有一個最適當(dāng)?shù)哪K數(shù)目M,使得系統(tǒng)的開發(fā)成本最小。13如何確定最小成本區(qū)?成本成本/模塊最小成本區(qū)接口成本軟件模塊化的優(yōu)點(diǎn):使軟件結(jié)構(gòu)清晰;使軟件容易測試和調(diào)試,因而有助于提高軟件的可靠性;模塊化能夠提高軟件的可修改性;提高程序編寫的可分解性;14模塊化的優(yōu)點(diǎn):14抽象是抽出事物的本質(zhì)特性而暫時不考慮它們的細(xì)節(jié)。隨著軟件規(guī)模的不斷增大,設(shè)計的復(fù)雜性也不斷增大,抽象便成了控制復(fù)雜性的基本策略之一;軟件工程過程的每一步都是對軟件解法的抽象層次的一次精化;軟件設(shè)計其實(shí)就是在不同抽象級別考慮和處理問題的過程。在由高級抽象到低級抽象的轉(zhuǎn)換過程中,要進(jìn)行一連串的過程抽象和數(shù)據(jù)抽象。2.抽象(abstraction)152.抽象(abstraction)15過程抽象:把完成一個特定功能的動作序列抽象為一個過程名和參數(shù)表;數(shù)據(jù)抽象:數(shù)據(jù)抽象把一個數(shù)據(jù)對象的定義抽象為一個數(shù)據(jù)類型名。用此類型名可以定義多個具有相同性質(zhì)的數(shù)據(jù)對象。過程抽象與數(shù)據(jù)抽象:16過程抽象:把完成一個特定功能的動作序列抽象為一個過程名和參數(shù)1971年,N.Wirth發(fā)表了“用逐步細(xì)化的方法開發(fā)程序”的文章,強(qiáng)調(diào)程序設(shè)計是一個“漸進(jìn)”的過程。抽象與細(xì)化是互補(bǔ)的概念。細(xì)化實(shí)際是一個詳細(xì)描述的過程。細(xì)化的實(shí)質(zhì)就是分解。在逐步細(xì)化中,特別強(qiáng)調(diào)這種分解的“逐步”性質(zhì),這樣,在相鄰兩步之間就只有微小的變化,不難驗(yàn)證它們的內(nèi)容是否等效。3.細(xì)化(Refinement)171971年,N.Wirth發(fā)表了“用逐步細(xì)化的方法開發(fā)程序”信息隱藏是把系統(tǒng)分解為模塊時應(yīng)遵守的指導(dǎo)思想。模塊內(nèi)部的數(shù)據(jù)與過程,應(yīng)該對不需要了解這些數(shù)據(jù)與過程的模塊隱藏起來;這一指導(dǎo)思想的目的,是為了提高模塊的獨(dú)立性;4.信息隱藏(InformationHiding)184.信息隱藏(InformationHiding)18為什么模塊的獨(dú)立性很重要呢?第一,有效的模塊化的軟件比較容易開發(fā)出來。第二,獨(dú)立的模塊比較容易測試和維護(hù)。5.模塊獨(dú)立性195.模塊獨(dú)立性19模塊獨(dú)立性的度量標(biāo)準(zhǔn):

內(nèi)聚(cohesion)和耦合(coupling)耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。20模塊獨(dú)立性的度量標(biāo)準(zhǔn):20簡單地說,理想內(nèi)聚的模塊只做一件事情;內(nèi)聚級別:偶然內(nèi)聚邏輯內(nèi)聚時間內(nèi)聚過程內(nèi)聚通信內(nèi)聚順序內(nèi)聚功能內(nèi)聚設(shè)計時應(yīng)該力求做到高內(nèi)聚;最差最好(1)內(nèi)聚cohesion21簡單地說,理想內(nèi)聚的模塊只做一件事情;最差最好(1)內(nèi)聚cA.低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion):Unrelatedfunctions,processes,ordataarefoundinthesamemodule.例:readdiskfile;calculatecurrentvalues;produceuseroutput;…嚴(yán)重的缺點(diǎn):產(chǎn)品的可維護(hù)性退化;模塊是不可復(fù)用的,增加軟件成本。解決途徑:將模塊分成更小的模塊,每個小模塊執(zhí)行一個操作。22A.低內(nèi)聚22A.低內(nèi)聚邏輯內(nèi)聚(Logicalcohesion):Logicallyrelatedfunctionsordataareplacedinthesamemodule.例:問題:接口難于理解;完成多個操作的代碼互相糾纏在一起,導(dǎo)致嚴(yán)重的維護(hù)問題。A:Readinputsfromdiskfromtapefromkeyboard23A.低內(nèi)聚A:fromdiskfromtapefromA.低內(nèi)聚時間內(nèi)聚(Temporalcohesion):Thefunctionsarerelatedonlybythetiminginvolved.例如:系統(tǒng)的初始化openoldmasterfile;newmasterfile,transactionfileandprintfile;initializesalesregiontable;readfirsttransactionrecordandfirstoldmaster

……24A.低內(nèi)聚24B.中內(nèi)聚過程性內(nèi)聚(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.例子:Readpartnumberfromdatabaseandupdaterepairrecordonmaintenancefile.25B.中內(nèi)聚25B.中內(nèi)聚通信內(nèi)聚(Communicationalcohesion):Allthefunctionsinamoduleoperateonorproducethesamedataset.這類模塊的標(biāo)志是,模塊內(nèi)部的各個成分都使用同一種輸入數(shù)據(jù),或者產(chǎn)生同一個輸出數(shù)據(jù)。它們靠用公用數(shù)據(jù)而聯(lián)系在一起,故稱為通信性內(nèi)聚。26B.中內(nèi)聚26C.高內(nèi)聚順序內(nèi)聚(Sequentialcohesion):Theoutputfromonepartofamoduleistheinputtothenextpart.顧名思義,這類模塊中的各組成部分是順序執(zhí)行的,在通常情況下,上一個處理框的輸出就是下一個處理框的輸入。27C.高內(nèi)聚27C.高內(nèi)聚

功能內(nèi)聚(Functionalcohesion):Everyprocessingelementisessentialtotheperformanceofasinglefunction.原則:在實(shí)際工作中,確定內(nèi)聚的精確級別是不必要的,重要的是力爭高內(nèi)聚和識別低內(nèi)聚,可以使得設(shè)計的軟件具有較高的功能獨(dú)立性。28C.高內(nèi)聚原則:在實(shí)際工作中,確定內(nèi)聚的精確級別是不必要耦合是度量系統(tǒng)中模塊之間的交互程度。Goal:aslooseaspossible=asindependentaspossible耦合從低到高依次為:非直接耦合,數(shù)據(jù)耦合,標(biāo)記耦合,控制耦合,外部耦合,公共耦合和內(nèi)容耦合。GreatdealofdependenceIndependent

HighlycoupledLooselycoupledUncoupled

(2)耦合29耦合是度量系統(tǒng)中模塊之間的交互程度。Greatdealo非直接耦合nodirectcoupling

兩個模塊之間沒有聯(lián)系,則它們之間為非直接耦合。數(shù)據(jù)耦合datacoupling模塊之間交換的是簡單變量,便構(gòu)成數(shù)據(jù)耦合;特征耦合stampcoupling模塊之間交換的是數(shù)據(jù)結(jié)構(gòu),便構(gòu)成特征耦合;

Themostdesirable.A.弱耦合30非直接耦合nodirectcouplingThe弱耦合示例圖31弱耦合示例圖31房租水電=房租+用水量+用電量32房租水電=32控制耦合controlcoupling

如果兩個模塊中的一個模塊給另一個模塊傳遞控制信息,則它們具有控制耦合。ABFlagF2F1Fn…………Flag特點(diǎn):接口單一,但仍然影響被控模塊的內(nèi)部邏輯。B.中耦合33控制耦合controlcouplingABFlagF2外部耦合externalcoupling

若允許一組模塊訪問同一個全局變量,可稱它們?yōu)橥獠狂詈?;C.較強(qiáng)耦合公共耦合commoncoupling 若允許一組模塊訪問同一個全局性數(shù)據(jù)結(jié)構(gòu),則稱之為公共耦合。34外部耦合externalcouplingC.較強(qiáng)耦合公公共耦合示意圖35公共耦合示意圖35D.強(qiáng)耦合內(nèi)容耦合contentcoupling如果一個模塊可以直接調(diào)用另一個模塊中的數(shù)據(jù),或者允許一個模塊直接轉(zhuǎn)移到另一個模塊中去,就稱它們間的耦合為內(nèi)容耦合?!瑼BCDA:……………………gotoC1……………………C:……………………C1:…………例1:A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入C的內(nèi)部。36D.強(qiáng)耦合……ABCDA:C:例1:A訪問C的內(nèi)部數(shù)據(jù)或不通原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。37372.模塊規(guī)模適中模塊過大,分解不充分不易理解;模塊太小,則開銷過大、接口復(fù)雜;1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性爭取低耦合、高內(nèi)聚;五、啟發(fā)式規(guī)則382.模塊規(guī)模適中1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性五、啟發(fā)式規(guī)則3.深度、寬度、扇入、扇出都要適當(dāng)控制

(1)深度=分層的層數(shù)。過大表示分工過細(xì)。(2)寬度=同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜度大。393.深度、寬度、扇入、扇出都要適當(dāng)控制39(3)扇出=一個模塊直接調(diào)用\控制的模塊數(shù)3fan-out9AA的扇出如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊,應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊;扇出太小時可以把下級模塊進(jìn)一步分解成若干個子功能模塊,或者合并到它的上級模塊中去;40(3)扇出=一個模塊直接調(diào)用\控制的模塊數(shù)AAA的扇入(4)扇入=直接調(diào)用該模塊的模塊數(shù)在不破壞模塊獨(dú)立性的前提下,fan-in大的比較好;41AA的扇入(4)扇入=直接調(diào)用該模塊的模塊數(shù)41

一般來說,頂層扇出高,中間扇出少,低層高扇入。盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。42一般來說,頂層扇出高,中間扇出少,低層高扇入。作用域是指該模塊中一個判斷所影響的所有其它模塊;控制域指該模塊本身以及所有直接或間接從屬于它的模塊;4.模塊的作用范圍保持在該模塊的控制范圍內(nèi)在一個設(shè)計得很好的系統(tǒng)中,所有受判定影響的模塊應(yī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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論