版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件設(shè)計(jì)的任務(wù),就是把需求階段產(chǎn)生的軟件說明
轉(zhuǎn)換為用適當(dāng)手段表示的軟件設(shè)計(jì)文檔。按照軟件生存
周期的劃分,設(shè)計(jì)任務(wù)通常分為兩個(gè)階段完成,第一個(gè)
階段是總體設(shè)計(jì)階段,用來確定軟件的結(jié)構(gòu),即軟件的
組成,以及各組成成分(子系統(tǒng)模塊)之間的相互關(guān)系。
第二階段是詳細(xì)設(shè)計(jì)階段,其任務(wù)是確定模塊內(nèi)部的算
法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細(xì)設(shè)計(jì)文
檔。也就是說,軟件設(shè)計(jì)的全過程可以歸結(jié)為:總體設(shè)
計(jì)——總體設(shè)計(jì)復(fù)審——詳細(xì)設(shè)計(jì)——詳細(xì)設(shè)計(jì)復(fù)審。
7.1軟件總體設(shè)計(jì)的基本任務(wù)
總體設(shè)計(jì)又稱為概要設(shè)計(jì)或初步設(shè)計(jì),它
的基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如何
實(shí)現(xiàn)?”這個(gè)問題。在總體設(shè)計(jì)階段,應(yīng)劃分出組
成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、人
工過程和文檔等,并確定系統(tǒng)中每個(gè)程序由哪些
模塊組成以及這些模塊相互間的關(guān)系。
7.2總體設(shè)計(jì)的基本任務(wù)
?軟件系統(tǒng)設(shè)計(jì)
把DFD中的處理分組,從各種可能的分組情況中選擇一
個(gè)作為最佳方案,該過程即為系統(tǒng)設(shè)計(jì)。
。軟件結(jié)構(gòu)設(shè)計(jì)
1.從系統(tǒng)設(shè)計(jì)方案所對應(yīng)的DFD導(dǎo)出系統(tǒng)模塊結(jié)構(gòu),并修
功能需求分配給各模塊。
2.確定每個(gè)模塊的功能及模塊間的調(diào)用關(guān)系。
3.確定模塊之間的接口,即模塊之間傳遞的信息。
4.評價(jià)模塊結(jié)構(gòu)的質(zhì)量?!獜S—
?數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)包括:概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)
4
5
7.2總體設(shè)計(jì)的基本任務(wù)
?編寫概要設(shè)計(jì)文檔
1.概要設(shè)計(jì)說明書
2.數(shù)據(jù)庫設(shè)計(jì)說明書
3.用戶手冊:對需求分析、交互設(shè)計(jì)階段所編寫、
修改的用戶手冊進(jìn)行補(bǔ)充。
4.修訂測試計(jì)劃:對測試策略、方法和步驟提出
明確要求。
?評審:
對是否完整地實(shí)現(xiàn)了需求中規(guī)定的功能、性能
等要求,設(shè)計(jì)方案的可行性、關(guān)鍵的處理及內(nèi)外
部接口定義正確性、有效性以及各部分之間的一
致性等,進(jìn)行評審。
6
7.3軟件設(shè)計(jì)的基本概念和基本原理
一、模塊化設(shè)計(jì)
1、相關(guān)概念
把大型軟件按照規(guī)定的原則劃分為一個(gè)個(gè)較小的、
相對獨(dú)立但又相關(guān)的模塊的設(shè)計(jì)方法,叫做模塊化設(shè)計(jì)
(modulardesign)。
模塊(module)是數(shù)據(jù)說明和可執(zhí)行語句等程序
對象的集合,每個(gè)模塊單獨(dú)命名并且可以通過名字對模
塊進(jìn)行訪問。
模塊的概念
在軟件的體系結(jié)構(gòu)中,模塊是可組合、分解和
更換的單元,具有以下幾種基本屬性:
接口:指模塊的輸入輸出。
功能:模塊實(shí)現(xiàn)的功能。
邏輯:內(nèi)部如何實(shí)現(xiàn)及所需數(shù)據(jù)。
狀態(tài):模塊的運(yùn)行環(huán)境,調(diào)用與被調(diào)用關(guān)系。
邏輯屬性反映內(nèi)部特性,其它屬性反映模塊的
外部特性。
8
2.理想模塊(黑箱模塊)
理想模塊的特點(diǎn):
⑴每個(gè)理想模塊只解決一個(gè)問題。
⑵每個(gè)理想模塊的功能都應(yīng)該明確,使人容易理
解。
⑶理想模塊之間的聯(lián)結(jié)關(guān)系簡單,具有獨(dú)立性。
⑷由理想模塊構(gòu)成的系統(tǒng),容易使人理解,易于
編程,易于測試,易于修改和維護(hù)。
對用戶來說,其感興趣是模塊的功能,而不必去理
解模塊內(nèi)部的結(jié)構(gòu)和原理。
3.模塊的理論根據(jù)
設(shè)函數(shù)C(x)定義問題x的復(fù)雜程度,函數(shù)
E(x)確定解決問題x需要的工作量。對于兩
個(gè)問題P1和P2,如果:C(P1)>C(P2),則顯
然有:
E(P1)>E(P2)
根據(jù)人類解決一般問題的經(jīng)驗(yàn),有:
C(P1+P2)>C(P1)+C(P2)
進(jìn)而獲得:E(P1+P2)>E(P1)+E(P2)
E(P1+P2)>E(P1)+E(P2)
這個(gè)不等式表明:單獨(dú)解決問題Pl和P2
所需的工作量之和,比把P1和P2合起來作為
一個(gè)問題來解決時(shí)所需的工作量要少。
這種“分而治之”的思想提供了模塊化的
根據(jù):把復(fù)雜的問題分解成許多容易解決的
小問題,原來的問題也就容易解決了。
模塊化和軟件成本的關(guān)系
軟件總成本
模塊數(shù)目
4.模塊的圖形及符號
⑴模塊的圖形:用矩形表示。
修改庫存一個(gè)作為賓語的名詞組成
⑵模塊間通訊的圖形
模塊間通訊有兩種:數(shù)據(jù)通訊、控制通訊。
■數(shù)據(jù)通訊是一個(gè)數(shù)據(jù)流,它表示了一個(gè)經(jīng)過處理
的數(shù)據(jù)從一個(gè)模塊傳向另一個(gè)模塊。
■控制通訊,只傳送一個(gè)標(biāo)志,該標(biāo)志只表達(dá)了處
理工作的某種狀態(tài),而不是由被發(fā)送模塊真正進(jìn)
行過處理的數(shù)據(jù)。
獲得配件庫存量
0庫存量
配件編號6
■無此配件
讀庫存記錄
模塊間的聯(lián)結(jié)模塊間的通訊
⑶模塊間判斷調(diào)用的圖形
一個(gè)模塊是否調(diào)用某一個(gè)從屬模塊,
依賴于調(diào)用模塊中判斷的條件。如果條件
成立,則產(chǎn)生調(diào)用命令。
⑷模塊間循環(huán)調(diào)用的圖形
■指一個(gè)模塊需要循環(huán)調(diào)用某一個(gè)或若干個(gè)
從屬模塊。
軟件設(shè)計(jì)的基本原理
◎抽象:
?是認(rèn)識復(fù)雜現(xiàn)象過程中使用的思維工具。
?軟件結(jié)構(gòu)頂層模塊控制系統(tǒng)主要功能并影響全局,
底層模塊完成具體的處理。
◎在進(jìn)行軟件設(shè)計(jì)時(shí),抽象與逐步求精、模塊化密
切相關(guān),可提高軟件的可理解性。
17
(1)過程的抽象
在軟件工程中,從系統(tǒng)定義到實(shí)現(xiàn),每進(jìn)
展一步都可以看做是對軟件解決方法的抽
象化過程的一次細(xì)化。
⑵數(shù)據(jù)抽象
在不同層次上描述數(shù)據(jù)對象的細(xì)節(jié),定義
與該數(shù)據(jù)對象相關(guān)的操作。
軟件設(shè)計(jì)的基本原理
◎信息隱蔽
是指在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含
的信息(過程和數(shù)據(jù)),對于不需要這些信息的
其他模塊來說,是不可訪問的。它為軟件系統(tǒng)的
修改、測試及以后的維護(hù)都帶來好處。
19
模塊獨(dú)立性
◎模塊的獨(dú)立性:指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)
立的子功能,并且與其它模塊的聯(lián)系量最少且接
□簡單。
e包括兩個(gè)度量準(zhǔn)則
㈱耦合性(Coupling):指軟件系統(tǒng)結(jié)構(gòu)中各模專
間相互聯(lián)系緊密程度的一種度量。模塊間耦合:
高低取決于接口的復(fù)雜性、調(diào)用的方式及傳遞'
的信息。
洸內(nèi)聚性(Cohesion):指模塊的功能強(qiáng)度的度堇/
即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度'
的度量。;
■r-r-HA
■XL工r
的
-sz
*<tr
THj+■
玨
金
K$ZC
inr,A
mfF早
累看
*<tc
fiT"O
J&■±&~4
§中仁.百
域旬*
<^ZI
TI『I十a(chǎn)
一n[u一4
但
^?rt.,―lA
喀
-<tl
rr-r?-1?■
■?■人,r.
中K?
皓
4「?1
11111
非直接耦合(NondirectCoupling)
兩個(gè)模塊之間
沒有直接關(guān)系)它
們之間的聯(lián)系完全
是通過主模塊的控
制和調(diào)用來實(shí)現(xiàn)的。
非直接耦合的模塊
獨(dú)立性最強(qiáng)。
數(shù)據(jù)耦合(DataCoupling)
一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過簡
單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外
部變量)來交換輸入、輸出信息的。
標(biāo)記耦合(StampCoupling)
一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦
合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是
簡單變量。
pO(xO,yO)pl(xl,yl)
數(shù)據(jù)耦合LINE(xO,yO,xl,yl)
標(biāo)記耦合LINE(pO,pl)
控制耦合(ControlCoupling)
如果一個(gè)模
塊通過傳送開關(guān)、
標(biāo)志、名字等控
制信息,明顯地
控制選擇另一模
塊的功能,就是
控制耦合。
公共耦合(CommonCoupling)
若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們
之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可
以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共
覆蓋區(qū)等。
ABAB
common公共數(shù)據(jù)區(qū)common公共數(shù)據(jù)區(qū)
(a)松散的公共耨合何緊密的公共耦合
內(nèi)容根合(ContentCoupling)
如果發(fā)生下列情形,兩個(gè)模塊之間就
發(fā)生了內(nèi)容耦合
(1)一個(gè)模塊直接訪問另一個(gè)模塊的
內(nèi)部
(2)一個(gè)模塊不通過正常人口轉(zhuǎn)到另
一模塊內(nèi)部;
(3)兩個(gè)模塊有一部分程序代碼重迭
(只可能出現(xiàn)在匯編語言中);
(4)一個(gè)模塊有多個(gè)入口。
內(nèi)容耦合(ContentCoupling)
AABA
(a)進(jìn)入另一模塊內(nèi)部
應(yīng)該采取下述設(shè)計(jì)原則:盡量使用數(shù)
據(jù)耦合,少用控制耦合,限制公共環(huán)境耦
合的范圍,完全不用內(nèi)容耦合。
標(biāo)記耦合舉例
:模塊之間的恃征聯(lián)結(jié)
住戶詳情中包含了“本月用電量”和“本月用水量”
兩個(gè)模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記
錄、數(shù)組等)加以聯(lián)系
29
將標(biāo)記耦合改為數(shù)據(jù)耦合
30
控制耦合舉例
平均/最高|)成績
B
計(jì)算平均分或最高分
、'
1BK----------------
讀入分?jǐn)?shù)
分析B模塊11、,
1計(jì)算平均分計(jì)算最高分
11
1輸出結(jié)果
1------------
L
31
將控制耦合改為數(shù)據(jù)耦合
⑴將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行
⑵被調(diào)用模塊分解成若干單一功能模塊
32
將控制耦合改為數(shù)據(jù)耦合
被調(diào)用模塊內(nèi)
處理邏輯模式
33
將控制耦合改為數(shù)據(jù)耦合
34
公共耦合舉例
ABA
common公共數(shù)據(jù)區(qū)common公共數(shù)據(jù)區(qū)
(a)松散的公共耦合(b)緊密的公共耦合
(1)系統(tǒng)可理解性降低
(模塊間存在錯(cuò)綜復(fù)雜的連系)
(2)系統(tǒng)可維護(hù)性差
(修改變量名或?qū)傩岳щy)
(3)系統(tǒng)可靠性差
(公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施)
慎用公共數(shù)據(jù)區(qū)和全程變量?。。?/p>
模塊A、B、C間存在錯(cuò)綜復(fù)雜的聯(lián)系
35
如何降低模塊間耦合度:
(1)如模塊必須存在耦合,選擇適當(dāng)?shù)鸟詈项愋?/p>
原貝人盡量使用數(shù)據(jù)耦合
少用控制耦合
限制公共耦合的范圍
堅(jiān)決避免使用內(nèi)容耦合
(2)降低模塊間接口的復(fù)雜性
接口復(fù)雜性與耦合類型的關(guān)系:
,直接引用--------------內(nèi)容耦合
接口方式
/、過程調(diào)用語句----------其它耦合
,數(shù)據(jù)項(xiàng)作參數(shù)----------數(shù)據(jù)耦合
接
口
數(shù)據(jù)結(jié)構(gòu),變
復(fù)----------標(biāo)記耦合
量名作參數(shù)
雜接口數(shù)據(jù)
性的復(fù)雜性
開關(guān)量,起控制耦合
控制變量作用
全程變量,
公共耦合
,公用數(shù)據(jù)區(qū)
無接口關(guān)系非直接耦合
內(nèi)聚嵯
衡量一個(gè)模塊內(nèi)部各成分之間彼此結(jié)合的
緊密程度
設(shè)計(jì)目標(biāo):高聚合(一模塊的所有成分都直
接參與并且對于完成同一功能來說都是最
基本的)
38
模塊內(nèi)聚
檄
雕醵虢醵腥醵啊醵瞬醵胎械
BSitt
璇牌-脆楠
內(nèi)聚性
?偶然內(nèi)聚:指一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)
系。
?邏輯內(nèi)聚:指模塊內(nèi)執(zhí)行幾個(gè)邏輯上相似的功能,通過
參數(shù)確定該模塊完成哪一個(gè)功能。例如把編輯各種輸入數(shù)
據(jù)的功能放在一個(gè)模塊中。
?時(shí)間內(nèi)聚:把需要同時(shí)執(zhí)行的動(dòng)作組合在一起形成的模
塊。例如程序設(shè)計(jì)中的初始化模塊。
■通信內(nèi)聚:指模塊內(nèi)所有處理元素都在同一個(gè)數(shù)據(jù)結(jié)構(gòu)
上操作,或指各處理使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的
輸出數(shù)據(jù)。
?順序內(nèi)聚:指一個(gè)模塊中各個(gè)處理元素都密切相關(guān)于同
一功能且必須順序執(zhí)行,前一功能元素的輸出是后一功能
元素的輸入。
?功能內(nèi)聚:指模塊內(nèi)所有元素共同完成一個(gè)功能,缺一
不可。40
功能內(nèi)聚舉例
內(nèi)聚一個(gè)模塊內(nèi)的所有成分的處理動(dòng)作全部為完
成某個(gè)功能,且只執(zhí)行一個(gè)功能,缺一不可,稱為功
能聚合。
聚合性最強(qiáng)
如:計(jì)算實(shí)發(fā)工資,打印發(fā)票等
41
順序內(nèi)聚舉例
一個(gè)模塊能完成多個(gè)操作,前一個(gè)操作處理的輸出
數(shù)據(jù)是下一個(gè)操作處理的輸入數(shù)據(jù),模塊中各成份
的工作是有次序的,各成份的關(guān)系也較緊密,則稱
為順序聚合。
模塊142模塊2
通信內(nèi)聚舉例
配件編號J庫存量模塊內(nèi)各部分使用
相同的輸入數(shù)據(jù),或產(chǎn)
J單價(jià)生相同的輸出結(jié)果,稱為
獲得配件單通信聚合逋者,逋信向
價(jià)和庫存量聚模塊是通過微據(jù)流囹
來是文的。
43
通信內(nèi)聚舉例
函數(shù)A
函數(shù)B
函數(shù)C
查找登錄刪除修改
通信內(nèi)聚舉例
產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊
45
過程內(nèi)聚舉例
一個(gè)模塊內(nèi)各處理成分的動(dòng)作各不相同,彼此也沒
什么關(guān)系,但它們都受一個(gè)土逖流的支配,且決定了它
們的執(zhí)行次序。
函數(shù)A
函數(shù)B
函數(shù)C
例如,把流程結(jié)構(gòu)中的循環(huán)部分、判定部分、
計(jì)算部分分成一個(gè)模塊,這三個(gè)任務(wù)組成的模塊
是過程內(nèi)聚模塊。
46
過程內(nèi)聚舉例
全部任務(wù)納入一^個(gè)
模塊,得到一過程
性模塊
高斯消去法解題流程
47
時(shí)間內(nèi)聚舉例
時(shí)間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為
多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有
關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行
o這些功能只因時(shí)間因素關(guān)聯(lián)在一起。
函數(shù)A(T時(shí)間)
函數(shù)B(T+t時(shí)間)
函數(shù)CfTt時(shí)間)
例如初始化模塊、終止模塊、緊急故障處理模塊
48
邏輯內(nèi)聚舉例
調(diào)用模塊
這種模塊把幾種
相關(guān)的功能組合
在一起,每次被
調(diào)用時(shí),由傳送被
調(diào)
給模塊的判定參用
數(shù)來確定該模塊模
應(yīng)執(zhí)行哪一種功塊
49
邏輯內(nèi)聚舉例
缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)
不易修改,效率低
50
偶然內(nèi)聚舉例
當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,
這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,
它是內(nèi)聚程度最低的模塊。
,做雜事,
模塊M中的三個(gè)語句沒有任何聯(lián)系
缺點(diǎn):可理解性差,可修改性差
51
7.4軟件結(jié)構(gòu)圖形工具
◎軟件結(jié)構(gòu)圖
目軟件結(jié)構(gòu)設(shè)計(jì)優(yōu)化準(zhǔn)則
◎表示軟件結(jié)構(gòu)的HIPO圖
(HierarchyPlus
Input/Processing/Output)
52
軟件結(jié)構(gòu)圖(StructureChart)
模塊:用方框表示,名字體現(xiàn)該模塊的功能
模塊間的控制關(guān)系:統(tǒng)率、從屬;
模塊間的信息傳遞:
兩個(gè)附加符號:
模塊選擇調(diào)用或循環(huán)調(diào)用。
注意事項(xiàng):模塊唯一、從上到下調(diào)用、調(diào)用次序不
ABC
結(jié)構(gòu)圖的形態(tài)特征
■深度、寬度、扇入、扇出。
扇入
T
寬度
54
SC7F的皿種模塊
55
sc中的選擇調(diào)用
A根據(jù)內(nèi)部判斷A按另一判定結(jié)果
決定是否調(diào)用B選擇調(diào)用C或D
y、A
1~BIIC1I~~DI
56
sc中的循環(huán)調(diào)用
A根據(jù)循環(huán)條件重復(fù)調(diào)用B、C等模塊
57
軟件結(jié)構(gòu)圖舉例
讀輸入編輯輸入結(jié)果格式化顯示輸出
產(chǎn)生最佳解
58
7.5面向數(shù)據(jù)流的設(shè)計(jì)方法
(一)概念
1.變換流
2.事務(wù)流
3.設(shè)計(jì)過程
L變換流
參看圖形,信息沿輸入通
路進(jìn)入系統(tǒng),同時(shí)由外部
形式變換成內(nèi)部形式,進(jìn)
入系統(tǒng)的信息通過變換中
心,經(jīng)過加工處理以后再
沿輸出通路變換成外部形
式離開軟件系統(tǒng)。
當(dāng)數(shù)據(jù)流具有這些特征時(shí),
這種信息流稱為變換流。
2.事務(wù)流
數(shù)據(jù)沿輸入通路到達(dá)一
個(gè)處理T,這個(gè)處理根
據(jù)輸入數(shù)據(jù)的類型在若
干個(gè)動(dòng)作序列中選出一
個(gè)來執(zhí)行。這種“以事
務(wù)為中心的''的數(shù)據(jù)流,
稱為“事務(wù)流”。
處理T稱為事務(wù)中心,完成以下任務(wù):接收輸入數(shù)
據(jù);分析每個(gè)事務(wù)以確定它的類型;根據(jù)事務(wù)類
型選取一條活動(dòng)通路。
3、面向數(shù)據(jù)流的設(shè)計(jì)精化數(shù)據(jù)流程圖
過程
詳細(xì)設(shè)計(jì)
(二)變換分析設(shè)計(jì)方法
(TransformAnalysis)
步驟:
1找出主加工、邏輯輸入和邏輯輸出
2設(shè)計(jì)模塊結(jié)構(gòu)的頂層和第一層
3設(shè)計(jì)中、下層模塊
1分輸入、主加工、輸出部分,在DFD
上標(biāo)明分界線
⑴確定邏那就人——離物理輸入端最遠(yuǎn)
的,但仍可被看作系統(tǒng)輸入的那個(gè)數(shù)據(jù)
流
方法:從物理輸入端開始,一步步向系
統(tǒng)的中間移動(dòng),直至達(dá)到這樣一個(gè)數(shù)據(jù)
流:它已不能再被看作為系統(tǒng)的輸入,
則其前一個(gè)數(shù)據(jù)流就是系統(tǒng)的邏輯輸入O
1:分輸入、主加工、輸出部分,在DFD
上標(biāo)明分界線(續(xù))
⑵確定邏輯輸出——離物理輸出端最遠(yuǎn)的,
但仍可被看作系統(tǒng)輸出的那個(gè)數(shù)據(jù)流
方法:從物理輸出端開始,一步步向系統(tǒng)
的中間反方向移動(dòng),直至達(dá)到這樣一個(gè)數(shù)
據(jù)流:它已不能再被看作為系統(tǒng)的輸出,
則其后一個(gè)數(shù)據(jù)流就是系統(tǒng)的邏輯輸出。
1:分輸入、主加工、輸出部分,在DFD
上標(biāo)明分界線(續(xù))
⑶對系統(tǒng)的每一股輸入和輸出,都用上面的
方法找出相應(yīng)的邏輯輸入、輸出
(4)確定主加工----位于邏輯輸入和邏輯輸出
之間的加工)就是系統(tǒng)的主加工
⑸幾點(diǎn)說明:
?有的系統(tǒng)只有輸入和輸出兩部分,沒有主加工
>根據(jù)經(jīng)驗(yàn),幾股數(shù)據(jù)流的匯合處往往是系統(tǒng)的主加工
?每個(gè)人都可以有自己的看法,找出來的主加工可能也不
同,但一般不會(huì)相差太遠(yuǎn)。
變換中心
輸入
部分
B■■
輸入鼬IX
2設(shè)計(jì)SC的頂層和第一層模塊:
(1)設(shè)計(jì)一個(gè)頂層模塊(主模塊),它的功能是完成整個(gè)
程序要做的工作。
(2)設(shè)計(jì)結(jié)構(gòu)的第一層:
?為邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它的功能是向主模塊
提供數(shù)據(jù)
?為邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它的功能是輸出主模
塊提供的數(shù)據(jù)
?為主加工設(shè)計(jì)一個(gè)變換模塊,它的功能是號邏輯輸入
變換成邏輯輸出
第一層模塊同頂層主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流圖相對
應(yīng)。這里主模塊控制并協(xié)調(diào)一層的輸入、變換、輸出模塊的工
作,注意識別出選擇或循環(huán)調(diào)用以及調(diào)用條件。
第一級分解后的sc
3第二級分解(分解SC各分支)自頂向下分解,設(shè)計(jì)
出每個(gè)分支(輸入、加工、輸出)的中、下層模塊:
⑴為每一個(gè)輸入模塊設(shè)計(jì)兩個(gè)下層模塊,一個(gè)是輸入模
塊,接受數(shù)據(jù)來源;另一個(gè)是變換模塊,模塊調(diào)用時(shí)傳
送的參數(shù)應(yīng)同數(shù)據(jù)流圖相對應(yīng)
⑵輸出模塊也有兩部分組成,一部分是變換模塊,將數(shù)
據(jù)變換成輸出的形式;另一部分是輸出模塊
上述設(shè)計(jì)過程由頂向下遞歸進(jìn)行,直至達(dá)到系統(tǒng)的輸
入端或輸出端
(3)變換模塊的下層模塊,根據(jù)數(shù)據(jù)流圖中相應(yīng)加工的組
成情況而定。
輸
入
分
GetCGetE
支
7/bN
的
B||Btoj)
分GetReadDDtoE:
解a
ReadA。to
w,u
DFD1
加工分支的分解
不換分析舉例-DFD
變換分析舉例一轉(zhuǎn)換后的SC
匯款處理系統(tǒng)
合格的
匯款單各格的[處屆聯(lián)
匯款單:匯款單業(yè)務(wù)數(shù)據(jù)
匯款單處理后用
業(yè)務(wù)數(shù)據(jù)
取得合格輸出處理后
計(jì)舁費(fèi)記賬
匯款單/L的匯款單
處理后的
合格的匯款單1收據(jù)
匯款于匯款單匯款單
產(chǎn)生收據(jù)打印收據(jù)
輸入格式檢查
匯款單
變換分析設(shè)計(jì)
4.設(shè)計(jì)的優(yōu)化——根據(jù)設(shè)計(jì)準(zhǔn)則
(1)輸入部分的求精
?對每個(gè)物理輸入設(shè)置專門模塊,以體現(xiàn)系統(tǒng)的外
部接口;其他輸入模塊并非真正輸入,當(dāng)它與轉(zhuǎn)
換數(shù)據(jù)的模塊都很簡單時(shí),可修它們合并成一個(gè)
(2)輸出部分的求精
?為每個(gè)物理輸出設(shè)置專門模塊,同時(shí)注意把相
同或類似的物理輸出模塊合并在一起,以減低
耦合度。
78
(3)變換部分的求精:根據(jù)設(shè)計(jì)準(zhǔn)則,對模塊進(jìn)
行合并和調(diào)整。
軟件結(jié)構(gòu)的求精,具有很大的經(jīng)驗(yàn)性。
追求“高內(nèi)聚,低耦合”方法:
?設(shè)計(jì)有獨(dú)立功能的模塊
?模塊間傳遞數(shù)據(jù)型的參數(shù)
?模塊間共享信息盡量少
79
C合法性檢奄)
分房申請A2,3尊分房<調(diào)厲產(chǎn)生分房一3退房處理80
、和分類J飛者務(wù)數(shù)J
(ra)事務(wù)分析設(shè)計(jì)方法
任何情況下都可使用變換分析方
法設(shè)計(jì)軟件結(jié)構(gòu),但如數(shù)據(jù)流具有明
顯的事務(wù)特點(diǎn)時(shí)(有一個(gè)明顯的事務(wù)中
心),以采用事務(wù)分析方法為宜。
事務(wù)分析設(shè)計(jì)
?事務(wù)分析的設(shè)計(jì)步驟和變換分析的設(shè)計(jì)步驟大部分
相同或類似,主要差別僅在由數(shù)據(jù)流程圖到軟件結(jié)構(gòu)
的映射方法不同。由事務(wù)流映射成的軟件結(jié)構(gòu)包括一
個(gè)接收分支和一個(gè)發(fā)送分支。
?映射出接收分支結(jié)構(gòu)的方法和變換分析映射出輸入結(jié)
構(gòu)的方法相似,即從事務(wù)中心的邊界開始,把沿著接
收流通路的處理邏輯映射成模塊。
?發(fā)送分支的結(jié)構(gòu)包含一個(gè)調(diào)度模塊,它控制下層的所
有活動(dòng)模塊;然后把數(shù)據(jù)流程圖中的每一個(gè)活動(dòng)流通
路映射成與它的特征相對應(yīng)的結(jié)構(gòu)。
82
C通路
事務(wù)分析的映射方法83
5杳詢處理—一詢問信息用戶
空房信息----?房租文件住歷信息
3退房處理Y_______調(diào)用"生退房
2分房處理分房申請
工一i崗房產(chǎn)生分房----------
退房申請
居住條件和單
位面積房租4調(diào)房處理
住房分配單口合法性檢)
、杳和分類,調(diào)房申記
用
6更改信息怔
壬
1/
——分房系統(tǒng)
/7生成住、
**——統(tǒng)計(jì)表〔房統(tǒng)計(jì)表J
更改信耍求一
房產(chǎn)科
更改信息合法性檢查
分房處理
84
圖書管理,1.2
新書入庫
要求/入庫單
目錄文件
、注銷1.5
1.1注銷圖書罰款單
;(要求類
1.3
借書
借書文件
中,C?無效輸入
1.4
事務(wù)分析舉例-DFD還書罰款單
事務(wù)分析舉例一轉(zhuǎn)換后的SC
圖書處理系統(tǒng)
圖書管
注銷單
還由單
取得圖書新書入庫借書還書注銷圖書
處理要求
操作層修改借打印
錄文件書文件罰款單
細(xì)節(jié)層
軟件結(jié)構(gòu)圖注意事項(xiàng)
(1)同一名字的模塊在結(jié)構(gòu)圖中僅能出現(xiàn)一次。
(2)調(diào)用關(guān)系只能從上到下。
(3)不嚴(yán)格表示模塊的調(diào)用次序,習(xí)慣上從左到右,
有時(shí)為了減少連線的交叉,適當(dāng)?shù)卣{(diào)整同一層模塊
的左右位置,以保證結(jié)構(gòu)圖的清晰。
(4)結(jié)構(gòu)圖并不指明什么時(shí)候調(diào)用下層模塊,只表明
一個(gè)模塊調(diào)用哪些模塊,至于模塊內(nèi)還有沒有其他
成分則完全沒有表示。
87
綜合數(shù)據(jù)流圖的映射
您確定DFD整體上的類型:除明顯有事務(wù)類型
的,都可認(rèn)為是變換型。事務(wù)型用于高層
DFD變換有平行處理的優(yōu)點(diǎn)。
您把與全局特性不同的局部區(qū)域孤立出來)確
定類型。
您按整體與局部的DFD特性,設(shè)計(jì)軟件結(jié)構(gòu)。
88
混合型的結(jié)構(gòu)設(shè)計(jì)
89
練習(xí):
請給出下列DFD圖對應(yīng)的結(jié)構(gòu)圖:
90
設(shè)計(jì)優(yōu)化
將初始sc根據(jù)模塊獨(dú)立性原則進(jìn)行精化
,對模塊進(jìn)行合并、分解修改、調(diào)整,得到
高內(nèi)聚、俅耦合模塊,得到易于實(shí)現(xiàn)、易于
測試和易于維護(hù)的軟件結(jié)構(gòu),產(chǎn)生設(shè)計(jì)文檔
的最終SC。
91
改進(jìn)軟件結(jié)構(gòu)設(shè)計(jì)的指導(dǎo)原則
⑴程序結(jié)構(gòu)盡可能與問題結(jié)構(gòu)相對應(yīng)
⑵模塊功能的完整
(3)消除重復(fù)功能
(4)作用范圍應(yīng)在控制范圍內(nèi)
⑸減少高扇出爭取高扇入
(6)模塊大小適中
⑺降低模塊接口的復(fù)雜性
(8)模塊功能可預(yù)測92
(1)程序結(jié)構(gòu)盡可能與問題結(jié)構(gòu)相對應(yīng)
兩種典型的程序結(jié)構(gòu):
■變換型程序
■事務(wù)型程序
兩種程序結(jié)構(gòu)的共同特征:
上層模塊只負(fù)責(zé)控制、協(xié)調(diào)
下層模塊完成具體的操作
93
(2)模塊功能的完整
完整的模塊應(yīng)包括三部分:
■執(zhí)行規(guī)定功能部分
■出錯(cuò)處理部分
■需返回一系列數(shù)據(jù)時(shí),應(yīng)返回是否正確結(jié)束(
即“文件完/EOF”)標(biāo)志。
94
(3)消除重復(fù)功能
幾個(gè)模塊中含有重復(fù)的部分,應(yīng)設(shè)法消去
o因?yàn)橥还δ苤貜?fù)多處,不僅浪費(fèi)編程、測
試時(shí)間,還會(huì)給修改帶來麻煩。
但消除重復(fù)功能并不是簡單的合并。正確的方
法是:先分析幾個(gè)模塊中相同功能的部分;然
后把這個(gè)功能分離出來,構(gòu)成它們的一個(gè)公共
的下層模塊。
95
例子:消除重復(fù)功能
96
例子:消除重復(fù)功能
說明:如果A、B抽去公共部分C之后余下的模塊A
B'比較簡單,則可以同它們的調(diào)用模塊X、Y合并,
所以改進(jìn)后圖2、圖3都有可能。
97
(4)作用范圍應(yīng)在控制范圍內(nèi)(作用域
應(yīng)在控制域內(nèi))
■模塊的控制范圍(控制域):
包括模塊本身和其下屬模塊的集合。
■模塊的作用范圍(作用域):
指受該模塊內(nèi)一個(gè)條件判定影響的所有模塊的集
合。只要模塊中含有一些依賴于這個(gè)判定的語句
,那么就稱該模塊在這個(gè)判定的作用范圍內(nèi)。
■控制域是從結(jié)構(gòu)方面考慮的;作用域是從功能方
面考慮的
98
■控制范圍與作用范圍之間的準(zhǔn)則:
一個(gè)模塊的作用范圍應(yīng)在其控制范圍之
內(nèi),且條件判定所在的模塊應(yīng)與受其影
響的模塊在層次上盡量靠近。
99
模塊的控制范圍和作用范圍(例)
模塊A的控制范圍:
A、B、C、
D、E、F
A的作用范圍:
A、C、F
:條件判定
?----1:受判定影響的模塊
100
圖A:判定位置違反作用范圍/控制范圍原則
條件
G——?D判定
1)將判定所需數(shù)據(jù)從G向上傳送到D、B,再向下傳給C,C用
這些數(shù)據(jù)再次作出判定。從而增加塊間數(shù)據(jù)量
2)將判定的結(jié)果(是/不是)從G向上傳送到D、B,再向下傳給C
,C用這些開關(guān)量決定執(zhí)行那些操作。這樣也增加塊間數(shù)據(jù)量,
而且傳送控制信息。
101
圖B:符合作用范圍/控制范圍原則,但判定位置
太高
TOP
TOP
102
圖C:符合作用范圍/控制范圍原則,判定位置
適中
B—?C
B>D—?G
103
圖D:符合作用范圍/控制范圍的理想判定位置
TOP
DE
D—?G
104
修改模塊結(jié)構(gòu)方法:
■將包含條件判定的模塊合并到它的調(diào)用模塊
中,使判定處于較高位置
■將接受判定影響的模塊下移到控制范圍內(nèi)
■把判定上移到足夠的位置
可以歸結(jié)為:
使判定同受其影響的操作盡可能靠近。
105
(5)減少高扇出,爭取高扇入
■模塊調(diào)用的直接下層模塊的個(gè)數(shù),稱為扇出(Fanout)
■模塊被其他各模塊調(diào)用的個(gè)數(shù),稱為扇入(Fanin)
■原則:扇出不宜過大,<二7;扇人盡可能大些。但
CASE(分類)型模塊扇出可>7,因?yàn)閷僮匀环诸惽闆r,易理
解
符號:
(扇出,扇人)
(5)減少高扇出,爭取高扇入(續(xù))
相關(guān)技巧:
■良好的結(jié)構(gòu)圖往往呈“清真狀”,即“頂為尖一下層逐
漸加寬一底層收窄”
■結(jié)構(gòu)圖的形態(tài)應(yīng)該均衡,即從頂?shù)降讓拥穆窂介L短不該
過于懸殊
107
(6)模塊大小適中
■模塊過大:可理解程度下降
考慮對該模塊分解
■模塊過?。洪_銷大于有效操作,系統(tǒng)接口復(fù)雜
考慮是否同它的調(diào)用模塊合并
幾種情況下的小模塊不合并:
e模塊具有獨(dú)立的功能
e模塊功能可能會(huì)發(fā)生變化
&模塊的復(fù)用性好,或者其調(diào)用模塊很復(fù)雜
108
(7)降低模塊接口的復(fù)雜性
接口傳遞信息應(yīng)簡單且和模塊功能一致。
例:求一元二次方程的根
設(shè)求根模塊調(diào)用形式為:
(1)QUAD—ROOT(TBL,X)
傳遞系數(shù)的數(shù)組存放根的數(shù)組
(2)QUAD-ROOT(A,B,C,ROOT1,ROOT2)
A,B,C為方程系數(shù)
ROOT1,ROOT2是兩個(gè)才艮
109
(8)模塊功能可預(yù)測
■可將模塊看成黑盒子,相同輸入可產(chǎn)生相同
輸出,稱其功能為可預(yù)測的。
■模塊帶有內(nèi)部狀態(tài),其功能可能是不可預(yù)測
的。這樣的模塊難理解、難測試、難維護(hù)。
110
詳細(xì)設(shè)計(jì)的基本任務(wù)
?算法設(shè)計(jì)
?數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
?數(shù)據(jù)庫物理設(shè)計(jì)
?其他設(shè)計(jì):代碼設(shè)計(jì)、輸入/輸出設(shè)計(jì)、界面設(shè)計(jì)
■編寫詳細(xì)設(shè)計(jì)說明書:
?評審
詳細(xì)設(shè)計(jì)是根據(jù)每個(gè)模塊的功能設(shè)計(jì)其邏輯
描述、實(shí)現(xiàn)其法以及實(shí)現(xiàn)這些算法的邏輯控制流
程,并設(shè)計(jì)這些模塊所需的局部數(shù)據(jù)結(jié)構(gòu)。
111
詳細(xì)設(shè)計(jì)說明書
■引言:包括編寫目的、背景、定義、參考資料
■程序系統(tǒng)的組織結(jié)構(gòu)。
?程序1(標(biāo)識符)設(shè)計(jì)說明,包括功能、性能、輸
入、輸出、算法、流程邏輯、接口。
■程序2(標(biāo)識符)設(shè)計(jì)說明
■程序N(標(biāo)識符)設(shè)計(jì)說明
112
詳細(xì)設(shè)計(jì)方法-結(jié)構(gòu)化程序設(shè)計(jì)
?詳細(xì)設(shè)計(jì)結(jié)果基本上決定了最終程序代碼的質(zhì)量。
?不僅要邏輯正確,性能滿足,還要簡明易懂。
1.采用自頂向下,逐步求精的程序設(shè)計(jì)方法。
2.使用三種基本控制結(jié)構(gòu)構(gòu)造程序:順序、選擇、循
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年財(cái)務(wù)分析專業(yè)課程考試題目
- 2026年證券投資顧問從業(yè)資格認(rèn)證考試練習(xí)題
- 俄語就業(yè)前景分析
- 墻布阻燃性能話術(shù)
- 骨科護(hù)理質(zhì)量管理實(shí)踐
- 2026西安市胸科醫(yī)院招聘腎內(nèi)科醫(yī)師參考考試試題及答案解析
- 2026年廣西理工職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題及答案詳細(xì)解析
- 2026年蚌埠學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年廣東舞蹈戲劇職業(yè)學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 刑事訴訟法學(xué)全套課件
- DBJ51-T 040-2021 四川省工程建設(shè)項(xiàng)目招標(biāo)代理操作規(guī)程
- 青鳥消防JBF62E-T1型測溫式電氣火災(zāi)監(jiān)控探測器使用說明書
- 武漢市江岸區(qū)2022-2023學(xué)年七年級上學(xué)期期末地理試題【帶答案】
- 自動(dòng)駕駛系統(tǒng)關(guān)鍵技術(shù)
- 完整工資表模板(帶公式)
- 奇瑞汽車QC小組成果匯報(bào)材料
- 英語四級詞匯表
- 社區(qū)春節(jié)活動(dòng)方案
- CTT2000LM用戶手冊(維護(hù)分冊)
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
評論
0/150
提交評論