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

下載本文檔

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

文檔簡介

1、精品好資料學(xué)習(xí)推薦山西大學(xué)商務(wù)學(xué)院教案20092010學(xué)年第二學(xué)期課程名稱 軟件工程 授課對象07信息與計算科學(xué)B1班授課教師 劉忠寶 教材版本軟件工程導(dǎo)論張海藩著9 / 10第五章 總體設(shè)計 教學(xué)目標(biāo)與要求1、掌握概要設(shè)計的基本概念與原理,理解軟件結(jié)構(gòu)設(shè)計的優(yōu)化準(zhǔn)則2熟練使用概要設(shè)計階段常用的幾種圖形工具3理解面向數(shù)據(jù)的設(shè)計方法教學(xué)重點與難點重點:1、概要設(shè)計的基本概念與原理2、關(guān)注概要設(shè)計說明書的編寫難點:面向數(shù)據(jù)的設(shè)計方法教學(xué)過程設(shè)計新課導(dǎo)入、案例教學(xué)、課堂討論、課堂練習(xí)、作業(yè)講評。教學(xué)方法以多媒體講授為主,任務(wù)驅(qū)動提問、討論、指導(dǎo)、練習(xí)等方法。5.1 軟件設(shè)計基本概念一、軟件設(shè)計過程:

2、、軟件設(shè)計方法的內(nèi)容軟件開發(fā)階段由設(shè)計、編碼和測試三個基本活動組成,其中“設(shè)計”活動是獲取高質(zhì)量、低耗費、易維護軟件的一個最重要環(huán)節(jié)。需求分析階段獲得的需求規(guī)格說明書包括對將要實現(xiàn)的系統(tǒng)在信息、功能和行為等各個方面的描述,這是軟件設(shè)計的基礎(chǔ)。對此不論采用何種軟件設(shè)計方法都將產(chǎn)生: 系統(tǒng)的總體結(jié)構(gòu)設(shè)計(architectural design); 系統(tǒng)的數(shù)據(jù)設(shè)計(data design); 系統(tǒng)的過程設(shè)計(procedural design)。軟件設(shè)計也可看作將需求規(guī)格說明逐步轉(zhuǎn)換為軟件源代碼的過程。、從工程管理的角度理解軟件設(shè)計軟件設(shè)計可分概要(preliminary)設(shè)計和詳細(xì)(detail

3、)設(shè)計兩大步驟。概要設(shè)計是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架,詳細(xì)設(shè)計是將其進(jìn)一步精化成軟件的算法表示和數(shù)據(jù)結(jié)構(gòu)。而在技術(shù)上,概要設(shè)計和詳細(xì)設(shè)計又由若干活動組成,除總體結(jié)構(gòu)設(shè)計、數(shù)據(jù)結(jié)構(gòu)設(shè)計和過程設(shè)計外,許多現(xiàn)代應(yīng)用軟件,還包括一個獨立的界面設(shè)計活動。二、抽象與逐步求精、抽象抽象是控制復(fù)雜性的基本策略?!俺橄蟆?要求人們將注意力集中在某一層次上考慮問題,而忽略那些低層次的細(xì)節(jié)。軟件設(shè)計過程應(yīng)當(dāng)是在不同抽象級別上考慮和處理問題的過程。最初,應(yīng)在最高抽象級別上,用面向問題域的語言敘述“問題”,概括“問題解”的形式,而后不斷地具體化,不斷地用面向過程的語言描述問題,最后,在最低的抽象級別上給出可直接實

4、現(xiàn)的“問題解”,即程序。軟件工程過程的每一步都是對較高一級抽象的解作一次進(jìn)一步具體化的描述。在上述由高級抽象到低級抽象的轉(zhuǎn)換過程中,伴隨著一連串的過程抽象和數(shù)據(jù)抽象。逐步求精關(guān)于“逐步求精”,N.Wirth曾經(jīng)做過如下說明:“我們對付復(fù)雜問題的重要辦法是抽象,因此,對一個復(fù)雜的問題不應(yīng)該立即用計算機指令、數(shù)字和邏輯符號來表示,而應(yīng)該用較自然的抽象語言來表示,從而得出抽象程序。抽象程序?qū)Τ橄蟮臄?shù)據(jù)進(jìn)行某些特定的運算并用某些合適的記號(可能是自然語言)來表示。對抽象程序做進(jìn)一步分解,進(jìn)入下一個抽象層次,重復(fù)這一精化過程直到程序能被計算機接受為止。這時的程序可能是用某種高級語言或機器指令書寫的?!保?/p>

5、1)過程求精因為求精的每一步都是用更為詳細(xì)的描述替代上一層次的抽象描述,所以在整個設(shè)計過程中產(chǎn)生的,具有不同詳細(xì)程度的各種描述,組成了系統(tǒng)的層次結(jié)構(gòu)。層次結(jié)構(gòu)的上一層是下一層的抽象,下一層是上一層的求精。(2)與數(shù)據(jù)求精在過程求精的同時自然伴隨著數(shù)據(jù)的求精,無論是過程還是數(shù)據(jù),每一步細(xì)化都蘊涵著某些設(shè)計決策,因此設(shè)計人員必須掌握一些基本的準(zhǔn)則,比較各種可能的候選方案。補充例子:學(xué)習(xí)輔導(dǎo)P59習(xí)題第1題:用逐步求精方法解決下述更新順序主文件的問題三模塊化與信息隱藏模塊化把軟件劃分為可獨立命名和編制的部件,每個部件稱為一個模塊,當(dāng)把所有模塊組裝到一起時,便可獲得滿足問題需要的一個解。假設(shè):函數(shù)C(

6、X)問題X的復(fù)雜性;函數(shù)E(X)求解問題X需要花費的工作量(時間);對于問題P1和P2,如果 : C(P1)C(P2)則有 : E(P1)E(P2) 結(jié)論:解決一個復(fù)雜問題總比解決一個簡單問題耗費更多的工作量。 同時 有:C(P1+P2)C(P1)+C(P2) 結(jié)論:由P1、P2組合而成的問題的復(fù)雜性往往比考慮單個問題復(fù)雜性的和更大。 于是有: E(P1+P2)E(P1)+E(P2)分而治之:把復(fù)雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。信息隱藏信息隱蔽原理告訴我們,模塊應(yīng)該設(shè)計得使其所含信息(過程和數(shù)據(jù))對于那些不需要這些信息的模塊不可訪問;每個模塊只完成一個相對獨立的特

7、定功能;模塊之間僅僅交換那些為完成系統(tǒng)功能必須交換的信息,即模塊應(yīng)該獨立。內(nèi)聚度(cohesion) 內(nèi)聚度是前述信息隱蔽和局部化概念的自然擴展,它標(biāo)志一個模塊內(nèi)部各成分彼此結(jié)合的緊密程度。 內(nèi)聚度按其高低程度可分為七級,內(nèi)聚度越高越好。()偶然性內(nèi)聚(coincidental cohesion)。(2)邏輯性內(nèi)聚(3)時間性內(nèi)聚(4)過程性內(nèi)聚(5)通信性內(nèi)聚度(6)順序性內(nèi)聚 (7)功能性內(nèi)聚補充例子:學(xué)習(xí)輔導(dǎo)P59第2題:給出一層次圖,確定每個模塊的內(nèi)聚類型耦合度 耦合度是對軟件結(jié)構(gòu)中模塊間關(guān)聯(lián)程度的一種度量。 耦合的強弱取決于模塊間接口的復(fù)雜性、進(jìn)入或調(diào)用模塊的位置以及通過界面?zhèn)魉蛿?shù)據(jù)

8、的多少等。 耦合度也可以分為七級(1)非直接耦合(nodirect coupling)(2)數(shù)據(jù)耦合(data coupling) (3)特征耦合(stamp coupling)()控制耦合(control coupling)()外部耦合(external coupling)()公共耦合(common coupling)()內(nèi)容耦合(content coupling)補充例子:學(xué)習(xí)輔導(dǎo)P59第3題:給出模塊互連圖,確定模塊的耦合類型四軟件總體結(jié)構(gòu)設(shè)計軟件總體結(jié)構(gòu)(software architecture)應(yīng)該包括兩方面內(nèi)容: 1) 由系統(tǒng)中所有過程性部件(即模塊)構(gòu)成的層次結(jié)構(gòu),即程序結(jié)構(gòu);

9、 2) 對應(yīng)于程序結(jié)構(gòu)的輸入輸出數(shù)據(jù)結(jié)構(gòu)。軟件總體結(jié)構(gòu)設(shè)計的目標(biāo)就是產(chǎn)生一個模塊化的程序結(jié)構(gòu)并明確各模塊之間的控制關(guān)系,此外還要通過定義界面,說明程序的輸入輸出數(shù)據(jù)流,進(jìn)一步協(xié)調(diào)程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。1. 結(jié)構(gòu)演變2. 同一個“問題”的多種軟件解3. 表示程序結(jié)構(gòu)的工具 類樹圖(treelike diagram) WarnierOrr圖 Jackson圖4. 有關(guān)程序結(jié)構(gòu)的術(shù)語 一個軟件的深度(depth) 控制的層數(shù); 一個軟件的寬度(width) 其控制的層數(shù)和跨度; 一個模塊的“扇出數(shù)”(fanout) 該模塊直接控制的其他模塊數(shù); 一個模塊的“扇入數(shù)”(fanin)指能直接控制該模塊的模

10、塊數(shù)。五數(shù)據(jù)結(jié)構(gòu)設(shè)計數(shù)據(jù)結(jié)構(gòu)描述各數(shù)據(jù)分量之間的邏輯關(guān)系,數(shù)據(jù)結(jié)構(gòu)一經(jīng)確定,數(shù)據(jù)的組織形式、訪問方法、組合程度及處理策略等隨之而定,所以數(shù)據(jù)結(jié)構(gòu)是影響軟件總體結(jié)構(gòu)的重要因素。數(shù)據(jù)結(jié)構(gòu)與程序結(jié)構(gòu)一樣,也可以在不同的抽象級別上表示。六設(shè)計過程總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)沒計階段,確定軟件結(jié)構(gòu)。典型的總體設(shè)計過程包括下述9個步驟:1.設(shè)想供選擇的方案2.選取合理的方案 3.推薦最佳方案 4.功能分解 5.設(shè)計軟件結(jié)構(gòu) 6.設(shè)計數(shù)據(jù)庫 7制定測試計劃8.書寫文檔 9. 審查和復(fù)審 5.2設(shè)計原理一模塊化二抽象三逐步求精四信息隱藏和局部化5.3啟發(fā)規(guī)則1

11、改進(jìn)軟件結(jié)構(gòu)提高模塊獨立性2模塊規(guī)模應(yīng)該適中3深度、寬度、扇出和扇入都應(yīng)適當(dāng) 4模塊的作用域應(yīng)該在控制域之內(nèi) 5.力爭降低模塊接口的復(fù)雜程度6.設(shè)計單入口單出口的模塊 7.模塊功能應(yīng)該可以預(yù)測 5.4描繪軟件結(jié)構(gòu)的圖形工具一.層次圖二.HIPO圖三.結(jié)構(gòu)圖補充兩個例子講解結(jié)構(gòu)圖的畫法例1:火車售票系統(tǒng)的數(shù)據(jù)流程圖例2:已知某定貨系統(tǒng)的需求分析DFD圖如下,請按SD方法的設(shè)計步驟畫出結(jié)構(gòu)圖層次圖帶編號的層次圖產(chǎn)生最佳解結(jié)構(gòu)圖5.5面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法,即通常所說的結(jié)構(gòu)設(shè)計法(Structure Design,簡稱SD方法),由Yourdon和Constantine等人于197

12、4年提出的,與結(jié)構(gòu)化分析(SA)相銜接,根據(jù)對數(shù)據(jù)流的分析設(shè)計軟件結(jié)構(gòu)。一.SD方法的設(shè)計過程和有關(guān)概念1.SD方法能方便地將數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu)的步驟:(1).確定信息流的類型;(2).劃定流界;(3).將數(shù)據(jù)流圖映射為程序結(jié)構(gòu);(4).提取層次控制結(jié)構(gòu);(5).通過設(shè)計復(fù)審和使用啟發(fā)式策略進(jìn)一步精化所得到的結(jié)構(gòu)。2.變換流變換流 在基本系統(tǒng)模型(即頂級數(shù)據(jù)流圖)中信息通常以“外部世界”所具有的形式進(jìn)入系統(tǒng),經(jīng)過處理后又以這種形式離開系統(tǒng)。3.事務(wù)流單個數(shù)據(jù)項稱為事務(wù)(transaction)沿傳入路徑(也稱接受通道)進(jìn)入系統(tǒng),由外部形式變換為內(nèi)部形式后到達(dá)事務(wù)中心,事務(wù)中心根據(jù)數(shù)據(jù)項計值

13、結(jié)果從若干動作路徑中選定一條繼續(xù)執(zhí)行。4.設(shè)計過程 面向數(shù)據(jù)流的設(shè)計過程二.變換分析變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。 下面通過一個汽車數(shù)字儀表板的設(shè)計來介紹變換分析的過程。1、復(fù)查基本系統(tǒng)模型2、復(fù)查并精化數(shù)據(jù)流圖確保數(shù)據(jù)流圖給出目標(biāo)系統(tǒng)的正確的邏輯模型,且使數(shù)據(jù)流圖中每個處理都代表一個規(guī)模適中相對獨立的子功能3、確定數(shù)據(jù)流圖的類型確定數(shù)據(jù)流圖是變換型數(shù)據(jù)流圖還是事務(wù)型數(shù)據(jù)流圖。4、確定輸入流和輸出流的邊界,從而孤立出變換中心5、進(jìn)行“第一級分解”軟件結(jié)構(gòu)代表對控制的自頂向下的分配,所謂分解就是分配控制的過程。對于變換流的情

14、況,數(shù)據(jù)流圖被映射成一個特殊的軟件結(jié)構(gòu),這個結(jié)構(gòu)控制輸入、變換和輸出等信息處理過程。 6、進(jìn)行“第二級分解”第二級分解就是把數(shù)據(jù)流圖中的每個處理映射成軟件結(jié)構(gòu)中一個適當(dāng)?shù)哪K。完成第二級分解的方法是,從變換中心的邊界開始沿著輸入通路向外移動,把輸入通路中每個處理映射成軟件結(jié)構(gòu)中Ca控制下的一個低層模塊;然后沿輸出通路向外移動,把輸出通路中每個處理映射成直接或間接受模塊Ce控制的一個低層模塊;最后把變換中心內(nèi)的每個處理映射成受Ct控制的一個模塊。 7、使用設(shè)計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化對第一次分割得到的軟件結(jié)構(gòu),總可以根據(jù)模塊獨立原理進(jìn)行精化。為了產(chǎn)生合理的分解,得到盡

15、可能高的內(nèi)聚、盡可能松散的耦合,最重要的是,為了得到一個易于實現(xiàn)、易于測試和易于維護的軟件結(jié)構(gòu),應(yīng)該對初步分割得到的模塊進(jìn)行再分解或合并。 補充:以”家庭保安系統(tǒng)”為例,進(jìn)一步對變換分析的各步驟進(jìn)行講述.三. 事務(wù)分析當(dāng)數(shù)據(jù)流具有明顯的事務(wù)特征時,即能找到一個事務(wù)(亦稱觸發(fā)數(shù)據(jù)項)和一個事務(wù)中心,采用事務(wù)分析法更為適宜。 事務(wù)分析法可概括為七個步驟:步驟一、復(fù)審基本系統(tǒng)模型;步驟二、復(fù)審并精化軟件數(shù)據(jù)流圖;步驟三、確定數(shù)據(jù)流圖的特征;步驟四、指出事務(wù)中心,確定接收部分和發(fā)送部分的流界;步驟五、映射出系統(tǒng)上層模塊結(jié)構(gòu);步驟六、分解并精化事務(wù)結(jié)構(gòu)以及每條動作路徑所對應(yīng)的結(jié)構(gòu)。步驟七、使用啟發(fā)式設(shè)計

16、策略,精化所得程序結(jié)構(gòu)雛形,改良軟件質(zhì)量。這一步驟與變換分析法相同。四、設(shè)計優(yōu)化原則 我們努力追求的設(shè)計應(yīng)該是既滿足功能和性能的要求,又符合一般軟件設(shè)計原理和上述種種啟發(fā)式設(shè)計原則。 對軟件結(jié)構(gòu)的修改越早越好。必要時,可以并行地開發(fā)若干個軟件結(jié)構(gòu),通過評比,求得“最佳”結(jié)果。 簡潔的程序結(jié)構(gòu)容易測試、容易維護,應(yīng)該使用盡可能少的模塊;只要滿足信息要求,應(yīng)該使用盡可能簡單的數(shù)據(jù)結(jié)構(gòu)。 結(jié)構(gòu)優(yōu)化是一個精益求精的過程。優(yōu)化過程可以在設(shè)計的早期,甚至要延續(xù)到詳細(xì)設(shè)計乃至編碼階段。對時間有特殊要求的軟件,采用下述對策: 1在不考慮時、空耗費的情況下,設(shè)計并精化軟件結(jié)構(gòu); 2借用CASE工具模擬分析運行時

17、的性能,定位出低效的部分,加以改進(jìn); 3詳細(xì)設(shè)計時對最耗時的模塊,認(rèn)真地設(shè)計它們的處理過程(算法),以便減少時間的開銷; 4盡量用高級語言編程以利于軟件的優(yōu)化;5對大量占用計算機系統(tǒng)資源的模塊必要時用低級語言重新編碼,以提高效率。補充:5.6總體設(shè)計案例分析通過總體設(shè)計的目標(biāo)引出軟件設(shè)計過程英語序列化要求通過實際事例引入分而治之的思想給出每種內(nèi)聚的概念并舉說明例給出每種耦合的概念并舉說明例設(shè)計軟件時應(yīng)盡量使用數(shù)據(jù)耦合,減少控制耦合,限制外部環(huán)境耦合和公共數(shù)據(jù)耦合,杜絕內(nèi)容耦合。由類樹圖引出有關(guān)程序結(jié)構(gòu)的術(shù)語給出每個步驟的詳細(xì)解釋在第節(jié)講過,在此強調(diào)一下結(jié)合事例對每條規(guī)則進(jìn)行闡述讓學(xué)生根據(jù)流程圖試著畫出結(jié)構(gòu)圖本章重點內(nèi)容對面向數(shù)據(jù)流的設(shè)計過程進(jìn)行詳細(xì)講解結(jié)合實例對變換分析的每一步驟進(jìn)行詳細(xì)闡述根據(jù)前面的基礎(chǔ),讓學(xué)生自己的對補充的”家庭保安系統(tǒng)”進(jìn)行變換分析以”家庭保安系統(tǒng)”進(jìn)行事務(wù)分析如果時間剩余對第四章課后習(xí)題進(jìn)行講解案例分析以學(xué)生為中心進(jìn)行小結(jié)

溫馨提示

  • 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

提交評論