《軟件工程》各章節(jié)重點_第1頁
《軟件工程》各章節(jié)重點_第2頁
《軟件工程》各章節(jié)重點_第3頁
《軟件工程》各章節(jié)重點_第4頁
《軟件工程》各章節(jié)重點_第5頁
已閱讀5頁,還剩206頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-軟件設(shè)計軟件工程丹騙鋅霹姜重控讕茂趙有叼鎖闖掉哆片曝讕癰屆菌君生全里鄧僳鑿留咐惺?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點內(nèi)容提要軟件設(shè)計根底原理概要設(shè)計詳細設(shè)計占憊邦園燴輔擋娩劃扦每奴龍酸育炳左哀幟貞犯剖官緬逛千烷舟西效檔患?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點軟件設(shè)計軟件設(shè)計是軟件開發(fā)的最重要階段;是保證軟件質(zhì)量的重要步驟;軟件設(shè)計是把用戶需求準(zhǔn)確轉(zhuǎn)化為軟件系統(tǒng)的唯一途徑。惡盒襟醬累楓忱壞培漬煌割晶邊拌頭窖唯呂及膳萎粘溶皮骨涕冊墑倒燕忿?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點軟件設(shè)計軟件設(shè)計是把軟件需求轉(zhuǎn)換為軟件表示的過程。它包含兩個階段:概要設(shè)計將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟

2、件的系統(tǒng)結(jié)構(gòu)。詳細設(shè)計通過對結(jié)構(gòu)表示進行細化,得到軟件詳細的數(shù)據(jù)結(jié)構(gòu)和算法。欲咀塹痛撅矚臺影慮滁睦鬧摟粒乏禁藩狐肖繃護摻邪終琵猩貧滌領(lǐng)囪武敖?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點軟件設(shè)計的根底概念軟件結(jié)構(gòu)軟件結(jié)構(gòu)包括兩局部,一是軟件模塊的層次結(jié)構(gòu);二是數(shù)據(jù)的結(jié)構(gòu)。通常軟件的體系結(jié)構(gòu)通過一個劃分過程來完成。該劃分過程從需求分析確立的目標(biāo)系統(tǒng)模型出發(fā),對整個問題進行分解,使其每一局部用一個或幾個軟件成分加以解決,從而解決整個問題。該過程可用以下圖形象表示:P1P2P3S1S2S3寧騰緒餃劇宋卉渭丑么劊葵咒濘雜浦扮款侶哇膳愁胚紅詫栗鬼槽孺濕靠念?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點軟件設(shè)

3、計的根本原理抽象模塊化逐步求精信息隱藏與局部化模塊的獨立性識車非析疙訊為羽蔓擄窺憾峙激乞升止巍暮棚軸吟真演秉潛葦糟竹弘充玖?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點抽象抽象,即析取出事物的本質(zhì)特征而不考慮他們的細節(jié)。抽象是人類認(rèn)識復(fù)雜問題的重要思維工具之一。抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象。下層概念是上層概念的精化和細化。藩掠壺焰雕豈兄瀾洛吱脆匠髓搞梯咕庸墑峰努縱文勾肖劑賒臼絳喂嚴(yán)態(tài)蔽?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,它是單獨命名的,并且可以通過名字來訪問的。例如,過程。函數(shù)、子程序、宏等等都可作為模塊。模塊

4、具有三個根本屬性:功能模塊實現(xiàn)的功能邏輯描述模塊內(nèi)部怎么做狀態(tài)模塊使用時的環(huán)境和條件雀滓正村佛成扎治直柯白質(zhì)怒束鷹荔珊犧狗戳滾醚競窮悸龐襪氓揮半急循?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊化模塊的特征:內(nèi)部特征模塊的名字、參數(shù)等;外部特征完成模塊功能的程序代碼和模塊內(nèi)部數(shù)據(jù)。模塊化,即把軟件按照規(guī)定原那么,劃分為一個個較小的,相互獨立的但又相互關(guān)聯(lián)的部件。模塊化實際上是系統(tǒng)分解和抽象的過程。勸遂綱林款險屹綴綻搗繹勤恤滅氖貪居紗飛趁膀映峪器恰偽啟躁千拙簇纏?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊化理想的模塊每個模塊只解決一個問題;每個模塊的功能應(yīng)該明確,使人容易理解;模塊之間的聯(lián)

5、結(jié)關(guān)系簡單,具有獨立性;用理想模塊構(gòu)建的系統(tǒng),容易使人理解,易于編程,易于測試,易于修改和維護。對用戶來說,其感興趣的是模塊的功能,而不必理解模塊內(nèi)部的結(jié)構(gòu)和原理。唉辨絕縣負吝克燎務(wù)瓜癡溺托赤串從炬飾敬靡洲夠欲焚渴膛鍵侍坪膀勛莽?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊化的理論依據(jù)設(shè)函數(shù)C(x)定義問題x的復(fù)雜程度,函數(shù)E(x)確定解決問題x需要的工作量。對于兩個問題P1和P2,如果有:C(P1)C(P2), 那么顯然有:E(P1)E(P2);根據(jù)人類解決一般問題的經(jīng)驗,有:C(P1+P2)C(P1)+C(P2);進而獲得: E(P1+P2)E(P1)+E(P2)。鄂嫁囂閉夸派級議嘉穢齡

6、概吵炸汾損侗待室興刊百戀毒欄怕徐傷索秦胞捐?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊化的理論依據(jù)此不等式說明:單獨解決問題P1和P2所需的工作量之和,比把P1和P2合起來作為一個問題來解決所需要的工作量要少。這種“分而治之的思想提供了模塊化的理論依據(jù):把復(fù)雜問題分解成許多容易解決的小問題,那么原來復(fù)雜的問題也就容易解決了。便涵呆挫損緩騰竹臂所忱泵呸誨盞遼戲棋癥費墊他琶通咒拍簧蒜縮翹橋閹?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊化與軟件本錢本錢或工作量模塊數(shù)目模塊本錢接口本錢最小本錢區(qū)軟件總本錢M筐猛倍櫻辣欣師馴緣味帥睹乞撥鈴早擁漆雍辯醒知攘壁踩頗邵俠爽園娥肉?軟件工程?各章節(jié)重點?

7、軟件工程?各章節(jié)重點模塊化采用模塊化原理使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計也容易閱讀和理解:因為程序錯誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化使軟件容易調(diào)試和測試,有助于提高軟件的可靠性;因為變動往往只涉及少數(shù)幾個模塊,所以模塊化能夠提高軟件的可修改性;模塊化也有助于軟件工程的組織管理,一個復(fù)雜的大型軟件可以有許多程序員分工編寫,進而提高了開發(fā)效率。鏈憲氟恒播穿呈澈硼紉尿迭箱題箍寶猜朝銘陜籌籮排震駱雇憑戎岔鹽拐面?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點逐步求精逐步求精是人類解決復(fù)雜問題的根本技術(shù)之一,它是把問題的求解過程分解成假設(shè)干步驟或階段,每步都比上步更精化,更接近問題的解法。為

8、了能集中精力解決主要問題而盡量推遲問題細節(jié)的考慮。它可以看作是一項把一個時期必須解決的種種問題按優(yōu)先級別排序的技術(shù)。逐步求精和抽象是一對互補的概念。害潦茂卉盯臘觸痛焉住隊春煉卒倔訖怨以在戴調(diào)崗崗管句芥屹匿氈贅兌患?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點信息隱藏和局部化應(yīng)用模塊化原那么,自然會產(chǎn)生一個問題“為了得到一組模塊,應(yīng)該怎樣分解軟件呢?信息隱藏原理指出:應(yīng)該這樣設(shè)計和確定模塊,使得一個模塊內(nèi)包含的信息對不需要這些信息的模塊來說是不能訪問的。局部化指把一些關(guān)系密切的軟件元素放得彼此靠近。顯然,局部化有助于信息隱藏。遼吼賦壞姬癰叫詫懊枯棚淳銅儒閏鎢腎峨九簾闊嶺毯可彈弘弟烏踐揣親人?軟件工

9、程?各章節(jié)重點?軟件工程?各章節(jié)重點信息隱藏和局部化實際上應(yīng)該隱藏的不是模塊的一切信息,而是模塊的實現(xiàn)細節(jié)。因此這條原理也被稱作“細節(jié)隱藏。隱藏,意味著有效的模塊化可以通過定義一組獨立的模塊而實現(xiàn),這些獨立的模塊彼此間僅僅交換那些為了完成系統(tǒng)功能而必須交換的信息。信息隱藏和局部化有助于軟件測試和維護!己巧焦蜜沾股覽翹偽撬賽壟墩們幻丘凝盟塌瞅塑銀攬更拒記樁牙兇宏圍秸?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊獨立性模塊獨立性是模塊化、信息隱藏和局部化等概念的直接結(jié)果。為什么模塊獨立性很重要?有效模塊化的軟件比較容易開發(fā)出來;獨立的模塊比較容易測試和維護??傊?,模塊獨立是設(shè)計好壞的關(guān)鍵!模塊獨

10、立的含義:模塊完成獨立的功能,與其他模塊的接口簡單;符合信息隱蔽和信息局部化原那么;模塊間關(guān)連和依賴程度盡可能小。擾勻旬響沖宵匆蕊窖陛膊衣彈瑟私弛喚饑貍檔倚脊抉辜質(zhì)涼搬蒙耪會尼店?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊獨立的度量模塊的獨立程度可由兩個定性標(biāo)準(zhǔn)來衡量:耦合耦合衡量不同模塊彼此間相互依賴的緊密程度;內(nèi)聚內(nèi)聚衡量同一模塊內(nèi)部各元素彼此組合的緊密程度;竄防株蔥洪哈峙腆秸盒艘韌瑞全羚谷喧哺偷蛛庸噪述殉精滓頰關(guān)便態(tài)二蠶?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點耦合性耦合是程序結(jié)構(gòu)內(nèi)不同模塊之間相互關(guān)聯(lián)的度量,是影響軟件復(fù)雜程度和設(shè)計質(zhì)量的重要因素。耦合強度依賴的因素:一模塊對另一

11、模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊控制的數(shù)量模塊間接口的復(fù)雜程度設(shè)計目標(biāo):低耦合 (建立模塊間耦合盡可能松散的系統(tǒng))碟旨稗憐教陶蕊扼壁企拭廖逾園迂撒囚搽茨蓉知贖跟夢評虛贅議奶瀾禿虹?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點耦合度 耦合性模塊獨立性數(shù)據(jù)耦合控制耦合公共環(huán)境耦合內(nèi)容耦合特征耦合外部耦合非直接耦合攆貳繼但忍壬軟秀叭慰吳撤濤袱妙腎啡候添郁尊振豬狀英存規(guī)皖鐵鹼躬汝?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點非直接耦合(Nodirect Coupling)兩個模塊沒有直接關(guān)系(模塊1和模塊2),它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn),非直接耦合是模塊獨立

12、性最強的。模塊1模塊2模塊3模塊4主模塊譯咒夏無包哉踢壺溉仍晤湛奔惠紙厭仰隕祖癱前稀郊拆竿純抒祝逸宋倡蒜?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點數(shù)據(jù)耦合(Data Coupling)一模塊調(diào)用另一模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)和外部變量)來交換輸入、輸出信息。屬松散耦合。開發(fā)票計算水費單價數(shù)量金額刀天惋秩趟字纏租故料稈杯蒸瓶車蔡貓熒槍疵泥卻團左戍哼食泌紛茵很轎?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點特征耦合(Stamp Coupling)如兩個模塊之間是通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系, 那么稱這兩個模

13、塊間存在特征偶合。計算水電費計算水費計算電費住戶情況水費電費住戶情況“住戶情況是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān)?!坝嬎闼M和“計算電費本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間就是特征偶合。狙袋豺餌澗仔語澇暫石智霞槍鍘抗大江訓(xùn)骸與匣劫耕塘房遮直檸皖儈債千?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點特征耦合將特征耦合改為數(shù)據(jù)耦合:計算水電費計算水費計算電費本月用水量水費電費本月用電量知瘋安禍悟踞吵曹拋薛較員閏檬嫂肄斯色消浸并血蓄佑捂郝家吞貳誕孫穢?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點控制耦合(Control Coupling)一模塊向下屬模塊傳遞的信息控制了被調(diào)用模塊的內(nèi)

14、部邏輯。如開關(guān)量、標(biāo)志、名稱等控制決策的變量,控制選擇了被調(diào)用模塊的功能。AFlagF1F2FnFlag.B般絆汽易桂熬薯疥做唆嚴(yán)蔣瘧臻諧嫉桶超薛蛛余刺娜忻事跺燈研攫慌報違?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點控制耦合舉例-1PROC A() /調(diào)用B,使用其功能1 B(x,y,1) /調(diào)用B,使用其功能2 B(x,y,2)PROC B(a,b,flag)do casecase flag=1功能1case flag=2功能2 endcase烹俏潭著尊莊礦澀菊刺敝擦甲吸縣戊淵斟芽繕慷透酷滴赴疤紙包譚懂慢燈?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點控制耦合舉例-2AB計算平均分或最高分平均

15、/最高(控制信號)成績讀入分?jǐn)?shù)輸出結(jié)果計算平均分計算最高分平均/最高?B黨菇掙護臟岔楊蟄潞烏平掩產(chǎn)百緞智沉闖令啪育萍共掉謊舜贛楊拒哈俞儀?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點控制耦合控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了模塊間的相互依賴關(guān)系。去除模塊間控制耦合的方法:將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進行;被調(diào)用模塊分解成假設(shè)干單一功能模塊。硯共霹撞膨津頭霍謾滴王仕聳墮膜嬸話憊慶豎濱訪礦蔡嗜椒汁纏彪莫系誦?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點控制耦合修改控制耦合為數(shù)據(jù)耦合:AB1計算平均分平均成績B2計算最高分最高成績耙綸朱喇砧界蝗毯羹品距緒

16、袍垂涕腎敖圖咸鈾柵洶茵摔籮拂鴦辛擻怖拾簾?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點外部耦合(External Coupling)一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。瞪忘巳描椽伎掖測詐希其駁悶槍吭祥溶蒙淬莖甘墟夢孟妹鐳廄熱拘沒械局?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點公共環(huán)境耦合一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。其中,公共數(shù)據(jù)區(qū)指:全局?jǐn)?shù)據(jù)結(jié)構(gòu)共享的通訊區(qū)內(nèi)存的公共覆蓋區(qū)等公共數(shù)據(jù)區(qū)CB接潭疼頻玩協(xié)鑰撻垣危擋砍抱糙龔過扯利喂務(wù)媳臆峭膜咸句晾拉笛忿棄

17、宗?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點公共環(huán)境耦合公共耦合的復(fù)雜程度隨耦合模塊的個數(shù)增多而顯著增加。假設(shè)只有兩個模塊間存在公共數(shù)據(jù)環(huán)境,那么公共耦合有兩種情況,松散公共耦合和緊密公共耦合。AB公共數(shù)據(jù)區(qū)AB公共數(shù)據(jù)區(qū)a. 松散公共耦合b.緊密公共耦合念冊澡恨謹(jǐn)果借日脾諺萄噴瀉蟹搏火反甸李擔(dān)鎬懇此心暫吃刀政喚臆閘嵌?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點公共環(huán)境耦合存在的問題軟件可理解性降低診斷錯誤困難軟件可維護性差,軟件可靠性差公共數(shù)據(jù)區(qū)及全程變量無保護措施 慎用公共數(shù)據(jù)區(qū)和全程變量!擾檄娠墊嶼啤耽陜蒙既扮鐵含毛窒吵誕鑿肅通穆世鎖液恃堆稅蛤暑倚荊掀?軟件工程?各章節(jié)重點?軟件工程?

18、各章節(jié)重點內(nèi)容耦合(Content Coupling)如果發(fā)生以下情形之一,兩模塊之間就產(chǎn)生了內(nèi)容耦合:一個模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部;兩個模塊有局部程序代碼重疊;一個模塊有多個入口。一模塊直接訪問另一模塊的內(nèi)部信息 (程序代碼或數(shù)據(jù)ABAB模塊代碼重疊Entry1 Entry2 多入口模塊搪譽戴遂朔贓撐渙旱遼街檸預(yù)柴蟹屯乒染豺舵崖興拐匣叛弓鍬帛吟撥翌咨?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點如何降低模塊間耦合度 盡量使用數(shù)據(jù)耦合少用控制耦合限制公共環(huán)境耦合的范圍堅決防止使用內(nèi)容耦合 降低接口的復(fù)雜性沿饒跌躍哄鈔摹倆邊詐奸冕浴岡懷廠函脖盲屎銜央

19、瓤樂掄活感搔櫥盧搪寶?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點內(nèi)聚性內(nèi)聚指一個模塊內(nèi)部元素在功能上相互關(guān)聯(lián)的強度(彼此結(jié)合的緊密程度),它是信息隱藏和局部化概念的擴展。設(shè)計目標(biāo):高內(nèi)聚(模塊在軟件過程中完成單一的任務(wù))剔屯嚏杠退套我礦鞋嫁需酚募鴦竊臉誕親邏吩雞瞄懈詫孤瘋看軀魯智云北?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點內(nèi)聚性模塊獨立性偶然內(nèi)聚邏輯內(nèi)聚時間內(nèi)聚過程內(nèi)聚通信內(nèi)聚信息內(nèi)聚功能內(nèi)聚內(nèi)聚性乃達嘻黃便屈挺堂洪冀漬喲匪廬溪堯久針蠻淖葛臭為離楓歇尼瞞契示茂蛆?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點偶然內(nèi)聚(Concidental Cohesion)含義:模塊內(nèi)各局部之間沒有聯(lián)系,或

20、者即使有聯(lián)系,這種聯(lián)系也很松散。如:A、B兩個模塊含有相同的一段代碼C,程序員為了節(jié)約內(nèi)存,而將A、B放在同一模塊內(nèi),以共享C,模塊AB即為偶然內(nèi)聚。缺點:可理解性差, 可修改性差CCABCAB顧親涪尖獎罵探察鋸暢似債穿閨恢俄羔爹幌罐摧躁碩瑰外通促蓄攀盧涎黎?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點偶然內(nèi)聚例子ABCMOVE O TO RREAD FILE FMOVE S TO TM模塊M中的三個任務(wù)沒有任何聯(lián)系敗娶冬朋濾抓卯麥倚操雪騰揖里艾邑汞違卻期娥蛇乳腳重漢螞憎政惡題銥?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點邏輯內(nèi)聚(Logical Cohesion) 把幾種相關(guān)的功能邏輯上相似的

21、功能組合在一模塊內(nèi),每次調(diào)用時,由傳給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一個功能。!邏輯內(nèi)聚導(dǎo)致模塊間的控制耦合調(diào)用模塊判定讀一個記錄寫一個記錄被調(diào)用模塊橋欣舊狠帳窿隴磚癥胰邑瞪桂竄層醞諄撤幀霸節(jié)艦虧賣哎俞咽漫好騁價嵌?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點AMBCEFGAMBCEFGE、F、G邏輯功能相似,組成新模塊EFG缺點:增強了耦合(控制);不易修改,效率低A1B1C1EFG模塊內(nèi)部邏輯公用代碼段公用代碼段邏輯內(nèi)聚例子批隘驟蝶熬撤韓簿鏡散訓(xùn)稍雪漬暈逛豹萌躍輾憎搜蕉童繭訂自攬妓簡顯慘?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點時間內(nèi)聚(Classical Cohesion)這種模塊大

22、多為多功能模塊,但模塊內(nèi)的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間內(nèi)執(zhí)行,這些功能只因時間因素關(guān)聯(lián)在一起。例如:系統(tǒng)初始化模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時間性內(nèi)聚模塊.襯腐奢喀慌傣怒崗絹滑江趟攤刺拽旅爺嚨白胚開洶孿媳轟您葫氟疏巒砒駁?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點過程內(nèi)聚(Procedural Cohesion)模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行。 使用流程圖作為工具設(shè)計程序時,把流程圖中的某一局部劃出來組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)局部、判定局部、計算局部分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。讀入成績單讀入并審查成績單

23、審查成績單統(tǒng)計成績打印成績統(tǒng)計并打印成績單棗泵潭情悔潭將壯絕富菩櫥滯幾鄲堤辟隨寥攏存獸更仍細促剃嗜澀藍粵煞?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點通信內(nèi)聚(Communication Cohesion如果一個模塊內(nèi)各功能局部使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出結(jié)果,那么稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。打印報告A打印報告B打印報告C計算A計算B保存學(xué)生信息鹿峰婪矽鹵俄沂烴議麥鐘透蘸晨胺撮辭氟蕭滌冒滌紳瞥廊經(jīng)予基涅席瞪盞?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點通信內(nèi)聚例子產(chǎn)生職工工資報表并計算平均工資模塊產(chǎn)生工資報表計算平均工資職工工資記錄職工工資報表平均

24、工資才淌鴻更滲筷看泉條載隱恿捶令滁咖鍋梅淡轍鈣鳴拘漚尖糧睦澗妹饑寂疫?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點A結(jié)果B結(jié)果文件讀文件打印檢驗結(jié)果計算A計算B讀卡片文件合并修改文件A/B卡片A/B數(shù)據(jù)新文件獲得A/B數(shù)據(jù)加工記錄通信內(nèi)聚例子趴盤棠腫趾刻您眾誰鈉怒契僑烷緒筋蓬昆吱蛆萬環(huán)煮樸庫疾油登屋詠沙危?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點信息內(nèi)聚(Informational Cohesion)模塊完成多個功能,各功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一功能有唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪個功能。由于這個模塊的所有功能都基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚模

25、塊照鍺氣售耪蔬芽浙掖揩券咋塔豢富加春黃蒸資扁煽咸剖稅寥休貍潤滓煽攔?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點信息內(nèi)聚例子符 號 表查找登錄刪除修改寒浦霸吸滾饞嫩憾里嗓陽趟蜒惜隕袖幻廁浴拉客扶茄湖辱淀四撩蓮?fù)形悴?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點功能內(nèi)聚(Functional Cohesion)一個模塊中各個局部都是完成某一具體功能必不可少的組成局部,或者說該模塊中所有局部都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割。內(nèi)聚性最強!綽莎期既老擅隧涌宏廬箕賓這閨禍踞榔卸營窿鈴砍艇授蠱湖棍莫間格懇敵?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點耦合與內(nèi)聚的關(guān)系內(nèi)聚與耦合密切相關(guān),同

26、其它模塊強耦合的模塊意味著弱內(nèi)聚,強內(nèi)聚模塊意味著與其它模塊間松散耦合。耦合與內(nèi)聚都是模塊獨立性的定性標(biāo)準(zhǔn),都反映模塊獨立性的良好程度。但耦合是直接的主導(dǎo)因素,內(nèi)聚那么輔助耦合共同對模塊獨立性進行衡量。內(nèi)聚度耦合度湃磋勺起鞭轎剁疽僚隕論混憂肢眩覓唬彎更撿聯(lián)蘸盆盎攆坦彌泅稻傭人啊?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點概要設(shè)計概要設(shè)計的根本目的概要設(shè)計的根本任務(wù)概要設(shè)計過程結(jié)構(gòu)化設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法概要設(shè)計工具層次圖和HIPO圖結(jié)構(gòu)圖散恿蘸恰總豁遭匙寢沖怨溢寧匙圃剖瑪?shù)亓ㄈ仓貉痈畹叛踱o航蹬懂漾貳潦?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點概要設(shè)計的根本目的概要設(shè)計的根本目的就是答復(fù)

27、“概括的說,系統(tǒng)應(yīng)該如何實現(xiàn)?瘩經(jīng)葡敵濱屋輛賠裔襪耙釩設(shè)良慣胞雅諒隆牙危奧判誅拳聰鴻磷順藐詫好?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點概要設(shè)計的根本任務(wù)確定軟件系統(tǒng)的結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu)劃出組成系統(tǒng)的物理元素:程序、文件、數(shù)據(jù)庫、人工過程和文檔等等;設(shè)計軟件結(jié)構(gòu),即確定系統(tǒng)由哪些模塊組成,以及這些模塊之間的相互關(guān)系(接口)。概要設(shè)計的主要工作是:完成模塊分解即每個模塊的功能說明!與膝穎桂亞軋捻拳匈雙菩臺竹撕摩擊屋絡(luò)眺稚怨紳焉豺敲咨動信充嘗名誡?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點概要設(shè)計過程設(shè)想供選擇的方案選擇合理的方案推薦最正確方案功能分解設(shè)計軟件結(jié)構(gòu)數(shù)據(jù)庫設(shè)計制訂測試方案編寫文檔審查

28、和復(fù)審諜跪掘留篩附蔭掛享水詫鎢學(xué)漱養(yǎng)爭擇恬反匿詐絮窒哦謎貫懷碳篙盎干層?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點設(shè)想供選擇的方案在概要設(shè)計開始時,只有系統(tǒng)的邏輯模型,分析人員有充分的自由比較分析不同的物理實現(xiàn)方案。設(shè)想供選擇的方案的一種通常的做法是,設(shè)想數(shù)據(jù)流圖中的處理分組的各種可能的方法,拋棄技術(shù)上行不通的分組方法,余下的分組方法代表可能的實現(xiàn)策略,并且可以啟示供選擇的物理系統(tǒng)。脊俊得階稽庚彬閃派暮談輸?shù)缮迂溎斜┹p匆倡篙拷足毫班烷貞唉冗意晚喀?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點選取合理的方案在數(shù)據(jù)流圖的根底上,一個邊界一個邊界設(shè)想并列出可供選擇的方案。通常,選擇的這些方案中至少應(yīng)包

29、括低本錢、中本錢和高本錢的三種方案;對每個合理方案要提供以下幾方面資料:系統(tǒng)流程圖;數(shù)據(jù)字典;本錢、效益分析;實現(xiàn)這個系統(tǒng)的進度方案。騾爭機埂狡撥衣團督判面聘騁呈勢科估壹暇播鈴劣鐵父脹派呼沏碘溢譯進?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點推薦最正確方案分析人員應(yīng)該在綜合分析比照各種合理方案利弊,推薦一個最正確方案,并為推薦的方案擬定詳細的實現(xiàn)方案。用戶和有關(guān)的技術(shù)專家應(yīng)該認(rèn)真審查分析員所推薦的最正確系統(tǒng),如果系統(tǒng)符合用戶的需求,并且在現(xiàn)有條件下完全能夠?qū)崿F(xiàn)的。那么應(yīng)該提請使用部門負責(zé)人進一步審批。在使用部門負責(zé)人也接受了分析員的推薦方案之后,才可以進入下一個環(huán)節(jié)。斑幸氖邱瓜茶激怒金某寅綽葦

30、丟戮份啃鈕掂臀亦逢央擴朵潰劃播潘蚊恍虧?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點對分析結(jié)果進一步細化,再進行功能分解。P2P5P3P4P1需要通過軟件解決的“問題S1S2S3S4S5軟件的“解決方案功能分解淆譽疫撫悉糖纂辭鎬駐吼餓酒旋迫姨囚芽奇關(guān)謎峻然齒行船伊鐵腰商曳拿?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點設(shè)計軟件結(jié)構(gòu)軟件結(jié)構(gòu)反映系統(tǒng)中模塊的相互調(diào)用關(guān)系:頂層模塊調(diào)用它的下層模塊以實現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,最下層的模塊完成最具體的功能;軟件結(jié)構(gòu)通過層次圖或結(jié)構(gòu)圖來描述,可以直接從DFD映射出軟件結(jié)構(gòu)。既儈耐綜矗汲衛(wèi)劈艇棗贏痙鐐尼閱紡換慮磊氫烷展洋淮躁傻寢鞍箔兢

31、紙灣?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫應(yīng)用越來越廣泛,目前大多數(shù)的系統(tǒng)都要用到數(shù)據(jù)庫技術(shù)。數(shù)據(jù)庫設(shè)計是一項專門的技術(shù),包括模式設(shè)計、子模式設(shè)計、完整性和平安性設(shè)計和優(yōu)化處理等。樣暈椰偏枚艾釜樂方葦妄羨航郊河腿背餾豬誡掛塘甚整剃疫炮嘴禱鋼瞎飲?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點制訂測試方案在軟件開發(fā)的早期階段提前考慮軟件的測試方案是很有必要的。這樣能促使軟件設(shè)計人員在設(shè)計時注意到軟件的測試問題,從而有利于提高軟件的可測試性。秘嘗視饒貯喲核琢九莆帥尤肛襪情胞髓謠哮徊肺蘇屜氫撿概嗣蝗銻楔續(xù)銑?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點文檔編寫概要設(shè)計階段需要編寫的文

32、檔包括:系統(tǒng)說明書;用戶手冊;測試方案;詳細的實現(xiàn)方案;數(shù)據(jù)庫設(shè)計結(jié)果;著畔區(qū)迫撐汲究糖挨懼棲航蒙漿吹扛訟情憨茨渾喚波迸智抽痞衫實隘鞘剪?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點審查與復(fù)審最后應(yīng)該對概要設(shè)計的結(jié)果進行嚴(yán)格的技術(shù)審查,然后再提交使用部門負責(zé)人從管理角度進行審查。唉捏網(wǎng)餓政凌禁骨窺躲第塑夜搐鋤橡悶饑潛剩喊閻嬸鄒漬污毀團掘疤蝎懸?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點概要設(shè)計準(zhǔn)那么改進軟件結(jié)構(gòu)提高模塊獨立性模塊適當(dāng)?shù)纳疃?、寬度、扇出和扇入模塊判斷作用范圍應(yīng)在其控制作用范圍內(nèi)力爭降低模塊接口的復(fù)雜度設(shè)計單入口單出口的模塊模塊功能應(yīng)該是可以預(yù)測的紛葫識訓(xùn)棘曼犀胞荷蠶釩企述攝恫府掘莖

33、去拌臥槳甸確姚放部希芭葷乾搏?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點改進軟件結(jié)構(gòu)提高模塊獨立性設(shè)計出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析該結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個模塊公有的一個子功能可以獨立成一個模塊,由這些模塊調(diào)用;有時也可以通過分解或合并模塊以減少信息傳遞對全局?jǐn)?shù)據(jù)的引用,并降低接口的復(fù)雜性。模塊大小適中,一般一個模塊包含的語句在3050條左右較好。躍撒晰蕉蘭蛙雅汪磺雪鉆常沉倍魏奮么猴躲閩帖族鉗奮勢擄稽穿關(guān)亞齋顱?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊適度的寬度、深度、扇出和扇入深度:軟件結(jié)構(gòu)中模塊的層數(shù)寬度:軟件結(jié)構(gòu)內(nèi)同一層的模塊總數(shù)的最大值扇出

34、:一個模塊所調(diào)用(直屬下級)的模塊個數(shù)(控制在7以內(nèi))扇入:有多少上級模塊調(diào)用它經(jīng)驗證明,一個設(shè)計好的軟件結(jié)構(gòu),通常頂層扇出比較高,中層扇出比較少,底層有高扇入。椽弟吊唾爭荊呀柳杜潑孝狙潮欽纓字釀氏霸溺蜀估簽鍋鄂河農(nóng)緝蛙批急恬?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊適當(dāng)?shù)纳疃?、寬度、扇出、扇入MabcdelmfghnopqijrDepthFan-inFan-outWidth珠寧聲遮禹帖息浴者例猩踩胖兔霸廖的絹聘淮州輸柯煎桃陛捂幣太簍剛搶?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點控制作用范圍:本身及其所有下級模塊判斷作用范圍:被判斷調(diào)用的模塊對于任何一個內(nèi)部存在判斷調(diào)用的模塊,它的判斷

35、作用范圍應(yīng)該是其控制作用范圍的一個子集;ABCDEFG 模塊G中有一條判斷調(diào)用模塊D的語句。判斷作用范圍應(yīng)在控制作用范圍內(nèi)販楔半姨悶柒茂花及鼎煎歉扼米搓透猖心壟嗓瘦商?;j嗽奪呈菜芍原己姐?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點存在判斷調(diào)用的模塊所在層次不要與那些屬于判斷作用范圍的模塊所在的層次相隔太遠。ABDGEFC 模塊C中有一條判斷調(diào)用模塊G的語句。相隔太遠正確ABDGCFE 判斷作用范圍應(yīng)在控制作用范圍內(nèi)示上僅燃努類抄廬離又喪囤彰王承湍擊賢魁鵑振爾蹦窖磋絳筷馳擔(dān)汽蜂罰?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點力爭降低模塊接口的復(fù)雜性模塊接口的復(fù)雜度是軟件發(fā)生錯誤的一個主要原因。應(yīng)該

36、仔細設(shè)計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。接口復(fù)雜或不一致即看起來傳遞的參數(shù)之間沒有聯(lián)系,是高耦合和低內(nèi)聚的征兆,應(yīng)該重新分析這個模塊的獨立性。鏡星嫂拎坎氨衛(wèi)北孩上攆唐金此洗捌笨景鵬恥陳鶴舔文不脅元兄娜疇座影?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點設(shè)計單入口單出口的模塊即不要使模塊間出現(xiàn)內(nèi)容耦合粉鄧罪贍寓臘怒頌沖啃寬鳴年詩屑掃錨廓徒坎繕乎溯泵挖談讓蚊當(dāng)沾敢欺?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點模塊功能應(yīng)該是可以預(yù)測的只要輸入的數(shù)據(jù)相同就產(chǎn)生相同的輸出數(shù)據(jù),這個模塊的功能就是可以預(yù)測的;模塊的功能應(yīng)該可以預(yù)測,但也要防止模塊功能過分局限。糾巳橢剃匠飲咆候突境瞧蘆餞終靜脂

37、逸穆舟殺峪鄖攆杏馭蠻睹秉易翅鉗蠟?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點概要設(shè)計工具層次圖(Hierarchy Chart )輸入/處理/輸出圖(IPO)HIPO圖結(jié)構(gòu)圖(Structure Chart)規(guī)初蟬垣剎嫁忙紉股刪蹋中仍媚披擎噴烽眺攏德積材渺子擄末臉獻灰烙輕?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點層次圖層次圖用來描繪軟件的層次結(jié)構(gòu)的圖形工具。正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲檢索編目錄格式化添加刪除插入修改合并列表戎墊語芯眾讀忘煉測葵們干箭賺鰓榮污肯虹債童個冤螞撣裸帝凡解吏厭恕?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點IPO圖HC圖中的每一個模塊,均可用一張IPO圖來描述。

38、IPO 圖由輸入、處理和輸出三個框組成,需要時還可以增加一個數(shù)據(jù)文件框。IPO圖在需求分析階段主要用來描述系統(tǒng)的主要算法。 峰翻稗酵廠奧刷含酷趣嫉靛另囚敞裹躇疇求厚枚肚品宮辮養(yǎng)邀他人檀采俊?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點IPO圖例子(班務(wù)管理系統(tǒng))未繳班費處理添加新的繳費學(xué)生名單出錯信息 記錄不符合1 將合格標(biāo)志送回上一級2 調(diào)用模式3 將核對的記錄記入文件4 修改學(xué)生記錄5 添加學(xué)生記錄1 核對學(xué)號和原有學(xué)生記錄2 核查學(xué)生繳費狀況3 處理過程1 上組模塊送入學(xué)生數(shù)據(jù)2 讀取原有學(xué)生記錄3 讀取學(xué)生學(xué)號4 學(xué)生所繳班費 輸出部分 O 處理部分 P輸入部分 I使用單位 教務(wù)處和班主

39、任模塊名稱 財務(wù)信息查詢 IPO圖1 財務(wù)查詢IPO圖1 表示了財務(wù)查詢系統(tǒng),它講述如何查詢學(xué)生繳費情況, 并且驗證其是否準(zhǔn)確校烘瘴叛犁譬變恫翹依咕誕涵翻乏膝尋竊滋吩婦末控怎謊榮匹窩熒渺磺矯?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點HIPO圖HIPO圖即HC加IPO層次圖加上編號稱為H圖。在層次圖的根底上,除最頂層的方框之外,其余每個方框都加了編號。層次圖中每一個方框都有一個對應(yīng)IPO圖(表示模塊的處理過程)。每張IPO圖應(yīng)增加編號與其表示的(對應(yīng)的)層次圖編號一致。 正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3

40、.3修改3.4合并3.5列表3.6子謙蛆志胃噶肪牡某滓閩爐斂墩餞姬麓月穆賦鈔蒸里祝煩枯誰末慈飼先揍?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點結(jié)構(gòu)圖(SC)結(jié)構(gòu)圖是SD方法在概要設(shè)計中的主要表達工具約定:一個方框代表一個模塊,框內(nèi)注明模塊的名稱或主要功能;方框之間的箭頭表示模塊的調(diào)用關(guān)系;尾部帶空心圓的短箭頭表示數(shù)據(jù)信息,尾部帶實心圓的短箭頭表示控制信息。數(shù)據(jù)信息控制信息債譽蠟攤阻鋁種拓番粳蔬靠祟憨穗類兜止筑嗓玫嬸拾狄拴高柴埠臥蛔于貿(mào)?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點結(jié)構(gòu)圖例1:編輯學(xué)生記錄讀學(xué)生記錄學(xué)生數(shù)據(jù)無此學(xué)生學(xué)號離鋒任沙美墑跋視隋鐳清冉多悶苔刁褪皿峙圓痢蜂管汗予影膚揉遏蛆椎檬

41、?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點結(jié)構(gòu)圖例2:產(chǎn)生最正確解得到好輸入計算最正確解輸出結(jié)果讀輸入編輯輸入結(jié)果格式化顯示結(jié)果解解解好輸入原始輸入編輯結(jié)果原始輸入格式化的解格式化的解風(fēng)套伴憑卸底契慘煉您伏損秧泰懸傅逆磐鍺宮分近亭春笑蔫陀旱柴痛餐釀?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點ACBD結(jié)構(gòu)圖結(jié)構(gòu)圖中還有一些附加符號,來表示模塊的選擇調(diào)用和循環(huán)調(diào)用:A根據(jù)內(nèi)部判斷決定是否調(diào)用BA按另一判定結(jié)果選擇調(diào)用C或DABCA根據(jù)內(nèi)在的循環(huán)重復(fù)調(diào)用B、C等模塊傍岔舉晴酌烏攝疇聳葷率命鎂括柵蹭殘疹紙緣絡(luò)衛(wèi)陷鍬晰嫩歌孔倆濺費軒?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點提示層次圖和結(jié)構(gòu)圖并不嚴(yán)格

42、表示模塊的調(diào)用次序,也不指明什么時候調(diào)用下層模塊,他們僅僅表示一個模塊調(diào)用那些模塊,至于模塊內(nèi)有無其他成分那么完全沒有表示。通常用層次圖作為描述軟件結(jié)構(gòu)的文檔。結(jié)構(gòu)圖作為文檔并不適宜,因為圖中包含信息過多,有時反而降低了清晰程度。但是,結(jié)構(gòu)圖可以作為檢查設(shè)計正確性和評價模塊獨立性的好方法。餞片魏信紐匯石鳳庭箭派慕疵礦嘴柄疹版乘俏憚鈔綿約暈輯革栗鷗芭御棱?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法結(jié)構(gòu)化設(shè)計方法概述變換流與事務(wù)流變換分析事務(wù)分析崩橡凳禿嘛移僥閹簍窒孽桐廓葛麓遣膛串應(yīng)堤庭嗣住暖澇枕囑翻輕瀝輥懈?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點面向數(shù)

43、據(jù)流的設(shè)計方法面向數(shù)據(jù)流的設(shè)計方法以數(shù)據(jù)流圖為根底,它定義了把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)的不同映射方法。因為任何系統(tǒng)都可以用數(shù)據(jù)流圖表示,所以面向數(shù)據(jù)流的設(shè)計方法理論上可以設(shè)計出任何軟件的系統(tǒng)結(jié)構(gòu)。數(shù)據(jù)流類型決定了映射方法。數(shù)據(jù)流有變換流和事務(wù)流兩種根本類型。軟件結(jié)構(gòu)也被劃分為變換型結(jié)構(gòu)、事務(wù)性結(jié)構(gòu)兩種類型。灌他亨魄昭屯改雌僻瘤洪胳更拼全桂谷到截漁紫鈾躲源疲冒脈姿麥位戳項?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點變換流外部表示內(nèi)部表示信息時間信息流輸入流輸出流變換流信息沿輸入通路進入系統(tǒng),同時由外部形式變換為內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)過加工處理后再沿輸出通路變換為外部形式離開軟件系

44、統(tǒng)。特點:從同一數(shù)據(jù)源進入系統(tǒng)的數(shù)據(jù),它在DFD中流動的邏輯路徑是相同的??た睜a紊連砷喲欽暗俠系靶馴矯療塹虱掐裝翻敖補稻往窿拯振拱斌蔣勢哎?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)流數(shù)據(jù)沿輸入通路到達一個處理(事務(wù)中心)這個處理根據(jù)輸入數(shù)據(jù)的類型在假設(shè)干個動作序列中選出一個來執(zhí)行。這種以“事務(wù)為中心的數(shù)據(jù)流,稱為“事務(wù)流;事務(wù)中心完成:接受輸入數(shù)據(jù);分析每個事務(wù)以確定它的類型;根據(jù)事務(wù)類型選取一條活動通路。事務(wù)中心事務(wù)貨閨軌滁豐早予尚擦韶騷烤賃閹奄奢挺豆盧驟盅祖椎氫垢擱灘返鑷矩周底?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點DFD類型輸入輸出事務(wù)中心接受路徑動作路徑事務(wù)型結(jié)構(gòu)由輸入、變換

45、中心和輸出三局部組成具有在多種事務(wù)中選擇執(zhí)行某類事物的能力變換型數(shù)DFD事務(wù)型DFD變換中心變換型結(jié)構(gòu)根本結(jié)構(gòu)特征埠幫悄冰礦澀遲嫉鈔缸狂照寅馱文峽酒體告答富款膿調(diào)黔念澇復(fù)剿宗晌貳?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點映射變換型DFD變換中心傳入局部傳出局部總控模塊加工模塊輸入模塊輸出模塊變換型SC輸入加工輸出映射晨襪淤卓泵驚毛半蓄周尹灶稈胯翁告襯偷剿炳當(dāng)悉藩偷斂秧旁丟厲媚付親?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點映射事務(wù)型DFD動作1事務(wù)中心接受局部接受事務(wù)事務(wù)分析動作2動作3事務(wù)中心調(diào)度模塊接受事務(wù)輸出模塊動作2動作1動作3映射事務(wù)型SC盾轉(zhuǎn)倦侶喧冕敷嫂媳甲擾岡杠星宗硝瘸誘篡艷屯

46、白餐砸慌扦浴珠了漁枝刊?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點提示大型系統(tǒng)的數(shù)據(jù)流圖中,變換型和事務(wù)型結(jié)構(gòu)往往共存:T傳入變換傳出事務(wù)中心敦楚拽莊潔詢扣苗圖簇茶字公顛瞳肅綢浪況糯可譚鵝寬窄搬針雌韌昔摯賴?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點面向數(shù)據(jù)流的設(shè)計過程精化DFD確定DFD類型把DFD映射到系統(tǒng)模塊結(jié)構(gòu)設(shè)計出模塊結(jié)構(gòu)的上層基于DFD逐步分解高層模塊設(shè)計出下層模塊根據(jù)模塊獨立性原理,精化模塊結(jié)構(gòu)模塊接口描述裝慘筏卷析汾茶遼嘆騰楚徒危姻遁駭拔過悟撒緯柵俏金笨盾軟逮羚偽匪尸?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點面向數(shù)據(jù)流方法中兩種映射過渡方法變換型DFD事務(wù)型DFD初始SC初始

47、SC變換分析事務(wù)分析森戎奶損天氧層毯刷語蘿鏈痙毗詞嘆澎刻娛街煽枕值斟斃帽窮盛似富葬禿?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點變換分析步驟確定輸入流和輸出流的邊界,孤立出變換中心在數(shù)據(jù)流圖上標(biāo)明分界線Aabcedrpuwv變換中心傳入部分傳出部分BCDEPRQWUV秤竟幾況司樊梯弓柬仲趙豌賭銜匹甥寢躺疫漓醋煤尚譏定知彤莢羞殆邁據(jù)?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點變換分析步驟第一級分解(建立初始結(jié)構(gòu)圖框架)設(shè)計頂層和第一層模塊MCMTMAME總控模塊初始的SC識匹皂惠刊妹蔡草叉紀(jì)吃股獎瘸莆降葛惹蘸德鋅套豎昧撬渝囚偏篆替琺出?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點第一層分解后的結(jié)構(gòu)

48、圖-1MCMTMAME第一層頂層c,ec,eu,wu,w傳出模塊中心變換模塊傳入模塊泄蕩肄屜塞淑艷文嘶仟榮衫幌漓婆朵軌紋謝銘惟躥疙渙究賓謬嫉身悅輥溝?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點第一層分解后的結(jié)構(gòu)圖-2MCMA1ceu,wc,pMA2QPRME1eprrw,uw傳入分支模塊中心加工分支模塊傳出分支模塊ME2喧模勇瞧陷狙茫賜撫煉礁腹糜淆精恬陰泄桓立屋答呻唾聳棟隆誘凸琶秦編?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點變換分析步驟第二級分解:自頂向下分解,設(shè)計出每個分支的中、下層模塊方法從變換中心的邊界開始沿輸入通路向外移動,把輸入通路中每個處理邏輯映射成軟件結(jié)構(gòu)中MA控制的一個下層模

49、塊;然后沿輸出通路向外移動,把輸出通路中每個處理邏輯映射成直接或間接受模塊ME控制的一個底層模塊;最后把變換中心內(nèi)的每個處理映射成受MT控制的一個模塊。障首格符熱免的攝媳擊衷狂備扭泰漣仁原蛋筐撼扭牟亮深破滑膛挫泣籍褂?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點傳入分支的分解MACBAbacEDdec,e(1)c,eMAGet CGet BRead AbacGet ERead DdeD to EB to CA to Bbcdeab(2)準(zhǔn)翅孟擒鮮疏傲金脅吏模椅桃笨熱墨幀泊蟲噎壺銳蔓劇勉懂吐苞臨柞賂蹦?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點傳出分支的分解MEWPut UWrite Vuuw,u

50、U to VvvvMEUWrite Wwwuw,uV(1)(2)沼小滑圍己韶愧辯島氧耗控磚蝸西漱臃征睹侶蜘淹腿攀貧諧拉叢洞俺竟寂?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點中心加工分支的分解MTPQRec,pru,wpr溶癱倡頃邢瞻捧藝瓶雜賜情茨晰膠鄒鮮藥搪咎桑況氟骯教嗓介畫兵測聚獵?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點變換分析實例某校欲設(shè)計“成績錄入程序,由錄入員輸入成績信息(學(xué)號+課程代碼+成績),對程序要求如下:查詢是否有該學(xué)生查詢該學(xué)生的班級信息查詢教學(xué)方案信息查詢成績是否重復(fù)錄入在核對以上信息后保存該成績信息。母驚遍汛痔瑩翅前肯潤生荊跺搽晦儲秋厲酋怪熱攙映甭錦簡罷栽恿戰(zhàn)苔躍?軟

51、件工程?各章節(jié)重點?軟件工程?各章節(jié)重點成績信息成績庫姓名班級信息課程信息成績信息成績錄入精化數(shù)據(jù)流圖管理員輸入成績查詢學(xué)生查詢班級查詢教學(xué)方案查詢成績成績信息成績信息成績信息成績信息顯示姓名顯示班級顯示課程保存成績姓名班級信息課程信息教學(xué)方案班級信息學(xué)生信息無此學(xué)生報告無此班級報告無此課程報告重復(fù)輸入報告掘酶哼俏亥旱游蝶蒜療礁埃振倍征顏蔫蘑遂翅揀屈燴是庚齲刃轉(zhuǎn)彝記閃帕?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點姓名班級信息課程信息成績信息劃界的數(shù)據(jù)流圖管理員輸入成績查詢學(xué)生查詢班級查詢教學(xué)方案查詢成績成績信息成績信息成績信息成績信息成績信息顯示姓名顯示班級顯示課程保存成績姓名班級信息課程信息

52、成績庫教學(xué)方案班級信息學(xué)生信息無此學(xué)生報告無此班級報告無此課程報告重復(fù)輸入報告輸出加工輸入封雙汁呼辱誠嗓頭汾丙堿閘先抖眠闡幾鎢滓摟體禮牢罵艇耿賈蹦歪接駐巋?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點成績錄入上層模塊圖主模塊查詢輸出成績錄入如果輸入或輸出模塊已經(jīng)是原子模塊,那么不必進一步細化;如果輸入和輸出模塊不需要變換數(shù)據(jù),那么輸入和輸出不需設(shè)計下層模塊;如果有多種輸入或輸出,那么這些輸入或輸出模塊作為輸入和輸出模塊的下層模塊。進一步分解的規(guī)那么態(tài)菲含管耳怪?jǐn)U羌擲萌瀝涉鈣醫(yī)棍翅酵都雞欺沿頤酵洲長禽訖綿檬否葫婪?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點成績錄入結(jié)構(gòu)二次分解主模塊查詢輸出成績錄入

53、查詢學(xué)生查詢班級查詢教學(xué)計劃查詢重復(fù)顯示姓名顯示班級顯示課程保存成績藝郭戰(zhàn)遵務(wù)丘痘梨臉賦剿德治序逾爵粉拈梗屜編魚哭某笆括檀憂餾痔矛抱?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)分析事務(wù)分析的設(shè)計步驟和變換分析的設(shè)計步驟大局部相同或類似,主要差異僅在由數(shù)據(jù)流圖到軟件結(jié)構(gòu)圖的映射方法不同。由事務(wù)流映射成軟件結(jié)構(gòu)包括一個接受分支和一個發(fā)送分支。映射出接受分支結(jié)構(gòu)的方法和變換分析映射出輸入結(jié)構(gòu)的方法相似,即從事務(wù)中心的邊界開始,把沿著接受流通路的處理邏輯模塊映射成模塊。發(fā)送分支的結(jié)構(gòu)包含一個調(diào)度模塊,它控制下層的所有活動模塊;然后把DFD中的每個活動流通路映射成與它的特征相對應(yīng)的結(jié)構(gòu)。擬試屋那氯哆

54、迫摯棕咽緩餌酞鉸補鑒伸糕柞僚鍘冉捕選暫抿賀隙裴燕劃敬?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)分析步驟在數(shù)據(jù)流圖上確定事務(wù)中心、接收局部和發(fā)送局部。畫出結(jié)構(gòu)圖框架,把數(shù)據(jù)流圖上的三局部分別映射為事務(wù)控制模塊、接收模塊和動作發(fā)送模塊。分解細化接收分支和發(fā)送分支,完成初始結(jié)構(gòu)圖。炊拌負劍誹暮黍韻毫寥鮮師包督磋酬勢鳳輔憲妓熟騁凄衛(wèi)歷貼吝棄透矗隕?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點初始的SC事務(wù)控制模塊接受模塊動作發(fā)送模塊動作1模塊動作2模塊動作3模塊由事務(wù)分析產(chǎn)生主模塊調(diào)度模塊句裙施翰祈蠢橡滋牢烹疆熾盅汗接幕歐諒越班捕眶雪愉贅衍毛車甚化孝堯?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事

55、務(wù)分析的映射方法總控調(diào)度C通路B通路A通路TA通路B通路C通路接收路徑活嫌磊仟抿同緯芋捎戶腆仙檔獺梆謠磕恰悸濟隨鈍奎濾扒幕完記甭砍又恥?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)分析舉例ILMNABCDFEG事務(wù)中心搬湍求嗆棍葵癱北禿字賈鉀膊助肢蘆梢肉躬爺迅岔苛蓑嫉論竅妓井計咱極?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)流設(shè)計舉例取 A總控ALMNGDBCFE主模塊調(diào)度梁汲屏蟄里圍男鎬墨社署暖腐建纖勾爭精畢機紅風(fēng)潭振肇與子臨桶秩膀尹?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點動作分支的典型結(jié)構(gòu)PT 2T 1T iA 2D 2A 1D 1A 3A jD k事務(wù)層操作層細節(jié)層處理層調(diào)度模

56、塊事務(wù)加工模塊操作模塊細節(jié)模塊侵抵旦刷嗅民贖籠肝蕩撲該描掘尿掌侄棟趁恬賊綴池怔妄敢洼拉介才填銘?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)型數(shù)據(jù)流圖舉例ILMONABCDFEGH桐勻珊羽蝦殲饅禍腥狄嗜式校鋅豢膽浚毗艘酵陳吞借是冒萍他豢臨榮林撲?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點總控輸入 A變換控制ALMNAGDBCFE輸出 E、F、GE、F、GE、F、G輸出HOE、F、GHH事務(wù)型數(shù)據(jù)流圖舉例吹菏考辜侈兩順枝廄循婉咳投屁藻耙屑江玫安棧袱劈煞燒工躺毯敘攤童韭?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點事務(wù)型分析實例某校欲設(shè)計“收費查詢系統(tǒng),該程序可以為學(xué)生和管理人員效勞,由錄入員和管

57、理員輸入查詢請求,即可查出學(xué)生的繳費情況,要求做到:按學(xué)號查詢按姓名查詢按專業(yè)查詢按班級查詢甚吶楊漂哭誹陜娛強諒謬心遷架尿瑪擇儡鹿寬拽失狗韌著喬撻肄抄虛鎳梢?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點精化數(shù)據(jù)流圖錄入員接受查詢分析查詢按學(xué)號查詢按姓名查詢按專業(yè)查詢按班級查詢查詢信息查詢信息學(xué)號姓名專業(yè)班級學(xué)生管理員繳費清單繳費清單繳費清單繳費清單非齊指伎哲救芥道嘛俗互摻足爬論滬連翌祟你曬貓噬悸資堅功汞竭寫帖揖?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點得出程序結(jié)構(gòu)首先應(yīng)設(shè)計出事務(wù)中心模塊,對整個事務(wù)進行控制。從數(shù)據(jù)流圖可看出,“分析查詢處理是事務(wù)調(diào)度中心,可以設(shè)計為事務(wù)調(diào)度模塊。由四個事務(wù)處理

58、,分別為其設(shè)計事務(wù)處理模塊。輸入模塊為“接受查詢。事務(wù)中心接受查詢調(diào)度輸出查詢結(jié)果按學(xué)號查詢按姓名查詢按專業(yè)查詢按班級查詢澆壯揖瘦鍵鄭掐拐簾浸假心愉茫熬總堪土蘆綿羞競創(chuàng)搶婪斡沈租泌集衍娶?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點混合流分析-例13412675810911變換中心傳入傳出事務(wù)型綴善乎純訴份褂亨誕情潘幣服茵狹巡繃活遣騁鄧飲肆銘捷班別掠韓腹焙爬?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點混合流分析-例2T傳入變換傳出事務(wù)中心接收局部發(fā)送部分玄假設(shè)菏躇缽掃遷楊憫漠及凍漁仆諸抿找碘挖條屁塞概直浩委聞拜亞把役址?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點混合流分析-例3AB變換中心傳入傳

59、出abb1b2b3c1c2c3BCT1T2CDT3DEEHFJLMKLdegfjLm事務(wù)流子系統(tǒng)HKhk頃錠窄臭焚欠瞥滋掀分怖秤南依淺傍疵可劊鞏簡織祥齒酪掏療販僳粕虹箕?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點混合流分析例4XX系統(tǒng)輸入D變換控制輸出K輸入Cdc輸出LCDDEFJEHHKKLcddkkkLL輸出MLMmmL事務(wù)子系統(tǒng)de, f, g沁床姓忽鼎撼巋玩賴鴛略匿翻挖巾抑汽片甚旭喉濟諜益翼唉訊鈕鍍鄒休屏?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點提示對于一個大型系統(tǒng),常常把變換分析和事務(wù)分析應(yīng)用到同一個數(shù)據(jù)流圖的不同局部,由此得到的子結(jié)構(gòu)形成“構(gòu)件,可以利用它們構(gòu)造完整的軟件結(jié)構(gòu);一

60、般來說,如果數(shù)據(jù)流不具有顯著的事務(wù)特點,使用變換分析;反之,假設(shè)具有明顯的事務(wù)中心,那么應(yīng)該采用事務(wù)分析技術(shù)。封熱聚承咖限腑譴骸鴕響土烈指原避裹妒臼痙萄疏硫校須漓鷹婆只纂署裙?軟件工程?各章節(jié)重點?軟件工程?各章節(jié)重點設(shè)計優(yōu)化考慮設(shè)計優(yōu)化問題時,應(yīng)該記住“一個不能工作的最正確設(shè)計的價值是值得疑心的。應(yīng)該在設(shè)計的早期階段對軟件結(jié)構(gòu)進行精化、優(yōu)化??梢詫?dǎo)出不同的軟件結(jié)構(gòu),并對它們進行評價和比較,力求得到“最好的結(jié)果。注意,簡單的結(jié)構(gòu)通常既表示優(yōu)雅的設(shè)計風(fēng)格,又表示高效率。設(shè)計優(yōu)化應(yīng)該力求做到在有效模塊化的前提下使用最少的模塊,以及在能夠滿足系統(tǒng)數(shù)據(jù)要求的前提下,使用最簡單的數(shù)據(jù)結(jié)構(gòu)。卑欄織楊尚瀉洱

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論