版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章
總體設(shè)計
可行性分析
--Why?Who?
需求分析
--What?
設(shè)計
--Howdo?
總體設(shè)計(概要設(shè)計)確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系
設(shè)計詳細設(shè)計確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細文檔。
總體設(shè)計的任務劃分出組成系統(tǒng)的物理元素—程序、文件、數(shù)據(jù)庫、人工過程和文檔等,但是每個物理元素仍然處于黑盒子級,這些黑盒子里的具體內(nèi)容將在以后仔細設(shè)計。設(shè)計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系??傮w設(shè)計的必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。5.1設(shè)計過程總體設(shè)計過程通常由兩個主要階段組成:
--系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案;
--結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)。典型的總體設(shè)計過程包括:1.設(shè)想供選擇的方案2.選擇合理的方案
對每個合理的方案要提供:
A.系統(tǒng)流程圖
B.組成系統(tǒng)的物理元素清單
C.成本/效益分析
D.實現(xiàn)這個系統(tǒng)的進度計劃3.推薦最佳方案4.功能分解5.設(shè)計軟件結(jié)構(gòu)6.數(shù)據(jù)庫設(shè)計
A.模式設(shè)計
B.子模式設(shè)計
C.完整性和安全性設(shè)計
D.優(yōu)化7.制定測試計劃8.書寫文檔
A.系統(tǒng)說明:包括用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本/效益分析;對最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其他工具簡要描述的各個模塊的算法,模塊間的接口關(guān)系,以及需求、功能和模塊三者之間的交叉參照關(guān)系等等。
B.用戶手冊:根據(jù)總體設(shè)計階段的結(jié)果,修改更正在需求分析階段產(chǎn)生的初步的用戶手冊。
C.測試計劃:包括測試策略,測試方案,預期的測試結(jié)果,測試進度計劃等等。
D.詳細的實現(xiàn)計劃
E.數(shù)據(jù)庫設(shè)計結(jié)果9.審查和復審5.2設(shè)計原理
模塊化抽象逐步求精信息隱藏和局部化模塊獨立5.2.1模塊化模塊是由邊界元素限定的相鄰程序元素(例如,數(shù)據(jù)說明,可執(zhí)行的語句)的序列,而且有一個總體標識符代表它。
--如:過程、函數(shù)、子程序、宏、對象等,都可作為模塊。模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶的需求。這個不等式導致“各個擊破”的結(jié)論—把復雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。這就是模塊化的根據(jù)。
如果一個大型程序僅由一個模塊組成,很難被人理解。設(shè)函數(shù)C(x)定義問題x的復雜程度,函數(shù)E(x)定義解決問題x需要的工作量(時間)。對于兩個問題P1和P2,如果:
C(P1)>C(P2)
那么E(P1)>E(P2)
根據(jù)解決問題的經(jīng)驗,有一個規(guī)律是:
C(P1+P2)>C(P1)+C(P2)
于是有E(P1+P2)>E(P1)+E(P2)
模塊數(shù)目接口成本成本/模塊軟件總成本M最小成本區(qū)成本圖5.1模塊化與軟件成本5.2.2抽象人類在認識復雜現(xiàn)象的過程中使用的最強有力的思維工具是抽象。
--就是抽出事物的本質(zhì)特性(共性),而暫時不考慮它們的細節(jié)。處理復雜系統(tǒng)的惟一有效的方法是用層次的方式構(gòu)造和分析它。
--在抽象的最高層次使用問題環(huán)境的語言,以概括的方式敘述問題的解法;在較低抽象層次采用更過程化的方法,把面向問題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來敘述問題的解法;最后在最低的抽象層次用可直接實現(xiàn)的方式敘述問題的解法。。軟件工程過程的每一步都是對軟件解法的抽象層次的一次精化。
在可行性研究階段,軟件作為系統(tǒng)的一個完整部件;在需求分析期間,軟件解法是使用在問題環(huán)境內(nèi)熟悉的方式描述的;當由總體設(shè)計向詳細設(shè)計過渡時,抽象的程度也就隨之減少了;最后,當源程序?qū)懗鰜硪院?,也就達到了抽象的最低層。5.2.3逐步求精逐步求精是人類解決復雜問題時采用的基本方法,也是許多軟件工程技術(shù)(例如,規(guī)格說明技術(shù),設(shè)計和實現(xiàn)技術(shù))的基礎(chǔ)。逐步求精定義為:“為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮?!?.2.4信息隱藏和局部化信息隱藏原理指出:設(shè)計和確定模塊,使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。局部化的概念和信息隱藏概念是密切相關(guān)的。所謂局部化:是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。
--在模塊中使用局部數(shù)據(jù)元素是局部化的一個例子。顯然,局部化有助于實現(xiàn)信息隱藏。如果在測試期間和以后的軟件維護期間需要修改軟件,那么使用信息隱藏原理作為模塊化系統(tǒng)設(shè)計的標準就會帶來極大好處。5.2.5模塊獨立耦合
模塊之間的相對獨立性的度量內(nèi)聚模塊功能強度的度量模塊的獨立程度可以由兩個定性標準度量模塊的獨立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。1.耦合
耦合性是程序結(jié)構(gòu)中各個模塊之間相互關(guān)聯(lián)的度量它取決于各個模塊之間接口的復雜程度、調(diào)用模塊的方式以及哪些信息通過接口。低非直接耦合數(shù)據(jù)耦合標記耦合控制耦合外部耦合公共耦合內(nèi)容耦合
高弱
強耦合性模塊獨立性(1)非直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2),模塊獨立性最強。模塊1模塊2模塊3模塊4(2)數(shù)據(jù)耦合
一模塊調(diào)用另一模塊時,被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù)(若干參數(shù))。屬松散耦合。
開發(fā)票計算水費單價數(shù)量金額(3)標記耦合(特征耦合)
如兩個模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個模塊間存在標記偶合。“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計算水費”和“計算電費”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標記偶合.計算電費計算水費住戶情況水費電費住戶情況計算水電費(4)控制耦合A模塊flagf1Bf2fn……
如果一個模塊通過傳送開關(guān)、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合??刂岂詈显黾恿死斫夂途幊痰膹碗s性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。去除模塊間控制耦合的方法:將被調(diào)用模塊內(nèi)的判定移到調(diào)用模塊中進行被調(diào)用模塊分解成若干單一功能模塊(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應盡量少。(6)公共環(huán)境耦合(公共數(shù)據(jù)區(qū)耦合)
一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:全局數(shù)據(jù)結(jié)構(gòu)共享通訊區(qū)內(nèi)存公共覆蓋區(qū)等
ABC公共數(shù)據(jù)區(qū)
公共耦合存在的問題:
(1)軟件可理解性降低
(2)診斷錯誤困難
(3)軟件可維護性差,
(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護措施)
慎用公共數(shù)據(jù)區(qū)和全程變量!!!(7)內(nèi)容耦合AB一模塊直接訪問另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù))AB
模塊代碼重疊Entry1……Entry2
……
多入口模塊不正常轉(zhuǎn)入另一模塊最不好的耦合形式!以上給出了7種耦合類型,這只是從耦合的機制上所做的分類,按耦合的強弱程度的排列只是相對的關(guān)系。但它給設(shè)計人員在設(shè)計程序結(jié)構(gòu)時提供了一決策準則。實際上,開始時兩個模塊之間的耦合不只是一種類型,而是多種類型的混合。這就要求設(shè)計人員按照實際情況進行分析比較,逐步加以改進,以提高模塊的獨立性??傊?,耦合是影響軟件復雜程度的一個重要因素。應該采取下述設(shè)計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和標記耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。2.內(nèi)聚一個模塊內(nèi)部元素在功能上相互關(guān)聯(lián)的強度設(shè)計目標:高內(nèi)聚,模塊在軟件過程中完成單一的任務(1)功能內(nèi)聚(FunctionalCohesion)一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。
內(nèi)聚性最強(2)信息內(nèi)聚(InformationalCohesion)這種模塊完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于模塊的所有功能都是基于同一數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個模塊內(nèi),不為別的模塊所知曉(3)通信內(nèi)聚(CommunicationCohesion)如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。(4)過程內(nèi)聚(ProceduralCohesion)
模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行統(tǒng)計成績打印成績統(tǒng)計并打印成績單讀入成績單審查成績單讀入并審查成績單(5)時間內(nèi)聚(ClassicalCohesion)
時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊,系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時間性聚合模塊。如圖,在“緊急故障處理模塊”中,“關(guān)閉文件”、“報警”、“保留現(xiàn)場”等任務都必須無中斷地同時處理。緊急故障處理模塊1.關(guān)閉文件2.報警3.保留現(xiàn)場時間內(nèi)聚示例(6)邏輯內(nèi)聚(LogicalCohesion)把幾種相關(guān)功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。SXYZWABCDSXYZWABCDX,Y,Z,W分別調(diào)用A,B,C,D,而模塊A,B,C,D確完成的任務相似(如產(chǎn)生各種類型的全部輸出),則我們把A,B,C,D合并成一個模塊ABCD,那么我們稱模塊ABCD就是邏輯模塊。(7)巧合內(nèi)聚(CoincidentalCohesion)當模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱此模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。模塊M中的三個語句沒有任何聯(lián)系缺點:可理解性差,可修改性差內(nèi)聚與耦合密切相關(guān),同其它模塊強耦合的模塊意味者弱內(nèi)聚,強內(nèi)聚模塊意味著與其它模塊間松散耦合。
設(shè)計目標:
力爭強內(nèi)聚、弱耦合耦合、內(nèi)聚與模塊獨立性關(guān)系:耦合與內(nèi)聚都是模塊獨立性的定性標準,都反映模塊獨立性的良好程度。5.3啟發(fā)規(guī)則人們在開發(fā)計算機軟件的長期實踐中積累了豐富的經(jīng)驗,總結(jié)這些經(jīng)驗得出了一些啟發(fā)式規(guī)則。這些啟發(fā)式規(guī)則雖然不像上一節(jié)講述的基本原理和概念那樣普遍適用,但是在許多場合仍然能給軟件工程師以有益的啟示,往往能幫助他們找到改進軟件設(shè)計提高軟件質(zhì)量的途徑。下面介紹幾條啟發(fā)式規(guī)則。1.改進軟件結(jié)構(gòu)提高模塊獨立性
設(shè)計出軟件的初步結(jié)構(gòu)以后,應該審查分析這個結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個模塊公有的一個子功能可以獨立成一個模塊,由這些模塊調(diào)用;有時可以通過分解或合并模塊以減少控制信息的傳遞及對全程數(shù)據(jù)的引用,并且降低接口的復雜程度。2.模塊規(guī)模應該適中經(jīng)驗表明,一個模塊的規(guī)模不應過大,最好能寫在一頁A4紙內(nèi)(通常不超過60行語句)。有人從心理學角度研究得知,當一個模塊包含的語句數(shù)超過30以后,模塊的可理解程度迅速下降。過大的模塊往往是由于分解不充分,但是進一步分解必須符合問題結(jié)構(gòu),一般說來,分解后不應該降低模塊獨立性。過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復雜。因此過小的模塊有時不值得單獨存在,特別是只有一個模塊調(diào)用它時,通??梢园阉喜⒌缴霞壞K中去而不必單獨存在。3.深度、寬度、扇出和扇入都應適當深度:軟件結(jié)構(gòu)中控制的層數(shù);寬度:軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值;扇出:一個模塊直接控制(調(diào)用)其它模塊的數(shù)目;扇入:一個模塊被其它模塊調(diào)用的數(shù)目。深度往往能粗略地標志一個系統(tǒng)的大小和復雜程度。深度和程序長度之間應該有粗略的對應關(guān)系,當然這個對應關(guān)系是在一定范圍內(nèi)變化的。如果層數(shù)過多則應該考慮是否有許多管理模塊過分簡單了,能否適當合并。一般說來,寬度越大系統(tǒng)越復雜。對寬度影響最大的因素是模塊的扇出。扇出過大意味著模塊過分復雜,需要控制和協(xié)調(diào)過多的下級模塊;扇出過小(例如總是1)也不好。經(jīng)驗表明,一個設(shè)計得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限通常是5~9)。扇出太大一般是因為缺乏中間層次,應該適當增加中間層次的控制模塊。扇出太小時可以把下級模塊進一步分解成若干個子功能模塊,或者合并到它的上級模塊中去。當然分解模塊或合并模塊必須符合問題結(jié)構(gòu),不能違背模塊獨立原理。扇入越大則共享該模塊的上級模塊數(shù)目越多,這是有好處的,但是,不能違背模塊獨立原理單純追求高扇入。觀察大量軟件系統(tǒng)后發(fā)現(xiàn),設(shè)計得很好的軟件結(jié)構(gòu)通常頂層扇出比較高,中層扇出較少,底層扇入到公共的實用模塊中去(底層模塊有高扇入)。(a)對扇入過大的改進(b)對扇出過大的改進4.模塊的作用域應該在控制域之內(nèi)作用域:受該模塊內(nèi)一個判定影響的所有模塊的集合??刂朴颍耗K本身以及所有從屬于它的模塊的集合。
在一個設(shè)計得很好的系統(tǒng)中,所有受判定影響的模塊應該都從屬于做出判定的那個模塊,最好局限于做出判定的那個模塊本身及它的直屬下級模塊。MAGBCEDF圖5.2模塊的作用域和控制域
5.力爭降低模塊接口的復雜度模塊接口復雜是軟件發(fā)生錯誤的一個主要原因。應該仔細設(shè)計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。
如:QUAD-ROOT(TBL,X)求一元二次方程的根的模塊,其中TBL,X都為數(shù)組,分別代表方程的系數(shù)和方程的根。應該使接口更簡單,如:
QUAD-ROOT(A,B,C,ROOT1,ROOT2)
A、B、C是方程的系數(shù),ROOT1,ROOT2是方程的根。6.設(shè)計單入口單出口的模塊7.模塊功能應該可以預測模塊的功能應該能夠預測,但也要防止模塊功能過分局限。如果一個模塊可以當做一個黑盒子,也就是說,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個模塊的功能就是可以預測的。帶有內(nèi)部“存儲器”的模塊的功能可能是不可預測的,因為它的輸出可能取決于內(nèi)部存儲器(例如某個標記)的狀態(tài)。由于內(nèi)部存儲器對于上級模塊而言是不可見的,所以這樣的模塊既不易理解又難于測試和維護。如果一個模塊只完成一個單獨的子功能,則呈現(xiàn)高內(nèi)聚;但是,如果一個模塊任意限制局部數(shù)據(jù)結(jié)構(gòu)的大小,過分限制在控制流中可以做出的選擇或者外部接口的模式,那么這種模塊的功能就過分局限,使用范圍也就過分狹窄了。在使用過程中將不可避免地需要修改功能過分局限的模塊,以提高模塊的靈活性,擴大它的使用范圍;但是,在使用現(xiàn)場修改軟件的代價是很高的。以上列出的啟發(fā)式規(guī)則多數(shù)是經(jīng)驗規(guī)律,對改進設(shè)計,提高軟件質(zhì)量,往往有重要的參考價值;但是,它們既不是設(shè)計的目標也不是設(shè)計時應該普遍遵循的原理。5.4軟件設(shè)計過程1.制定規(guī)范在進入軟件開發(fā)階段之初,首先應為軟件開發(fā)組制定在設(shè)計時應該共同遵守的標準,以便協(xié)調(diào)組內(nèi)各成員的工作。
--確定設(shè)計的目標,以及它們的優(yōu)先順序
--根據(jù)目標確定最合適的設(shè)計方法
--規(guī)定設(shè)計文檔的編制標準
--規(guī)定編碼的信息形式,與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則2.軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計基于功能層次結(jié)構(gòu)建立系統(tǒng)
--采用某種設(shè)計方法,將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)
--確定每個模塊的功能
--建立與已確定的軟件需求的對應關(guān)系
--確定模塊間的調(diào)用關(guān)系
--確定模塊間的接口
--評估模塊劃分的質(zhì)量3.處理方式設(shè)計確定為實現(xiàn)系統(tǒng)的功能需求所必需的算法,評估算法的性能確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式周轉(zhuǎn)時間響應時間吞吐量精度確定外部信號的接收發(fā)送形式4.數(shù)據(jù)結(jié)構(gòu)設(shè)計確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫的模式、子模式,進行數(shù)據(jù)完整性和安全性的設(shè)計確定輸入,輸出文件的詳細的數(shù)據(jù)結(jié)構(gòu)結(jié)合算法設(shè)計,確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包)4.數(shù)據(jù)結(jié)構(gòu)設(shè)計(續(xù))限制和確定各個數(shù)據(jù)設(shè)計決策的影響范圍若需要與操作系統(tǒng)或調(diào)度程序接口所必須的控制表等數(shù)據(jù)時,確定其詳細的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則數(shù)據(jù)的保護性設(shè)計防衛(wèi)性設(shè)計:在軟件設(shè)計中插入自動檢錯、報錯和糾錯的功能一致性設(shè)計:保證軟件運行過程中所使用的數(shù)據(jù)的類型和取值范圍不變在并發(fā)處理過程中使用封鎖和解除封鎖機制保持數(shù)據(jù)不被破壞冗余性設(shè)計:針對同一問題,由兩個開發(fā)者采用不同的程序設(shè)計風格和不同的算法設(shè)計軟件,當兩者運行結(jié)果之差不在允許范圍內(nèi)時,利用檢錯系統(tǒng)予以糾正,或使用表決技術(shù)決定一個正確結(jié)果。5.可靠性設(shè)計可靠性設(shè)計也叫做質(zhì)量設(shè)計在運行過程中,為了適應環(huán)境的變化和用戶新的要求,需經(jīng)常對軟件進行改造和修正。在軟件開發(fā)的一開始就要確定軟件可靠性和其它質(zhì)量指標,考慮相應措施,以使得軟件易于修改和易于維護。6.編寫概要設(shè)計階段的文檔概要設(shè)計階段完成時應編寫以下文檔:概要設(shè)計說明書數(shù)據(jù)庫設(shè)計說明書用戶手冊制定初步的測試計劃7.概要設(shè)計評審可追溯性:確認該設(shè)計是否復蓋了所有已確定的軟件需求,軟件每一成份是否可追溯到某一項需求接口:確認該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi)風險:確認該設(shè)計在現(xiàn)有技術(shù)條件下和預算范圍內(nèi)是否能按時實現(xiàn)實用性:確認該設(shè)計對于需求的解決方案是否實用技術(shù)清晰度:確認該設(shè)計是否以一種易于翻譯成代碼的形式表達可維護性:確認該設(shè)計是否考慮了方便未來的維護質(zhì)量:確認該設(shè)計是否表現(xiàn)出良好的質(zhì)量特征各種選擇方案:看是否考慮過其它方案,比較各種選擇方案的標準是什么限制:評估對該軟件的限制是否現(xiàn)實,是否與需求一致其它具體問題:對于文檔、可測試性、設(shè)計過程等進行評估5.5描繪軟件結(jié)構(gòu)的圖形工具
1.層次圖和HIPO圖
正文加工系統(tǒng)輸入輸出編輯加標題存儲檢索編目錄格式化添加刪除插入修改合并列表圖5.3正文加工系統(tǒng)的層次圖正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標題4.0存儲5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6圖5.4帶編號的層次圖(H圖)HIPO圖是:“層次圖+輸入/處理/輸出圖”2.結(jié)構(gòu)圖(SC--StructureChart)
Yourdon提出的結(jié)構(gòu)圖是進行軟件結(jié)構(gòu)設(shè)計的另一個有力工具。結(jié)構(gòu)圖和層次圖類似,也是描繪軟件結(jié)構(gòu)的圖形工具。結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定的符號表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。①
模塊:模塊用矩形框表示,并用模塊的名字標記它。②
模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊③
模塊間的信息傳遞:當一個模塊調(diào)用另一個模塊時,調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運行。而被調(diào)用模塊在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊。④
在模塊M的箭頭尾部標以一個菱形符號,表示模塊M有條件地調(diào)用模塊A、B。當一個在調(diào)用箭頭尾部標以一個弧形符號,表示模塊M反復調(diào)用模塊A、B和模塊C。MAB圖5.6判定為真時調(diào)用A,為假時調(diào)用BMABC圖5.7模塊M循環(huán)調(diào)用模塊A、B、C5.6面向數(shù)據(jù)流的設(shè)計方法
---結(jié)構(gòu)化設(shè)計(SD-StructuredDesign)面向數(shù)據(jù)流設(shè)計(DataFlow-OrientedDesign,DFOD)是與數(shù)據(jù)流分析(DFA)對應的結(jié)構(gòu)化軟件設(shè)計技術(shù)。面向數(shù)據(jù)流的設(shè)計要解決的任務,就是在需求分析的基礎(chǔ)上,將表示系統(tǒng)邏輯模型的DFD圖映射(Mapping)成軟件系統(tǒng)結(jié)構(gòu)的初始設(shè)計描述。目標系統(tǒng)的DFDSD目標系統(tǒng)的SC結(jié)構(gòu)化設(shè)計方法(SD)1)首先研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對于發(fā)現(xiàn)的問題及時解決。2)然后根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題典型的類型有兩種:變換型和事務型。針對兩種不同的類型分別進行分析處理。3)由數(shù)據(jù)流圖推導出系統(tǒng)的初始結(jié)構(gòu)圖。4)利用一些啟發(fā)式原則來改進系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。5)修改和補充數(shù)據(jù)詞典6)制定測試計劃。
面向數(shù)據(jù)流的設(shè)計方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有下述兩種類型。
1.變換型數(shù)據(jù)流
2.事務型數(shù)據(jù)流1、變換流
具有較明確的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。如圖所示,該變換中心可以理解為數(shù)據(jù)的加工和處理程序。
讀入原始數(shù)據(jù)校驗原始數(shù)據(jù)計算最優(yōu)結(jié)果編輯打印最優(yōu)結(jié)果輸入變換中心輸出
事務型數(shù)據(jù)流圖中存在一個事務中心(也就是數(shù)據(jù)處理、加工中心),它將輸入分離成若干個發(fā)散的數(shù)據(jù)流,形成許多活動路徑,并根據(jù)輸入值選擇其中一條路徑。要求類別處理分房處理調(diào)房處理退房處理住房要求事務中心活動路徑
2、事務流
通常,一個實際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務型兩種類型的混合體。如圖所示,中間的子塊屬事務型數(shù)據(jù)流,如果把中間子塊視為一個處理整體的話,整個程序?qū)僮儞Q型程序。
A(事務型,A為事務中心)變換中心輸入輸出混合型數(shù)據(jù)流圖復查、精化數(shù)據(jù)流圖類型找出事務中心找出變換中心映射成事務結(jié)構(gòu)映射成變換結(jié)構(gòu)優(yōu)化軟件模塊結(jié)構(gòu)導出模塊結(jié)構(gòu)復查不滿意變換事務變換設(shè)計事務設(shè)計面向數(shù)據(jù)流的設(shè)計過程變換設(shè)計就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過程,也稱以變換為中心的設(shè)計。
變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。
變換設(shè)計變換分析方法由以下四步組成:1)重畫數(shù)據(jù)流圖;2)區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;3)進行一級分解,設(shè)計上層模塊。把整個變換分解成輸入控制模塊Ci、輸出控制模塊Co和變換中心控制模塊Ct,由主控模塊控制;4)進行二級分解,設(shè)計輸入、輸出和中心變換部分的中、下層模塊。主控模塊輸出控制模塊Co變換中心控制模塊Ct輸入控制模塊Ci(1)在DFD
圖上標出邏輯輸入、邏輯輸出和變換中心的分界AeBaCbDcEdPQRwuvwuvrp變換中心c,e邏輯輸入w,u邏輯輸出--------具有變換型數(shù)據(jù)流圖(2)完成第一級分解AabcPwuvrpBCDdeEQRWUVMcMAMTMEC,eC,eU,wU,w變換中心
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園應急預案解讀
- 食品安全伴我行
- 認識銷售課件教學課件
- 假如課件教學課件
- 高三化學一輪復習 第一章 離子反應 離子方程式 課件
- 稻田餐廳課件教學課件
- 3.1.1鐵及鐵的氧化物 課件 高一上學期化學人教版(2019)必修第一冊
- 2.2化學平衡 課件高二上學期化學人教版(2019)選擇性必修1
- 成人夏季食品安全教育
- 企業(yè)宿舍管理培訓
- 2023年初級游泳救生員理論知識考試題庫(濃縮400題)
- 施工現(xiàn)場臨時用電安全技術(shù)規(guī)范
- 同仁堂藥品目錄
- 社會問題概論
- 高中語文-如何讀懂古詩詞教學設(shè)計學情分析教材分析課后反思
- 小數(shù)四則混合運算練習【說課稿】蘇教版數(shù)學五年級上冊
- 虛假訴訟刑事控告書(參考范文)
- 部編版道德與法治四年級上冊第11課《變廢為寶有妙招》優(yōu)質(zhì)課件
- 2018年考研英語一真題和答案完整版
- T-ZAQ 10116-2023 新時代基層理論宣講0576 工作法操作規(guī)范
- 棒球比賽記錄基礎(chǔ)手冊
評論
0/150
提交評論