軟件工程課件第4章-_第1頁
軟件工程課件第4章-_第2頁
軟件工程課件第4章-_第3頁
軟件工程課件第4章-_第4頁
軟件工程課件第4章-_第5頁
已閱讀5頁,還剩147頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

總體設(shè)計

總體的基本目的就是回答:“概括地說,系統(tǒng)應(yīng)該如何實現(xiàn)?”。

總體設(shè)計總體的基本目的就是回答:“概括地說,系統(tǒng)應(yīng)該如何在軟件開發(fā)時期中,設(shè)計階段是最富有活力、最需要發(fā)揮創(chuàng)造精神的階段。在軟件需求分析階段,已搞清楚了軟件“做什么”的問題,并把這些需求通過規(guī)格說明書描述了出來,這也是目標(biāo)系統(tǒng)的邏輯模型。在軟件開發(fā)時期中,設(shè)計階段是最富有活力、最需

進入了設(shè)計階段,要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著手實現(xiàn)軟件的需求,并將設(shè)計的結(jié)果反映在“設(shè)計規(guī)格說明書”文檔中,所以軟件設(shè)計是一個把軟件需求轉(zhuǎn)換為軟件表示的過程,最初這種表示只是描述了軟件的總體的體系結(jié)構(gòu),稱為軟件總體設(shè)計或結(jié)構(gòu)設(shè)計。然后對結(jié)構(gòu)進一步細化,稱為詳細設(shè)計或結(jié)構(gòu)設(shè)計。進入了設(shè)計階段,要把軟件“做什么”的邏總體設(shè)計4.1總體設(shè)計的過程4.2軟件設(shè)計的概念和原理4.3啟發(fā)式規(guī)則4.4圖形工具4.5面向數(shù)據(jù)流的設(shè)計方法4.6小結(jié)總體設(shè)計

軟件設(shè)計在開發(fā)階段

中的重要性總體設(shè)計要著手實現(xiàn)軟件的需求,即要著手解決“怎么做”的問題?;灸康模壕褪腔卮稹案爬ǖ卣f,系統(tǒng)應(yīng)該如何實現(xiàn)?”這個問題。軟件設(shè)計在開發(fā)階段

中的重要性總體設(shè)計要著手實現(xiàn)軟件的需求

重要任務(wù):設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。重要任務(wù):設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪4.1總體設(shè)計的過程想供選擇的方案選取合理的方案推薦最佳方案功能分解設(shè)計軟件結(jié)構(gòu)數(shù)據(jù)庫設(shè)計制定測試計劃書寫文檔審查和復(fù)審

4.1總體設(shè)計的過程想供選擇的方案軟件設(shè)計的任務(wù)基本任務(wù):1、設(shè)計軟件系統(tǒng)結(jié)構(gòu)(簡稱軟件結(jié)構(gòu))為了實現(xiàn)目標(biāo)系統(tǒng),最終必須設(shè)計出組成這個系統(tǒng)的所有程序和數(shù)據(jù)庫(文件),對于程序,則首先進行結(jié)構(gòu)設(shè)計,具體為:軟件設(shè)計的任務(wù)基本任務(wù):結(jié)構(gòu)設(shè)計(1)采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成模塊。(2)確定每個模塊的功能。(3)確定模塊之間的調(diào)用關(guān)系。(4)確定模塊之間的接口,即模塊之間傳遞的信息。(5)評價模塊結(jié)構(gòu)的質(zhì)量。結(jié)構(gòu)設(shè)計(1)采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成從以上內(nèi)容看,軟件結(jié)構(gòu)的設(shè)計是以模塊為基礎(chǔ)的,在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu)。設(shè)計階段,以需求分析的結(jié)果為依據(jù),從實現(xiàn)的角度進一步劃分為模塊,并組成模塊的層次結(jié)構(gòu)。從以上內(nèi)容看,軟件結(jié)構(gòu)的設(shè)計是以模塊為基礎(chǔ)的

軟件結(jié)構(gòu)的設(shè)計是總體設(shè)計關(guān)鍵的一步,直接影響到下一階段詳細設(shè)計與編碼的工作。軟件系統(tǒng)的質(zhì)量及一些整體特性都在軟件結(jié)構(gòu)的設(shè)計中決定。因此應(yīng)由經(jīng)驗豐富的軟件人員擔(dān)任,采用一定的設(shè)計方法,選取合理設(shè)計的方案。軟件結(jié)構(gòu)的設(shè)計是總體設(shè)計關(guān)鍵的一步,直接影2、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計對于大型數(shù)據(jù)處理的軟件系統(tǒng),除了控制結(jié)構(gòu)的模塊設(shè)計外,數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計也是重要的。(1)數(shù)據(jù)結(jié)構(gòu)的設(shè)計。逐步細化的方法也適用于數(shù)據(jù)結(jié)構(gòu)的設(shè)計。2、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計對于大型數(shù)據(jù)處理的軟(2)數(shù)據(jù)庫設(shè)計。指數(shù)據(jù)存儲文件的設(shè)計,主要進行以下幾方面設(shè)計:①概念設(shè)計。在數(shù)據(jù)分析的基礎(chǔ)上,采用自底向上的方法從用戶角度進行視圖設(shè)計,一般用ER模型來表示數(shù)據(jù)模型,這是一個概念模型。②邏輯設(shè)計。③物理設(shè)計。(2)數(shù)據(jù)庫設(shè)計。指數(shù)據(jù)存儲文件的設(shè)計,主要進行以下幾方面設(shè)3.編寫總體設(shè)計文檔主要有:(1)總體設(shè)計說明書。(2)數(shù)據(jù)庫設(shè)計說明書,主要給出所使用的DBMS簡介、數(shù)據(jù)庫的概念模型、邏輯設(shè)計、結(jié)果。(3)用戶手冊,對需求分析階段編寫的用戶手冊進行補充。(4)修訂測試計劃,對測試策略、方法、步驟提出明確要求。3.編寫總體設(shè)計文檔主要有:(1)總體設(shè)計說明書。(2)數(shù)據(jù)4.評審最后應(yīng)該對總體設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查和復(fù)審,這是在所有步驟中必不可少的,但也是最容易忽視的,請大家勿必注意到這一步。4.評審最后應(yīng)該對總體設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查和復(fù)審,這4.2軟件設(shè)計的概念和原理4.2.1模塊化4.2.2抽象4.2.3信息隱蔽和局部化4.2.4模塊獨立

4.2軟件設(shè)計的概念和原理4.2.1模塊化

4.2.1模塊(module)化模塊:在程序中是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,或者是單獨命名和編址的元素,如高級語言中的過程、函數(shù)、子程序等等。在軟件的體系結(jié)構(gòu)中,模塊是可組合、分解和更換的單元。模塊具有以下幾種基本屬性:接口:指模塊的輸入與輸出。功能:指模塊實現(xiàn)什么功能。邏輯:描述內(nèi)部如何實現(xiàn)要求的功能及所需的數(shù)據(jù)。4.2.1模塊(module)化模塊:在程序中是數(shù)據(jù)說明、狀態(tài):該模塊的運行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內(nèi)部特性。模塊化:指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。每個模塊完成一個特定的子功能,所有的模塊按某種方法組裝起來,成為一個整體,完成整個系統(tǒng)所要求的功能。模塊化是軟件解決復(fù)雜問題所具備的手段,為了說明這一點,可將問題的復(fù)雜性和工作量的關(guān)系進行推理。狀態(tài):該模塊的運行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。設(shè)問題x,表示它的復(fù)雜性函數(shù)為C(x),解決它所需要的工作量函數(shù)為E(x)。對于問題P1和P2,如果C(P1)>C(P2)即P1比P2復(fù)雜那么E(P1)>E(P2)即問題越復(fù)雜,所需要的工作量越大。根據(jù)解決一般問題的經(jīng)驗,規(guī)律是:C(P1+P2)>C(P1)+C(P2)即一個問題由兩個問題組合而成的復(fù)雜度大于分別考慮每個問題的復(fù)雜度之和。這樣,可推出:E(P1+P2)>E(P1)+E(P2)由此可見,開發(fā)一個大而復(fù)雜的軟件系統(tǒng),將它進行適當(dāng)?shù)姆纸?,不但可降低其?fù)雜性,還可減少開發(fā)工作量,從而降低開發(fā)成本,提高軟件生產(chǎn)率,這就是模塊化的依據(jù)。設(shè)問題x,表示它的復(fù)雜性函數(shù)為C(x),解決它所需要的工作量模塊化和軟件成本如果無限地分割軟件,最后為了開發(fā)軟件而需要的工作量也就小得可以忽略了?當(dāng)模塊數(shù)目增加時每個模塊將減小,開發(fā)單個模塊需要的成本(工作量)確實減小了;但是隨著模塊數(shù)目增加,設(shè)計模塊間接口所需要的工作量將增加。模塊化和軟件成本如果無限地分割軟件,最后為了開發(fā)軟件而需要的4.2.2抽象

抽象:是認識復(fù)雜現(xiàn)象過程中使用的思維工具,即抽出事物本質(zhì)的共同特性而暫不考慮它的細節(jié),不考慮其它因素。

4.2.2抽象4.2.3信息隱蔽和局部化信息隱蔽:把系統(tǒng)分解為模塊時應(yīng)該遵守的指導(dǎo)思想,在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說,是不能訪問的。4.2.3信息隱蔽和局部化信息隱藏的目的是為了提高模塊的獨立性,當(dāng)修改或維護模塊時減少把一個模塊錯誤擴散到其它模塊中去的機會。信息隱藏的目的是為了提高模塊的獨立性,當(dāng)修改或維護模塊時減少4.2.4模塊獨立性(moduleindependence)

模塊獨立性:概括了把軟件劃分為模塊時要遵守的準(zhǔn)則,也是判斷模塊構(gòu)造是不是合理的標(biāo)準(zhǔn)。堅持模塊的獨立性,一般認為是獲得良好設(shè)計的關(guān)鍵。每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。4.2.4模塊獨立性(moduleindependence1、耦合性(coupling)也稱塊間的聯(lián)系。指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。(1)非直接耦合(NoDirectCoupling)。沒有信息傳遞(2)數(shù)據(jù)耦合(DataCoupling)。參數(shù):簡單變量(3)特征耦合(StampCoupling)。參數(shù):數(shù)據(jù)結(jié)構(gòu)返回1、耦合性(coupling)返回耦合性(coupling)(4)控制耦合(ControlCoupling)。傳遞:開關(guān)量、標(biāo)志等(5)外部耦合(ExternalCoupling).訪問一個全局量。(6)公共耦合(CommonCoupling)。訪問的是全局變量或數(shù)據(jù)結(jié)構(gòu)等(7)內(nèi)容耦合(ContentCoupling)。直接調(diào)用另一模塊的數(shù)據(jù)或直接轉(zhuǎn)移到另一模塊中去。耦合性(coupling)(4)控制耦合(Contr

123456弱耦合中耦合較強耦合強耦合弱 強模塊間的耦合

123456弱耦合2、內(nèi)聚性(cohesion)又稱塊內(nèi)聯(lián)系。指模塊的功能強度的度量,即一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。若一個模塊內(nèi)各元素(語句之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越高,內(nèi)聚性有以下幾種類型:2、內(nèi)聚性(cohesion)(1)偶然性內(nèi)聚(CoincidentalCohesion):塊內(nèi)各組成成份在功能上是互不相關(guān)的。(2)邏輯內(nèi)聚(LogicalCohesion):通常由若干個邏輯功能相似的成份組成。(3)時間內(nèi)聚(TemporalCohesion):這類模塊所含的成分,是由相同的執(zhí)行時間將它們聯(lián)結(jié)到一起的。(1)偶然性內(nèi)聚(CoincidentalCohesion巧合內(nèi)聚(CoincidentalCohesion)

巧合內(nèi)聚又稱為偶然內(nèi)聚。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。巧合內(nèi)聚(CoincidentalCohesion)邏輯內(nèi)聚(LogicalCohesion)

這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。邏輯內(nèi)聚(LogicalCohesion)

這種模塊把幾種時間內(nèi)聚(ClassicalCohesion)

時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。時間內(nèi)聚(ClassicalCohesion)

時間內(nèi)聚又(4)過程性內(nèi)聚(proceduralcohesion):當(dāng)一個模塊中包含的一組任務(wù)必需按照某一特定的次序執(zhí)行時,就稱為過程性模塊。(5)通信內(nèi)聚(CommunicationalCohesion):這類模塊的標(biāo)志是,模塊內(nèi)部的各個成份都使用同一個輸入數(shù)據(jù),或者產(chǎn)生同一個輸出數(shù)據(jù)。它們借公用數(shù)據(jù)而聯(lián)系在一起,故稱為通訊性內(nèi)聚。(4)過程性內(nèi)聚(proceduralcohesion)過程內(nèi)聚(ProceduralCohesion)

使用流程圖做為工具設(shè)計程序時,把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。過程內(nèi)聚(ProceduralCohesion)通信內(nèi)聚(CommunicationCohesion)

如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。通信內(nèi)聚(CommunicationCohesion)

軟件工程課件第4章-信息內(nèi)聚(InformationalCohesion)

這種模塊完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。信息內(nèi)聚(InformationalCohesion)軟件工程課件第4章-信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個模塊內(nèi),不為別的模塊所知曉。信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的(6)順序內(nèi)聚(SequentialCohesion):這類模塊中的各組成部分是順序執(zhí)行的。在通常情況下,一個處理框的輸出就是下一個處理框的輸入。(7)功能內(nèi)聚(FunctionalCohesion):在這類模塊中,所有的成份結(jié)合在一起,用于完成一個單一的功能。(6)順序內(nèi)聚(SequentialCohesion):這功能內(nèi)聚(FunctionalCohesion)

一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。功能內(nèi)聚(FunctionalCohesion)

一個?!耙粋€模塊,一個功能”,已成為模塊化設(shè)計的一條準(zhǔn)則,也是設(shè)計人員爭取的目標(biāo)。“一個模塊,一個功能”,已成為模塊化設(shè)計的一條準(zhǔn)則,也是設(shè)計1234567低內(nèi)聚中內(nèi)聚高內(nèi)聚

弱強模塊內(nèi)聚1234567返回4.3啟發(fā)式規(guī)則改進軟件結(jié)構(gòu)提高模塊獨立性模塊規(guī)模應(yīng)該適中深度、寬度、扇入和扇出都應(yīng)適當(dāng)模塊的作用域應(yīng)該在控制域之內(nèi)力爭降低模塊接口的復(fù)雜程度設(shè)計單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測返回4.3啟發(fā)式規(guī)則4.3.1改進軟件結(jié)構(gòu)提高模塊獨立性劃分模塊時盡量做到高內(nèi)聚,低耦合,保持模塊相對獨立性,并以此原則優(yōu)化初始的軟件結(jié)構(gòu)。(1)如果若干模塊之間耦合強度過高,每個模塊內(nèi)功能不復(fù)雜,可將它們合并,以減少信息的傳遞和公共區(qū)的引用。(2)若有多個相關(guān)模塊,應(yīng)對它們的功能進行分析,消去重復(fù)功能。4.3.1改進軟件結(jié)構(gòu)提高模塊獨立性劃分模塊時盡量做到高內(nèi)聚4.3.2模塊規(guī)模應(yīng)該適中在考慮模塊的獨立性同時,為了增加可理解性,模塊的大小最好在50-150條語句左右,可以用1-2頁打印紙打印,便于人們閱讀與研究。4.3.2模塊規(guī)模應(yīng)該適中在考慮模塊的獨立性同時,為了增加模塊的大小要適中

模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句行數(shù)在50~100左右,保持在一頁紙之內(nèi),最多不超過500行。模塊的大小要適中

模塊的大小,可以用模塊中所含語句的數(shù)量的多4.3.3深度、寬度、扇入和扇出都應(yīng)適當(dāng)深度是軟件結(jié)構(gòu)設(shè)計完成后觀察到的情況,能粗略地反映系統(tǒng)的規(guī)模和復(fù)雜程度,寬度也能反映系統(tǒng)的復(fù)雜情況。寬度與模塊扇出有關(guān),一個模塊的扇出太多,說明本模塊過分復(fù)雜,缺少中間層。單一功能模塊的扇入數(shù)大比較好,說明本模塊為上層幾個模塊共享的共用模塊,重用率高。但是不能把彼此無關(guān)的功能湊在一起形成一個通用的超級模塊,雖然它扇入高,但低內(nèi)聚。因此非單一功能的模塊扇入高時應(yīng)重新分解,以消除控制耦合的情況。軟件結(jié)構(gòu)從形態(tài)上,總的考慮是頂層扇出數(shù)較高一些,中間層扇出數(shù)較低一些,底層扇入數(shù)較高一些。4.3.3深度、寬度、扇入和扇出都應(yīng)適當(dāng)深度是軟件結(jié)構(gòu)設(shè)計程序的系統(tǒng)結(jié)構(gòu)圖程序的系統(tǒng)結(jié)構(gòu)圖4.3.4模塊的作用域應(yīng)該在控制域之內(nèi)一個模塊的作用范圍應(yīng)在其控制范圍之內(nèi),且判定所在的模塊應(yīng)與受其影響的模塊在層次上盡量靠近。

在軟件結(jié)構(gòu)中,由于存在著不同事務(wù)處理的需要,某一層上的模塊會存在著判斷處理,這樣可能影響其他層的模塊處理。為了保證含有判定功能模塊的軟件設(shè)計的質(zhì)量,引入了模塊的作用范圍(或稱影響范圍)與控制范圍的概念。

一個模塊的作用范圍指受該模塊內(nèi)一個判定影響的所有模塊的集合。一個模塊的控制范圍指模塊本身以及其所有下屬模塊(直接或間接從屬于它的模塊)的集合。4.3.4模塊的作用域應(yīng)該在控制域之內(nèi)一個模塊的作用范圍應(yīng)在模塊的作用范圍應(yīng)在控制范圍之內(nèi)

模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。

模塊的作用范圍應(yīng)在控制范圍之內(nèi)軟件工程課件第4章-4.3.5力爭降低模塊接口的復(fù)雜程度模塊的接口要簡單、清晰、含義明確,便于理解,易于實現(xiàn)、測試與維護。4.3.5力爭降低模塊接口的復(fù)雜程度模塊的接口要簡單、清晰、

4.3.6設(shè)計單入口單出口的模塊模塊間不要出現(xiàn)內(nèi)容耦合。這也是結(jié)構(gòu)化設(shè)計的一個要求。4.3.6設(shè)計單入口單出口的模塊

4.3.7模塊功能應(yīng)該可以預(yù)測只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個模塊的功能就是可以預(yù)測的。帶有內(nèi)部“存儲器”的模塊的功能可能是不可預(yù)測的,因為它的輸出可能取決于內(nèi)部存儲器(例如某個標(biāo)記)的狀態(tài)。4.3.7模塊功能應(yīng)該可以預(yù)測4.4圖形工具4.4.1層次圖和HIPO圖4.4.2結(jié)構(gòu)圖4.4圖形工具4.4.1層次圖和HIPO圖4.4.1層次圖和HIPO圖層次圖(SC)用來描繪軟件的層次結(jié)構(gòu)。SC圖是SD方法在總體設(shè)計中使用的主要工具,用來顯示軟件的組成模塊及其調(diào)用關(guān)系。層次圖中的一個矩形代表一個模塊,用帶箭頭的連線表示模塊間的調(diào)用關(guān)系。在調(diào)用線的兩旁,應(yīng)標(biāo)出傳入和傳出模塊的數(shù)據(jù)流。1、模塊2、調(diào)用關(guān)系3、傳入/傳出數(shù)據(jù)流HIPO圖(HierarchyPlusInput/Processing/Output)是美國IBM公司70年代發(fā)展起來的表示軟件系統(tǒng)結(jié)構(gòu)的工具。它既可以描述軟件總的模塊層次結(jié)構(gòu)――H圖,又可以描述每個模塊輸入/輸出數(shù)據(jù)、處理功能及模塊調(diào)用的詳細情況――IPO圖。4.4.1層次圖和HIPO圖層次圖(SC)用來描繪軟件的層4.4.2結(jié)構(gòu)圖SC圖是用來顯示軟件的組成模塊及其調(diào)用關(guān)系。SD方法約定,用矩形來表示模塊,用帶箭頭的連線表示模塊間的調(diào)用關(guān)系。在調(diào)用關(guān)系的兩旁,應(yīng)標(biāo)出傳入和傳出模塊的數(shù)據(jù)流。(1)模塊的表示符號下圖顯示了SC圖允許使用的6種模塊。其中傳入、傳出和變換模塊用來組成變換結(jié)構(gòu)中的各個相應(yīng)部分。源模塊是不調(diào)用其它模塊的傳入模塊,只用于傳入部分的始端。漏模塊是不調(diào)用其它模塊的傳出模塊,僅用于傳出部分的末端。控制模塊是只調(diào)用其它模塊,不受其它模塊調(diào)用的模塊。4.4.2結(jié)構(gòu)圖SC圖是用來顯示軟件的組成模塊及其調(diào)用關(guān)系A(chǔ))傳入B)

傳出C)變換D)源E)

漏F)

控制

(1)簡單調(diào)用(2)選擇調(diào)用

(3)循環(huán)調(diào)用

A)傳入結(jié)構(gòu)圖結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定的符號表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞結(jié)構(gòu)圖結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定①模塊:模塊用矩形框表示,并用模塊的名字標(biāo)記它。①模塊:模塊用矩形框表示,并用模塊的名字標(biāo)記它。②模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊,表示調(diào)用模塊調(diào)用了被調(diào)用模塊。②模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用③模塊間的信息傳遞:當(dāng)一個模塊調(diào)用另一個模塊時,調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運行。而被調(diào)用模塊在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊③模塊間的信息傳遞:當(dāng)一個模塊調(diào)用另一個模塊時,調(diào)用模塊把④在模塊A的箭頭尾部標(biāo)以一個菱形符號,表示模塊A有條件地調(diào)用另一個模塊B。當(dāng)一個在調(diào)用箭頭尾部標(biāo)以一個弧形符號,表示模塊A反復(fù)調(diào)用模塊C和模塊D。④在模塊A的箭頭尾部標(biāo)以一個菱形符號,表示模塊A有條件地調(diào)

4.5面向數(shù)據(jù)流的設(shè)計方法4.5.1概念4.5.2變換分析4.5.3事務(wù)分析4.5面向數(shù)據(jù)流的設(shè)計方法4.5.1概念返回1、變換流

傳入路徑:afferentpath變換中心:transformcenter傳出路徑:efferentpath2、事務(wù)流一條接受路徑:receptionpath一個事務(wù)中心:transactioncenter若干條動作路徑:actionpath變換中心事務(wù)中心返回1、變換流變換中心事務(wù)中心在系統(tǒng)結(jié)構(gòu)圖中的模塊傳入模塊─從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊─從上級模塊獲得數(shù)據(jù),進行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。在系統(tǒng)結(jié)構(gòu)圖中的模塊傳入模塊─從下屬模塊取得數(shù)據(jù),經(jīng)過某變換模塊─它從上級模塊取得數(shù)據(jù),進行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級模塊。它加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流。協(xié)調(diào)模塊─對所有下屬模塊進行協(xié)調(diào)和管理的模塊。變換模塊─它從上級模塊取得數(shù)據(jù),進行特定的處理,轉(zhuǎn)換成其4.5.2變換分析變換分析方法由以下四步組成:重畫數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;進行一級分解,設(shè)計上層模塊;進行二級分解,設(shè)計輸入、輸出和中心變換部分的中、下層模塊。4.5.2變換分析變換分析方法由以下四步組成:變換型系統(tǒng)結(jié)構(gòu)圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。變換型系統(tǒng)結(jié)構(gòu)圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即軟件工程課件第4章-4.4.3事務(wù)分析

在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)。與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。4.4.3事務(wù)分析

在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,

4.5.4軟件模塊結(jié)構(gòu)的改進消除重復(fù)功能,改善軟件結(jié)構(gòu)

完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法。

②局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。4.5.4軟件模塊結(jié)構(gòu)的改進消除重復(fù)功能,改善軟件結(jié)構(gòu)

①消除重復(fù)功能,改善軟件結(jié)構(gòu)

完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法。

②局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。消除重復(fù)功能,改善軟件結(jié)構(gòu)

①完全相似:在結(jié)構(gòu)上完全相似,軟件工程課件第4章-總體設(shè)計

總體的基本目的就是回答:“概括地說,系統(tǒng)應(yīng)該如何實現(xiàn)?”。

總體設(shè)計總體的基本目的就是回答:“概括地說,系統(tǒng)應(yīng)該如何在軟件開發(fā)時期中,設(shè)計階段是最富有活力、最需要發(fā)揮創(chuàng)造精神的階段。在軟件需求分析階段,已搞清楚了軟件“做什么”的問題,并把這些需求通過規(guī)格說明書描述了出來,這也是目標(biāo)系統(tǒng)的邏輯模型。在軟件開發(fā)時期中,設(shè)計階段是最富有活力、最需

進入了設(shè)計階段,要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著手實現(xiàn)軟件的需求,并將設(shè)計的結(jié)果反映在“設(shè)計規(guī)格說明書”文檔中,所以軟件設(shè)計是一個把軟件需求轉(zhuǎn)換為軟件表示的過程,最初這種表示只是描述了軟件的總體的體系結(jié)構(gòu),稱為軟件總體設(shè)計或結(jié)構(gòu)設(shè)計。然后對結(jié)構(gòu)進一步細化,稱為詳細設(shè)計或結(jié)構(gòu)設(shè)計。進入了設(shè)計階段,要把軟件“做什么”的邏總體設(shè)計4.1總體設(shè)計的過程4.2軟件設(shè)計的概念和原理4.3啟發(fā)式規(guī)則4.4圖形工具4.5面向數(shù)據(jù)流的設(shè)計方法4.6小結(jié)總體設(shè)計

軟件設(shè)計在開發(fā)階段

中的重要性總體設(shè)計要著手實現(xiàn)軟件的需求,即要著手解決“怎么做”的問題?;灸康模壕褪腔卮稹案爬ǖ卣f,系統(tǒng)應(yīng)該如何實現(xiàn)?”這個問題。軟件設(shè)計在開發(fā)階段

中的重要性總體設(shè)計要著手實現(xiàn)軟件的需求

重要任務(wù):設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。重要任務(wù):設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪4.1總體設(shè)計的過程想供選擇的方案選取合理的方案推薦最佳方案功能分解設(shè)計軟件結(jié)構(gòu)數(shù)據(jù)庫設(shè)計制定測試計劃書寫文檔審查和復(fù)審

4.1總體設(shè)計的過程想供選擇的方案軟件設(shè)計的任務(wù)基本任務(wù):1、設(shè)計軟件系統(tǒng)結(jié)構(gòu)(簡稱軟件結(jié)構(gòu))為了實現(xiàn)目標(biāo)系統(tǒng),最終必須設(shè)計出組成這個系統(tǒng)的所有程序和數(shù)據(jù)庫(文件),對于程序,則首先進行結(jié)構(gòu)設(shè)計,具體為:軟件設(shè)計的任務(wù)基本任務(wù):結(jié)構(gòu)設(shè)計(1)采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成模塊。(2)確定每個模塊的功能。(3)確定模塊之間的調(diào)用關(guān)系。(4)確定模塊之間的接口,即模塊之間傳遞的信息。(5)評價模塊結(jié)構(gòu)的質(zhì)量。結(jié)構(gòu)設(shè)計(1)采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成從以上內(nèi)容看,軟件結(jié)構(gòu)的設(shè)計是以模塊為基礎(chǔ)的,在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu)。設(shè)計階段,以需求分析的結(jié)果為依據(jù),從實現(xiàn)的角度進一步劃分為模塊,并組成模塊的層次結(jié)構(gòu)。從以上內(nèi)容看,軟件結(jié)構(gòu)的設(shè)計是以模塊為基礎(chǔ)的

軟件結(jié)構(gòu)的設(shè)計是總體設(shè)計關(guān)鍵的一步,直接影響到下一階段詳細設(shè)計與編碼的工作。軟件系統(tǒng)的質(zhì)量及一些整體特性都在軟件結(jié)構(gòu)的設(shè)計中決定。因此應(yīng)由經(jīng)驗豐富的軟件人員擔(dān)任,采用一定的設(shè)計方法,選取合理設(shè)計的方案。軟件結(jié)構(gòu)的設(shè)計是總體設(shè)計關(guān)鍵的一步,直接影2、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計對于大型數(shù)據(jù)處理的軟件系統(tǒng),除了控制結(jié)構(gòu)的模塊設(shè)計外,數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計也是重要的。(1)數(shù)據(jù)結(jié)構(gòu)的設(shè)計。逐步細化的方法也適用于數(shù)據(jù)結(jié)構(gòu)的設(shè)計。2、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計對于大型數(shù)據(jù)處理的軟(2)數(shù)據(jù)庫設(shè)計。指數(shù)據(jù)存儲文件的設(shè)計,主要進行以下幾方面設(shè)計:①概念設(shè)計。在數(shù)據(jù)分析的基礎(chǔ)上,采用自底向上的方法從用戶角度進行視圖設(shè)計,一般用ER模型來表示數(shù)據(jù)模型,這是一個概念模型。②邏輯設(shè)計。③物理設(shè)計。(2)數(shù)據(jù)庫設(shè)計。指數(shù)據(jù)存儲文件的設(shè)計,主要進行以下幾方面設(shè)3.編寫總體設(shè)計文檔主要有:(1)總體設(shè)計說明書。(2)數(shù)據(jù)庫設(shè)計說明書,主要給出所使用的DBMS簡介、數(shù)據(jù)庫的概念模型、邏輯設(shè)計、結(jié)果。(3)用戶手冊,對需求分析階段編寫的用戶手冊進行補充。(4)修訂測試計劃,對測試策略、方法、步驟提出明確要求。3.編寫總體設(shè)計文檔主要有:(1)總體設(shè)計說明書。(2)數(shù)據(jù)4.評審最后應(yīng)該對總體設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查和復(fù)審,這是在所有步驟中必不可少的,但也是最容易忽視的,請大家勿必注意到這一步。4.評審最后應(yīng)該對總體設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查和復(fù)審,這4.2軟件設(shè)計的概念和原理4.2.1模塊化4.2.2抽象4.2.3信息隱蔽和局部化4.2.4模塊獨立

4.2軟件設(shè)計的概念和原理4.2.1模塊化

4.2.1模塊(module)化模塊:在程序中是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,或者是單獨命名和編址的元素,如高級語言中的過程、函數(shù)、子程序等等。在軟件的體系結(jié)構(gòu)中,模塊是可組合、分解和更換的單元。模塊具有以下幾種基本屬性:接口:指模塊的輸入與輸出。功能:指模塊實現(xiàn)什么功能。邏輯:描述內(nèi)部如何實現(xiàn)要求的功能及所需的數(shù)據(jù)。4.2.1模塊(module)化模塊:在程序中是數(shù)據(jù)說明、狀態(tài):該模塊的運行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內(nèi)部特性。模塊化:指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。每個模塊完成一個特定的子功能,所有的模塊按某種方法組裝起來,成為一個整體,完成整個系統(tǒng)所要求的功能。模塊化是軟件解決復(fù)雜問題所具備的手段,為了說明這一點,可將問題的復(fù)雜性和工作量的關(guān)系進行推理。狀態(tài):該模塊的運行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。設(shè)問題x,表示它的復(fù)雜性函數(shù)為C(x),解決它所需要的工作量函數(shù)為E(x)。對于問題P1和P2,如果C(P1)>C(P2)即P1比P2復(fù)雜那么E(P1)>E(P2)即問題越復(fù)雜,所需要的工作量越大。根據(jù)解決一般問題的經(jīng)驗,規(guī)律是:C(P1+P2)>C(P1)+C(P2)即一個問題由兩個問題組合而成的復(fù)雜度大于分別考慮每個問題的復(fù)雜度之和。這樣,可推出:E(P1+P2)>E(P1)+E(P2)由此可見,開發(fā)一個大而復(fù)雜的軟件系統(tǒng),將它進行適當(dāng)?shù)姆纸?,不但可降低其?fù)雜性,還可減少開發(fā)工作量,從而降低開發(fā)成本,提高軟件生產(chǎn)率,這就是模塊化的依據(jù)。設(shè)問題x,表示它的復(fù)雜性函數(shù)為C(x),解決它所需要的工作量模塊化和軟件成本如果無限地分割軟件,最后為了開發(fā)軟件而需要的工作量也就小得可以忽略了?當(dāng)模塊數(shù)目增加時每個模塊將減小,開發(fā)單個模塊需要的成本(工作量)確實減小了;但是隨著模塊數(shù)目增加,設(shè)計模塊間接口所需要的工作量將增加。模塊化和軟件成本如果無限地分割軟件,最后為了開發(fā)軟件而需要的4.2.2抽象

抽象:是認識復(fù)雜現(xiàn)象過程中使用的思維工具,即抽出事物本質(zhì)的共同特性而暫不考慮它的細節(jié),不考慮其它因素。

4.2.2抽象4.2.3信息隱蔽和局部化信息隱蔽:把系統(tǒng)分解為模塊時應(yīng)該遵守的指導(dǎo)思想,在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說,是不能訪問的。4.2.3信息隱蔽和局部化信息隱藏的目的是為了提高模塊的獨立性,當(dāng)修改或維護模塊時減少把一個模塊錯誤擴散到其它模塊中去的機會。信息隱藏的目的是為了提高模塊的獨立性,當(dāng)修改或維護模塊時減少4.2.4模塊獨立性(moduleindependence)

模塊獨立性:概括了把軟件劃分為模塊時要遵守的準(zhǔn)則,也是判斷模塊構(gòu)造是不是合理的標(biāo)準(zhǔn)。堅持模塊的獨立性,一般認為是獲得良好設(shè)計的關(guān)鍵。每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。4.2.4模塊獨立性(moduleindependence1、耦合性(coupling)也稱塊間的聯(lián)系。指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。(1)非直接耦合(NoDirectCoupling)。沒有信息傳遞(2)數(shù)據(jù)耦合(DataCoupling)。參數(shù):簡單變量(3)特征耦合(StampCoupling)。參數(shù):數(shù)據(jù)結(jié)構(gòu)返回1、耦合性(coupling)返回耦合性(coupling)(4)控制耦合(ControlCoupling)。傳遞:開關(guān)量、標(biāo)志等(5)外部耦合(ExternalCoupling).訪問一個全局量。(6)公共耦合(CommonCoupling)。訪問的是全局變量或數(shù)據(jù)結(jié)構(gòu)等(7)內(nèi)容耦合(ContentCoupling)。直接調(diào)用另一模塊的數(shù)據(jù)或直接轉(zhuǎn)移到另一模塊中去。耦合性(coupling)(4)控制耦合(Contr

123456弱耦合中耦合較強耦合強耦合弱 強模塊間的耦合

123456弱耦合2、內(nèi)聚性(cohesion)又稱塊內(nèi)聯(lián)系。指模塊的功能強度的度量,即一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。若一個模塊內(nèi)各元素(語句之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越高,內(nèi)聚性有以下幾種類型:2、內(nèi)聚性(cohesion)(1)偶然性內(nèi)聚(CoincidentalCohesion):塊內(nèi)各組成成份在功能上是互不相關(guān)的。(2)邏輯內(nèi)聚(LogicalCohesion):通常由若干個邏輯功能相似的成份組成。(3)時間內(nèi)聚(TemporalCohesion):這類模塊所含的成分,是由相同的執(zhí)行時間將它們聯(lián)結(jié)到一起的。(1)偶然性內(nèi)聚(CoincidentalCohesion巧合內(nèi)聚(CoincidentalCohesion)

巧合內(nèi)聚又稱為偶然內(nèi)聚。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。巧合內(nèi)聚(CoincidentalCohesion)邏輯內(nèi)聚(LogicalCohesion)

這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。邏輯內(nèi)聚(LogicalCohesion)

這種模塊把幾種時間內(nèi)聚(ClassicalCohesion)

時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。時間內(nèi)聚(ClassicalCohesion)

時間內(nèi)聚又(4)過程性內(nèi)聚(proceduralcohesion):當(dāng)一個模塊中包含的一組任務(wù)必需按照某一特定的次序執(zhí)行時,就稱為過程性模塊。(5)通信內(nèi)聚(CommunicationalCohesion):這類模塊的標(biāo)志是,模塊內(nèi)部的各個成份都使用同一個輸入數(shù)據(jù),或者產(chǎn)生同一個輸出數(shù)據(jù)。它們借公用數(shù)據(jù)而聯(lián)系在一起,故稱為通訊性內(nèi)聚。(4)過程性內(nèi)聚(proceduralcohesion)過程內(nèi)聚(ProceduralCohesion)

使用流程圖做為工具設(shè)計程序時,把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。過程內(nèi)聚(ProceduralCohesion)通信內(nèi)聚(CommunicationCohesion)

如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。通信內(nèi)聚(CommunicationCohesion)

軟件工程課件第4章-信息內(nèi)聚(InformationalCohesion)

這種模塊完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。信息內(nèi)聚(InformationalCohesion)軟件工程課件第4章-信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個模塊內(nèi),不為別的模塊所知曉。信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的(6)順序內(nèi)聚(SequentialCohesion):這類模塊中的各組成部分是順序執(zhí)行的。在通常情況下,一個處理框的輸出就是下一個處理框的輸入。(7)功能內(nèi)聚(FunctionalCohesion):在這類模塊中,所有的成份結(jié)合在一起,用于完成一個單一的功能。(6)順序內(nèi)聚(SequentialCohesion):這功能內(nèi)聚(FunctionalCohesion)

一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。功能內(nèi)聚(FunctionalCohesion)

一個?!耙粋€模塊,一個功能”,已成為模塊化設(shè)計的一條準(zhǔn)則,也是設(shè)計人員爭取的目標(biāo)。“一個模塊,一個功能”,已成為模塊化設(shè)計的一條準(zhǔn)則,也是設(shè)計1234567低內(nèi)聚中內(nèi)聚高內(nèi)聚

弱強模塊內(nèi)聚1234567返回4.3啟發(fā)式規(guī)則改進軟件結(jié)構(gòu)提高模塊獨立性模塊規(guī)模應(yīng)該適中深度、寬度、扇入和扇出都應(yīng)適當(dāng)模塊的作用域應(yīng)該在控制域之內(nèi)力爭降低模塊接口的復(fù)雜程度設(shè)計單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測返回4.3啟發(fā)式規(guī)則4.3.1改進軟件結(jié)構(gòu)提高模塊獨立性劃分模塊時盡量做到高內(nèi)聚,低耦合,保持模塊相對獨立性,并以此原則優(yōu)化初始的軟件結(jié)構(gòu)。(1)如果若干模塊之間耦合強度過高,每個模塊內(nèi)功能不復(fù)雜,可將它們合并,以減少信息的傳遞和公共區(qū)的引用。(2)若有多個相關(guān)模塊,應(yīng)對它們的功能進行分析,消去重復(fù)功能。4.3.1改進軟件結(jié)構(gòu)提高模塊獨立性劃分模塊時盡量做到高內(nèi)聚4.3.2模塊規(guī)模應(yīng)該適中在考慮模塊的獨立性同時,為了增加可理解性,模塊的大小最好在50-150條語句左右,可以用1-2頁打印紙打印,便于人們閱讀與研究。4.3.2模塊規(guī)模應(yīng)該適中在考慮模塊的獨立性同時,為了增加模塊的大小要適中

模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句行數(shù)在50~100左右,保持在一頁紙之內(nèi),最多不超過500行。模塊的大小要適中

模塊的大小,可以用模塊中所含語句的數(shù)量的多4.3.3深度、寬度、扇入和扇出都應(yīng)適當(dāng)深度是軟件結(jié)構(gòu)設(shè)計完成后觀察到的情況,能粗略地反映系統(tǒng)的規(guī)模和復(fù)雜程度,寬度也能反映系統(tǒng)的復(fù)雜情況。寬度與模塊扇出有關(guān),一個模塊的扇出太多,說明本模塊過分復(fù)雜,缺少中間層。單一功能模塊的扇入數(shù)大比較好,說明本模塊為上層幾個模塊共享的共用模塊,重用率高。但是不能把彼此無關(guān)的功能湊在一起形成一個通用的超級模塊,雖然它扇入高,但低內(nèi)聚。因此非單一功能的模塊扇入高時應(yīng)重新分解,以消除控制耦合的情況。軟件結(jié)構(gòu)從形態(tài)上,總的考慮是頂層扇出數(shù)較高一些,中間層扇出數(shù)較低一些,底層扇入數(shù)較高一些。4.3.3深度、寬度、扇入和扇出都應(yīng)適當(dāng)深度是軟件結(jié)構(gòu)設(shè)計程序的系統(tǒng)結(jié)構(gòu)圖程序的系統(tǒng)結(jié)構(gòu)圖4.3.4模塊的作用域應(yīng)該在控制域之內(nèi)一個模塊的作用范圍應(yīng)在其控制范圍之內(nèi),且判定所在的模塊應(yīng)與受其影響的模塊在層次上盡量靠近。

在軟件結(jié)構(gòu)中,由于存在著不同事務(wù)處理的需要,某一層上的模塊會存在著判斷處理,這樣可能影響其他層的模塊處理。為了保證含有判定功能模塊的軟件設(shè)計的質(zhì)量,引入了模塊的作用范圍(或稱影響范圍)與控制范圍的概念。

一個模塊的作用范圍指受該模塊內(nèi)一個判定影響的所有模塊的集合。一個模塊的控制范圍指模塊本身以及其所有下屬模塊(直接或間接從屬于它的模塊)的集合。4.3.4模塊的作用域應(yīng)該在控制域之內(nèi)一個模塊的作用范圍應(yīng)在模塊的作用范圍應(yīng)在控制范圍之內(nèi)

模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。

模塊的作用范圍應(yīng)在控制范圍之內(nèi)軟件工程課件第4章-4.3.5力爭降低模塊接口的復(fù)雜程度模塊的接口要簡單、清晰、含義明確,便于理解,易于實現(xiàn)、測試與維護。4.3.5力爭降低模塊接口的復(fù)雜程度模塊的接口要簡單、清晰、

4.3.6設(shè)計單入口單出口的模塊模塊間不要出現(xiàn)內(nèi)容耦合。這也是結(jié)構(gòu)化設(shè)計的一個要求。4.3.6設(shè)計單入口單出口的模塊

4.3.7模塊功能應(yīng)該可以預(yù)測只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個模塊的功能就是可以預(yù)測的。帶有內(nèi)部“存儲器”的模塊的功能可能是不可預(yù)測的,因為它的輸出可能取決于內(nèi)部存儲器(例如某個標(biāo)記)的狀態(tài)。4.3.7模塊功能應(yīng)該可以預(yù)測4.4圖形工具4.4.1層次圖和HIPO圖4.4.2結(jié)構(gòu)圖4.4圖形工具4.4.1層次圖和HIPO圖4.4.1層次圖和HIPO圖層次圖(SC)用來描繪軟件的層次結(jié)構(gòu)。SC圖是SD方法在總體設(shè)計中使用的主要工具,用來顯示軟件的組成模塊及其調(diào)用關(guān)系。層次圖中的一個矩形代表一個模塊,用帶箭頭的連線表示模塊間的調(diào)用關(guān)系。在調(diào)用線的兩旁,應(yīng)標(biāo)出傳入和傳出模塊的數(shù)據(jù)流。1、模塊2、調(diào)用關(guān)系3、傳入/傳出數(shù)據(jù)流HIPO圖(HierarchyPlusInput/Processing/Output)是美國IBM公司70年代發(fā)展起來的表示軟件系統(tǒng)結(jié)構(gòu)的工具。它既可以描述軟件總的模塊層次結(jié)構(gòu)――H圖,又可以描述每個模塊輸入/輸出數(shù)據(jù)、處理功能及模塊調(diào)用的詳細情況――IPO圖。4.4.1層次圖和HIPO圖層次圖(SC)用來描繪軟件的層4.4.2結(jié)構(gòu)圖SC圖是用來顯示軟件的組

溫馨提示

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

評論

0/150

提交評論