軟件設(shè)計(jì)基礎(chǔ)_第1頁
軟件設(shè)計(jì)基礎(chǔ)_第2頁
軟件設(shè)計(jì)基礎(chǔ)_第3頁
軟件設(shè)計(jì)基礎(chǔ)_第4頁
軟件設(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件設(shè)計(jì)基礎(chǔ)

是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)軟件設(shè)計(jì):第2頁,共82頁,2024年2月25日,星期天軟件工程第7章軟件設(shè)計(jì)基礎(chǔ)概念基本概念設(shè)計(jì)過程設(shè)計(jì)工具說明與評審第3頁,共82頁,2024年2月25日,星期天7.1.1軟件設(shè)計(jì)過程TextText技術(shù)角度與管理角度詳細(xì)設(shè)計(jì)概要設(shè)計(jì)過程設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)概要設(shè)計(jì)根據(jù)需求確定軟件和數(shù)據(jù)的總體框架詳細(xì)設(shè)計(jì)將“概設(shè)”結(jié)果進(jìn)一步精化成算法表示和數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)設(shè)計(jì)確定程序各主要部件之間的關(guān)系數(shù)據(jù)設(shè)計(jì)把信息描述轉(zhuǎn)換為實(shí)現(xiàn)軟件所要求的數(shù)據(jù)結(jié)構(gòu)過程設(shè)計(jì)完成每一部件的過程化描述第4頁,共82頁,2024年2月25日,星期天7.1.2抽象與逐步求精抽象抽出事務(wù)的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。是控制復(fù)雜性的基本策略。定義需求設(shè)計(jì)實(shí)現(xiàn)軟件系統(tǒng)被描述為基于計(jì)算機(jī)的大系統(tǒng)的一個(gè)組成部分軟件用問題域約定的習(xí)慣用語表達(dá)概要設(shè)計(jì)過渡到詳細(xì)設(shè)計(jì)時(shí),抽象級再一次降低編碼完成后達(dá)到了抽象的最低級過程抽象把完成一個(gè)特定功能的動(dòng)作序列抽象為一個(gè)過程名和參數(shù)表數(shù)據(jù)抽象把一個(gè)數(shù)據(jù)對象的定義(或描述)抽象為一個(gè)數(shù)據(jù)類型名第5頁,共82頁,2024年2月25日,星期天抽象1:該CAD軟件系統(tǒng)配有與繪圖員進(jìn)行可視化通信的圖形界面,能用鼠標(biāo)代替繪圖工具畫各種直線和曲線;能完成所有幾何計(jì)算以及所有截面視圖和輔助視圖的設(shè)計(jì)。圖形設(shè)計(jì)的結(jié)果保存在圖形文件中,圖形文件可以包含幾何的、正文的和其他各種補(bǔ)充設(shè)計(jì)信息。例7.1考慮適用于低級CAD的圖形軟件包CAD軟件任務(wù)創(chuàng)建二維圖形管理圖形文件用戶界面顯示圖形任務(wù)抽象2:

CAD軟件任務(wù);用戶界面子任務(wù);創(chuàng)建二維圖形子任務(wù);顯示圖形子任務(wù);管理圖形文件子任務(wù);

endCAD.抽象3(僅以“創(chuàng)建二維圖形任務(wù)”為例)

PROCEDURE創(chuàng)建二維圖形

REPEATUNTIL<創(chuàng)建圖形任務(wù)終止>……ENDREPETITION;ENDPROCEDURE.;DOWHILE<出現(xiàn)與數(shù)字儀的交互時(shí)>

數(shù)字儀接口任務(wù);判斷作圖請求;線:畫線任務(wù);圓:畫圓任務(wù);

……END;

DOWHILE<出現(xiàn)與鍵盤的交互時(shí)>

鍵盤接口任務(wù);選擇分析或計(jì)算;輔助視圖:輔助視圖任務(wù);截面視圖:截面視圖任務(wù);

……END;第6頁,共82頁,2024年2月25日,星期天數(shù)據(jù)對象:

TYPEdrawing

ISSTRUCTUREDEFINEDnumberISSTRINGLENTH(12);

geometryDEFINED…notesISSTRINGLENTH(256);

bomDEFINED…ENDdrawingTYPE;數(shù)據(jù)抽象blueprintISINSTANCEOFdrawing;

或schematicISINSTANCEOFdrawing;

第7頁,共82頁,2024年2月25日,星期天逐步求精逐步求精為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮抽象求精第8頁,共82頁,2024年2月25日,星期天7.1.3模塊化與信息隱藏模塊理論依據(jù)理想的屬性大小I/O、功能,程序、數(shù)據(jù)程序、程序段、子程序一個(gè)功能、易理解、獨(dú)立例:庫存管理系統(tǒng)的模塊劃分事務(wù)接收模塊更新庫存清單訂貨處理生成報(bào)表例:人事管理系統(tǒng)輸入職工檔案職工檔案管理系統(tǒng)生成職工檔案報(bào)表系統(tǒng)最小成本區(qū)域MO軟件總成本用于接口的成本每個(gè)模塊成本之和模塊總數(shù)成本或工作量信息隱藏內(nèi)聚度耦合度分治法:C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2第9頁,共82頁,2024年2月25日,星期天 有人說,模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理,軟件應(yīng)該具備的唯一屬性。如果一個(gè)大型程序僅由一個(gè)模塊組成,它將很難被入所理解。下面根據(jù)人類解決問題的一般規(guī)律,論證上面的結(jié)論。 設(shè)函數(shù)C(x)定義問題x的復(fù)雜程度,函數(shù)E(x)確定解決問題x需要的工作量(時(shí)間)。對于兩個(gè)問題Pl和P2,如果

C(P1)>C(P2)即P1比P2復(fù)雜,顯然E(PI)>E(P2)即問題越復(fù)雜,所需的工作量越大。根據(jù)人類解決一般問題的經(jīng)驗(yàn),另一個(gè)有趣的規(guī)律是

C(P1十P2)>C(PI)十C(P2)也就是說,如果一個(gè)問題由Pl和P2兩個(gè)問題組合而成那么它的復(fù)雜程序大于分別考慮每個(gè)問題時(shí)的復(fù)雜程度之和。綜上所述,得到下面的不等式

E(Pl十P2)>E(PI)十E(P2)第10頁,共82頁,2024年2月25日,星期天 這個(gè)不等式導(dǎo)致“各個(gè)擊破”的結(jié)論——把復(fù)雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。這就是模塊化的根據(jù)。由上面的不等式似乎還能得出下述結(jié)論:如果無限地分割軟件,最后為了開發(fā)軟件而需要的工作量也就小得可以忽略了。事實(shí)上,還有另一個(gè)因素在起作用,從而使得上述結(jié)論不能成立。參看上圖,當(dāng)模塊數(shù)目增加時(shí)每個(gè)模塊的規(guī)模將減小,開發(fā)單個(gè)模塊需要的成本(工作量)確實(shí)減少了;但是,隨著模塊數(shù)目增加,設(shè)計(jì)模塊問接口所需要的工作量也將增加。根據(jù)這兩個(gè)因素,得出了圖中的總成本曲線。每個(gè)程序都相應(yīng)地有一個(gè)最適當(dāng)?shù)哪K數(shù)目M,使得系統(tǒng)的開發(fā)成本最小。雖然目前我們還不能精確地決定M的數(shù)值,但是在考慮模塊化的時(shí)候總成本曲線確實(shí)是有用的指南。

第11頁,共82頁,2024年2月25日,星期天信息隱藏模塊內(nèi)所含信息對那些不需要這些信息的模塊不可訪問,每個(gè)模塊只完成一個(gè)相對獨(dú)立的特定功能。應(yīng)用模塊化原理時(shí),自然會(huì)產(chǎn)生的一個(gè)問題是:“為了得到最好的一組模塊,應(yīng)該怎樣分解軟件呢?”信息隱蔽原理指出:應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。局部化的概念和信息隱蔽概念是密切相關(guān)的。所謂局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。在模塊中使用局部數(shù)據(jù)元素是局部他的一個(gè)例子。顯然,局部化有助于實(shí)現(xiàn)信息隱蔽?!半[蔽”意味著有效的模塊化可以通過定義一組獨(dú)立的模塊而實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成系統(tǒng)功能而必須交換的信息。第12頁,共82頁,2024年2月25日,星期天信息隱藏如果在測試期間和以后約軟件維護(hù)期間需要修改軟件,那么使用信息隱蔽原理作為模塊化系統(tǒng)設(shè)計(jì)的標(biāo)準(zhǔn)就會(huì)帶來極大好處。因?yàn)榻^大多數(shù)數(shù)據(jù)和過程對于軟件的其他部分而言是隱蔽的(也就是“看”不見的),在修改期間由于疏忽而引入的錯(cuò)誤就很少可能傳播到軟件的其他部分。第13頁,共82頁,2024年2月25日,星期天模塊獨(dú)立性(Moduleindependence)好設(shè)計(jì)的關(guān)鍵:每個(gè)模塊完成一個(gè)相對獨(dú)立的子功能,并且與其它模塊間的接口簡單。模塊獨(dú)立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。開發(fā)具有獨(dú)立功能而且和其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨(dú)立。換句話說,希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成一個(gè)相對獨(dú)立的特定子功能,并且和其他模塊之間的關(guān)系很簡單。模塊獨(dú)立性第14頁,共82頁,2024年2月25日,星期天為什么模塊的獨(dú)立性很重要呢?主要有兩條理由:第一,有效的模塊化(即具有獨(dú)立的模塊)的軟件比較容易開發(fā)出來。這是由于能夠分割功能而且接口可以簡化,當(dāng)許多人分工合作開發(fā)同一個(gè)軟件時(shí),這個(gè)優(yōu)點(diǎn)尤其重要。第二,獨(dú)立的模塊比較容易測試相維護(hù)。這是因?yàn)橄鄬φf來,修改設(shè)計(jì)和程序需要的工作量比較小,錯(cuò)誤傳播范圍小,需要擴(kuò)充功能時(shí)能夠“插入”模塊。總之,模塊獨(dú)立是好設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。模塊獨(dú)立性第15頁,共82頁,2024年2月25日,星期天獨(dú)立性的度量:耦合(Coupling)&內(nèi)聚(Cohesion)模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量,這兩個(gè)標(biāo)準(zhǔn)分別稱為內(nèi)聚和耦合。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。以下分別詳細(xì)闡述。第16頁,共82頁,2024年2月25日,星期天內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素被此結(jié)合的緊密程度,它是信息隱蔽和局部化概念的自然擴(kuò)展。簡單地說,理想內(nèi)聚的模塊只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很壞,不要使用。第17頁,共82頁,2024年2月25日,星期天低級內(nèi)聚度(3個(gè))一個(gè)模塊內(nèi)各成分為完成一組功能而組合在一起,它們相互之間即使有關(guān)系,也很松散。1偶然有時(shí)在寫完一個(gè)程序之后,發(fā)現(xiàn)一組語句在兩處或多處出現(xiàn),于是把這些語句作為一個(gè)模塊以節(jié)省內(nèi)存,這樣就出現(xiàn)了偶然內(nèi)聚的模塊第18頁,共82頁,2024年2月25日,星期天一個(gè)模塊完成的諸任務(wù)邏輯上相關(guān)

2邏輯讀入分?jǐn)?shù)平均/最高?計(jì)算平均分計(jì)算最高分輸出結(jié)果例如一個(gè)計(jì)算全部同學(xué)平均分和最高分的模塊。無論計(jì)算哪種分?jǐn)?shù),都要經(jīng)過讀入全班學(xué)生分?jǐn)?shù),進(jìn)行計(jì)算,輸出計(jì)算結(jié)果等步驟。實(shí)際上除中間的一步須按不同的方法計(jì)算外,前、后這兩步都是相同的。把這兩種在邏輯上相似的功能放在一個(gè)模塊中,就可以省去程序中的重復(fù)部分。缺點(diǎn)是執(zhí)行中要從模塊外引入用作判斷的開關(guān)鍵,從而增加了塊間的耦合第19頁,共82頁,2024年2月25日,星期天如果一個(gè)模塊包含的諸任務(wù)必須在同一時(shí)間段內(nèi)執(zhí)行。例如一個(gè)初始化模塊3時(shí)間A:Readinputsfromdiskfromtapefrom……第20頁,共82頁,2024年2月25日,星期天在偶然內(nèi)聚的模塊中,各種元素之間沒有實(shí)質(zhì)性聯(lián)系,很可能在一種應(yīng)用場合需要修改這個(gè)模塊,在另一種應(yīng)用場合又不允許這種修改,從而陷入困境。事實(shí)上,偶然內(nèi)聚的模塊出現(xiàn)修改錯(cuò)誤的概率比其他類型的模塊高得多。在邏輯內(nèi)聚的模塊中,不同功能混在一起,合用部分程序代碼,即使局部功能的修改有時(shí)也會(huì)影響全局。因此.這類模塊的修改也比較困難。時(shí)間關(guān)系在一定程度上反映了程序的某些實(shí)質(zhì),所以時(shí)間內(nèi)聚比邏輯內(nèi)聚好一些。這三種內(nèi)聚為低內(nèi)聚。第21頁,共82頁,2024年2月25日,星期天中級內(nèi)聚度(2個(gè))模塊內(nèi)成分彼此相關(guān),并且必須按特定的次序執(zhí)行4過程enterdatacheckdatamanipulatedata循環(huán)體計(jì)算累積事務(wù)記錄累積銷售額累積訂貨量循環(huán)傳送事務(wù)記錄給計(jì)算累積模塊,得到累積訂貨量之后,也得到了累積銷售量。第22頁,共82頁,2024年2月25日,星期天模塊中各成分都將對數(shù)據(jù)結(jié)構(gòu)的同一區(qū)域進(jìn)行操作,即如果模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)聚。5通信模塊A從文件FILE讀出數(shù)據(jù)1.由數(shù)據(jù)產(chǎn)生報(bào)表一2.由數(shù)據(jù)產(chǎn)生報(bào)表二開領(lǐng)書單登記售書售書登記表領(lǐng)書單發(fā)票修改刪除文件第23頁,共82頁,2024年2月25日,星期天高級級內(nèi)聚度(2個(gè))模塊內(nèi)的各處理成分均與同一功能相關(guān),且這些處理必須順序執(zhí)行6順序這類模塊中的各組成部分是順序執(zhí)行的。在通常情況下,上一個(gè)處理框的輸出就是下一個(gè)處理框的輸入。建立方程組系數(shù)矩陣高斯消除法回代第24頁,共82頁,2024年2月25日,星期天模塊內(nèi)所有成分形成一個(gè)整體,完成單個(gè)功能7功能1.輸入系數(shù)2.求方程的根3.打印方程的根求一元二次方程根的模塊第25頁,共82頁,2024年2月25日,星期天七種“內(nèi)聚模塊”的性能比較

形式評價(jià)可修改性可讀性黑箱程度通用性偶然最壞最壞最壞黑箱好邏輯最壞最壞不好不完全黑好時(shí)間不好不好中不完全黑中過程中中中半透明不好通信中中中半透明不好順序好好好透明最壞功能好好好透明最壞第26頁,共82頁,2024年2月25日,星期天耦合是對一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)。在這樣的系統(tǒng)中可以研究、測試或維護(hù)任何一個(gè)模塊,而不需要對系統(tǒng)的其他模塊有很多了解。此外,由于模塊間聯(lián)系簡單,發(fā)生在一處的錯(cuò)誤傳播到整個(gè)系統(tǒng)的可能性就很小。因此,模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護(hù)性。GreatdealofdependenceIndependentHighlycoupled

LooselycoupledUncoupled

第27頁,共82頁,2024年2月25日,星期天模塊間的耦合

耦合:表示一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間的互連程度,盡量選用松散耦合的系統(tǒng)1.非直接耦合:兩個(gè)模塊中任一個(gè),都不依賴于對方能獨(dú)立工作。如果兩個(gè)模塊中的每一個(gè)都能獨(dú)立地工作而不需要另一個(gè)模塊的存在,那么它們彼此完全獨(dú)立,這意味著模塊間無任何連接,耦合程度最低,模塊的獨(dú)立性最高。見圖中的模塊1和模塊2的關(guān)系。它們之間是同級模塊,互相之間沒有信息的傳統(tǒng)。但是,在一個(gè)軟件系統(tǒng)中不可能所有模塊之間都沒有任何連接。1.非直接耦合--—2.數(shù)據(jù)耦合模塊1模塊2非直接耦合模塊3第28頁,共82頁,2024年2月25日,星期天模塊間的耦合1.非直接耦合--—2.數(shù)據(jù)耦合2.數(shù)據(jù)耦合兩個(gè)模塊間通過參數(shù)交換信息,而信息僅限于數(shù)據(jù)開發(fā)貨單計(jì)算金額單價(jià)數(shù)量金額第29頁,共82頁,2024年2月25日,星期天3.特征耦合計(jì)算水費(fèi)和電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)住戶詳情水費(fèi)住戶詳情電費(fèi)計(jì)算水量和電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)水費(fèi)電費(fèi)本月用水量本月用電量

住戶詳情數(shù)據(jù)結(jié)構(gòu)中包括:

“本月用水量”、“本月用電量”?!疤卣黢詈稀眻D可改進(jìn)“數(shù)據(jù)耦合”圖如果兩個(gè)模塊都與同一個(gè)數(shù)據(jù)結(jié)構(gòu)有關(guān),則為特征耦合。第30頁,共82頁,2024年2月25日,星期天4.當(dāng)模塊A向模塊B所傳遞的信息控制了B的內(nèi)部邏輯。4.控制耦合讀入分?jǐn)?shù)平均/最高?計(jì)算平均分計(jì)算最高分輸出結(jié)果當(dāng)調(diào)用這一模塊時(shí),調(diào)用模塊必須先把一個(gè)控制信號(平均分/最高分)傳遞給它,以便選擇所需操作。因此必須知道被控模塊的的內(nèi)部結(jié)構(gòu),從而增加了模塊間的相互依賴。第31頁,共82頁,2024年2月25日,星期天5.外部耦合5.若干模塊均與同一個(gè)外部環(huán)境關(guān)聯(lián)。如:I/O、格式、通信協(xié)議。一組模塊都訪問同一全局變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu)就是外部耦合。第32頁,共82頁,2024年2月25日,星期天

6.公共耦合----7.內(nèi)容耦合(病態(tài)耦合)6.如果兩個(gè)模塊都和同一個(gè)公共數(shù)據(jù)域有關(guān),即一組模塊都訪問同一全局?jǐn)?shù)據(jù)結(jié)構(gòu)就是公共耦合ABC公用數(shù)據(jù)第33頁,共82頁,2024年2月25日,星期天7.一個(gè)模塊和另一個(gè)模塊的內(nèi)部屬性有關(guān)(運(yùn)行程序和內(nèi)部數(shù)據(jù))。如:一個(gè)模塊使用另一個(gè)模塊內(nèi)部的數(shù)據(jù)或控制信息;一個(gè)模塊直接轉(zhuǎn)移到另一個(gè)模塊。模塊A中TRC:模塊B中GOTOTRC第34頁,共82頁,2024年2月25日,星期天設(shè)計(jì)模塊時(shí),應(yīng)以數(shù)據(jù)耦合為主,輔以特征耦合與控制耦合,消除公共耦合和內(nèi)容耦合。七種“耦合模塊”的性能比較

耦合方式對連鎖反應(yīng)的影響可修改性可讀性通用性非直接弱好好好數(shù)據(jù)弱好好好特征弱中中中控制中不好不好不好外部中不好不好不好公共強(qiáng)不好最壞最壞內(nèi)容最強(qiáng)最壞最壞最壞第35頁,共82頁,2024年2月25日,星期天耦合、內(nèi)聚與模塊獨(dú)立性的關(guān)系第36頁,共82頁,2024年2月25日,星期天7.1.4軟件總體結(jié)構(gòu)設(shè)計(jì)(softwarearchitecture)目標(biāo):模塊化的程序結(jié)構(gòu)、明確各模塊之間的控制關(guān)系、說明程序的輸入輸出數(shù)據(jù)流、進(jìn)一步協(xié)調(diào)程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。軟件結(jié)構(gòu)組成系統(tǒng)中所有過程性部件(即模塊)構(gòu)成的層次結(jié)構(gòu)(即程序結(jié)構(gòu))對應(yīng)于程序結(jié)構(gòu)的輸入輸出數(shù)據(jù)結(jié)構(gòu)第37頁,共82頁,2024年2月25日,星期天結(jié)構(gòu)設(shè)計(jì)原則第38頁,共82頁,2024年2月25日,星期天結(jié)構(gòu)設(shè)計(jì)原則2.模塊規(guī)模適中:過大不易理解;太小則接口開銷過大。注意分解后不應(yīng)降低模塊的獨(dú)立性。提高模塊獨(dú)立性爭取低耦合、高內(nèi)聚(增加內(nèi)聚>減少耦合)第39頁,共82頁,2024年2月25日,星期天

深度=分層的層數(shù)。過大表示分工過細(xì)。

寬度=同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜度大。3.選擇適當(dāng)?shù)纳疃?、寬度、扇出和扇入?0頁,共82頁,2024年2月25日,星期天

扇出=一個(gè)模塊直接調(diào)用\控制的模塊數(shù)。3fan-out9AA的扇出AA的扇入

扇入=直接調(diào)用該模塊的模塊數(shù)在不破壞獨(dú)立性的前提下,fan-in

大的比較好。第41頁,共82頁,2024年2月25日,星期天4作用域在控制域內(nèi)MACB例如:M的控制域?yàn)閧M,A,B,C}

模塊控制域:模塊本身和其下級模塊(即可供它調(diào)用的模塊)模塊作用域:受這個(gè)模塊中判定所影響的模塊。本規(guī)則的含義是:(1)作用域不要超出控制域的范圍(2)軟件系統(tǒng)的判定,其位置離受它控制的模塊越近越好第42頁,共82頁,2024年2月25日,星期天A:

…………if……thengotoB1……………………B:……………………B1:……………………作用域在控制域內(nèi)A:…………if……thengotoM1……………………M:……………………M1:gotoC1……………………作用域超出了控制域上例右邊中A的作用超出了控制域。改進(jìn)方法之一,可以把A中的if

移到M中;方法之二,可以把C移到A下面。第43頁,共82頁,2024年2月25日,星期天5、降低接口的復(fù)雜程度:接口復(fù)雜可能表明模塊的獨(dú)立性差。6、單出單入,避免內(nèi)容耦合。7、模塊功能可預(yù)測——相同輸入必產(chǎn)生相同輸出。反例:模塊中使用全局變量或靜態(tài)變量,則可能導(dǎo)致不可預(yù)測。第44頁,共82頁,2024年2月25日,星期天7.2軟件過程設(shè)計(jì)技術(shù)和工具結(jié)構(gòu)化程序設(shè)計(jì)是程序設(shè)計(jì)技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制構(gòu)件。

結(jié)構(gòu)化設(shè)計(jì)圖形表示法盒圖流程圖判定樹判定表7.2.1結(jié)構(gòu)化程序設(shè)計(jì)第45頁,共82頁,2024年2月25日,星期天7.2.2圖形表示法1.流程圖(也稱為程序框圖)是最常用的一種表示法,“順序”、“分支”和“循環(huán)”三個(gè)基本控制構(gòu)件用流程圖表達(dá)的形式如圖8-2-1所示。F第二個(gè)任務(wù)順序結(jié)構(gòu)then部分else部分do?while循環(huán)第一個(gè)任務(wù)T分支條件If?then?else結(jié)構(gòu)循環(huán)條件循環(huán)體TF圖8-2-1流程圖構(gòu)件第46頁,共82頁,2024年2月25日,星期天7.2.2圖形表示法2.盒圖也稱為N-S圖或Chapin圖。這種表達(dá)方式取消了流程線,它強(qiáng)迫程序員以結(jié)構(gòu)化方式思考和解決問題。第一個(gè)任務(wù)第二個(gè)任務(wù)第三個(gè)任務(wù)順序結(jié)構(gòu)else部分then部分條件FTif-then-else結(jié)構(gòu)do-while部分循環(huán)條件循環(huán)結(jié)構(gòu)圖8-2-3盒圖的構(gòu)件第47頁,共82頁,2024年2月25日,星期天3.PAD圖問題分析圖(ProblemAnslysisDiagram,簡稱PAD圖),是由日本日立公司的二村良彥等人于1973年提出的,它用二維樹圖形表示程序流程,是一種改進(jìn)的圖形描述方式,完全支持SP方法。近年來在軟件開發(fā)中得到了廣泛使用,并且越來越受到人們的贊賞。

PAD因的基本符號見下圖。第48頁,共82頁,2024年2月25日,星期天第49頁,共82頁,2024年2月25日,星期天與其它的詳細(xì)設(shè)計(jì)描述工具相比,問題分標(biāo)圖具有以下優(yōu)點(diǎn):(1)用PAD圖表達(dá)的程序過程呈樹形結(jié)構(gòu),這種圖容易翻譯成程序代碼。(2)用PAD圖描繪的程序結(jié)構(gòu)清晰。圖中最左邊的豎線是程序的主線,表示第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。(3)用PAD圖表達(dá)程序邏輯,易讀、易懂、易記。PAD圖是二維樹形結(jié)構(gòu),從圖中最左邊的豎線上端的結(jié)點(diǎn)開始,自上而下、自左至右順序執(zhí)行,遍歷所有的結(jié)點(diǎn)。第50頁,共82頁,2024年2月25日,星期天(4)PAD圖既可描述程序,又可描繪數(shù)據(jù)結(jié)構(gòu)。(5)PAD圖完全支持自頂向下、逐步求精的結(jié)構(gòu)化方法。開始設(shè)計(jì)時(shí)設(shè)計(jì)者可以定義一個(gè)抽象的程序,隨著設(shè)計(jì)工作的深入,通過使用定義符號(def)逐步增加細(xì)節(jié),直到完成詳細(xì)設(shè)計(jì)。(6)沿著PAD的外邊輪廓機(jī)械地走一遍,俗稱“走樹”,可以方便地實(shí)現(xiàn)編程。這步工作可由人工完成,也可以利用PAD自動(dòng)生成程序完成。PAD圖為COBOL、FORTRAN和PASCAL等高級語言都提供了一套相應(yīng)的圖形符號,每種控制語句都有一個(gè)圖形符號與之對應(yīng)。所以,很容易將PAD圖轉(zhuǎn)換成高級語言源程序。這是PAD圖的最大的優(yōu)點(diǎn)之一。第51頁,共82頁,2024年2月25日,星期天7.2.3判定表與判定樹判定表由四部分組成:左上部列出所有條件左下部列出所有可能的動(dòng)作右上部所有可能的條件組合(矩陣)右下部條件組合與動(dòng)作之間的對應(yīng)關(guān)系用于:條件復(fù)雜,根據(jù)這些條件的組合選擇動(dòng)作判定表的每一列可解釋為一條處理規(guī)則第52頁,共82頁,2024年2月25日,星期天7.2.3判定表與判定樹【例7.2】問題處理描述:耗電記費(fèi)系統(tǒng)可以采用固定價(jià)格收費(fèi)、浮動(dòng)價(jià)格收費(fèi)和其他方式收費(fèi)三種方式。若采用固定價(jià)格方式收費(fèi),對每月耗電100kW?h以下的用戶只征收最低標(biāo)準(zhǔn)費(fèi),超過100kW?h的用戶按價(jià)格A收費(fèi);若采用浮動(dòng)價(jià)格方式收費(fèi),則每月耗電100kW?h以下的用戶按價(jià)格A收費(fèi),超過100kW?h的用戶按價(jià)格B收費(fèi)。第53頁,共82頁,2024年2月25日,星期天表7?1判定表規(guī)則12345固定價(jià)格方式浮動(dòng)價(jià)格方式耗電<100kW.h

耗電≥100kW.hTFTFTFFTFTTFFTFTFF收取最低標(biāo)準(zhǔn)費(fèi)按價(jià)格A收費(fèi)按價(jià)格B收費(fèi)其他處理√√√√√條件動(dòng)作第54頁,共82頁,2024年2月25日,星期天【例7.2】判定樹

耗電<100kW·h—收取最低標(biāo)準(zhǔn)費(fèi)固定方式耗電≥100kW·h—按價(jià)格A收費(fèi)耗電<100kW·h—按價(jià)格A收費(fèi)耗電收費(fèi)浮動(dòng)方式耗電≥100kW·h—按價(jià)格表B收費(fèi)其他方式—其他處理圖8-2-5用判定樹表示計(jì)算耗電收費(fèi)的算法第55頁,共82頁,2024年2月25日,星期天7.2.3判定表與判定樹判定樹的優(yōu)點(diǎn):形式簡單,直觀明了,易于掌握。判定樹的缺點(diǎn):①存在著數(shù)據(jù)冗余的問題,相同的數(shù)據(jù)元素往往要重復(fù)多次,而且越接近樹的葉端重復(fù)的次數(shù)越多。②判定樹要求對條件進(jìn)行層次劃分,若條件所處層次不對,可能會(huì)導(dǎo)致增加判定樹的復(fù)雜性。第56頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)PDL(ProcedureDesignLanguage)也稱為結(jié)構(gòu)英語或偽碼,是所有正文形式的過程設(shè)計(jì)工具的統(tǒng)稱。PDL經(jīng)常表現(xiàn)為一種“混雜”的形式,允許自然語言(如英語)的詞匯與某種結(jié)構(gòu)化程序設(shè)計(jì)語言(如Pascal、C、Ada等)的語法結(jié)構(gòu)交織在一起第57頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)PDL應(yīng)具有下述特點(diǎn):1.關(guān)鍵字采用固定語法并支持結(jié)構(gòu)化構(gòu)件、數(shù)據(jù)說明機(jī)制和模塊化;2.處理部分采用自然語言描述;3.允許說明簡單(標(biāo)量、數(shù)組等)和復(fù)雜(鏈表、樹等)的數(shù)據(jù)結(jié)構(gòu);4.子程序的定義與調(diào)用規(guī)則不受具體接口方式的影響。第58頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)考察一個(gè)PDL的原型,它可以建立在任意一個(gè)通用的結(jié)構(gòu)化程序設(shè)計(jì)語言之上?;境煞职ǎ鹤映绦蚨x、界面描述、數(shù)據(jù)說明、塊結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和I/O結(jié)構(gòu)。數(shù)據(jù)說明的形式為:

TYPE<變量名>IS<限定詞1><限定詞2>其中:<變量名>——局部變量或全局變量;<限定詞1>——某個(gè)特定關(guān)鍵字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等);<限定詞2>——說明此處定義的變量在該過程或整個(gè)程序中應(yīng)如何使用。第59頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)可進(jìn)行抽象數(shù)據(jù)類型的定義,例如:TYPEtable_1ISINSTACEOFsymbol_table而symbol_table在另一處已定義如下:TYPEsymbol_tableISSTRUCTUREDEFINED第60頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)該P(yáng)DL的塊結(jié)構(gòu)描述一個(gè)過程元素,即一個(gè)塊內(nèi)的所有語句將作為一個(gè)整體執(zhí)行,形式為

BEGIN[<塊名>]<語句序列>END該P(yáng)DL的分支結(jié)構(gòu)有if-then-else和case兩種形式,分別為

IF<條件描述>THEN<塊結(jié)構(gòu)或語句>ELSE<塊結(jié)構(gòu)或語句>ENDIF第61頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)CASEOF<情況變量名>WHEN<第1種情況>SELECT<塊結(jié)構(gòu)或語句>WHEN<第2種情況>SELECT<塊結(jié)構(gòu)或語句>…WHEN<最后一種情況>SELECT<塊結(jié)構(gòu)或語句>DEFAULT:<塊結(jié)構(gòu)或語句>ENDCASE第62頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)循環(huán)結(jié)構(gòu)包括三類,表達(dá)形式分別為:DOWHILE<條件描述><塊結(jié)構(gòu)或語句>ENDWHILEREPEATUNTIL<條件描述><塊結(jié)構(gòu)或語句>ENDREPEATDOFOR<循變>=<循變?nèi)≈捣秶?表達(dá)式或序列><塊結(jié)構(gòu)或語句>ENDFOR第63頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)此PDL還提供了NEXT和EXIT兩種語句:

EXIT語句,退出本層循環(huán);

NEXT語句強(qiáng)迫本次循環(huán)結(jié)束,新一輪循環(huán)開始。在該P(yáng)DL中,子程序說明為:

PROCEDURE<子程序說明><屬性表>INTERFACE<參數(shù)表><塊結(jié)構(gòu)或語句序列>END

其中屬性表指明該子程序的引用特性(比如,是INTERNAL還是EXTERNAL模式)和其他依賴于實(shí)現(xiàn)(即程序設(shè)計(jì)語言)的特性。第64頁,共82頁,2024年2月25日,星期天7.2.4過程設(shè)計(jì)語言(PDL)輸入/輸出說明部分常用的形式有

READ/WRITETO<設(shè)備><I/O表>

ASK<詢問>ANSWER<響應(yīng)選擇項(xiàng)>

后一種形式多用于人機(jī)交互部分的設(shè)計(jì)。第65頁,共82頁,2024年2月25日,星期天7.3設(shè)計(jì)規(guī)格說明與評審軟件設(shè)計(jì)階段的輸出主要是設(shè)計(jì)規(guī)格說明書:第一節(jié):描述與設(shè)計(jì)活動(dòng)有關(guān)的各個(gè)方面,該節(jié)中許多信息取自系統(tǒng)規(guī)格說明書和系統(tǒng)定義階段產(chǎn)生的其他文檔。第二節(jié):具體指明引用信息的出處。第三節(jié):設(shè)計(jì)描述,是概要設(shè)計(jì)的產(chǎn)物,此時(shí)設(shè)計(jì)由信息驅(qū)動(dòng),即軟件總體結(jié)構(gòu)主要受數(shù)據(jù)流程、數(shù)據(jù)結(jié)構(gòu)的影響,需求分析時(shí)產(chǎn)生的DFD或其他某種形式的數(shù)據(jù)表示將在這一節(jié)中進(jìn)一步精化,用于確定軟件結(jié)構(gòu)。當(dāng)信息流程確定后,界面亦可作為整個(gè)軟件的一部分進(jìn)行描述。第66頁,共82頁,2024年2月25日,星期天7.3設(shè)計(jì)規(guī)格說明與評審第四、五兩節(jié)是概要設(shè)計(jì)向詳細(xì)設(shè)計(jì)過渡后形成的。第四節(jié):模塊指軟件中可單獨(dú)編址的部件,如函數(shù)和過程,最初用自然語言描述它們的功能,隨后采用某種過程設(shè)計(jì)工具將這些自然語言描述轉(zhuǎn)換為結(jié)構(gòu)化描述。第五節(jié):主要描述數(shù)據(jù)組織結(jié)構(gòu),包括輔存的文件結(jié)構(gòu)、全局?jǐn)?shù)據(jù)(例如FORTRAN公共區(qū))的賦值以及這些文件與全局?jǐn)?shù)據(jù)的交叉訪問關(guān)系。第67頁,共82頁,2024年2月25日,星期天7.3設(shè)計(jì)規(guī)格說明與評審第六節(jié):是與需求規(guī)格說明書的交叉訪問表,根據(jù)交叉訪問表可斷定設(shè)計(jì)是否滿足所有需求,這對于完成某個(gè)具體需求的模塊來說十分重要。第七節(jié):是測試的初步計(jì)劃。一旦軟件結(jié)構(gòu)和模塊間界面確定下來之后,即可制定模塊單元測試和聯(lián)調(diào)的計(jì)劃。某些場合,要求同時(shí)開發(fā)測試規(guī)格說明書與設(shè)計(jì)規(guī)格說明書,此時(shí)第七節(jié)可從設(shè)計(jì)規(guī)格說明書中刪去。第八節(jié):將逐條說明各種限制和造成的影響。第九、十兩節(jié):包括若干輔助數(shù)據(jù),如從其他文檔中節(jié)選的算法描述、候選的過程、表格化數(shù)據(jù)和其他相關(guān)信息,這些信息是對設(shè)計(jì)的一種特殊注釋最后開發(fā)一基本操作規(guī)格說明或安裝手冊作為附錄。第68頁,共82頁,2024年2月25日,星期天設(shè)計(jì)規(guī)格說明書示例Ⅰ.作用范圍

A.系統(tǒng)目標(biāo)

B.硬件、軟件和人機(jī)界面

C.主要的系統(tǒng)功能

D.外部數(shù)據(jù)庫定義

E.主要的設(shè)計(jì)約束和限制Ⅱ.文檔

A.現(xiàn)有的軟件文檔

B.系統(tǒng)文檔

C.賣主(硬件的和軟件的)的有關(guān)文檔

D.技術(shù)參考書第69頁,共82頁,2024年2月25日,星期天設(shè)計(jì)規(guī)格說明書示例Ⅲ.設(shè)計(jì)描述

A.數(shù)據(jù)描述

1.數(shù)據(jù)流復(fù)審

2.數(shù)據(jù)結(jié)構(gòu)復(fù)審

B.導(dǎo)出的程序結(jié)構(gòu)

C.結(jié)構(gòu)之間的界面第70頁,共82頁,2024年2月25日,星期天設(shè)計(jì)規(guī)格說明書示例Ⅳ.模塊描述;針對每個(gè)模塊給出

A.處理過程陳述

B.接口描述

C.設(shè)計(jì)語言(或其他形式)描述

D.引用的模塊

E.數(shù)據(jù)組織

F.注釋第71頁,共82頁,2024年2月25日,星期天設(shè)計(jì)規(guī)格說明書示例Ⅴ.文件結(jié)構(gòu)及全局?jǐn)?shù)據(jù)

A.外部文件結(jié)構(gòu)

1.邏輯結(jié)構(gòu)

2.邏輯記錄描述

3.訪問方式

B.全局?jǐn)?shù)據(jù)

C.文件與數(shù)據(jù)的交叉訪問表Ⅵ.需求交叉訪問矩陣第72頁,共82頁,2024年2月25日,星期天設(shè)計(jì)規(guī)格說明書示例Ⅶ.測試準(zhǔn)備

A.測試指南

B.集成策略

C.特殊考慮Ⅷ.裝配

A.特殊的程序覆蓋要求

B.轉(zhuǎn)換方面的考慮Ⅸ.特別注釋Ⅹ.附錄第73頁,共82頁,2024年2月25日,星期天概要設(shè)計(jì)階段的文件主要是概要設(shè)計(jì)說明書,又稱為系統(tǒng)設(shè)計(jì)說明書。編寫本說明的目的,是說明對程序系統(tǒng)的設(shè)計(jì)考慮,包括程序系統(tǒng)的基本處理流程、程序系統(tǒng)的組織機(jī)構(gòu)、功能分配、模塊劃分、接口設(shè)計(jì)、運(yùn)行設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和出錯(cuò)處理設(shè)計(jì)等,為系統(tǒng)的詳細(xì)設(shè)計(jì)打下基礎(chǔ)。概要設(shè)計(jì)說明書是概要設(shè)計(jì)階段結(jié)束時(shí)提交的技術(shù)文檔。除了概要設(shè)計(jì)說明書之外,還有用戶手冊、測試計(jì)劃等文件。見下表第74頁,共82頁,2024年2月25日,星期天概要設(shè)計(jì)說明書1引言1.1目的1.2背景1.3定義1.4參考資料2概要設(shè)計(jì)

2.1需求規(guī)定

2.2運(yùn)行規(guī)定

2.3基本設(shè)計(jì)原則與處理流程

2.4結(jié)構(gòu)

2.5功能需求與程序關(guān)系

2.6人工處理過程

2.7未解決問題3接口設(shè)計(jì)

3.1用戶接口(用戶界面)

3.2內(nèi)部接口(模塊間)

3.3外部接口(軟硬件間)4運(yùn)行設(shè)計(jì)

4.1運(yùn)行模塊組合

4.2運(yùn)行控制

4.3運(yùn)行時(shí)間5數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

5.1

溫馨提示

  • 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論