自考“軟件工程”復(fù)習(xí)大綱及試驗(yàn)指導(dǎo)(3)
第三章 結(jié)構(gòu)化設(shè)計(jì)
1. 軟件設(shè)計(jì)階段的主要任務(wù)、方法、階段:
需求分析階段的主要任務(wù)是確定系統(tǒng)必須“做什么”,形成軟件的需求規(guī)格說明書,軟件設(shè)計(jì)階段的主要任務(wù)是確定系統(tǒng)“怎么做”,從軟件需求規(guī)格說明書出發(fā),形成軟件的具體設(shè)計(jì)方案,軟件設(shè)計(jì)可以采用多種方法,如結(jié)構(gòu)化設(shè)計(jì)方法、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法、面向?qū)ο蟮脑O(shè)計(jì)方法等,結(jié)構(gòu)化軟件設(shè)計(jì)可以分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個階段。
2. 總體設(shè)計(jì)階段的主要任務(wù)及其內(nèi)容:
總體設(shè)計(jì)階段的主要任務(wù)是把系統(tǒng)的功能需求分配給軟件結(jié)構(gòu),形成軟件的模塊結(jié)構(gòu)圖(MSD),在結(jié)構(gòu)圖中矩形表示功能單元,稱為“模塊”,連接上下層模塊的線段表示它們之間的調(diào)用關(guān)系,在總體設(shè)計(jì)階段,每個模塊還處于黑盒子級,模塊通過外部特征標(biāo)識,名字、輸入、輸出。
3. 總體設(shè)計(jì)的表示形式及其內(nèi)容(層次圖、HIPO圖、結(jié)構(gòu)圖):
層次圖是軟件總體設(shè)計(jì)階段最常使用的表示形式之一,用來描繪軟件的層次結(jié)構(gòu),圖中的每個方框代表一個模塊,方框間的連線表示模塊的調(diào)用關(guān)系,層次圖很適合于在自頂向下設(shè)計(jì)軟件的過程中使用;
HIPO圖是由美國IBM公司發(fā)明的“層次圖+輸入/處理/輸出圖”的英文縮寫,HIPO圖實(shí)際上由H圖和IPO圖兩部分組成,H圖就是上面提到的層次圖,為了能使HIPO圖具有可跟蹤性,在H圖里除了最頂層的方框之外,每個方框都加了編號;
結(jié)構(gòu)圖和層次圖類似,圖中每個方框代表一個模塊,方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系,在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息,尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。
4. 模塊及其組成:
模塊是執(zhí)行一個特殊任務(wù)或?qū)崿F(xiàn)一個特殊的抽象數(shù)據(jù)類型的一組例程和數(shù)據(jù)結(jié)構(gòu),模塊由兩部分組成,接口和實(shí)現(xiàn)模塊功能的執(zhí)行機(jī)制。
5. 面向數(shù)據(jù)流的設(shè)計(jì)方法(綜合應(yīng)用):
面向數(shù)據(jù)流的設(shè)計(jì)方法把數(shù)據(jù)流圖映射成為軟件結(jié)構(gòu),數(shù)據(jù)流圖的類型決定了映射的方法,數(shù)據(jù)流圖可以分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖,具有較明顯的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖,數(shù)據(jù)沿輸入通路到達(dá)一個處理模塊,這個處理模塊根據(jù)輸入數(shù)據(jù)的類型在若干動作序列中選出一個來執(zhí)行,這類數(shù)據(jù)流圖稱為事務(wù)型數(shù)據(jù)流圖,并且稱這個模塊為事務(wù)中心,它完成如下任務(wù),接收輸入數(shù)據(jù)、分析數(shù)據(jù)并確定數(shù)據(jù)類型、根據(jù)數(shù)據(jù)類型選取一條活動通路。
6. 評價軟件設(shè)計(jì)質(zhì)量的主要準(zhǔn)則(模塊化、抽象、耦合、內(nèi)聚)及詳細(xì)內(nèi)容:
模塊化是好的軟件設(shè)計(jì)的一個基本準(zhǔn)則;
抽象就是抽出事務(wù)的本質(zhì)特性而暫時不考慮它們的細(xì)節(jié),模塊是按照不同的抽象級別安排的,高層抽象模塊向讀者隱藏了功能實(shí)現(xiàn)的細(xì)節(jié),這就是信息隱蔽,模塊之間相互隱藏自身的實(shí)現(xiàn)細(xì)節(jié)對一個好的設(shè)計(jì)來說是至關(guān)重要的;
耦合是對不同模塊之間相互依賴程度的度量,緊密耦合是指兩個模塊之間存在著很強(qiáng)的依賴關(guān)系,松散耦合是指兩個模塊之間存在一些依賴關(guān)系,但他們之間的連接比較弱,無耦合是指模塊之間根本沒有任何連接;
耦合的強(qiáng)度依賴于以下四個因素,一個模塊對另一個模塊的引用,一個模塊向另一個模塊傳遞的數(shù)據(jù)量,一個模塊施加到另一個模塊的控制的數(shù)量,模塊之間接口的復(fù)雜程度;
從強(qiáng)到弱的幾種常見的耦合類型,內(nèi)容耦合,一個模塊直接修改或操作另一個模塊的數(shù)據(jù);公共耦合,兩個以上的模塊共同引用一個全局?jǐn)?shù)據(jù)項(xiàng);控制耦合,一個模塊在界面上傳遞一個信號控制另一個模塊,接收信號的模塊的動作根據(jù)信號值進(jìn)行調(diào)整,稱為控制耦合;標(biāo)記耦合,若兩個模塊至少有一個通過界面?zhèn)鬟f的公共參數(shù)包含內(nèi)部結(jié)構(gòu);數(shù)據(jù)耦合,模塊間通過參數(shù)傳遞基本類型的數(shù)據(jù),數(shù)據(jù)耦合是最簡單的耦合形式,系統(tǒng)中至少必須存在這種類型的耦合;
內(nèi)聚度量的是一個模塊內(nèi)部各成分之間相互關(guān)聯(lián)的強(qiáng)度,如果一個模塊的所有成分都直接參與并且對于完成同一功能來說都是最基本的,則該模塊是高內(nèi)聚的;
從低到高的幾種常見的內(nèi)聚類型,偶然內(nèi)聚,一個模塊的各個成分之間毫無關(guān)系;邏輯內(nèi)聚,幾個邏輯上相關(guān)的功能被放在同一模塊中;時間內(nèi)聚,一個模塊完成的功能必須在同一時間內(nèi)執(zhí)行,但這些功能只是因?yàn)闀r間因素關(guān)聯(lián)在一起;過程內(nèi)聚,一個模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行;通信內(nèi)聚,一個模塊的所有成分都操作同一數(shù)據(jù)集或生成同一數(shù)據(jù)集;順序內(nèi)聚,一個模塊的各個成分和同一個功能密切相關(guān),而且一個成分的輸出作為另一個的成分;功能內(nèi)聚,最理想的內(nèi)聚是功能內(nèi)聚,模塊的所有成分對于完成單一的功能都是基本的;
內(nèi)聚和耦合是密切相關(guān)的,在進(jìn)行軟件設(shè)計(jì)時,應(yīng)力爭做到強(qiáng)內(nèi)聚、弱耦合。
7. 結(jié)構(gòu)化設(shè)計(jì)的啟發(fā)式規(guī)則:
改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性,模塊規(guī)模應(yīng)該適中,深度、寬度、扇入和扇出應(yīng)適中,模塊的作用域應(yīng)該在控制域之內(nèi),力爭降低模塊接口的復(fù)雜性,模塊功能應(yīng)該可以預(yù)測;
模塊的作用域定義為受該模塊內(nèi)一個判定影響的所有模塊的集合,模塊的控制域是這個模塊本身以及所有直接或間接從屬于它的模塊的集合。
8. 結(jié)構(gòu)化分析與結(jié)構(gòu)化設(shè)計(jì)的區(qū)別:
結(jié)構(gòu)化分析得到數(shù)據(jù)流圖、數(shù)據(jù)字典等,屬于邏輯模型,結(jié)構(gòu)化設(shè)計(jì)得到模塊結(jié)構(gòu)圖,屬于程序模型。
9. 詳細(xì)設(shè)計(jì)階段的目標(biāo)、表現(xiàn)、內(nèi)容:
詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定怎樣具體的實(shí)現(xiàn)所要求的系統(tǒng),詳細(xì)設(shè)計(jì)以總體設(shè)計(jì)階段的工作為基礎(chǔ),但又不同于總體設(shè)計(jì),主要表現(xiàn)在,在總體設(shè)計(jì)階段,數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以比較抽象的方式描述,詳細(xì)設(shè)計(jì)要提供關(guān)于算法的更多細(xì)節(jié);
詳細(xì)設(shè)計(jì)的模塊包含實(shí)現(xiàn)對應(yīng)的總體設(shè)計(jì)的模塊所需要的處理邏輯,主要有,詳細(xì)的算法,數(shù)據(jù)表示和數(shù)據(jù)結(jié)構(gòu),實(shí)施的功能和使用的數(shù)據(jù)之間的關(guān)系。
10.結(jié)構(gòu)化程序的三種基本結(jié)構(gòu),結(jié)構(gòu)化設(shè)計(jì)的目標(biāo):
結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu),并且只包含順序、選擇和循環(huán)三種結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì)的目標(biāo)之一是使程序的控制流程線性化,即程序的動態(tài)執(zhí)行順序符合靜態(tài)書寫結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì)的觀點(diǎn)是要求設(shè)計(jì)好結(jié)構(gòu)的程序。
11.詳細(xì)設(shè)計(jì)的任務(wù),詳細(xì)設(shè)計(jì)的工具及其內(nèi)容特點(diǎn):
詳細(xì)設(shè)計(jì)的任務(wù)是給出軟件模塊結(jié)構(gòu)中各個模塊的內(nèi)部過程描述,也就是模塊內(nèi)部的算法設(shè)計(jì),詳細(xì)設(shè)計(jì)的工具可以分為圖形、表格、語言三種,包括程序流程圖、盒圖(N-S圖)、PAD圖、類程序設(shè)計(jì)語言(PDL);
程序流程圖中使用的主要符號包括順序、選擇、循環(huán)結(jié)構(gòu),它的主要缺點(diǎn)如下,程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早的考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu),程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制,程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu);
PAD是問題分析圖的英文縮寫,它用二維樹形結(jié)構(gòu)的圖表示程序的控制流,PAD圖的主要優(yōu)點(diǎn)如下,使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計(jì)出來的程序必然是結(jié)構(gòu)化程序,PAD圖所描述的程序結(jié)構(gòu)十分清晰,用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記,很容易將PAD圖轉(zhuǎn)換成高級語言源程序,既可用于表示程序邏輯,也可用于描述數(shù)據(jù)結(jié)構(gòu),PAD圖的符號支持自頂向下逐步求精的使用,PAD圖是面向高級程序設(shè)計(jì)語言的;
類程序設(shè)計(jì)語言也稱為偽碼,它是用正文形式表示數(shù)據(jù)結(jié)構(gòu)和處理過程的設(shè)計(jì)工具,PDL具有以下特點(diǎn),關(guān)鍵字的固定語法,提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的手段,自然語言的自由語法,用于描述處理過程和判定條件,數(shù)據(jù)說明的手段,既包括簡單的數(shù)據(jù)結(jié)構(gòu),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu),模塊定義和調(diào)用的技術(shù),提供各種接口描述模式;
PDL作為一種設(shè)計(jì)工具有如下一些優(yōu)點(diǎn),可以作為注釋直接插在源程序中間,可以使用普通的正文編輯程序或文字處理系統(tǒng),很方面的完成PDL的書寫和編輯工作,已經(jīng)有自動處理程序存在,而且可以自動由PDL生成程序代碼,PDL的缺點(diǎn)是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動作間的對應(yīng)關(guān)系時,不如判定表或判定樹清晰簡單。
本章設(shè)計(jì)題為DFD到模塊結(jié)構(gòu)圖的轉(zhuǎn)換和詳細(xì)設(shè)計(jì)工具的具體應(yīng)用,為筆試和試驗(yàn)的必考題型,非常重要,請考生參考輔導(dǎo)第256頁(1)~(7)題,務(wù)必每一種題型都熟練掌握。
本章與上一章的設(shè)計(jì)題是軟件工程科目的重點(diǎn),大約占筆試的35%,占試驗(yàn)的70%,并且前面四章的所有內(nèi)容大約占筆試的60%,希望讀者重點(diǎn)掌握。
?全國各地2008年10月自考網(wǎng)上成績查詢匯總
?環(huán)球網(wǎng)校2009年自考課程查看
更多信息請?jiān)L問:自學(xué)考試頻道 自學(xué)考試論壇 自學(xué)考試博客圈
最新資訊
- 考前必背!自學(xué)考試《中國近現(xiàn)代史綱要》論述題高頻考點(diǎn)2024-10-19
- 自考報考策略:科學(xué)搭配科目,加速畢業(yè)進(jìn)程2024-07-20
- 2025年考研考生五一假期,英語科目應(yīng)該如何復(fù)習(xí)?2024-05-03
- 備考指南!2024年4月自學(xué)考試考前要做哪些準(zhǔn)備?2024-03-31
- 考前備考沖刺!自考如何一次就過?2024-03-30
- 考點(diǎn)匯總:《中國近現(xiàn)代史綱要》論述題2024-03-25
- 備考資料:《中國近現(xiàn)代史綱要》簡答題考點(diǎn)匯總2024-03-25
- 自考可以從哪些維度進(jìn)行備考?2024-02-17
- @自考生,這里有備考技巧2024-02-17
- 自學(xué)考試備考復(fù)習(xí)方法!建議收藏2024-02-16