系統(tǒng)分析與設(shè)計(jì)-5-總體設(shè)計(jì)_第1頁(yè)
系統(tǒng)分析與設(shè)計(jì)-5-總體設(shè)計(jì)_第2頁(yè)
系統(tǒng)分析與設(shè)計(jì)-5-總體設(shè)計(jì)_第3頁(yè)
系統(tǒng)分析與設(shè)計(jì)-5-總體設(shè)計(jì)_第4頁(yè)
系統(tǒng)分析與設(shè)計(jì)-5-總體設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

系統(tǒng)分析與設(shè)計(jì)_5_總體設(shè)計(jì)第一頁(yè),共90頁(yè)。第5章總體設(shè)計(jì)5.1設(shè)計(jì)過(guò)程5.2設(shè)計(jì)原理5.3啟發(fā)規(guī)則5.4描繪軟件結(jié)構(gòu)的圖形工具5.5面向數(shù)據(jù)流的設(shè)計(jì)方法5.6小結(jié)及作業(yè)第二頁(yè),共90頁(yè)??傮w設(shè)計(jì)(概要設(shè)計(jì)或初步設(shè)計(jì))的基本目的就是回答“概括地說(shuō),系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”工作內(nèi)容:將劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔等黑盒子級(jí)“產(chǎn)品”。黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)??傮w設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu)——模塊組成,以及這些模塊相互間的關(guān)系。第三頁(yè),共90頁(yè)。首先根據(jù)需求分析階段得到的數(shù)據(jù)流圖尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案,為每個(gè)合理的方案準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進(jìn)行成本/效益分析,并且制定實(shí)現(xiàn)這個(gè)方案的進(jìn)度計(jì)劃。選出一個(gè)最佳方案向用戶推薦??傮w設(shè)計(jì)必要性(詳細(xì)設(shè)計(jì)之前):站在全局高度上,花較少成本,從較抽象的層次上分析對(duì)比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),降低成本、提高質(zhì)量。第四頁(yè),共90頁(yè)。5.1設(shè)計(jì)過(guò)程系統(tǒng)設(shè)計(jì)階段:確定系統(tǒng)的具體實(shí)現(xiàn)方案;結(jié)構(gòu)設(shè)計(jì)階段:確定軟件結(jié)構(gòu)。典型的總體設(shè)計(jì)過(guò)程包括下述9個(gè)步驟:1.設(shè)想供選擇的方案考慮各種可能的實(shí)現(xiàn)方案從中選出最佳。根據(jù)系統(tǒng)的邏輯模型,分析比較不同的物理實(shí)現(xiàn)方案,選出最佳方案,提高系統(tǒng)的性/價(jià)比。第五頁(yè),共90頁(yè)。由需求分析的數(shù)據(jù)流圖作為出發(fā)點(diǎn),把數(shù)據(jù)流圖中的處理分組的各種可能的方法,拋棄在技術(shù)上行不通的分組方法,提供可供選擇的物理系統(tǒng)。如P46圖2.8、2.9所示。5.1設(shè)計(jì)過(guò)程第六頁(yè),共90頁(yè)。2.選取合理的方案選取低成本、中等成本和高成本的三種方案,對(duì)每個(gè)合理的方案分析員都應(yīng)該準(zhǔn)備下列4份資料:(1)系統(tǒng)流程圖;(2)組成系統(tǒng)的物理元素清單;(3)成本/效益分析;(4)實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。5.1設(shè)計(jì)過(guò)程第七頁(yè),共90頁(yè)。3.推薦最佳方案推薦一個(gè)最佳的方案,并且為推薦的方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃。(第13章工程網(wǎng)絡(luò))提請(qǐng)使用部門(mén)負(fù)責(zé)人進(jìn)一步審批之后,將進(jìn)入總體設(shè)計(jì)過(guò)程的下一個(gè)重要階段——結(jié)構(gòu)設(shè)計(jì)。5.1設(shè)計(jì)過(guò)程第八頁(yè),共90頁(yè)。4.功能分解程序和文件(或數(shù)據(jù)庫(kù))是組成系統(tǒng)的主要元素,需要設(shè)計(jì)決定。對(duì)程序的設(shè)計(jì)通常分為兩個(gè)階段完成:結(jié)構(gòu)設(shè)計(jì)和過(guò)程設(shè)計(jì)。結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系(總體設(shè)計(jì));過(guò)程設(shè)計(jì)確定每個(gè)模塊的處理過(guò)程(詳細(xì)設(shè)計(jì))。5.1設(shè)計(jì)過(guò)程第九頁(yè),共90頁(yè)。為確定軟件結(jié)構(gòu),首先需要從實(shí)現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。經(jīng)過(guò)分解之后應(yīng)該使每個(gè)功能對(duì)大多數(shù)程序員而言都是明顯易懂的。功能分解導(dǎo)致數(shù)據(jù)流圖的進(jìn)一步細(xì)化,同時(shí)還應(yīng)該用IPO圖或其他適當(dāng)?shù)墓ぞ吆?jiǎn)要描述細(xì)化后每個(gè)處理的算法。4.功能分解第十頁(yè),共90頁(yè)。通常程序中的一個(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ?,將模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用下層模塊以實(shí)現(xiàn)程序的完整功能軟件結(jié)構(gòu)(即由模塊組成的層次系統(tǒng))可以用層次圖或結(jié)構(gòu)圖來(lái)描繪。若數(shù)據(jù)流圖細(xì)化到適當(dāng)?shù)膶哟?,則可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。5.設(shè)計(jì)軟件結(jié)構(gòu)第十一頁(yè),共90頁(yè)。對(duì)于需要使用數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng),軟件工程師應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)課中已經(jīng)詳細(xì)講述了設(shè)計(jì)數(shù)據(jù)庫(kù)的方法,本書(shū)不再贅述。6.設(shè)計(jì)數(shù)據(jù)庫(kù)第十二頁(yè),共90頁(yè)。在軟件開(kāi)發(fā)的早期階段考慮測(cè)試問(wèn)題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。本書(shū)第7章將仔細(xì)討論軟件測(cè)試的目的和設(shè)計(jì)測(cè)試方案的各種技術(shù)方法。7.制定測(cè)試計(jì)劃第十三頁(yè),共90頁(yè)。完成的文檔通常有下述幾種:(1)用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本/效益分析;對(duì)最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其他工具(例如,PDL語(yǔ)言)簡(jiǎn)要描述的各個(gè)模塊的算法,模塊間的接口關(guān)系,以及需求、功能和模塊三者之間的交叉參照關(guān)系等等。(2)用戶手冊(cè)根據(jù)總體設(shè)計(jì)階段的結(jié)果,修改更正在需求分析階段產(chǎn)生的初步的用戶手冊(cè)。8.書(shū)寫(xiě)文檔第十四頁(yè),共90頁(yè)。(3)測(cè)試計(jì)劃包括測(cè)試策略,測(cè)試方案,預(yù)期的測(cè)試結(jié)果,測(cè)試進(jìn)度計(jì)劃等等。(4)詳細(xì)的實(shí)現(xiàn)計(jì)劃(5)數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果8.書(shū)寫(xiě)文檔第十五頁(yè),共90頁(yè)。9.審查和復(fù)審最后應(yīng)該對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查,在技術(shù)審查通過(guò)之后再由使用部門(mén)的負(fù)責(zé)人從管理角度進(jìn)行復(fù)審。軟件設(shè)計(jì)功能與性能需求編碼軟件測(cè)試程序模塊已測(cè)試軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)過(guò)程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)信息域需求開(kāi)發(fā)階段信息流總體設(shè)計(jì)需求說(shuō)明書(shū)復(fù)審軟件結(jié)構(gòu)修改詳細(xì)設(shè)計(jì)可接受模塊描述復(fù)審修改

設(shè)計(jì)說(shuō)明書(shū)軟件設(shè)計(jì)工作流程第十六頁(yè),共90頁(yè)。5.2設(shè)計(jì)原理5.2.1模塊化“模塊”,又稱“構(gòu)件”。過(guò)程、函數(shù)、子程序和宏等,都可作為模塊;面向?qū)ο蠓椒▽W(xué)中的對(duì)象是模塊,對(duì)象內(nèi)的方法(或稱為服務(wù))也是模塊。模塊是構(gòu)成程序的基本構(gòu)件。模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問(wèn)的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來(lái)構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。第十七頁(yè),共90頁(yè)。模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理,化繁為簡(jiǎn)、化難為易、化整為零。設(shè)函數(shù)C(x)定義問(wèn)題x的復(fù)雜程度,函數(shù)E(x)確定解決問(wèn)題x需要的工作量(時(shí)間)。對(duì)于兩個(gè)問(wèn)題P1和P2,如果C(P1)>C(P2),顯然E(P1)>E(P2)。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)這就是模塊化的根據(jù)。5.2.1模塊化ABCDEFGHIJKLM軟件結(jié)構(gòu)圖第十八頁(yè),共90頁(yè)。5.2.1模塊化圖5.1模塊化和軟件成本第十九頁(yè),共90頁(yè)。抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。處理復(fù)雜系統(tǒng)的有效的方法是用層次的方式構(gòu)造和分析它。一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)首先可以用一些高級(jí)的抽象概念構(gòu)造和理解,這些高級(jí)概念又可以用一些較低級(jí)的概念構(gòu)造和理解,如此進(jìn)行下去,直至最低層次的具體元素。5.2.2抽象第二十頁(yè),共90頁(yè)。任何問(wèn)題的模塊化時(shí),可提出許多抽象的層次。在抽象的最高層次使用問(wèn)題環(huán)境的語(yǔ)言,以概括的方式敘述問(wèn)題的解法;在較低抽象層次采用更過(guò)程化的方法,把面向問(wèn)題的術(shù)語(yǔ)和面向?qū)崿F(xiàn)的術(shù)語(yǔ)結(jié)合起來(lái)敘述問(wèn)題的解法;最后在最低的抽象層次用可直接實(shí)現(xiàn)的方式敘述問(wèn)題的解法。5.2.2抽象第二十一頁(yè),共90頁(yè)。軟件工程過(guò)程的每一步都是對(duì)軟件解法的抽象層次的一次精化。在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整部件;在需求分析期間,軟件解法是使用在問(wèn)題環(huán)境內(nèi)熟悉的方式描述的;當(dāng)由總體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過(guò)渡時(shí),抽象的程度也就隨之減少了;最后,當(dāng)源程序?qū)懗鰜?lái)以后,也就達(dá)到了抽象的最低層。5.2.2抽象第二十二頁(yè),共90頁(yè)。逐步求精和模塊化的概念,與抽象是緊密相關(guān)的。軟件結(jié)構(gòu)頂層的模塊,控制了系統(tǒng)的主要功能并且影響全局;在軟件結(jié)構(gòu)底層的模塊,完成對(duì)數(shù)據(jù)的一個(gè)具體處理,用自頂向下由抽象到具體的方式分配控制,簡(jiǎn)化了軟件的設(shè)計(jì)和實(shí)現(xiàn),提高了軟件的可理解性和可測(cè)試性,并且使軟件更容易維護(hù)。5.2.2抽象第二十三頁(yè),共90頁(yè)。逐步求精是人類解決復(fù)雜問(wèn)題時(shí)采用的基本方法,逐步求精可定義為:“為了能集中精力解決主要問(wèn)題而盡量推遲對(duì)問(wèn)題細(xì)節(jié)的考慮?!敝鸩角缶匀绱酥匾且?yàn)槿祟惖恼J(rèn)知過(guò)程遵守Miller法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(7±2)個(gè)知識(shí)塊上。Miller法則是人類智力的基本局限,我們不可能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大努力工作。5.2.3逐步求精第二十四頁(yè),共90頁(yè)。逐步求精最初是由NiklausWirth提出的一種自頂向下的設(shè)計(jì)策略,Wirth曾說(shuō):“我們對(duì)付復(fù)雜問(wèn)題的最重要的辦法是抽象,因此,對(duì)一個(gè)復(fù)雜的問(wèn)題不應(yīng)該立刻用計(jì)算機(jī)指令、數(shù)字和邏輯符號(hào)來(lái)表示,而應(yīng)該用較自然的抽象語(yǔ)句來(lái)表示,從而得出抽象程序。抽象程序?qū)Τ橄蟮臄?shù)據(jù)進(jìn)行某些特定的運(yùn)算并用某些合適的記號(hào)(可能是自然語(yǔ)言)來(lái)表示。對(duì)抽象程序做進(jìn)一步的分解,并進(jìn)入下一個(gè)抽象層次,這樣的精細(xì)化過(guò)程一直進(jìn)行下去,直到程序能被計(jì)算機(jī)接受為止。這時(shí)的程序可能是用某種高級(jí)語(yǔ)言或機(jī)器指令書(shū)寫(xiě)的?!?.2.3逐步求精第二十五頁(yè),共90頁(yè)。求精要求設(shè)計(jì)者細(xì)化原始陳述,隨著每個(gè)后續(xù)求精(即細(xì)化)步驟的完成而提供越來(lái)越多的細(xì)節(jié)。抽象與求精是一對(duì)互補(bǔ)的概念。抽象使得設(shè)計(jì)者能夠說(shuō)明過(guò)程和數(shù)據(jù),同時(shí)卻忽略低層細(xì)節(jié)。求精則幫助設(shè)計(jì)者在設(shè)計(jì)過(guò)程中逐步揭示出低層細(xì)節(jié)。這兩個(gè)概念都有助于設(shè)計(jì)者在設(shè)計(jì)演化過(guò)程中創(chuàng)造出完整的設(shè)計(jì)模型。5.2.3逐步求精第二十六頁(yè),共90頁(yè)。數(shù)據(jù)字典數(shù)據(jù)流圖E-R圖狀態(tài)變遷圖加工規(guī)約控制規(guī)約數(shù)據(jù)對(duì)描述象數(shù)據(jù)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)過(guò)程設(shè)計(jì)將分析模型轉(zhuǎn)換為軟件設(shè)計(jì)分析模型設(shè)計(jì)模型第二十七頁(yè),共90頁(yè)。如何得到最好的一組模塊?信息隱藏原理指出:設(shè)計(jì)一個(gè)模塊,使得包含的信息(過(guò)程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不能訪問(wèn)的。局部化是指把一些關(guān)系密切的軟件元素,物理地放得彼此靠近。在模塊中使用局部數(shù)據(jù)元素是局部化的一個(gè)例子。局部化有助于實(shí)現(xiàn)信息隱藏。5.2.4信息隱藏和局部化第二十八頁(yè),共90頁(yè)。模塊獨(dú)立是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的特定子功能,并且和其他模塊之間的關(guān)系很簡(jiǎn)單。模塊獨(dú)立的兩條理由:第一,有效的模塊化(即具有獨(dú)立的模塊)的軟件比較容易開(kāi)發(fā)。因?yàn)楣δ芎?jiǎn)單而且接口可簡(jiǎn)化,當(dāng)許多人分工合作時(shí)這個(gè)優(yōu)點(diǎn)尤其重要。第二,獨(dú)立的模塊比較容易測(cè)試和維護(hù)。5.2.5模塊獨(dú)立第二十九頁(yè),共90頁(yè)。模塊獨(dú)立是設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量,分別稱為內(nèi)聚和耦合。耦合用于衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。模塊獨(dú)立要求:高內(nèi)聚、低耦合;5.2.5模塊獨(dú)立第三十頁(yè),共90頁(yè)。1.耦合耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)。模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)。5.2.5模塊獨(dú)立第三十一頁(yè),共90頁(yè)。模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個(gè)方面衡量:5.2.5模塊獨(dú)立①方式

塊間聯(lián)系方式有“直接引用”或“用過(guò)程語(yǔ)句調(diào)用”。②作用

塊間傳送的共用信息(參數(shù))類型,可為“數(shù)據(jù)型”、“控制型”或“混合型”(數(shù)據(jù)/控制型)。③數(shù)量

塊間傳送的共用信息的數(shù)量。數(shù)據(jù)方式作用少多數(shù)據(jù)控制混合直接調(diào)用過(guò)程調(diào)用第三十二頁(yè),共90頁(yè)。內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低耦合性的幾種類型耦合性第三十三頁(yè),共90頁(yè)。內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低(1)內(nèi)容耦合(contentcoupling)

一個(gè)模塊直接訪問(wèn)另一模塊的內(nèi)部數(shù)據(jù)。 一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊的內(nèi)部。 一個(gè)模塊有多個(gè)入口。 兩個(gè)模塊有部分代碼重迭。AB進(jìn)入另一模塊內(nèi)AB部分代碼重迭Entry1

….Entry2….

多重入口耦合性的幾種類型耦合性第三十四頁(yè),共90頁(yè)。內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低(2)公共耦合(commoncoupling)若干模塊訪問(wèn)一個(gè)公共的數(shù)據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共環(huán)境可為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合模塊,嚴(yán)重影響模塊的可靠性和可適應(yīng)性,降低軟件的可讀性。耦合性的幾種類型耦合性第三十五頁(yè),共90頁(yè)。內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低(3)控制耦合(controlcoupling)一個(gè)模塊傳遞給另一模塊的信息是用于控制該模塊內(nèi)部邏輯的控制信號(hào)。顯然,對(duì)被控制模塊的任何修改,都會(huì)影響控制模塊。耦合性的幾種類型耦合性第三十六頁(yè),共90頁(yè)。內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低(4)復(fù)合耦合(DataCoupling)一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)復(fù)合的數(shù)據(jù)結(jié)構(gòu),例如,包含幾個(gè)數(shù)據(jù)單項(xiàng)的記錄。耦合性的幾種類型耦合性第三十七頁(yè),共90頁(yè)。內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高低(5)數(shù)據(jù)耦合(DataCoupling)若兩個(gè)模塊間通過(guò)參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)。數(shù)據(jù)耦合是松散的耦合,模塊之間的獨(dú)立性比較強(qiáng)。耦合性的幾種類型耦合性第三十八頁(yè),共90頁(yè)。2.內(nèi)聚內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。理想內(nèi)聚的模塊只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很壞,不要使用。內(nèi)聚性愈強(qiáng),模塊獨(dú)立性愈好。5.2.5模塊獨(dú)立第三十九頁(yè),共90頁(yè)。2.內(nèi)聚5.2.5模塊獨(dú)立偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性第四十頁(yè),共90頁(yè)。偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性偶然內(nèi)聚:模塊內(nèi)部各部件之間沒(méi)有任何關(guān)系,僅僅為了滿足模塊尺寸要求而將一些程序合入一可模塊,出現(xiàn)錯(cuò)誤時(shí),難以確定位置;12第四十一頁(yè),共90頁(yè)。偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性邏輯內(nèi)聚:這種模塊把幾種相關(guān)的功能組合在一起,每次調(diào)用時(shí),由傳送給模塊的判斷參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行那種功能。第四十二頁(yè),共90頁(yè)。偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性瞬時(shí)內(nèi)聚:模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,由于不使用選擇參數(shù),邏輯簡(jiǎn)單,但結(jié)合了許多無(wú)關(guān)任務(wù),錯(cuò)誤難以定位。例如:各種初始化。第四十三頁(yè),共90頁(yè)。偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性通信內(nèi)聚:模塊中所有的部件都訪問(wèn)同一組數(shù)據(jù),幾個(gè)部件之間有數(shù)據(jù)關(guān)系而無(wú)控制關(guān)系。優(yōu)點(diǎn):可通過(guò)參數(shù)選擇不同的作用,是一種較理想的內(nèi)聚。12第四十四頁(yè),共90頁(yè)。偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性順序內(nèi)聚:模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每項(xiàng)功能有唯一的入口點(diǎn)。較好的內(nèi)聚。21第四十五頁(yè),共90頁(yè)。偶然型邏輯型瞬時(shí)型通信型順序型弱強(qiáng)功能型內(nèi)聚性功能內(nèi)聚:模塊內(nèi)所有部件處理同一組數(shù)據(jù),共同完成單一的功能,是最理想的內(nèi)聚之一。1第四十六頁(yè),共90頁(yè)。按照他們的觀點(diǎn),如果給上述七種內(nèi)聚的優(yōu)劣評(píng)分,將得到如下結(jié)果:功能內(nèi)聚 10分 時(shí)間內(nèi)聚 3分順序內(nèi)聚 9分 邏輯內(nèi)聚 1分通信內(nèi)聚 7分 偶然內(nèi)聚 0分過(guò)程內(nèi)聚 5分5.2.5模塊獨(dú)立第四十七頁(yè),共90頁(yè)。5.3啟發(fā)規(guī)則在長(zhǎng)期的軟件開(kāi)發(fā)實(shí)踐中,總結(jié)經(jīng)驗(yàn),得出了一些啟發(fā)式規(guī)則。沒(méi)有基本原理和概念那樣普遍適用,在改進(jìn)軟件設(shè)計(jì),提高軟件質(zhì)量有積極意義。下面介紹幾條啟發(fā)式規(guī)則。第四十八頁(yè),共90頁(yè)。設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個(gè)結(jié)構(gòu),通過(guò)模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立成一個(gè)模塊,由這些模塊調(diào)用;有時(shí)可以通過(guò)分解或合并模塊以減少控制信息的傳遞及對(duì)全程數(shù)據(jù)的引用,并且降低接口的復(fù)雜程度。1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性第四十九頁(yè),共90頁(yè)。經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過(guò)大,最好能寫(xiě)在一頁(yè)紙內(nèi)(通常不超過(guò)60行語(yǔ)句)。有人從心理學(xué)角度研究得知,當(dāng)一個(gè)模塊包含的語(yǔ)句數(shù)超過(guò)30以后,模塊的可理解程度迅速下降。過(guò)小的模塊開(kāi)銷大于有效操作,而且模塊數(shù)目過(guò)多將使系統(tǒng)接口復(fù)雜。2.模塊規(guī)模應(yīng)該適中第五十頁(yè),共90頁(yè)。3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)頂層1層2層ABCDEFGHIJKLMN深度扇入為2扇出為3扇入為33層4層寬度寬度寬度

軟件結(jié)構(gòu)示意圖有關(guān)指標(biāo):⑴深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù)。⑵寬度:表示控制的總分布。⑶扇出數(shù):指一個(gè)模塊直接控制下屬的模塊個(gè)數(shù)。⑷扇入數(shù):指一個(gè)模塊的直接上屬模塊個(gè)數(shù)。

一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。軟件的層次結(jié)構(gòu)第五十一頁(yè),共90頁(yè)。模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。模塊的控制域是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。如圖所示,模塊A的控制域是A、B、C、D、E、F等模塊的集合,它的控制域應(yīng)在其中。4.模塊的作用域應(yīng)該在控制域之內(nèi)第五十二頁(yè),共90頁(yè)。模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。接口復(fù)雜或不一致(即看起來(lái)傳遞的數(shù)據(jù)之間沒(méi)有聯(lián)系),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性。5.力爭(zhēng)降低模塊接口的復(fù)雜程度第五十三頁(yè),共90頁(yè)。這條啟發(fā)式規(guī)則警告不要使模塊間出現(xiàn)內(nèi)容耦合。6.設(shè)計(jì)單入口單出口的模塊7.模塊功能應(yīng)該可以預(yù)測(cè)如果模塊輸入的數(shù)據(jù)相同,就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測(cè)的。同時(shí)要控制模塊的功能過(guò)分局限,使用范圍過(guò)分狹窄。第五十四頁(yè),共90頁(yè)。7.模塊功能應(yīng)該可以預(yù)測(cè)模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防止模塊功能過(guò)分局限。如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒子,也就是說(shuō),只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測(cè)的。帶有內(nèi)部“存儲(chǔ)器”的模塊的功能可能是不可預(yù)測(cè)的,因?yàn)樗妮敵隹赡苋Q于內(nèi)部存儲(chǔ)器(例如某個(gè)標(biāo)記)的狀態(tài)。由于內(nèi)部存儲(chǔ)器對(duì)于上級(jí)模塊而言是不可見(jiàn)的,所以這樣的模塊既不易理解又難于測(cè)試和維護(hù)。第五十五頁(yè),共90頁(yè)。5.4.1層次圖和HIPO圖層次圖用來(lái)描繪軟件的層次結(jié)構(gòu)。5.4描繪軟件結(jié)構(gòu)的圖形工具第五十六頁(yè),共90頁(yè)。層次圖不同于第3.7節(jié)中介紹的描繪數(shù)據(jù)結(jié)構(gòu)的層次方框圖,層次圖中的一個(gè)矩形框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系而不像層次方框圖那樣表示組成關(guān)系。圖5.3正文加工系統(tǒng)的層次圖第五十七頁(yè),共90頁(yè)。HIPO圖是“層次圖加輸入/處理/輸出圖”的英文縮寫(xiě)。為了能使HIPO圖具有可追蹤性,在H圖(層次圖)里除了最頂層的方框之外,每個(gè)方框都加了編號(hào)。第五十八頁(yè),共90頁(yè)。結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具。一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。5.4.2結(jié)構(gòu)圖尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。第五十九頁(yè),共90頁(yè)。5.4.2結(jié)構(gòu)圖有一些附加的符號(hào),可以表示模塊的選擇調(diào)用或循環(huán)調(diào)用。如左圖表示當(dāng)模塊M中某個(gè)判定為真時(shí)調(diào)用模塊A,為假時(shí)調(diào)用模塊B。如右圖表示模塊M循環(huán)調(diào)用模塊A、B和C。第六十頁(yè),共90頁(yè)。5.5面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑。因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖表示,所以面向數(shù)據(jù)流的設(shè)計(jì)方法理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。通常所說(shuō)的結(jié)構(gòu)化設(shè)計(jì)方法(簡(jiǎn)稱SD方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。第六十一頁(yè),共90頁(yè)。面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有下述兩種類型。1.變換流5.5.1概念第六十二頁(yè),共90頁(yè)。2.事務(wù)流如圖所示,數(shù)據(jù)流是“以事務(wù)為中心的”,即數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,根據(jù)輸入數(shù)據(jù)的類型選出一個(gè)來(lái)執(zhí)行。這類數(shù)據(jù)流應(yīng)該劃為一類特殊的數(shù)據(jù)流,稱為事務(wù)流。5.5.1概念第六十三頁(yè),共90頁(yè)。如圖處理T稱為事務(wù)中心,它完成下述任務(wù):(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));(2)分析每個(gè)事務(wù)以確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動(dòng)通路。5.5.1概念第六十四頁(yè),共90頁(yè)。變換分析把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。5.5.2變換分析

中心變換型(transformcenter)—

變換分析其特點(diǎn)是:DFD圖可以明顯分為“輸入-處理-輸出”三部分。檢查順序(物理輸入)檢查合理性擴(kuò)充代碼核對(duì)檢查和修改壓縮代碼檢查(邏輯輸入)(邏輯輸出)輸入主加工輸出卡片舊文件(物理輸出)新文件第六十五頁(yè),共90頁(yè)。分類報(bào)名付款注銷查詢復(fù)審

事務(wù)處理型(transaction)—

事務(wù)分析這類數(shù)據(jù)流圖可看成是對(duì)一個(gè)數(shù)據(jù)經(jīng)過(guò)某種加工后,按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。5.5.2變換分析第六十六頁(yè),共90頁(yè)。BCADEQPRWUVabcedrpuwv變換中心傳入部分傳出部分第六十七頁(yè),共90頁(yè)。第一級(jí)分解的方法MCMTMAME第六十八頁(yè),共90頁(yè)。第一級(jí)分解后的SCMCMTMAME第一層頂層c,ec,eu,wu,w傳入模塊傳出模塊中心變換模塊第六十九頁(yè),共90頁(yè)。典型的系統(tǒng)結(jié)構(gòu)⑴變換型系統(tǒng)結(jié)構(gòu)圖

通過(guò)變換分析技術(shù),將中心變換型的DFD圖轉(zhuǎn)換而得的SC圖,稱為變換型系統(tǒng)結(jié)構(gòu)圖。⑵事務(wù)型系統(tǒng)結(jié)構(gòu)圖

通過(guò)事務(wù)分析技術(shù),將事務(wù)處理型的DFD圖轉(zhuǎn)換為的SC圖,稱為事務(wù)型的系統(tǒng)結(jié)構(gòu)圖。第七十頁(yè),共90頁(yè)。①確定主加工及邏輯輸入/輸出主加工—

描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入/輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。邏輯輸入/輸出—

是指輸入/輸出主加工的數(shù)據(jù)流。輸入流—

是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。輸出流—

是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。FDC中心加工2號(hào)加工3號(hào)加工1號(hào)加工4號(hào)加工ABE

輸入流轉(zhuǎn)換流輸出流

輸入流轉(zhuǎn)換流輸出流②進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。MCICTCOCCDDCICTCO

變換分析技術(shù)第七十一頁(yè),共90頁(yè)。DDCC③進(jìn)行二級(jí)分解,設(shè)計(jì)中下層模塊這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序一般從設(shè)計(jì)輸入模塊的下層開(kāi)始。MCICTCO處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送ECCDDDCCDBBEEDC中心加工2號(hào)加工3號(hào)加工1號(hào)加工4號(hào)加工ABE

輸入流轉(zhuǎn)換流輸出流轉(zhuǎn)換流④進(jìn)一步細(xì)化取A轉(zhuǎn)換A轉(zhuǎn)換E送FAABFFE

變換分析技術(shù)F第七十二頁(yè),共90頁(yè)。①確定流界:首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路徑。②進(jìn)行一級(jí)分析,設(shè)計(jì)上層模塊:對(duì)事務(wù)中心應(yīng)設(shè)計(jì)“事物控制”模塊;對(duì)事物流應(yīng)設(shè)計(jì)“接受事物”模塊;對(duì)事務(wù)路徑,應(yīng)設(shè)計(jì)“發(fā)送控制”模塊。③進(jìn)行二級(jí)分解,設(shè)計(jì)中下層模塊:接受分支,用類似于轉(zhuǎn)換處理型數(shù)據(jù)流圖中對(duì)輸入數(shù)據(jù)流的方法設(shè)計(jì)中下層。對(duì)于發(fā)送分支,在發(fā)送控制模塊下為每條事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊,這一層稱為事務(wù)層。5.5.3事務(wù)分析技術(shù)第七十三頁(yè),共90頁(yè)。對(duì)應(yīng)模塊圖原始的數(shù)據(jù)流圖IP1P2P3事物流事務(wù)中心事務(wù)處理事務(wù)控制接受事務(wù)發(fā)送事務(wù)P1P2P3

事務(wù)分析技術(shù)5.5.3事務(wù)分析技術(shù)第七十四頁(yè),共90頁(yè)。我們已經(jīng)開(kāi)始進(jìn)入“智能”產(chǎn)品時(shí)代。在這類產(chǎn)品中把軟件做在只讀存儲(chǔ)器中,成為設(shè)備的一部分,從而使設(shè)備具有某些“智能”。因此,這類產(chǎn)品的設(shè)計(jì)都包含

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論