




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
回顧軟件設(shè)計(jì)的任務(wù)軟件總體設(shè)計(jì)的步驟什么是好的軟件設(shè)計(jì)?2/3/20230回顧結(jié)構(gòu)化設(shè)計(jì)方法將問題的解決方案表述為:軟件結(jié)構(gòu)圖+關(guān)系數(shù)據(jù)模式
軟件結(jié)構(gòu)圖描述軟件系統(tǒng)的程序結(jié)構(gòu)關(guān)系數(shù)據(jù)模式描述軟件系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)結(jié)構(gòu)化設(shè)計(jì)工作主要包括程序結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)2/3/20231回顧數(shù)據(jù)設(shè)計(jì)過程設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)總體設(shè)計(jì)詳細(xì)設(shè)計(jì)管理角度技術(shù)觀點(diǎn)接口設(shè)計(jì)2/3/20232設(shè)計(jì)原理模塊化抽象逐步求精信息隱藏和局部化
模塊獨(dú)立回顧2/3/20233五、模塊獨(dú)立模塊的獨(dú)立性的概念是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。模塊獨(dú)立性原則,希望每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的功能,并與其他模塊之間的關(guān)系盡量簡(jiǎn)單。設(shè)計(jì)原理2/3/20234五、模塊獨(dú)立設(shè)計(jì)時(shí)追求模塊獨(dú)立理由有二:第一,功能與接口都簡(jiǎn)單,便于團(tuán)隊(duì)分工協(xié)作。第二,易測(cè)試、易維護(hù)。比如手和腳是兩個(gè)“功能獨(dú)立”的模塊。沒有腳時(shí),手照樣能干活。沒有手時(shí),腳仍可以走路。但如果想讓人跑得快,那么邁左腳時(shí)一定要伸右臂甩左臂,邁右腳時(shí)則要伸左臂甩右臂。所以在設(shè)計(jì)模塊時(shí)不僅要考慮“這個(gè)模塊應(yīng)當(dāng)有什么樣的功能”,還要考慮“這個(gè)模塊應(yīng)該怎樣與其它模塊交流信息”。設(shè)計(jì)原理2/3/20235耦合
模塊之間的相對(duì)獨(dú)立性的度量?jī)?nèi)聚
模塊功能強(qiáng)度的度量模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量設(shè)計(jì)原理五、模塊獨(dú)立設(shè)計(jì)目標(biāo):力爭(zhēng)高內(nèi)聚、低耦合因?yàn)橹挥械婉詈喜拍芨玫倪m應(yīng)變化,更好的復(fù)用和擴(kuò)展。
2/3/20236設(shè)計(jì)原理五、模塊獨(dú)立耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,調(diào)用模塊的方式,以及通過接口的信息。根據(jù)模塊間耦合程度的強(qiáng)弱的標(biāo)準(zhǔn),劃分耦合類型,共有五種。
2/3/20237五、模塊獨(dú)立---耦合非直接耦合數(shù)據(jù)耦合特征耦合控制耦合5。外部耦合6。公共環(huán)境耦合7。內(nèi)容耦合弱耦合中耦合較強(qiáng)耦合強(qiáng)耦合模塊1模塊2模塊3模塊4數(shù)據(jù)耦合通過簡(jiǎn)單變量交換數(shù)據(jù)特征耦合通過數(shù)據(jù)結(jié)構(gòu)交換數(shù)據(jù)非直接耦合模塊之間沒有信息傳遞模塊A模塊B模塊C模塊D模塊L模塊NFlag=1?S1S2模塊1控制耦合模塊之間傳遞的是控制信息TF模塊A模塊B內(nèi)容耦合
訪問其它模塊的內(nèi)部數(shù)據(jù)直接跳到其他模塊內(nèi)部執(zhí)行公共環(huán)境耦合通過公共數(shù)據(jù)環(huán)境相互作用模塊2一組模塊都訪問同一全局簡(jiǎn)單變量2/3/20238公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。五、模塊獨(dú)立—耦合設(shè)計(jì)原理2/3/20239內(nèi)聚類型說明非直接耦合兩個(gè)模塊之間沒有直接關(guān)系數(shù)據(jù)耦合通過簡(jiǎn)單數(shù)據(jù)參數(shù)交換信息特征耦合通過復(fù)雜數(shù)據(jù)參數(shù)交換信息控制耦合傳送開關(guān)、標(biāo)志、名字等控制信息外部耦合訪問同一全局簡(jiǎn)單變量公共耦合訪問同一個(gè)公共數(shù)據(jù)環(huán)境內(nèi)容耦合一個(gè)模塊可直接訪問另一模塊五、模塊獨(dú)立--耦合度設(shè)計(jì)原理2/3/202310兩模塊之間是否沒有任何信息傳遞?11非直接耦合22數(shù)據(jù)耦合33特征耦合44控制耦合55外部耦合66公共耦合77內(nèi)容耦合以何種方式
傳遞信息?傳遞的信息類型?共享數(shù)據(jù)YESNO簡(jiǎn)單類型參數(shù)表傳遞的信息類型?直接讀取數(shù)據(jù)結(jié)構(gòu)標(biāo)志量簡(jiǎn)單類型數(shù)據(jù)結(jié)構(gòu)耦合強(qiáng)度等級(jí)設(shè)計(jì)原理2/3/202311設(shè)計(jì)原理五、模塊獨(dú)立設(shè)計(jì)原則:控制耦合是一種中等程度的耦合。應(yīng)盡可能少用。外部耦合和公共耦合是較強(qiáng)程度的耦合。盡管有時(shí)無法避免,但要特別注意、嚴(yán)加控制。內(nèi)容耦合是耦合程度最強(qiáng)的耦合,極大增強(qiáng)了軟件的復(fù)雜性,給維護(hù)帶來嚴(yán)重困難,是“病態(tài)聯(lián)系”,應(yīng)禁止使用。實(shí)際完全可以避免。2/3/202312設(shè)計(jì)原理特征耦合的模塊聯(lián)接形式不如數(shù)據(jù)耦合形式好,如果不是特別需要,盡量使用數(shù)據(jù)耦合形式。2/3/202313設(shè)計(jì)原理特征耦合可不改特征耦合改為數(shù)據(jù)耦合2/3/202314五、模塊獨(dú)立—耦合本質(zhì)上,控制耦合干涉了被調(diào)用模塊的內(nèi)部處理邏輯,這樣就造成了B模塊不再是一個(gè)暗盒,因此是一種不好的設(shè)計(jì)形式??刂岂詈显O(shè)計(jì)原理2/3/202315五、模塊獨(dú)立—耦合去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行(2)被調(diào)用模塊分解成若干單一功能模塊A計(jì)算平均分B1平均成績(jī)最高成績(jī)計(jì)算最高分B2改控制耦合為數(shù)據(jù)耦合舉例設(shè)計(jì)原理2/3/202316五、模塊獨(dú)立—內(nèi)聚模塊的內(nèi)聚性是反映模塊的獨(dú)立性的另一個(gè)側(cè)面,模塊內(nèi)聚性越強(qiáng),其獨(dú)立性就越好。內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說,理想內(nèi)聚的模塊只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚。設(shè)計(jì)原理2/3/2023171偶然型內(nèi)聚CoincidentalCohesion3時(shí)間型內(nèi)聚TemporalCohesion4過程型內(nèi)聚ProceduralCohesion5通訊型內(nèi)聚CommunicationalCohesion6順序型內(nèi)聚SequentialCohesion7功能型內(nèi)聚FunctionalCohesion1234567弱強(qiáng)低內(nèi)聚中內(nèi)聚高內(nèi)聚2邏輯型內(nèi)聚LogicalCohesion設(shè)計(jì)原理2/3/202318內(nèi)聚類型說明偶然型內(nèi)聚各組成部分在功能上互不相關(guān)邏輯型內(nèi)聚各組成部分邏輯功能相似時(shí)間型內(nèi)聚各組成部分需要在同一時(shí)間內(nèi)執(zhí)行過程型內(nèi)聚各組成部分必須按照某一特定的次序執(zhí)行通信型內(nèi)聚各組成部分處理公共的數(shù)據(jù)順序型內(nèi)聚各組成部分順序執(zhí)行,前一個(gè)的輸出數(shù)據(jù)為后一個(gè)的輸入數(shù)據(jù)功能型內(nèi)聚內(nèi)部所有活動(dòng)均完成單一功能設(shè)計(jì)原理2/3/202319
模塊T中的三條語句毫無關(guān)系,A、B、C、D都不在文件CARDFILE中。模塊P、Q、R分別與三條語句有關(guān)。PQRMOVEATOBREADCARDFILEMOVECTOD
偶然型模塊五、模塊獨(dú)立—內(nèi)聚1、偶然型(CoincidentalCohesion)-節(jié)約空間又稱為巧合型,為了節(jié)約空間,將毫無關(guān)系(或者聯(lián)系不多)的各成分放在一個(gè)模塊中。這樣的模塊顯然不易理解,不易修改。T設(shè)計(jì)原理返回2/3/202320
將幾個(gè)邏輯上相似的功能放在一個(gè)模塊中,調(diào)用時(shí)由調(diào)用模塊傳遞的參數(shù)確定執(zhí)行的功能。由于要進(jìn)行控制參數(shù)的傳遞,必然要影響模塊的內(nèi)聚性。
五、模塊獨(dú)立—內(nèi)聚2、邏輯型(LogicalCohesion)--節(jié)約空間設(shè)計(jì)原理2/3/202321ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG公用代碼段公用代碼段缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)不易修改,效率低返回五、模塊獨(dú)立—內(nèi)聚
3、時(shí)間型(TemporalCohesion)將需要同時(shí)執(zhí)行的成分放在一個(gè)模塊中,因?yàn)槟K中的各功能與時(shí)間有關(guān),因此又稱為瞬時(shí)內(nèi)聚或經(jīng)典內(nèi)聚。例如,初始化模塊,中止模塊等這類模塊內(nèi)部結(jié)構(gòu)較簡(jiǎn)單,一般較少判定,因此比邏輯內(nèi)聚強(qiáng),但是由于將多個(gè)功能放在一起,給修改和維護(hù)造成困難。返回設(shè)計(jì)原理2/3/202323五、模塊獨(dú)立—內(nèi)聚
4、過程內(nèi)聚:模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行讀入成績(jī)單審查成績(jī)單統(tǒng)計(jì)成績(jī)打印成績(jī)讀入并審查成績(jī)單統(tǒng)計(jì)并打印成績(jī)單設(shè)計(jì)原理返回2/3/202324五、模塊獨(dú)立—內(nèi)聚5、通信型(CommunicationalCohesion)模塊中的成分引用共同的輸入數(shù)據(jù),或者產(chǎn)生相同的輸出數(shù)據(jù),則稱為是通信內(nèi)聚模塊。通信型模塊比瞬時(shí)型模塊的內(nèi)聚性強(qiáng),因?yàn)槟K中包含了許多獨(dú)立的功能,但卻引用相同數(shù)據(jù)。通信模塊一般可以通過數(shù)據(jù)流圖來定義。A打印報(bào)告1打印報(bào)告2打印報(bào)告2B存入打印C修改刪除打?。╝)(b)(c)通信型模塊設(shè)計(jì)原理返回2/3/202325五、模塊獨(dú)立—內(nèi)聚6、順序型(SequentialCohesion)
模塊內(nèi)的各處理成份均與同一功能相關(guān),且模塊中某個(gè)成分的輸出是另一成分的輸入。由于這類模塊無論數(shù)據(jù)還是執(zhí)行順序,模塊中的一部分依賴于另外一部分。因此具有較好的內(nèi)聚性。
順序型模塊,編輯功能的輸入是讀入功能的輸出,打印功能的輸入是累加功能的輸出。讀入編輯A數(shù)據(jù)累加打印B結(jié)果順序型模塊設(shè)計(jì)原理返回2/3/202326五、模塊獨(dú)立—內(nèi)聚7、功能型(SequentialCohesion)一個(gè)模塊包括而且僅包括完成某一具體功能所必須的所有成分。或者說,模塊的所有成分都是為完成該功能而協(xié)同工作、緊密聯(lián)系、不可分割的。例如僅完成以下功能的模塊為功能模塊:
●求平方根
●求解一元二次方程
●計(jì)算利息
●判素?cái)?shù)
求解方程的功能模塊求一元二次方程求平方根AB設(shè)計(jì)原理返回2/3/202327該模塊是否只完成單一的功能?7功能型內(nèi)聚6順序型內(nèi)聚5通信型內(nèi)聚4過程型內(nèi)聚3時(shí)間型內(nèi)聚2邏輯型內(nèi)聚1偶然型內(nèi)聚模塊內(nèi)的活動(dòng)依據(jù)什么發(fā)生聯(lián)系?次序是否重要?次序是否重要?所有的活動(dòng)是同一類的嗎?NONOYESNO數(shù)據(jù)YESNO控制流都不是YESYES內(nèi)聚強(qiáng)度的劃分設(shè)計(jì)原理2/3/202328算多個(gè)地點(diǎn)的每日平均溫度初始化求和并打開文件創(chuàng)建新的溫度記錄存儲(chǔ)溫度記錄關(guān)閉文件并打印平均溫度功能型內(nèi)聚
偶然內(nèi)聚
偶然內(nèi)聚功能型內(nèi)聚讀取地點(diǎn)、時(shí)間和溫度存儲(chǔ)特定地點(diǎn)溫度編輯地點(diǎn)、時(shí)間或溫度字段功能型內(nèi)聚功能型內(nèi)聚功能型內(nèi)聚邏輯內(nèi)聚每個(gè)內(nèi)聚的模塊互聯(lián)例2/3/202329補(bǔ)充:層內(nèi)聚(layercohesion)
把向用戶或高層提供相關(guān)服務(wù)的功能放在一起.用戶界面應(yīng)用邏輯訪問操作系統(tǒng)訪問數(shù)據(jù)庫網(wǎng)絡(luò)通信應(yīng)用程序的典型層次2/3/202330本章要點(diǎn)一、軟件設(shè)計(jì)概述二、總體設(shè)計(jì)的過程三、總體設(shè)計(jì)原理四、啟發(fā)規(guī)則五、常用的描述軟件結(jié)構(gòu)的圖形工具六、面向數(shù)據(jù)流的設(shè)計(jì)方法七、案例分析八、軟件總體設(shè)計(jì)文檔2/3/202331
實(shí)踐中,總結(jié)經(jīng)驗(yàn)得出了一些啟發(fā)式規(guī)則。發(fā)式規(guī)則雖然不像上基本原理和概念那樣普遍適用,但是在許多場(chǎng)合仍然能給軟件工程師以有益的啟示,能幫助他們找到改進(jìn)軟件設(shè)計(jì)提高軟件質(zhì)量的途徑。啟發(fā)規(guī)則2/3/202332啟發(fā)規(guī)則啟發(fā)規(guī)則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性。模塊規(guī)模應(yīng)該適中。深度、寬度、扇出和扇入都應(yīng)適當(dāng)。模塊的作用域應(yīng)該在控制域之內(nèi)。力爭(zhēng)降低模塊接口的復(fù)雜程度。
設(shè)計(jì)單入口單出口的模塊。
模塊功能應(yīng)該可以預(yù)測(cè)。2/3/2023331.改進(jìn)軟件結(jié)構(gòu),提高模塊獨(dú)立性設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個(gè)結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立成一個(gè)模塊,由這些模塊調(diào)用;有時(shí)可以通過分解或合并模塊以減少控制信息的傳遞及對(duì)全程數(shù)據(jù)的引用,并且降低接口的復(fù)雜程度。啟發(fā)規(guī)則2/3/202334如C1,C2有類似功能,也有不同功能??砂压δ茴愃频牟糠址蛛x出來,增加一個(gè)公共下屬模塊
A
C1’
A
C2’
C
’
C
A’
B’
A
C1A
C2
如果余下的C1,C2比較簡(jiǎn)單,可分別與其上級(jí)模塊合并,以減少控制的傳遞、全局?jǐn)?shù)據(jù)的引用和接口的復(fù)雜性。啟發(fā)規(guī)則2/3/202335啟發(fā)規(guī)則2.模塊規(guī)模應(yīng)該適中經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過大。過大的模塊往往是由于分解不充分,但是進(jìn)一步分解必須符合問題結(jié)構(gòu),一般說來,分解后不應(yīng)該降低模塊獨(dú)立性。模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜,因此過小的模塊有時(shí)不值得單獨(dú)存在。2/3/202336啟發(fā)規(guī)則MDBCAEKLNGFHPRSJTIQ扇出扇入寬度深度3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)2/3/202337深度:
程序結(jié)構(gòu)的層次數(shù)。扇出:
表示一個(gè)模塊直接調(diào)用(或控制)的下屬模塊的個(gè)數(shù).寬度:
層次結(jié)構(gòu)中同一層模塊的最大模塊個(gè)數(shù)。扇入:
一個(gè)模塊的直接上級(jí)模塊的模塊。啟發(fā)規(guī)則2/3/2023383.深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度和程序長(zhǎng)度之間應(yīng)該有粗略的對(duì)應(yīng)關(guān)系。如果層數(shù)過多則應(yīng)該考慮是否有許多管理模塊過分簡(jiǎn)單了,能否適當(dāng)合并。一般說來,寬度越大系統(tǒng)越復(fù)雜。對(duì)寬度影響最大的因素是模塊的扇出。啟發(fā)規(guī)則2/3/202339啟發(fā)規(guī)則扇出過大意味著模塊過分復(fù)雜,需要控制和協(xié)調(diào)過多的下級(jí)模塊;扇出過小(例如總是1)也不好。經(jīng)驗(yàn)表明,一個(gè)設(shè)計(jì)得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限通常是5~9)。扇出太大一般是因?yàn)槿狈χ虚g層次,應(yīng)該適當(dāng)增加中間層次的控制模塊。扇出太小時(shí)可以把下級(jí)模塊進(jìn)一步分解成若干個(gè)子功能模塊,或者合并到它的上級(jí)模塊中去。當(dāng)然分解模塊或合并模塊必須符合問題結(jié)構(gòu),不能違背模塊獨(dú)立性原理。2/3/202340
編外人員工資取得工資數(shù)據(jù)計(jì)時(shí)制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款計(jì)算實(shí)發(fā)工資模塊的高扇出啟發(fā)規(guī)則2/3/202341
計(jì)算實(shí)發(fā)工資取得工資數(shù)據(jù)計(jì)時(shí)工人實(shí)發(fā)工資計(jì)薪工人實(shí)發(fā)工資編外人員實(shí)發(fā)工資編外人員工資計(jì)時(shí)制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款合理的模塊扇出啟發(fā)規(guī)則2/3/202342扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多,這是有好處的,但不能違背模塊獨(dú)立原理單純追求高扇入。觀察大量軟件系統(tǒng)后發(fā)現(xiàn),好的軟件結(jié)構(gòu)通常頂層扇出比較高,中層扇出較少,底層扇入到公共的實(shí)用模塊中去(底層模塊有高扇入)。啟發(fā)規(guī)則QQ1Q2Q3Q2/3/202343控制域—一個(gè)模塊的控制域,等于模塊本身加上其下級(jí)模塊,即可供它調(diào)用的模塊。作用域—一個(gè)模塊的作用域,是受這個(gè)模塊中的判定所影響的模塊。圖中模塊A的控制范圍:A、B、C、D、G、E、F如果模塊F的判定涉及到模塊B、E、F。則F的的作用范圍:B、E、FABCDGEFFBE(a)啟發(fā)規(guī)則4.模塊的“作用域”應(yīng)該在“控制域”之內(nèi)2/3/202344當(dāng)作用域?yàn)榭刂朴虻淖蛹瘯r(shí),才能獲得較低的塊間聯(lián)系。如圖中的設(shè)計(jì),判定的作用范圍恰好在判定所在模塊的下一層。TOPXTBAB1B2圖(b)中模塊TOP的控制范圍是:
模塊TOP、X、T、B、A、B1、B2;模塊B的控制范圍與作用范圍相同,均為:模塊B、A、B1、B2(b)4.模塊的“作用域”應(yīng)該在“控制域”之內(nèi)啟發(fā)規(guī)則2/3/202345答案顯然,圖(a)不滿足作用范圍應(yīng)與控制范圍的原則,模塊F的作用范圍不在控制范圍之內(nèi)。圖(b)中模塊TOP和圖(c)中模塊B雖然滿足上述原則,但其作用范圍所涉及到的模塊不是直接的。圖(d)的模塊設(shè)計(jì)最合理??刂品秶c作用范圍舉例TOPABCDEF(a)◆TOPABCDEF(d)◆TOPABCDEF(b)◆TOPABCDEF(c)◆比較(a)、(b)、(c)、(d)4種設(shè)計(jì)方案的優(yōu)劣!2/3/202346作用域/控制域規(guī)則若F中有判定,影響到B…若M中有判定,影響到B和F…若A中有判定,影響到B和F…若C中有判定,影響到D和F…不好,使模塊間出現(xiàn)控制耦合
可用。但不好,判定在模塊層次中的位置太高較好:控制范圍包含了作用范圍,距離也尚可理想的設(shè)計(jì)
M
AG
EB
CD
F
啟發(fā)規(guī)則2/3/2023475.力爭(zhēng)降低模塊接口的復(fù)雜程度模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。接口復(fù)雜或不一致性(即看起來傳遞的數(shù)據(jù)之間沒有聯(lián)系),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性。啟發(fā)規(guī)則2/3/2023486.設(shè)計(jì)單入口、單出口的模塊該規(guī)則警告軟件工程師,不要出現(xiàn)內(nèi)容耦合。當(dāng)從頂部進(jìn)入、底部退出時(shí),模塊是易理解的,也易維護(hù)。啟發(fā)規(guī)則2/3/2023497、模塊的功能應(yīng)該能夠預(yù)測(cè)把一個(gè)模塊看作黑盒子,只要輸入的數(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í)模塊而言是不可見的,所以這樣的模塊既不易理解又難于測(cè)試和維護(hù)。啟發(fā)規(guī)則2/3/202350總體設(shè)計(jì)原理小結(jié)
(1)遵照模塊的特性:分解、抽象、信息隱蔽、模塊的獨(dú)立,結(jié)構(gòu)化.(2)模塊的功能是完備的,但要消除冗余.(4)模塊應(yīng)具有高內(nèi)聚、低耦會(huì);高扇入、低扇出;模塊的深度,寬度要適當(dāng).(3)大小適中,降低模塊接口的復(fù)雜性.(5)模塊的判定作用范圍應(yīng)限制在模塊的控制范圍之內(nèi).(6)避免模塊的病態(tài)連接(內(nèi)容耦合、公共耦合、通信耦合)2/3/202351遵守設(shè)計(jì)原則的軟件就具有高內(nèi)聚,低耦合的設(shè)計(jì)特點(diǎn),也就是可維護(hù),高擴(kuò)展,高復(fù)用的設(shè)計(jì)。設(shè)計(jì)是一項(xiàng)創(chuàng)新和平衡的活動(dòng)!要么創(chuàng)造一個(gè)新的東西來滿足所有要求,要么就在已有的要求之間進(jìn)行平衡??傮w設(shè)計(jì)原理小結(jié)
2/3/202352本章要點(diǎn)一、軟件設(shè)計(jì)概述二、總體設(shè)計(jì)的過程三、總體設(shè)計(jì)原理四、啟發(fā)規(guī)則五、常用的描述軟件結(jié)構(gòu)的圖形工具六、面向數(shù)據(jù)流的設(shè)計(jì)方法七、案例分析八、軟件總體設(shè)計(jì)文檔2/3/202353常用的軟件結(jié)構(gòu)圖形工具層次圖HIPO圖結(jié)構(gòu)圖2/3/202354一、層次圖(H圖)層次圖(H圖)用于描繪軟件的層次結(jié)構(gòu),層次圖中一個(gè)矩形框代表一個(gè)模塊,框間的連線表示調(diào)用關(guān)系,位于上方的矩形框所代表的模塊調(diào)用位于下方的矩形框所代表的模塊,下圖是一個(gè)層次圖的例子。層次圖很適于在自頂向下設(shè)計(jì)軟件的過程中使用。
常用的軟件結(jié)構(gòu)圖形工具2/3/202355酒店管理信息系統(tǒng)的層次圖HMIS客房結(jié)帳子系統(tǒng)客房登記子系統(tǒng)餐廳管理子系統(tǒng)客人登記預(yù)定登記客房處理歷史記錄客房查詢預(yù)定查詢餐桌安排菜單作業(yè)營(yíng)業(yè)結(jié)帳匯總打印各類查詢初始設(shè)置客帳處理退房處理夜審處理客帳查詢報(bào)表打印
正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄添加刪除插入修改合并列表2/3/202357
正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲(chǔ)5.0檢索6.0編目錄7.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6帶編號(hào)的層次圖(H圖)2/3/202358二、HIPO圖HIPO圖是美國(guó)IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。為了使HIPO圖具有可追蹤性,在H圖里除了頂層的方框之外,每個(gè)方框都加了編號(hào)。例如,把上圖加了編號(hào)之后得到下圖。與H圖中的每個(gè)方框相對(duì)應(yīng),應(yīng)該有一張IPO圖描述這個(gè)方框代表的模塊的處理過程,每張IPO圖內(nèi)都應(yīng)該明顯地標(biāo)出它所描繪的模塊在H圖中中的編號(hào),以便確定這個(gè)模塊在軟件結(jié)構(gòu)中的位置?!背S玫能浖Y(jié)構(gòu)圖形工具2/3/202359常用的軟件結(jié)構(gòu)圖形工具2/3/202360續(xù)借書使用情況4圖書使用3借書還書預(yù)約書。。。計(jì)算消耗打印報(bào)表圖書館系統(tǒng)舉例:說明圖書館系統(tǒng)功能圖(H圖)常用的軟件結(jié)構(gòu)圖形工具2/3/202361舉例:圖書信息管理系統(tǒng)IPO圖
編號(hào):IPO3.1名稱:借書處理輸入?yún)?shù)處理說明輸出參數(shù)讀者編號(hào)圖書編號(hào)1.輸入讀者編號(hào)和圖書編號(hào)2.創(chuàng)建借書記錄,修改圖書在庫量3.如果此書曾經(jīng)預(yù)訂,則取消圖書預(yù)訂記錄修改DS102的在庫圖書量插入借書記錄到DS200取消DS400中的預(yù)訂記錄備注:常用的軟件結(jié)構(gòu)圖形工具2/3/202362模塊5模塊5模塊4模塊4模塊1模塊3模塊2valuesvaluesdatadata模塊1模塊2模塊3valuesvaluesdatadata結(jié)構(gòu)圖(StructureChart,簡(jiǎn)稱SC圖)是精確表達(dá)軟件結(jié)構(gòu)的圖形表示方法,它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。結(jié)構(gòu)圖的主要構(gòu)成有:⑴模塊(Module):用矩形框表示,框中寫有模塊的名字,說明模塊的功能。模塊是程序?qū)ο笥忻值募?。例如:過程、函數(shù)、子程序、宏等。⑶數(shù)據(jù):調(diào)用箭頭邊上的小箭頭表示調(diào)用時(shí)從一個(gè)模塊傳送給另一模塊的數(shù)據(jù)。通常在短箭頭附近應(yīng)注有信息的名字,如圖所示。模塊調(diào)用圖⑵調(diào)用:從一個(gè)模塊指向另一個(gè)模塊的箭頭表示前一模塊對(duì)后一模塊的調(diào)用,一般是上層調(diào)用下層。右圖表示模塊1調(diào)用了模塊2和模塊3。data三、軟件結(jié)構(gòu)圖(SC圖)常用的軟件結(jié)構(gòu)圖形工具2/3/202363
模塊間接口的表示A查詢學(xué)生成績(jī)B查找學(xué)生記錄○學(xué)號(hào)查找成功的信號(hào)
常用尾端帶有空心圓的短箭頭表示數(shù)據(jù)信息,用尾端帶有實(shí)心圓的短箭頭表示控制信息。有的結(jié)構(gòu)圖對(duì)這兩種信息不加以區(qū)別,一律用注有信息名的短箭頭來表示,如圖所示。
三、軟件結(jié)構(gòu)圖(SC圖)常用的軟件結(jié)構(gòu)圖形工具2/3/202364
當(dāng)模塊A有條件地調(diào)用另一個(gè)模塊B時(shí),在模塊A的箭頭尾部標(biāo)以一個(gè)菱形符號(hào),當(dāng)一個(gè)模塊A反復(fù)地調(diào)用模塊B、和模塊D時(shí),在調(diào)用箭頭尾部則標(biāo)以一個(gè)弧形符號(hào),如圖所示。在結(jié)構(gòu)圖中這種條件調(diào)用所依賴的條件和循環(huán)調(diào)用所依賴的循環(huán)控制條件通常無需注明。為了進(jìn)一步描述模塊間的調(diào)用關(guān)系,還可使用兩種輔助符號(hào)。輔助符號(hào)ABCD條件選擇ABCD循環(huán)常用的軟件結(jié)構(gòu)圖形工具三、軟件結(jié)構(gòu)圖(SC圖)2/3/202365傳入模塊(a)(b)AA傳出模塊BB變換模塊(c)CD協(xié)調(diào)模塊E(d)EFFSC中的四種模塊常用的軟件結(jié)構(gòu)圖形工具2/3/202366傳入模塊從下屬模塊取得數(shù)據(jù),進(jìn)行某些處理,再將其結(jié)果傳給上級(jí)模塊。在此,將它傳送的數(shù)據(jù)流稱為邏輯輸入數(shù)據(jù)流傳入模塊AA邏輯輸入數(shù)據(jù)流成績(jī)處理成績(jī)錄入
常用的軟件結(jié)構(gòu)圖形工具三、軟件結(jié)構(gòu)圖(SC圖)2/3/202367傳出模塊從上級(jí)模塊獲得數(shù)據(jù),進(jìn)行某些處理,再將其結(jié)果傳給下屬模塊。在此,將它傳送的數(shù)據(jù)流稱為邏輯輸出數(shù)據(jù)流傳出模塊DD邏輯輸出數(shù)據(jù)流成績(jī)處理成績(jī)輸出三、軟件結(jié)構(gòu)圖(SC圖)常用的軟件結(jié)構(gòu)圖形工具2/3/202368變換模塊也叫加工模塊。它是從上級(jí)模塊獲得數(shù)據(jù),進(jìn)行特定的處理,將其轉(zhuǎn)換為其他形式,再傳回上級(jí)模塊它所加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流變換模塊CB變換數(shù)據(jù)流審查并開發(fā)票發(fā)票購書單
三、軟件結(jié)構(gòu)圖(SC圖)常用的軟件結(jié)構(gòu)圖形工具2/3/202369協(xié)調(diào)模塊對(duì)所有下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊。在一個(gè)好的軟件結(jié)構(gòu)圖中,協(xié)調(diào)模塊應(yīng)在較高層出現(xiàn)協(xié)調(diào)模塊YXYX三、軟件結(jié)構(gòu)圖(SC圖)常用的軟件結(jié)構(gòu)圖形工具2/3/202370
調(diào)用次序?yàn)樯蠈诱{(diào)用下層;
同層按照數(shù)據(jù)傳遞關(guān)系確定;一般從左到右執(zhí)行。
執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。報(bào)告計(jì)算獲得編輯確認(rèn)數(shù)據(jù)讀入編輯打印報(bào)告頭打印報(bào)告尾打印輸入EOF輸入已編輯已編輯已編輯已確認(rèn)已確認(rèn)數(shù)據(jù)已確認(rèn)數(shù)據(jù)計(jì)算結(jié)果結(jié)果日期總結(jié)果行行行打印報(bào)告予以確認(rèn)例:打印報(bào)告的軟件結(jié)構(gòu)圖常用的軟件結(jié)構(gòu)圖形工具2/3/202371本章要點(diǎn)一、軟件設(shè)計(jì)概述二、總體設(shè)計(jì)的過程三、總體設(shè)計(jì)原理四、啟發(fā)規(guī)則五、常用的描述軟件結(jié)構(gòu)的圖形工具六、面向數(shù)據(jù)流的設(shè)計(jì)方法七、案例分析八、軟件總體設(shè)計(jì)文檔2/3/202372面向數(shù)據(jù)流的設(shè)計(jì)方法
面向數(shù)據(jù)流設(shè)計(jì)方法的基本概念
SD以數(shù)據(jù)流圖為基礎(chǔ),它定義了把DFD變換成軟件結(jié)構(gòu)的不同映射方法DFD(問題結(jié)構(gòu))軟件系統(tǒng)的結(jié)構(gòu)(程序結(jié)構(gòu))DFD圖映射2/3/202373數(shù)據(jù)流圖類型和SD方法的步驟在軟件設(shè)計(jì)開始之前,首先要分清DFD圖所顯示的系統(tǒng)特征.在DFD圖所代表的SA模型中,所有系統(tǒng)均可以納入兩種典型的形式:變換型結(jié)構(gòu)事務(wù)型結(jié)構(gòu)面向數(shù)據(jù)流的設(shè)計(jì)方法
2/3/202374事務(wù)型數(shù)據(jù)流結(jié)構(gòu)傳入變換傳出變換中心傳入部分傳出部分事務(wù)分析事務(wù)中心動(dòng)作1動(dòng)作2動(dòng)作3接受接受部分變換型數(shù)據(jù)流結(jié)構(gòu)2/3/202375
信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)過加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流具有這些特征時(shí),這種信息流稱為變換流。外部表示內(nèi)部表示信息輸入流輸出流變換流信息流時(shí)間1、變換型結(jié)構(gòu)的特征面向數(shù)據(jù)流的設(shè)計(jì)方法
2/3/202376邏輯輸出邏輯輸入物理輸入記帳憑證報(bào)表物理輸出帳薄物理輸出憑證輸入憑證驗(yàn)證日常帳務(wù)處理月末結(jié)帳處理打印帳薄打印報(bào)表輸出主加工輸入
變換型數(shù)據(jù)流圖面向數(shù)據(jù)流的設(shè)計(jì)方法
2/3/202377
數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來執(zhí)行。這種“以事務(wù)為中心的”的數(shù)據(jù)流,成為“事務(wù)流”。T事務(wù)事務(wù)中心處理T稱為事務(wù)中心,完成以下任務(wù):接收輸入數(shù)據(jù);分析每個(gè)事務(wù)以確定它的類型;根據(jù)事務(wù)類型選取一條活動(dòng)通路。2、事務(wù)型結(jié)構(gòu)特征面向數(shù)據(jù)流的設(shè)計(jì)方法2/3/202378分類報(bào)名付款注銷查詢復(fù)審
事務(wù)型(transaction)它又分為集中式數(shù)據(jù)處理和發(fā)散式數(shù)據(jù)處理集中式事務(wù)型數(shù)據(jù)流圖面向數(shù)據(jù)流的設(shè)計(jì)方法
2/3/202379接收變換中心事務(wù)處理
路徑發(fā)散的事務(wù)型數(shù)據(jù)流圖
面向數(shù)據(jù)流的設(shè)計(jì)方法2/3/202380通常在大型系統(tǒng)DFD中,變換型和事務(wù)型結(jié)構(gòu)往往共存:T事務(wù)中心傳入變換傳出面向數(shù)據(jù)流的設(shè)計(jì)方法2/3/202381精化DFDDFD類型?區(qū)分事務(wù)中心和動(dòng)作路徑區(qū)分變換中心,傳入和傳出路徑映射成事務(wù)結(jié)構(gòu)映射成變換結(jié)構(gòu)精化軟件結(jié)構(gòu)評(píng)審軟件結(jié)構(gòu)合格?NY詳設(shè)結(jié)束開始事務(wù)分析變換分析事務(wù)變換由DFD到SC的過程2/3/202382如何將DFD映射為軟件結(jié)構(gòu)?變換型事務(wù)型方法不一樣面向數(shù)據(jù)流的設(shè)計(jì)方法2/3/202383面向數(shù)據(jù)流的設(shè)計(jì)方法一、變換型數(shù)據(jù)流圖轉(zhuǎn)軟件結(jié)構(gòu)的方法具有“變換型”的數(shù)據(jù)流圖,明顯可以分割為“導(dǎo)入”、“加工變換”和“導(dǎo)出”三部分,對(duì)應(yīng)軟件結(jié)構(gòu)的“傳入子系統(tǒng)”、“中心變換子系統(tǒng)”和“傳出子系統(tǒng)”三部分。2/3/202384FDC中心加工2號(hào)加工3號(hào)加工1號(hào)加工4號(hào)加工ABE
輸入流轉(zhuǎn)換流輸出流
輸入流轉(zhuǎn)換流輸出流一、變換型轉(zhuǎn)換結(jié)構(gòu)圖的方法1找出邊界,進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。MCICTCOCCDDCICTCO變換分析技術(shù)面向數(shù)據(jù)流的設(shè)計(jì)方法2/3/202385DDCC2進(jìn)行二級(jí)分解,設(shè)計(jì)中下層模塊這一步的工作是自頂向下,逐步細(xì)化,為第一層的每
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)殘疾人車行業(yè)市場(chǎng)調(diào)查研究及投資戰(zhàn)略研究報(bào)告
- 2024-2027年中國(guó)光通信行業(yè)市場(chǎng)全景評(píng)估及投資方向研究報(bào)告
- 女裝行業(yè)未來發(fā)展方向與挑戰(zhàn)
- 農(nóng)產(chǎn)品電商中心物流配送方案
- 2025年醋酐項(xiàng)目安全調(diào)研評(píng)估報(bào)告
- 骨科科室年終總結(jié)(5篇)
- 2025-2030年中國(guó)蠶絲舒膚毯行業(yè)深度研究分析報(bào)告
- 七年級(jí)語文常用知識(shí)點(diǎn)
- 十三五重點(diǎn)項(xiàng)目-焊接煙塵凈化設(shè)備項(xiàng)目資金申請(qǐng)報(bào)告
- 2025年通訊設(shè)備零部件行業(yè)深度研究分析報(bào)告
- 信息科技課的跨學(xué)科主題學(xué)習(xí)PP義務(wù)教育課程方案和課程標(biāo)準(zhǔn)國(guó)家級(jí)示范培訓(xùn)課件
- 五年級(jí)下冊(cè)英語作文訓(xùn)練-外研版(三起)
- 第七節(jié)碎石路基施工方案
- 三年級(jí)數(shù)學(xué)興趣班綱要及教案
- 記者行業(yè)現(xiàn)狀分析及發(fā)展趨勢(shì)
- 2024年漯河食品職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫附答案
- 廣東省深圳市2023年中考英語試題(含答案與解析)
- 《看看我們的地球》
- 吉林省地方教材家鄉(xiāng)小學(xué)一年級(jí)下冊(cè)家鄉(xiāng)教案
- 蘇教版數(shù)學(xué)五年級(jí)(下冊(cè))第1課時(shí) 單式折線統(tǒng)計(jì)圖
- 實(shí)驗(yàn)經(jīng)濟(jì)學(xué)實(shí)驗(yàn)設(shè)計(jì)案例
評(píng)論
0/150
提交評(píng)論