第3章 軟件設(shè)計(jì)-2012-10_第1頁
第3章 軟件設(shè)計(jì)-2012-10_第2頁
第3章 軟件設(shè)計(jì)-2012-10_第3頁
第3章 軟件設(shè)計(jì)-2012-10_第4頁
第3章 軟件設(shè)計(jì)-2012-10_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章軟件設(shè)計(jì)主要內(nèi)容軟件設(shè)計(jì)概述1軟件設(shè)計(jì)的基本原則2總體設(shè)計(jì)3詳細(xì)設(shè)計(jì)4案例分析5主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系教學(xué)要求掌握軟件設(shè)計(jì)的基本任務(wù)掌握軟件設(shè)計(jì)的原則掌握模塊化的概念掌握耦合與內(nèi)聚掌握常用的詳細(xì)設(shè)計(jì)的工具主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系主要內(nèi)容軟件設(shè)計(jì)概述1軟件設(shè)計(jì)的基本原則2總體設(shè)計(jì)3詳細(xì)設(shè)計(jì)4案例分析5主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系軟件需求分析解決“做什么”的問題,軟件設(shè)計(jì)過程則解決“怎么做”的問題軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,它主要包含兩個(gè)階段軟件體系結(jié)構(gòu)設(shè)計(jì)階段(總體設(shè)計(jì))部件級(jí)設(shè)計(jì)(詳細(xì)設(shè)計(jì))主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系1.1軟件設(shè)計(jì)的任務(wù)使用一種設(shè)計(jì)方法,將分析階段獲得的需求說明轉(zhuǎn)換為計(jì)算機(jī)中可實(shí)現(xiàn)的系統(tǒng)。包括:過程設(shè)計(jì)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)界面設(shè)計(jì)軟件設(shè)計(jì)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系1.1軟件設(shè)計(jì)的任務(wù)(續(xù))數(shù)據(jù)設(shè)計(jì)將分析-類模型變換成類的實(shí)現(xiàn)和軟件實(shí)現(xiàn)所需要的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的整體結(jié)構(gòu)接口設(shè)計(jì)接口設(shè)計(jì)描述了軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件同人之間如何通信部件級(jí)設(shè)計(jì)部件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對(duì)軟件部件的過程性描述主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系1.2軟件設(shè)計(jì)的過程從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成總體設(shè)計(jì)(概要設(shè)計(jì)):將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。詳細(xì)設(shè)計(jì)。通過對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。需求說明書復(fù)審軟件結(jié)構(gòu)可接受模塊描述復(fù)審修改修改總體設(shè)計(jì)詳細(xì)設(shè)計(jì)設(shè)計(jì)說明書主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系主要內(nèi)容軟件設(shè)計(jì)概述1軟件設(shè)計(jì)的基本原則2總體設(shè)計(jì)3詳細(xì)設(shè)計(jì)4案例分析5主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2軟件設(shè)計(jì)的基本原則2.1抽象與逐步求精2.2模塊化2.3信息隱蔽與局部化2.4模塊的獨(dú)立性主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.1抽象與逐步求精抽象是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策略。抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象,下層概念是上層概念的精化和細(xì)化。軟件工程過程的每一步都是對(duì)較高一級(jí)抽象的解作一次具體化的描述主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.1抽象與逐步求精(續(xù)1)軟件設(shè)計(jì)中主要抽象手段過程抽象(也稱功能抽象)是指任何一個(gè)完成明確定義功能的操作都可被使用者當(dāng)作單個(gè)實(shí)體看待,盡管這個(gè)操作實(shí)際上是由一系列更低級(jí)的操作來完成的。數(shù)據(jù)抽象是指定義數(shù)據(jù)類型和施加于該類型對(duì)象的操作,并限定了對(duì)象的取值范圍,只能通過這些操作修改和觀察數(shù)據(jù) 主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.1抽象與逐步求精(續(xù)2)逐步求精把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接近問題的解法抽象使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低層的細(xì)節(jié);而求精有助于設(shè)計(jì)者在設(shè)計(jì)過程中揭示低層的細(xì)節(jié)。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.1抽象與逐步求精(續(xù)3)下面,以一個(gè)CAD軟件的開發(fā)為例,說明軟件開發(fā)時(shí)的三種不同的抽象層次。該CAD軟件實(shí)現(xiàn)一個(gè)二維繪圖系統(tǒng)的全部功能,供低級(jí)計(jì)算機(jī)輔助設(shè)計(jì)使用。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系抽象層次1抽象層次I:用問題所處環(huán)境的術(shù)語描述該軟件

該軟件包括一個(gè)計(jì)算機(jī)繪圖界面,向繪圖員顯示圖形,以及一個(gè)數(shù)字化界面,用以代替繪圖板和丁字尺。所有的直線、折線、圓、曲線的繪畫、所有的幾何計(jì)算、所有的剖面圖和輔助視圖都可以用這個(gè)CAD軟件實(shí)現(xiàn)…….主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系抽象層次2抽象層次2:任務(wù)需求的描述CADSOFTWARETASKS; CAD軟件任務(wù);

userinteractiontask; 用戶界面任務(wù);

2-Ddrawingcreationtask; 創(chuàng)建二維圖形任務(wù);

graphicsdisplaytask; 顯示圖形任務(wù);

drawingfilemanagementtask;管理圖形文件任務(wù);END. 結(jié)束。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系抽象層次3程序過程表示(以2-D繪圖生成任務(wù)為例)PROCEDURE:2-Ddrawingcreation

REPEATUNTIL<創(chuàng)建圖形任務(wù)終止>

DOWHILE<出現(xiàn)與數(shù)字儀的交互時(shí)> 數(shù)字儀接口任務(wù);

DETERMINEdrawingrequestCASE;

line:linedrawingtask;

circle:circledrawingtask;

……

END;主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.2模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,它是單?dú)命名的,并且可以通過名字來訪問例如,過程、函數(shù)、子程序、宏、類等模塊化即把軟件按照規(guī)定原則,劃分為一個(gè)個(gè)較小的,相互獨(dú)立的但又相互關(guān)聯(lián)的部件,實(shí)際上是系統(tǒng)分解和抽象的過程。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.2模塊化(續(xù)1)理想模塊的特點(diǎn)每個(gè)理想模塊只解決一個(gè)問題每個(gè)理想模塊的功能都應(yīng)該明確,使人容易理解理想模塊之間的聯(lián)結(jié)關(guān)系簡(jiǎn)單,具有獨(dú)立性由理想模塊構(gòu)成的系統(tǒng),容易使人理解,易于編程,易于測(cè)試,易于修改和維護(hù)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.2模塊化(續(xù)2)模塊化的理論依據(jù)把一個(gè)大而復(fù)雜的問題分解成一些獨(dú)立的易于處理的小問題,解決起來會(huì)容易得多。

如果無限制的劃分軟件,那么開發(fā)它所需要的工作量就會(huì)變得小到可以忽略啦!?主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.2模塊化(續(xù)3)模塊化和軟件成本軟件開發(fā)的成本=各模塊成本+模塊集成的成本主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.2模塊化(續(xù)4)結(jié)論:不要過度模塊化。因?yàn)?每個(gè)模塊的簡(jiǎn)單性將被集成的復(fù)雜性所掩蓋。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.3信息隱藏與局部化

信息隱藏與局部化信息隱藏:是指模塊中包含的信息(算法和數(shù)據(jù))不被不需要這些信息的其他模塊訪問。模塊間只交流實(shí)現(xiàn)軟件功能所必需的信息。局部化:是指把一些關(guān)系密切的軟件元素物理的放得彼此接近。例如:在模塊中使用局部數(shù)據(jù)元素就是局部化的一個(gè)例子通過信息隱藏可以定義和加強(qiáng)模塊內(nèi)的過程細(xì)節(jié)和模塊所使用的任何局部數(shù)據(jù)結(jié)構(gòu)的訪問限制。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.3信息隱藏與局部化

(續(xù)1)采用信息隱藏原理指導(dǎo)模塊設(shè)計(jì)的好處支持模塊的并行開發(fā)可減少測(cè)試和后期維護(hù)的工作量。因?yàn)闇y(cè)試和維護(hù)階段不可避免地要修改設(shè)計(jì)和代碼,模塊對(duì)于多數(shù)數(shù)據(jù)和過程處理細(xì)節(jié)的隱藏可以減少錯(cuò)誤向外傳播。整個(gè)系統(tǒng)欲擴(kuò)充功能亦只需“插入”新模塊,原有的多數(shù)模塊無須改動(dòng)。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.3信息隱藏與局部化

(續(xù)2)ClassJobQueue

{private:

int

queueLength;//作業(yè)隊(duì)列的長(zhǎng)度

intqueue[25];//隊(duì)列可包含最多25個(gè)作業(yè)

public:

voidinitializeJobQueue()

{queueLength=0;//空作業(yè)隊(duì)列的長(zhǎng)度為0

};

voidaddJobQueue(int

jobNumber)

{//在作業(yè)隊(duì)列的最后增加作業(yè)

queue[queueLength]=jobNumber;

queueLength=queueLength+1;

};

int

removeJobFromQueue()

{//略

};

}//ClassJobQueue

一個(gè)信息隱藏的例子主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4模塊的獨(dú)立性模塊獨(dú)立軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能而和軟件系統(tǒng)中其他的模塊的接口是簡(jiǎn)單的。模塊獨(dú)立是抽象、模塊化、信息隱藏和局部化的直接結(jié)果。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4模塊的獨(dú)立性(續(xù)1)模塊獨(dú)立的重要性功能被劃分,并且接口被簡(jiǎn)化,所以具有有效模塊化的軟件更易于開發(fā)由于因設(shè)計(jì)和編碼修改引起的副作用受到局限,錯(cuò)誤傳播被減小,模塊復(fù)用成為可能,所以獨(dú)立的模塊更易于維護(hù)和測(cè)試主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4模塊的獨(dú)立性(續(xù)2)模塊的獨(dú)立性的衡量標(biāo)準(zhǔn)耦合(coupling)模塊之間的相對(duì)獨(dú)立性的度量耦合的強(qiáng)弱取決于模塊接口的復(fù)雜程度、調(diào)用模塊的方式以及通過接口的信息。內(nèi)聚(cohesion)一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量獨(dú)立性強(qiáng)的模塊應(yīng)該是高內(nèi)聚低耦合的模塊。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合為了突出好的耦合,各個(gè)級(jí)別按照從最差到最好的順序進(jìn)行描述原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制使用公共耦合,堅(jiān)決不用內(nèi)容耦合內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——內(nèi)容耦合定義如果一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);或者一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;或者兩個(gè)模塊有一部分程序代碼重迭;或者一個(gè)模塊有多個(gè)入口,則兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。例如模塊p修改模塊q的一個(gè)語句根據(jù)模塊q的內(nèi)部用數(shù)字表示的轉(zhuǎn)移,模塊p引用模塊q的局部數(shù)據(jù)模塊p的分支轉(zhuǎn)移到模塊q的一個(gè)局部標(biāo)號(hào)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——公共耦合定義若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合(commoncoupling)。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。例如主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——公共耦合(續(xù)1)公共耦合存在的問題其中一個(gè)模塊對(duì)數(shù)據(jù)的修改,將會(huì)影響所有的相關(guān)模塊,另外由于無法控制各個(gè)模塊對(duì)公共數(shù)據(jù)的存取,使軟件的可靠性和可維護(hù)性較差。公共耦合的適用范圍只有在模塊之間共享的數(shù)據(jù)很多,且通過參數(shù)表傳遞不方便時(shí),才使用公共耦合。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——控制耦合定義如果一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)中包含了控制信息,該控制信息用于控制接收模塊中的執(zhí)行邏輯,則稱為控制耦合(controlcoupling)。例如當(dāng)把一個(gè)函數(shù)名作為參數(shù)傳遞給另一個(gè)模塊時(shí),實(shí)際上就控制了另一個(gè)模塊的執(zhí)行邏輯??刂崎_關(guān)Flag作為參數(shù)傳遞時(shí)的情況。如圖所示。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——控制耦合(續(xù))控制耦合存在的問題控制模塊(A)必須知道被控制模塊(B)內(nèi)部的一些邏輯關(guān)系,這些都會(huì)降低模塊的獨(dú)立性。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——復(fù)合耦合定義兩個(gè)模塊之間通過參數(shù)表傳遞一個(gè)數(shù)據(jù)結(jié)構(gòu)的一部分(如某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)),就是復(fù)合耦合(stampcoupling),也稱為標(biāo)記耦合。例如:判斷以下情況是否是復(fù)合耦合?Case1模塊:轉(zhuǎn)換矩陣(原始矩陣,已轉(zhuǎn)換的矩)分析:在上述的調(diào)用中,把數(shù)據(jù)結(jié)構(gòu)作為參數(shù)進(jìn)行傳遞,但被調(diào)用的模塊“轉(zhuǎn)換矩陣”在數(shù)據(jù)結(jié)構(gòu)的所有組件上進(jìn)行操作,因此,不屬于標(biāo)記耦合。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合耦合——復(fù)合耦合(續(xù)1)Case2模塊:計(jì)算扣除的工資(雇員記錄)其中:雇員記錄的結(jié)構(gòu)(雇員號(hào),姓名,工資,電話,住址,…)分析:對(duì)于“計(jì)算扣除的工資”模塊,傳遞雇員的工資顯然是最基本的,但是還傳遞了一些其他的無關(guān)的信息,例如:雇員的電話等。因此,上述的調(diào)用傳遞了比需要更多的信息。屬于標(biāo)記耦合。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——復(fù)合耦合(續(xù)2)復(fù)合耦合存在的問題要求這些模塊都必須清楚該記錄的結(jié)構(gòu),并按結(jié)構(gòu)要求對(duì)記錄進(jìn)行操作。由于傳遞了比需要的更多的數(shù)據(jù),將出現(xiàn)對(duì)數(shù)據(jù)的訪問無法控制的問題以及接踵而來的計(jì)算機(jī)犯罪問題主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.1耦合——數(shù)據(jù)耦合定義一個(gè)模塊傳給另一個(gè)模塊的參數(shù)是一個(gè)單個(gè)的數(shù)據(jù)項(xiàng)或單個(gè)數(shù)據(jù)項(xiàng)組成的數(shù)組,則稱為數(shù)據(jù)耦合(datacoupling)。例如ModuleA

{…

Line(x0,y0,x1,y1);//從坐標(biāo)(x0,y0)到(x1,y1)畫直線

}主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚為了理解什么構(gòu)成了高內(nèi)聚的模塊,從較低的內(nèi)聚級(jí)別開始討論。弱內(nèi)聚性強(qiáng)偶然型邏輯型瞬時(shí)型通信型順序型功能型主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——偶然內(nèi)聚定義將幾個(gè)模塊中沒有明確表現(xiàn)出獨(dú)立功能的相同程序代碼段獨(dú)立出來建立的模塊稱為偶然內(nèi)聚,也稱為巧合內(nèi)聚。例如一個(gè)模塊執(zhí)行的活動(dòng)如下打印下一行;

將輸入?yún)?shù)的字符串反轉(zhuǎn);

計(jì)算一個(gè)數(shù)組的平均值。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——邏輯內(nèi)聚定義完成一組邏輯相關(guān)任務(wù)的模塊,調(diào)用該模塊時(shí),由傳送給模塊的控制型參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。稱為邏輯內(nèi)聚。例如CASE1:按如下方式調(diào)用的模塊newOperation

func_code=7

newOperation(func_code,a,b,c);

//若func_code=7,則不使用變量a,b,c主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——邏輯內(nèi)聚(續(xù))CASE2:對(duì)主文件記錄進(jìn)行插入、刪除和修改的編輯模塊。被

調(diào)

塊調(diào)用模塊判定修改增加刪除主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——瞬時(shí)內(nèi)聚定義一個(gè)模塊中的所有任務(wù)必須在同一時(shí)間段內(nèi)執(zhí)行,稱為瞬時(shí)內(nèi)聚。例如初始化模塊和終止模塊。例如有完成如下功能的初始化模塊:

打開舊的主文件、新的主文件、事務(wù)文件;打印文件;

初始化銷售地區(qū)表;主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——通信內(nèi)聚定義模塊的所有元素使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)聚。例如如下模塊要完成兩個(gè)處理,他們都使用相同的輸入數(shù)據(jù)。按“配件編號(hào)”查詢數(shù)據(jù)存儲(chǔ),獲得“單價(jià)”按“配件編號(hào)”查詢數(shù)據(jù)存儲(chǔ),獲得“庫(kù)存量”主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——順序內(nèi)聚定義一個(gè)模塊完成多個(gè)任務(wù),這些任務(wù)必須按指定的過程執(zhí)行。一個(gè)模塊的輸出是另一個(gè)模塊的輸入。稱為順序內(nèi)聚。例如從數(shù)據(jù)庫(kù)讀取零件號(hào);然后根據(jù)零件號(hào)在維護(hù)文件中更新相關(guān)記錄主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系2.4.2內(nèi)聚——功能內(nèi)聚定義一個(gè)模塊中各個(gè)部分都是為完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的,稱為功能內(nèi)聚。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系主要內(nèi)容軟件設(shè)計(jì)概述1軟件設(shè)計(jì)的基本原則2總體設(shè)計(jì)3詳細(xì)設(shè)計(jì)4案例分析5主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3總體設(shè)計(jì)總體設(shè)計(jì)的工具——軟件結(jié)構(gòu)圖總體設(shè)計(jì)的原則體系結(jié)構(gòu)設(shè)計(jì)的方法主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.1總體設(shè)計(jì)的工具——軟件結(jié)構(gòu)圖結(jié)構(gòu)圖的基本圖形符號(hào)模塊用矩形框表示,并用模塊的名字標(biāo)記它。計(jì)算每月利息計(jì)算月息打印出錯(cuò)信息計(jì)算月銷售額以功能做模塊名以功能的縮寫做模塊名已定義模塊子程序(或過程)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.1總體設(shè)計(jì)的工具——軟件結(jié)構(gòu)圖(續(xù)1)結(jié)構(gòu)圖的基本圖形符號(hào)(續(xù)1)模塊間的調(diào)用(見后)一般調(diào)用:箭頭有條件的調(diào)用:菱形循環(huán)調(diào)用:弧形符號(hào)A被調(diào)用模塊調(diào)用模塊BDCBA主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.1總體設(shè)計(jì)的工具——軟件結(jié)構(gòu)圖(續(xù)2)結(jié)構(gòu)圖的基本圖形符號(hào)(續(xù)2)模塊間的數(shù)據(jù)通訊數(shù)據(jù)通訊控制通訊A查詢學(xué)生成績(jī)B查找學(xué)生記錄學(xué)號(hào)查找成功信號(hào)記錄

地址主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.1總體設(shè)計(jì)的工具——軟件結(jié)構(gòu)圖(續(xù)3)軟件的層次結(jié)構(gòu)圖表示軟件的系統(tǒng)結(jié)構(gòu),它是軟件模塊間關(guān)系的表示,均表示為層次關(guān)系。0層1層2層3層4層主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.1總體設(shè)計(jì)的工具——軟件結(jié)構(gòu)圖(續(xù)4)深度:頂層模塊到最底層模塊的層數(shù)寬度:層次結(jié)構(gòu)中同一層模塊的最大模塊個(gè)數(shù)扇入:一個(gè)模塊直接調(diào)用(或控制)的其它模塊數(shù)目。扇出:調(diào)用(或控制)一個(gè)給定模塊的模塊個(gè)數(shù)。一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:

頂部寬度小,中部寬度最大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.2總體設(shè)計(jì)的原則在進(jìn)行軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí),可以參考如下規(guī)則:改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊適當(dāng)?shù)纳疃取挾?、扇出和扇入模塊判斷作用范圍應(yīng)在其控制作用范圍內(nèi)控制范圍—結(jié)構(gòu)方面的特點(diǎn),包括模塊及其所有下屬模塊。作用范圍—判斷所涉及的模塊,是從功能特點(diǎn)考慮的。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.2總體設(shè)計(jì)的原則(續(xù))消除重復(fù)功能力爭(zhēng)降低模塊接口的復(fù)雜度設(shè)計(jì)單入口單出口的模塊模塊大小適當(dāng)模塊的扇入/扇出數(shù)不宜太多,通常頂層扇出比較高,中層扇出比較少,底層有高扇入主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3面向數(shù)據(jù)流的設(shè)計(jì)方法基本過程將結(jié)構(gòu)化分析的結(jié)果(數(shù)據(jù)流圖)映射成軟件的體系結(jié)構(gòu)(軟件結(jié)構(gòu)圖)信息流變換流事務(wù)流將數(shù)據(jù)流圖分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖,對(duì)應(yīng)的映射分別稱為變換分析和事務(wù)分析主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.1變換流特征:數(shù)據(jù)流圖可明顯地分成輸入、變換、輸出三部分信息沿著輸入路徑進(jìn)入系統(tǒng),并將輸入信息的外部形式經(jīng)過編輯、格式轉(zhuǎn)換、合法性檢查、預(yù)處理等輔助性加工后變成內(nèi)部形式內(nèi)部形式的信息由變換中心進(jìn)行處理然后沿著輸出路徑經(jīng)過格式轉(zhuǎn)換、組成物理塊、緩沖處理等輔助性加工后變成輸出信息送到系統(tǒng)外外部表示內(nèi)部表示信息時(shí)間變換流輸入流輸出流主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.1變換流(續(xù)1)變換型數(shù)據(jù)流圖示例編輯檢查計(jì)算格式2格式1格式3邏輯輸入邏輯輸出有效

數(shù)據(jù)已編輯

數(shù)據(jù)初始數(shù)據(jù)計(jì)算值1計(jì)算值2已格式化1預(yù)格式化已格式化2變換中心主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.2事務(wù)流特征:數(shù)據(jù)流沿著輸入路徑到達(dá)一個(gè)事務(wù)中心,事務(wù)中心根據(jù)輸入數(shù)據(jù)的類型在若干條動(dòng)作路徑中選擇一條來執(zhí)行事務(wù)中心的任務(wù)是:接收輸入數(shù)據(jù)(即事務(wù));分析每個(gè)事務(wù)的類型;根據(jù)事務(wù)類型選擇執(zhí)行一條動(dòng)作路徑動(dòng)作路徑事務(wù)中心輸入路徑T主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.2事務(wù)流(續(xù)1)原配置

數(shù)據(jù)命令

類型讀用戶

命令判斷

命令讀系統(tǒng)

數(shù)據(jù)計(jì)算

統(tǒng)計(jì)輸出結(jié)果讀密碼更新配置比較

密碼校驗(yàn)

結(jié)果系統(tǒng)配置文件密碼文件事務(wù)中心參數(shù)計(jì)算密碼計(jì)算

結(jié)果四位

密碼驗(yàn)證

結(jié)果路徑1路徑3路徑2事務(wù)型流圖轉(zhuǎn)化成軟件結(jié)構(gòu)圖主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.3數(shù)據(jù)流圖映射到結(jié)構(gòu)圖的步驟復(fù)審和精化數(shù)據(jù)流圖確定數(shù)據(jù)流圖的類型(變換型、事務(wù)型)將DFD映射成初始結(jié)構(gòu)圖:采用變換分析或事務(wù)分析技術(shù),將DFD映射成初始結(jié)構(gòu)圖改進(jìn)初始結(jié)構(gòu)圖主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.4變換分析變換分析步驟劃定輸入流和輸出流的邊界,確定變換中心進(jìn)行第一級(jí)分解:將DFD映射成變換型的程序結(jié)構(gòu)圖進(jìn)行第二級(jí)分解:將DFD中的加工映射成結(jié)構(gòu)圖中的一個(gè)適當(dāng)?shù)哪K標(biāo)注輸入輸出信息:根據(jù)DFD,在初始結(jié)構(gòu)圖上標(biāo)注模塊之間傳遞的輸入信息和輸出信息主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系變換流映射結(jié)果總控模塊取得有效數(shù)據(jù)給出結(jié)果1計(jì)算格式化1給出結(jié)果2格式化2格式化3檢驗(yàn)編輯主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.3.5事務(wù)分析將事務(wù)型DFD映射成初始的結(jié)構(gòu)圖實(shí)例:銀行業(yè)務(wù)中有存款、取款、查詢余額、開戶、轉(zhuǎn)帳等多種事務(wù),這種軟件通常是接收一個(gè)事務(wù),然后根據(jù)事務(wù)的類型執(zhí)行一個(gè)事務(wù)處理的功能事務(wù)型的結(jié)構(gòu)圖如圖所示,包括:主控模塊:完成整個(gè)系統(tǒng)的功能接收模塊:接收輸入數(shù)據(jù)(事務(wù))發(fā)送模塊:根據(jù)輸入事務(wù)的類型,選擇一個(gè)動(dòng)作路徑控制模塊動(dòng)作路徑控制模塊:完成相應(yīng)的動(dòng)作路徑所執(zhí)行的子功能主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系事務(wù)流映射結(jié)果讀密碼事務(wù)控制讀用戶命令判斷命令密碼驗(yàn)證校驗(yàn)結(jié)果比較密碼配置更新計(jì)算統(tǒng)計(jì)輸出結(jié)果更新配置文件讀系統(tǒng)數(shù)據(jù)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系3.4初始結(jié)構(gòu)圖改進(jìn)減少模塊間的耦合度消除重復(fù)功能消除“管道”模塊模塊的大小適中避免高扇出應(yīng)盡可能研究整張結(jié)構(gòu)圖,而不是只考慮其中的一部分高扇出時(shí)重新分解(a)高扇出(b)重新分解主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系主要內(nèi)容軟件設(shè)計(jì)概述1軟件設(shè)計(jì)的基本原則2總體設(shè)計(jì)3詳細(xì)設(shè)計(jì)4案例分析5主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的任務(wù)詳細(xì)設(shè)計(jì)的工具詳細(xì)設(shè)計(jì)規(guī)約詳細(xì)設(shè)計(jì)評(píng)審的內(nèi)容主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.1詳細(xì)設(shè)計(jì)的任務(wù)算法設(shè)計(jì)用圖形、表格、語言等工具描述模塊處理的詳細(xì)算法數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)對(duì)需求分析、總體設(shè)計(jì)階段確定的概念性的數(shù)據(jù)類型進(jìn)行確切的定義物理設(shè)計(jì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理設(shè)計(jì),即確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.1詳細(xì)設(shè)計(jì)的任務(wù)(續(xù))其他設(shè)計(jì)代碼設(shè)計(jì)輸入輸出格式設(shè)計(jì)人機(jī)對(duì)話設(shè)計(jì)編寫詳細(xì)設(shè)計(jì)說明書(格式參見模版)評(píng)審主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2詳細(xì)設(shè)計(jì)的工具圖形工具程序流程圖盒圖(NS圖)PAD圖表格工具判定表和判定樹語言工具PDL語言主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.1程序流程圖程序流程圖獨(dú)立于任何一種程序設(shè)計(jì)語言,比較直觀、清晰、易于學(xué)習(xí)掌握五種基本控制結(jié)構(gòu)的表示主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.1程序流程圖(續(xù)1)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.1程序流程圖(續(xù)2)優(yōu)點(diǎn)對(duì)控制流程的描繪很直觀,便于初學(xué)者掌握缺點(diǎn)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。程序流程圖中用箭頭代表控制流,因此程序員不受約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.2盒圖(NS圖)由Nassi和Shneiderman提出的一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具。五種基本控制結(jié)構(gòu)的表示主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.2盒圖(NS圖)(續(xù)1)例如主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.2盒圖(NS圖)(續(xù)2)特點(diǎn)功能域(即一個(gè)特定控制結(jié)構(gòu)的作用域)明確,很容易從盒圖上看出。不可能任意轉(zhuǎn)移控制很容易確定局部和全程數(shù)據(jù)的作用域很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)盒圖沒有箭頭,不可以隨意轉(zhuǎn)移控制,不允許違背程序設(shè)計(jì)的原則主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.3PAD圖PAD是ProblemAnalysisDiagram的縮寫,由程序流程圖演化而來五種基本控制結(jié)構(gòu)的表示主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.3PAD圖(續(xù)1)主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.3PAD圖(續(xù)2)特點(diǎn)使用PAD圖設(shè)計(jì)的程序必然是結(jié)構(gòu)化程序PAD圖描繪的程序結(jié)構(gòu)十分清晰。用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。容易將PAD圖轉(zhuǎn)換成高級(jí)語言源程序PAD圖既可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。PAD圖的符號(hào)支持自頂向下、逐步求精方法的使用。PAD圖面向高級(jí)語言。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.4判定表與判定樹當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、盒圖或PAD都不易清楚地描述。而判定表卻能清晰地表達(dá)復(fù)雜的條件組合與應(yīng)做動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定樹是判定表的一種變形,其本質(zhì)一樣。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.4判定表與判定樹(續(xù)1)例1航空行李托運(yùn)費(fèi)的算法描述按規(guī)定: 重量不超過30kg的行李可以免費(fèi)托運(yùn)。 重量超過30kg時(shí),對(duì)超運(yùn)部分: 頭等艙國(guó)內(nèi)乘客收4元/kg; 其他艙位國(guó)內(nèi)乘客收6元/kg; 國(guó)外乘客收費(fèi)為國(guó)內(nèi)乘客的兩倍; 殘疾乘客的收費(fèi)為正常乘客的1/2。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.4判定表與判定樹(續(xù)2)W<30kgW>30kg國(guó)內(nèi)乘客頭等艙殘疾乘客免費(fèi)(W-30)*4(W-30)*6(W-30)*8(W-30)*12(W-30)*2(W-30)*3請(qǐng)同學(xué)們自己將這張表填好主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.4判定表與判定樹(續(xù)3)例2為了適應(yīng)判定表?xiàng)l件取值只能是“T”和“F”的情形,需將多分支判斷改為兩分支判斷.主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.4判定表與判定樹(續(xù)4)判定表的優(yōu)點(diǎn)能夠簡(jiǎn)潔,無二義性地描述所有的處理規(guī)則。判定表的缺點(diǎn)判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不能表達(dá)加工的順序,也不能表達(dá)循環(huán)結(jié)構(gòu)。主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.5設(shè)計(jì)性語言PDLPDL(ProgramDesignLanguage)是一種用于描述功能部件的算法設(shè)計(jì)和處理細(xì)節(jié)的語言,稱為設(shè)計(jì)性語言。它是一種偽碼。一般地,偽碼的語法規(guī)則分為“外語法”和“內(nèi)語法”外語法應(yīng)當(dāng)符合一般程序設(shè)計(jì)語言常用語句的語法規(guī)則;內(nèi)語法可以用英語中一些簡(jiǎn)單的句子、短語和通用的數(shù)學(xué)符號(hào),來描述程序應(yīng)執(zhí)行的功能主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.2.5設(shè)計(jì)性語言PDL(續(xù)1)PROCEDUREspellcheckIS

查找錯(cuò)拼的單詞

BEGIN

splitdocumentintosinglewords把整個(gè)文檔分離成單詞

lookupwordsindictionary

在字典中查這些單詞

displaywordswhicharenotindictionary

顯示字典中查不到的單詞

createanewdictionary造一新字典

ENDspellcheck例如主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.3軟件設(shè)計(jì)規(guī)約Ⅰ.工作范圍A.系統(tǒng)目標(biāo)B.運(yùn)行環(huán)境C.主要軟件需求D.設(shè)計(jì)約束∕限制Ⅱ.體系結(jié)構(gòu)設(shè)計(jì)A.數(shù)據(jù)流與控制流復(fù)審B.導(dǎo)出的程序結(jié)構(gòu)C.功能與程序交叉索引Ⅲ.數(shù)據(jù)設(shè)計(jì)A.數(shù)據(jù)對(duì)象與形成的數(shù)據(jù)結(jié)構(gòu)B.文件和數(shù)據(jù)庫(kù)結(jié)構(gòu)C.全局?jǐn)?shù)據(jù)D.文件∕數(shù)據(jù)與程序交叉索引Ⅳ.接口設(shè)計(jì)A.人機(jī)界面規(guī)格說明B.人機(jī)界面設(shè)計(jì)規(guī)則C.外部接口設(shè)計(jì)D.內(nèi)部接口設(shè)計(jì)規(guī)則主講教師包瓊湖北經(jīng)濟(jì)學(xué)院軟件工程系4.3軟件設(shè)計(jì)規(guī)約(續(xù)1)Ⅴ.各部件的過程設(shè)計(jì)A.處理與算法描述B.接口描述C.設(shè)計(jì)語言(或其它)描述D.使用的部件E.內(nèi)部程序邏輯描述F.注釋∕約束∕限制Ⅵ.運(yùn)行設(shè)計(jì)A.運(yùn)行部件組合B.運(yùn)行控制規(guī)則C.運(yùn)行時(shí)間安排Ⅶ.出錯(cuò)處理設(shè)計(jì)A.出錯(cuò)處理信息B.出錯(cuò)處理對(duì)策ⅰ設(shè)置后備ⅱ性能降級(jí)ⅲ恢復(fù)和再啟動(dòng)Ⅷ.安全保密

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論