軟件工程導論(第五版)第三章_第1頁
軟件工程導論(第五版)第三章_第2頁
軟件工程導論(第五版)第三章_第3頁
軟件工程導論(第五版)第三章_第4頁
軟件工程導論(第五版)第三章_第5頁
已閱讀5頁,還剩621頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程( Software Engineering )計算機學院計算機學院 軟件工程系軟件工程系 楊易揚楊易揚 常典型環(huán)境下各個開發(fā)階段需要使用的人力百常典型環(huán)境下各個開發(fā)階段需要使用的人力百分比大致如下:分比大致如下:任務任務人力()人力()可行性研究可行性研究需求分析需求分析設計設計編碼與單元測試編碼與單元測試綜合測試綜合測試總計總計510252040100第第2章:可行性研究章:可行性研究 是否可解?是否值得去解? 可行性研究的內(nèi)容: 技術可行性: 技術,人員,軟硬件資源 經(jīng)濟可行性:投入VS產(chǎn)出,估算模型 操作可行性:對管理模式、用戶工作環(huán)境等產(chǎn)生的影響 社會可行性:法律(專利,是否

2、侵權(quán)),社會(道德,影響等)2.1 可行性研究的任務(總成本總成本5%)2.2 2.2 可行性研究的步驟可行性研究的步驟 1 1)復查系統(tǒng)規(guī)模和目標;)復查系統(tǒng)規(guī)模和目標;2 2)研究目前正在使用的系統(tǒng);()研究目前正在使用的系統(tǒng);(系統(tǒng)流程圖系統(tǒng)流程圖)3 3)導出新系統(tǒng)的高層邏輯模型()導出新系統(tǒng)的高層邏輯模型(數(shù)據(jù)流圖數(shù)據(jù)流圖、數(shù)據(jù)字典數(shù)據(jù)字典););4 4)重新定義問題;重新定義問題; 5 5)導出和評價供選擇的解法()導出和評價供選擇的解法(物理解決方案物理解決方案)6 6)推薦行動方案;)推薦行動方案;7 7)草擬開發(fā)計劃;)草擬開發(fā)計劃;8 8)書寫文檔提交審查。)書寫文檔提交審

3、查。 1 1)貨幣的時間價值貨幣的時間價值 假設年利率為假設年利率為i i, ,如果現(xiàn)在存入如果現(xiàn)在存入P P元錢,元錢,則則n n年以后可以得到的錢數(shù)為:年以后可以得到的錢數(shù)為: 反之,如果反之,如果n n年后能收入年后能收入F F元錢,那么這元錢,那么這些錢現(xiàn)在的價值是:些錢現(xiàn)在的價值是: niPF)1( niFP)1/( 2.6 成本成本/效益分析效益分析第3章:需求分析 3.1.1 3.1.1 確定對系統(tǒng)的綜合要求確定對系統(tǒng)的綜合要求 1 1功能需求功能需求 2 2性能需求性能需求 如:相應時間(速度)、主存容量、磁如:相應時間(速度)、主存容量、磁盤容量、安全性、等。盤容量、安全性、

4、等。3.1 需求分析的任務3. 3. 可靠性和可用性需求可靠性和可用性需求4. 4. 出錯處理需求出錯處理需求 系統(tǒng)發(fā)現(xiàn)錯誤時采取的行動,主要在系統(tǒng)關鍵部分設置。系統(tǒng)發(fā)現(xiàn)錯誤時采取的行動,主要在系統(tǒng)關鍵部分設置。5. 5. 接口需求接口需求 用戶接口、硬件接口、軟件接口、通信接口、等。用戶接口、硬件接口、軟件接口、通信接口、等。6. 6. 約束約束 精度、工具和語言、設計約束、硬件約束、標準,等。精度、工具和語言、設計約束、硬件約束、標準,等。7. 7. 逆向需求逆向需求 8. 8. 將來可能提出的要求將來可能提出的要求 3.1.3 導出系統(tǒng)的邏輯模型導出系統(tǒng)的邏輯模型 包括完善的數(shù)據(jù)流圖、實

5、體聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、包括完善的數(shù)據(jù)流圖、實體聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典、主要的處理算法(數(shù)據(jù)字典、主要的處理算法(IPO圖)等。圖)等。3.1.2 分析系統(tǒng)的數(shù)據(jù)要求分析系統(tǒng)的數(shù)據(jù)要求 通過建立數(shù)據(jù)模型來分析,如數(shù)據(jù)字典、層次方框圖、通過建立數(shù)據(jù)模型來分析,如數(shù)據(jù)字典、層次方框圖、Warnier圖,并將數(shù)據(jù)結(jié)構(gòu)規(guī)范化。圖,并將數(shù)據(jù)結(jié)構(gòu)規(guī)范化。3.1.4 修正系統(tǒng)開發(fā)計劃修正系統(tǒng)開發(fā)計劃 修訂前期制定的開發(fā)進度計劃、等。修訂前期制定的開發(fā)進度計劃、等。3.2 與用戶溝通獲取需求的方法與用戶溝通獲取需求的方法 3.2.1 訪談訪談 正式訪談正式訪談:系統(tǒng)分析員提出事先準備好的問題。:系統(tǒng)分析員

6、提出事先準備好的問題。非正式訪談非正式訪談:提出一些用戶可以自由回答的開放性問:提出一些用戶可以自由回答的開放性問題,鼓勵被訪者說出自己的想法。題,鼓勵被訪者說出自己的想法。需要訪問大量人員時,利用調(diào)查表訪問較佳。需要訪問大量人員時,利用調(diào)查表訪問較佳。3.2.2 面向數(shù)據(jù)流自頂向下求精面向數(shù)據(jù)流自頂向下求精 分析追蹤數(shù)分析追蹤數(shù)據(jù)流圖據(jù)流圖用戶復查用戶復查細化數(shù)據(jù)流細化數(shù)據(jù)流圖圖有補充修正有補充修正無 補 充無 補 充修正修正需要分解需要分解不需分解不需分解圖圖3.1 需求分析基本過程需求分析基本過程 借助數(shù)據(jù)流圖、數(shù)據(jù)字典、借助數(shù)據(jù)流圖、數(shù)據(jù)字典、IPO圖等,細化、完善詳圖等,細化、完善詳

7、細的數(shù)據(jù)流圖,等到各處理環(huán)節(jié)對應的功能。細的數(shù)據(jù)流圖,等到各處理環(huán)節(jié)對應的功能。倉庫倉庫管理員管理員采購員采購員事務事務定貨報表定貨報表定貨系統(tǒng)數(shù)據(jù)流圖定貨系統(tǒng)數(shù)據(jù)流圖更新更新庫存庫存清單清單1.2產(chǎn)生產(chǎn)生報表報表2D1 庫存清單庫存清單D2 定貨信息定貨信息接收接收事務事務1.1處理處理定貨定貨1.3庫存清單庫存清單定貨信息定貨信息定貨信息定貨信息例:例:分析銷售趨勢分析銷售趨勢統(tǒng)計功能統(tǒng)計功能3.2.3 簡易的應用規(guī)格說明技術簡易的應用規(guī)格說明技術 面向團隊的需求收集法面向團隊的需求收集法: (用戶與開發(fā)者配合)(用戶與開發(fā)者配合)1)初步訪談;)初步訪談;2)開發(fā)者和用戶分別寫出)開發(fā)者

8、和用戶分別寫出“產(chǎn)品需求產(chǎn)品需求”;3)開會討論,各自展示需求列表;)開會討論,各自展示需求列表;4)得出一致意見,為需求列表制定小型規(guī)格說明;)得出一致意見,為需求列表制定小型規(guī)格說明;5)根據(jù)會議成果,起草完整的軟件需求規(guī)格說明。)根據(jù)會議成果,起草完整的軟件需求規(guī)格說明。3.2.4 快速建立軟件原型快速建立軟件原型 快速建立能演示目標系統(tǒng)主要功能的程序??焖俳⒛苎菔灸繕讼到y(tǒng)主要功能的程序。(1)第四代技術)第四代技術(2)可重用的軟件構(gòu)件)可重用的軟件構(gòu)件(3)形式化規(guī)格說明和原型環(huán)境)形式化規(guī)格說明和原型環(huán)境3.3 分析建模與規(guī)格說明分析建模與規(guī)格說明3.3.1 分析建模分析建模 為

9、了開發(fā)復雜的系統(tǒng),應從不同角度(模型)抽象出為了開發(fā)復雜的系統(tǒng),應從不同角度(模型)抽象出目標系統(tǒng)的特性(數(shù)據(jù)模型、功能模型、行為模型)。目標系統(tǒng)的特性(數(shù)據(jù)模型、功能模型、行為模型)。1)實體聯(lián)系圖:建立數(shù)據(jù)模型,描述數(shù)據(jù)對象及數(shù)據(jù)對)實體聯(lián)系圖:建立數(shù)據(jù)模型,描述數(shù)據(jù)對象及數(shù)據(jù)對象之間的關系;象之間的關系;2)數(shù)據(jù)流圖:建立功能模型的基礎;)數(shù)據(jù)流圖:建立功能模型的基礎;3)狀態(tài)轉(zhuǎn)換圖:描繪系統(tǒng)的狀態(tài)和狀態(tài)間轉(zhuǎn)換的方式。)狀態(tài)轉(zhuǎn)換圖:描繪系統(tǒng)的狀態(tài)和狀態(tài)間轉(zhuǎn)換的方式。3.3.2 軟件需求規(guī)格說明軟件需求規(guī)格說明3.4 概念模型(實體聯(lián)系圖 )概念模型的用途概念模型用于信息世界的建模概念模型

10、用于信息世界的建模是現(xiàn)實世界到機器世界的一個中間層次是現(xiàn)實世界到機器世界的一個中間層次是數(shù)據(jù)庫設計的有力工具是數(shù)據(jù)庫設計的有力工具數(shù)據(jù)庫設計人員和用戶之間進行交流的語言數(shù)據(jù)庫設計人員和用戶之間進行交流的語言對概念模型的基本要求較強的語義表達能力較強的語義表達能力能夠方便、直接地表達應用中的各種語義知識能夠方便、直接地表達應用中的各種語義知識簡單、清晰、易于用戶理解簡單、清晰、易于用戶理解一、信息世界中的基本概念(1) 實體(Entity) 客觀存在并可相互區(qū)別的事物稱為實體。客觀存在并可相互區(qū)別的事物稱為實體??梢允蔷唧w的人、事、物或抽象的概念可以是具體的人、事、物或抽象的概念。(2) 屬性(

11、Attribute) 實體所具有的某一特性稱為屬性。實體所具有的某一特性稱為屬性。一個實體可以由若干個屬性來刻畫。一個實體可以由若干個屬性來刻畫。 (3) 碼(Key) 唯一標識實體的屬性集稱為碼。唯一標識實體的屬性集稱為碼。信息世界中的基本概念(續(xù))(4) 域(Domain) 屬性的取值范圍稱為該屬性的域?qū)傩缘娜≈捣秶Q為該屬性的域。 (5) 實體型(Entity Type) 用實體名及其屬性名集合來抽象和刻畫同類實體稱為實用實體名及其屬性名集合來抽象和刻畫同類實體稱為實體型體型(6) 實體集(Entity Set) 同一類型實體的集合稱為實體集同一類型實體的集合稱為實體集信息世界中的基本概

12、念(續(xù))(7) 聯(lián)系(Relationship) 現(xiàn)實世界中事物內(nèi)部以及事物之間的聯(lián)系在信息世界現(xiàn)實世界中事物內(nèi)部以及事物之間的聯(lián)系在信息世界 中反映為實體內(nèi)部的聯(lián)系和實體之間的聯(lián)系。中反映為實體內(nèi)部的聯(lián)系和實體之間的聯(lián)系。實體內(nèi)部實體內(nèi)部的聯(lián)系通常是指組成實體的各屬性之間的聯(lián)系的聯(lián)系通常是指組成實體的各屬性之間的聯(lián)系實體之間實體之間的聯(lián)系通常是指不同實體集之間的聯(lián)系的聯(lián)系通常是指不同實體集之間的聯(lián)系兩個實體型之間的聯(lián)系實體型A聯(lián)系名實體型B111:1聯(lián)系實體型A聯(lián)系名1n1:n聯(lián)系實體型A實體型B聯(lián)系名mnm:n聯(lián)系實體型B用圖形來表示兩個實體型之間的這三類聯(lián)系 一對一聯(lián)系(1:1) 實例一

13、個班級只有一個正班長一個班級只有一個正班長一個班長只在一個班中任職一個班長只在一個班中任職定義:定義: 如果對于實體集如果對于實體集A A中的每一個實體,實中的每一個實體,實體集體集B B中至多有一個(也可以沒有)實體中至多有一個(也可以沒有)實體與之聯(lián)系,反之亦然,與之聯(lián)系,反之亦然,則稱實體集則稱實體集A A與實與實體集體集B B具有一對一聯(lián)系,具有一對一聯(lián)系,記為記為1:11:1 班級班級-班長班長111:1聯(lián)系一對多聯(lián)系(1:n)實例一個班級中有若干名學生,一個班級中有若干名學生,每個學生只在一個班級中學習每個學生只在一個班級中學習定義:如果對于實體集如果對于實體集A A中的每一個實體

14、,實體集中的每一個實體,實體集B B中中有有n n個實體(個實體(n0n0)與之聯(lián)系,反之,對于實體)與之聯(lián)系,反之,對于實體集集B B中的每一個實體,實體集中的每一個實體,實體集A A中至多只有一個中至多只有一個實體與之聯(lián)系,則稱實體與之聯(lián)系,則稱實體集實體集A A與實體集與實體集B B有一對有一對多聯(lián)系,記為多聯(lián)系,記為1:n1:n班級組成學生1n1:n聯(lián)系多對多聯(lián)系(m:n)實例課程與學生之間的聯(lián)系:課程與學生之間的聯(lián)系:一門課程同時有若干個學生選修一門課程同時有若干個學生選修一個學生可以同時選修多門課程一個學生可以同時選修多門課程定義:如果對于實體集如果對于實體集A A中的每一個實體,

15、實體集中的每一個實體,實體集B B中中有有n n個實體(個實體(n0n0)與之聯(lián)系,反之,對于實)與之聯(lián)系,反之,對于實體集體集B B中的每一個實體,實體集中的每一個實體,實體集A A中也有中也有m m個實個實體(體(m0m0)與之聯(lián)系,則稱實體集)與之聯(lián)系,則稱實體集A A與實體與實體B B具有多對多聯(lián)系,記為具有多對多聯(lián)系,記為m:nm:n課程選修學生mnm:n聯(lián)系3.4 實體聯(lián)系圖實體聯(lián)系圖 (ER圖)圖) 數(shù)據(jù)對象可以是外部實體、事物、行為、事件、數(shù)據(jù)對象可以是外部實體、事物、行為、事件、角色、單位、地點、結(jié)構(gòu)等。角色、單位、地點、結(jié)構(gòu)等。數(shù)據(jù)對象數(shù)據(jù)對象3.4.1 數(shù)據(jù)對象數(shù)據(jù)對象3

16、.4.2 屬性屬性 屬性定義了數(shù)據(jù)對象的性質(zhì)。屬性定義了數(shù)據(jù)對象的性質(zhì)。屬性屬性3.4.3 聯(lián)系聯(lián)系(1)一對一聯(lián)系()一對一聯(lián)系(1:1)(2)一對多聯(lián)系()一對多聯(lián)系(1:N)(3)多對多聯(lián)系()多對多聯(lián)系(M:N) 在在ER圖中,用菱形框表示聯(lián)系。圖中,用菱形框表示聯(lián)系。 聯(lián)系聯(lián)系教師教師學生學生課程課程學號學號姓名姓名系系年級年級職務職務性別性別職稱職稱性別性別姓名姓名教工號教工號教教學學成績成績學分學分學時學時課名課名課程號課程號圖圖3.2 某校教學管理某校教學管理ER圖圖MN1N例子:例子:一個實例用E-R圖表示某個工廠物資管理的概念模型實體倉庫: 倉庫號、面積、電話號碼零件 :零

17、件號、名稱、規(guī)格、單價、描述供應商:供應商號、姓名、地址、電話號碼、帳號項目:項目號、預算、開工日期職工:職工號、姓名、年齡、職稱 實體之間的聯(lián)系如下: (1)一個倉庫可以存放多種零件,一種零件可以存放在多個倉庫中。倉庫和零件具有多對多的聯(lián)系。用庫存量來表示某種零件在某個倉庫中的數(shù)量。(2)一個倉庫有多個職工當倉庫保管員,一個職工只能在一個倉庫工作,倉庫和職工之間是一對多的聯(lián)系。職工實體型中具有一對多的聯(lián)系 (3)職工之間具有領導-被領導關系。即倉庫主任領導若干保管員。(4)供應商、項目和零件三者之間具有多對多的聯(lián)系通常用范式定義消除數(shù)據(jù)冗余的程度。通常用范式定義消除數(shù)據(jù)冗余的程度。 1)第一

18、范式第一范式 2)第二范式第二范式 3)第三范式第三范式3.5 數(shù)據(jù)規(guī)范化數(shù)據(jù)規(guī)范化3.6 狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖3.6.1 狀態(tài)狀態(tài) 狀態(tài)是任何可以被觀察到的系統(tǒng)行為模式,狀態(tài)是任何可以被觀察到的系統(tǒng)行為模式,一個狀態(tài)代表系統(tǒng)的一種行為模式。一個狀態(tài)代表系統(tǒng)的一種行為模式。3.6.2 事件事件 事件是某個特定時刻發(fā)生的事情,它是引起事件是某個特定時刻發(fā)生的事情,它是引起系統(tǒng)做動作或狀態(tài)轉(zhuǎn)換的控制信息。系統(tǒng)做動作或狀態(tài)轉(zhuǎn)換的控制信息。3.6.3 符號符號3.6.4 例子例子3.7 其他圖形工具其他圖形工具 層次方框圖層次方框圖用樹用樹形結(jié)構(gòu)的一系列多層形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)次的矩形

19、框描繪數(shù)據(jù)的層次結(jié)構(gòu)。的層次結(jié)構(gòu)。 產(chǎn)品產(chǎn)品硬件硬件軟件軟件服務服務處理機處理機存儲器存儲器外部設備外部設備系統(tǒng)軟件系統(tǒng)軟件應用軟件應用軟件軟件服務軟件服務硬件維修硬件維修培訓培訓編譯程序編譯程序軟件工具軟件工具操作系統(tǒng)操作系統(tǒng)圖圖3.5 層次方框圖的一個例子層次方框圖的一個例子3.7.1 層次方框圖層次方框圖 Warnier圖圖也用樹形結(jié)構(gòu)描繪信息,但是這種圖形工具也用樹形結(jié)構(gòu)描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的描繪手段。比層次方框圖提供了更豐富的描繪手段。 軟件產(chǎn)品軟件產(chǎn)品軟件工具軟件工具編輯程序(編輯程序(P3)應用軟件應用軟件編譯程序(編譯程序(P2)操作系統(tǒng)(操作系統(tǒng)

20、(P1)系統(tǒng)軟件系統(tǒng)軟件測試驅(qū)動程序(測試驅(qū)動程序(P4)設計輔助工具(設計輔助工具(P5)圖圖3.4 Warnier圖的一個例子圖的一個例子3.7.2 Warnier圖圖IPO圖是輸入圖是輸入/處理處理/輸出圖。輸出圖。 舊的主文件舊的主文件事務文件事務文件1.校驗主記校驗主記錄錄2.校驗事務校驗事務記錄記錄3.更新主記更新主記錄錄有效的主記有效的主記錄錄有效的事務有效的事務記錄記錄更新后的主更新后的主文件文件輸入輸入處理處理輸出輸出圖圖3.7 IPO圖的一個例子圖的一個例子3.7.3 IPO圖圖IPO表表系統(tǒng):系統(tǒng):模塊:模塊:編號:編號:作者:作者:日期:日期:被調(diào)用:被調(diào)用:調(diào)用:調(diào)用

21、:輸入:輸入:輸出:輸出:處理:處理:局部數(shù)據(jù)元素:局部數(shù)據(jù)元素:注釋:注釋:圖圖3.8 改進的改進的IPO圖的形式圖的形式3.8 驗證軟件需求驗證軟件需求 1)一致性)一致性2)完整性)完整性3)現(xiàn)實性)現(xiàn)實性4)有效性)有效性3.8.1 驗證軟件需求的正確性驗證軟件需求的正確性1)驗證需求的一致性)驗證需求的一致性2)驗證需求的現(xiàn)實性)驗證需求的現(xiàn)實性3)驗證需求的完整性和有效性)驗證需求的完整性和有效性 3.8.2 驗證軟件需求的方法驗證軟件需求的方法用于需求分析的軟件應該滿足下列要求:用于需求分析的軟件應該滿足下列要求: 1)必須有形式化的語法)必須有形式化的語法 2)使用這個軟件工具

22、能夠?qū)С鲈敿毜奈模┦褂眠@個軟件工具能夠?qū)С鲈敿毜奈臋n檔 3)必須提供分析規(guī)格說明書的不一致性)必須提供分析規(guī)格說明書的不一致性和冗余性的手段和冗余性的手段 4)使用這個軟件工具后,應該能夠改進)使用這個軟件工具后,應該能夠改進通信狀況通信狀況3.8.3 用于需求分析的軟件工具用于需求分析的軟件工具 R S L ( 需 求 陳 述 語 言 ) : 信 息 集需 求 陳 述 語 言 ) : 信 息 集ASSMPASCAL模擬程序模擬程序 PSL/PSA(問題陳述語言問題陳述語言/問題陳述分析程序)問題陳述分析程序)系統(tǒng)系統(tǒng) 第第3章小結(jié)章小結(jié) 軟件需求說明書(軟件規(guī)格說明書)軟件需求說明書(軟件規(guī)

23、格說明書) 對所開發(fā)軟件的功能、性能、用戶界面及運行環(huán)境等對所開發(fā)軟件的功能、性能、用戶界面及運行環(huán)境等作出詳細的說明。作出詳細的說明。 它是在用戶與開發(fā)人員雙方對軟件需求取得共同理解它是在用戶與開發(fā)人員雙方對軟件需求取得共同理解并達成協(xié)議的條件下編寫的,也是實施開發(fā)工作的基礎。并達成協(xié)議的條件下編寫的,也是實施開發(fā)工作的基礎。該說明書應給出數(shù)據(jù)邏輯和數(shù)據(jù)采集的各項要求,為生該說明書應給出數(shù)據(jù)邏輯和數(shù)據(jù)采集的各項要求,為生成和維護系統(tǒng)數(shù)據(jù)文件做好準備。成和維護系統(tǒng)數(shù)據(jù)文件做好準備。第4章:形式化說明技術1.非形式化方法:自然語言描述非形式化方法:自然語言描述2.半形式化方法:數(shù)據(jù)流圖或?qū)嶓w聯(lián)系

24、圖半形式化方法:數(shù)據(jù)流圖或?qū)嶓w聯(lián)系圖3.形式化方法:基于數(shù)學技術描述形式化方法:基于數(shù)學技術描述4.1 概述概述4.1.1 非形式化方法的缺點非形式化方法的缺點 自然語言書寫的系統(tǒng)規(guī)格說明書可能存在:自然語言書寫的系統(tǒng)規(guī)格說明書可能存在: 1)矛盾;)矛盾; 2)二義性;)二義性; 如:如:“操作員標識由操作員姓名和密碼組成,密碼由操作員標識由操作員姓名和密碼組成,密碼由6 6位數(shù)位數(shù)字構(gòu)成,當操作員登陸系統(tǒng)時它被存儲在注冊文件中。字構(gòu)成,當操作員登陸系統(tǒng)時它被存儲在注冊文件中。” 3)含糊性;)含糊性; 4)不完整性;)不完整性; 5)抽象層次混亂。)抽象層次混亂。4.1.2 形式化方法的優(yōu)

25、點形式化方法的優(yōu)點(1)數(shù)學是理想的建模工具,適合于表示)數(shù)學是理想的建模工具,適合于表示系統(tǒng)狀態(tài)和描述系統(tǒng)需求;系統(tǒng)狀態(tài)和描述系統(tǒng)需求;(2)用數(shù)學表達的需求可在不同開發(fā)階段)用數(shù)學表達的需求可在不同開發(fā)階段平滑過渡。平滑過渡。4.1.3 應用形式化方法的準則應用形式化方法的準則(1)選擇合適的形式化方法;)選擇合適的形式化方法;(2)需要形式化,但不能過渡形式化,不能放)需要形式化,但不能過渡形式化,不能放棄傳統(tǒng)的需求表達方法;棄傳統(tǒng)的需求表達方法;(3)應該有形式化方法的專家提供指導。)應該有形式化方法的專家提供指導。4.2 有窮狀態(tài)機法(有窮狀態(tài)機法(FSM)4.2.1 概念概念鎖的三

26、個位置:鎖的三個位置:1、2、3; 轉(zhuǎn)盤可向左(轉(zhuǎn)盤可向左(L)或右(或右(R);); 鎖密碼:鎖密碼:1L、3R、2L一個有窮狀態(tài)機包括一個有窮狀態(tài)機包括5部分:部分: 1)狀態(tài)集)狀態(tài)集J:保險箱鎖定,保險箱鎖定,A,B,保險箱解鎖,報警保險箱解鎖,報警 2)輸入集)輸入集K:1L,1R,2L,2R,3L,3R 3)轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)T,如表如表4.1 4)初始狀態(tài))初始狀態(tài)S:保險箱鎖定保險箱鎖定 5)終態(tài)集)終態(tài)集F:保險箱解鎖,報警保險箱解鎖,報警 更形式化的術語:更形式化的術語: 一個有窮狀態(tài)機可表示一個為一個有窮狀態(tài)機可表示一個為5元組(元組(J,K,T,S,F)狀態(tài)轉(zhuǎn)換形式狀態(tài)轉(zhuǎn)

27、換形式: 當前狀態(tài)【菜單】事件【所選擇的項】當前狀態(tài)【菜單】事件【所選擇的項】下個狀態(tài)下個狀態(tài)加入謂詞集加入謂詞集P P,把系統(tǒng)擴展成一個把系統(tǒng)擴展成一個6 6元組后元組后: 當前狀態(tài)【菜單】事件【所選擇的項】謂詞當前狀態(tài)【菜單】事件【所選擇的項】謂詞下個狀態(tài)下個狀態(tài) 計算機系統(tǒng)中每個菜單驅(qū)動的用戶界面都是計算機系統(tǒng)中每個菜單驅(qū)動的用戶界面都是一個有窮狀態(tài)機的實現(xiàn)。一個有窮狀態(tài)機的實現(xiàn)。定義狀態(tài):定義狀態(tài):(1)M(d,e,f):電梯:電梯e正沿正沿d方向移動,即將到達第方向移動,即將到達第f層樓。層樓。(2)S(d,e,f):電梯:電梯e停在停在f層樓,將朝層樓,將朝d方向移動(未關方向移動

28、(未關門)。門)。(3)W(e,f):電梯:電梯e在在f層等待(已關門)。層等待(已關門)。(4)DC(e,f):電梯:電梯e在樓層在樓層f關上門。關上門。(5)ST(e,f):電梯:電梯e靠近靠近f層時觸發(fā)傳感器,電梯控制器層時觸發(fā)傳感器,電梯控制器決定在當前樓層是否停下。決定在當前樓層是否停下。(6)RL:電梯按鈕或樓層按鈕被按下進入打開狀態(tài):電梯按鈕或樓層按鈕被按下進入打開狀態(tài)4.2.2 例子例子:電梯的狀態(tài)轉(zhuǎn)換電梯的狀態(tài)轉(zhuǎn)換電梯狀態(tài)轉(zhuǎn)換規(guī)則:電梯狀態(tài)轉(zhuǎn)換規(guī)則:S(U,e,f)+DC(e,f)=M(U,e,f+1);S(D,e,f)+DC(e,f)=M(D,e,f-1); S(N,e,f

29、)+DC(e,f)=W(e,f)4.2.3 評價評價 有窮狀態(tài)機描述規(guī)格說明:有窮狀態(tài)機描述規(guī)格說明: 當前狀態(tài)事件謂詞當前狀態(tài)事件謂詞=下個狀態(tài)下個狀態(tài) 易于書寫、驗證、轉(zhuǎn)變成設計或程序代碼。易于書寫、驗證、轉(zhuǎn)變成設計或程序代碼。有窮狀態(tài)機方法比數(shù)據(jù)流圖技術更精確,有窮狀態(tài)機方法比數(shù)據(jù)流圖技術更精確,一樣易于理解。一樣易于理解。但不能處理定時需求。但不能處理定時需求。1.大系統(tǒng)時,數(shù)量迅速增長大系統(tǒng)時,數(shù)量迅速增長4.3 Petri網(wǎng)網(wǎng)4.3.1 概念概念Petri網(wǎng)包含網(wǎng)包含4種元素:種元素: 1)一組位置)一組位置P,上例上例 PP1,P2,P3,P4 2)一組轉(zhuǎn)換一組轉(zhuǎn)換T,上例上例

30、Tt1,t2 3)輸入函數(shù)輸入函數(shù)I,上例上例 I(t1)=P2,P4 I(t2)=P2 4)輸出函數(shù)輸出函數(shù)O,上例上例O(t1)=P1 O(t2)=P3,P3更形式化的更形式化的Petri網(wǎng)結(jié)構(gòu),是一個網(wǎng)結(jié)構(gòu),是一個4元組(元組(P,T,I,O)更形式化地:更形式化地:標記標記 M:P0,1,2,Petri網(wǎng)成為一個網(wǎng)成為一個5元組元組(P,T,I,O,M)對對Petri網(wǎng)的一個重要擴充是加入禁止線:網(wǎng)的一個重要擴充是加入禁止線:4.3.2 例子例子1. 電梯按鈕電梯按鈕EBf 電梯中樓層電梯中樓層 f 的按鈕;的按鈕;Fg 樓層樓層g;Ff 樓層樓層 f。2. 樓層按鈕樓層按鈕FBfu

31、第第 f 樓層向上按鈕;樓層向上按鈕; FBfd 第第 f 樓層向下按鈕;樓層向下按鈕;小結(jié) 基于數(shù)學的形式化說明技術,目前還沒有在基于數(shù)學的形式化說明技術,目前還沒有在軟件產(chǎn)業(yè)界廣泛應用;軟件產(chǎn)業(yè)界廣泛應用; 應該把形式化方法與傳統(tǒng)方法有機結(jié)合。應該把形式化方法與傳統(tǒng)方法有機結(jié)合。第5章:總體設計 5.1 設計過程設計過程 1.設想供選擇的方案設想供選擇的方案 2.選擇合理的方案選擇合理的方案 對每個合理的方案要提供:對每個合理的方案要提供: A系統(tǒng)流程圖系統(tǒng)流程圖 B組成系統(tǒng)的物理元素清單組成系統(tǒng)的物理元素清單 C成本成本/效益分析效益分析 D實現(xiàn)這個系統(tǒng)的進度計劃實現(xiàn)這個系統(tǒng)的進度計劃

32、3.推薦最佳方案推薦最佳方案4.功能分解功能分解5.設計軟件結(jié)構(gòu)設計軟件結(jié)構(gòu)6.數(shù)據(jù)庫設計數(shù)據(jù)庫設計 A模式設計模式設計 B子模式設計子模式設計 C完整性和安全性設計完整性和安全性設計 D優(yōu)化優(yōu)化 7.制定測試計劃制定測試計劃8.書寫文檔書寫文檔 A系統(tǒng)說明系統(tǒng)說明 B用戶手冊用戶手冊 C測試計劃測試計劃 D詳細的實現(xiàn)計劃詳細的實現(xiàn)計劃 E數(shù)據(jù)庫設計結(jié)果數(shù)據(jù)庫設計結(jié)果9.審查和復審審查和復審 5.2 設計原理設計原理 如果一個大型程序僅由一個模塊組成,很難被人理解。如果一個大型程序僅由一個模塊組成,很難被人理解。 設函數(shù)設函數(shù)C(x)定義問題定義問題x的復雜程度,函數(shù)的復雜程度,函數(shù)E(x)定

33、義解決定義解決問題問題x需要的工作量(時間)。對于兩個問題需要的工作量(時間)。對于兩個問題P1和和P2,如如果:果: C(P1)C(P2) 那么那么 E(P1)E(P2) 根據(jù)解決問題的經(jīng)驗,有一個規(guī)律是:根據(jù)解決問題的經(jīng)驗,有一個規(guī)律是: C(P1+P2)C(P1)+C(P2) 于是有于是有 E(P1+P2)E(P1)+E(P2) 5.2.1 模塊化模塊化模塊數(shù)目模塊數(shù)目接口成本接口成本成本成本/模塊模塊軟件總成本軟件總成本M最小成本區(qū)最小成本區(qū)成本成本圖圖5.1 模塊化與軟件成本模塊化與軟件成本5.2.2 抽象抽象 5.2.3 逐步求精逐步求精模塊的獨立性很重要,因為:模塊的獨立性很重要

34、,因為: 1)有效的模塊化的軟件比較容易開發(fā)出來)有效的模塊化的軟件比較容易開發(fā)出來; 2)獨立的模塊比較容易測試和維護。)獨立的模塊比較容易測試和維護。 5.2.4 信息隱蔽和局部化信息隱蔽和局部化 5.2.5 模塊獨立模塊獨立一、耦合一、耦合 耦合耦合:指軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間:指軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間相互依賴(連接)的緊密程度。相互依賴(連接)的緊密程度。 模塊獨立程度可以由兩個定性標準度量:模塊獨立程度可以由兩個定性標準度量:耦合耦合與與內(nèi)聚內(nèi)聚。模塊的偶合分四類:模塊的偶合分四類:1)數(shù)據(jù)耦合數(shù)據(jù)耦合 兩個模塊之間只是通過參數(shù)交換信息,而且兩個模塊之間只是通過參數(shù)交換信息,而

35、且交換的信息僅僅是數(shù)據(jù)。交換的信息僅僅是數(shù)據(jù)。 數(shù)據(jù)耦合是最低程度的耦合。數(shù)據(jù)耦合是最低程度的耦合。 AB數(shù)據(jù)數(shù)據(jù)(1)數(shù)據(jù)耦合)數(shù)據(jù)耦合2)控制耦合控制耦合 兩個模塊之間所交換的信息包含控制信息。兩個模塊之間所交換的信息包含控制信息。 控制耦合是中等程度的耦合。控制耦合是中等程度的耦合。 圖中模塊圖中模塊A的內(nèi)部處理程序判斷是執(zhí)行的內(nèi)部處理程序判斷是執(zhí)行C還是執(zhí)行還是執(zhí)行D,要取決于模塊要取決于模塊B傳來的信息狀態(tài)(傳來的信息狀態(tài)(Status)。)。BACD(2)控制耦合)控制耦合astatus3)公用耦合公用耦合 兩個或多個模塊通過一個公共區(qū)相互作用兩個或多個模塊通過一個公共區(qū)相互作用時

36、的耦合。時的耦合。 公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、內(nèi)存公共覆蓋區(qū)、任何介質(zhì)上的文件、物理內(nèi)存公共覆蓋區(qū)、任何介質(zhì)上的文件、物理設備等。設備等。 軟件結(jié)構(gòu)中存在大量的公用耦合時會給診軟件結(jié)構(gòu)中存在大量的公用耦合時會給診斷錯誤帶來困難。斷錯誤帶來困難。 圖中存在公用耦合,假設模塊圖中存在公用耦合,假設模塊A、C、E都存取全程數(shù)據(jù)都存取全程數(shù)據(jù)區(qū)(如公用一個磁盤文件)中的一個數(shù)據(jù)項。區(qū)(如公用一個磁盤文件)中的一個數(shù)據(jù)項。 如果如果A模塊讀取該項數(shù)據(jù),然后調(diào)用模塊讀取該項數(shù)據(jù),然后調(diào)用C模塊對該項重新計模塊對該項重新計算,并進行數(shù)據(jù)更新。算,并進行數(shù)據(jù)更

37、新。ABCDE全程數(shù)全程數(shù)據(jù)區(qū)據(jù)區(qū)(3)公用耦合)公用耦合 如果此時如果此時C模塊錯誤地更新了該項數(shù)據(jù),在往下的處模塊錯誤地更新了該項數(shù)據(jù),在往下的處理中模塊理中模塊E讀該數(shù)據(jù)項時出現(xiàn)錯誤。讀該數(shù)據(jù)項時出現(xiàn)錯誤。 表面上看,問題由模塊表面上看,問題由模塊E產(chǎn)生,實際上由模塊產(chǎn)生,實際上由模塊C引起。引起。ABCDE全程數(shù)全程數(shù)據(jù)區(qū)據(jù)區(qū)(3)公用耦合)公用耦合4)內(nèi)容耦合內(nèi)容耦合 一個模塊與另一個模塊的內(nèi)容直接發(fā)生聯(lián)系。一個模塊與另一個模塊的內(nèi)容直接發(fā)生聯(lián)系。 內(nèi)容耦合對維護會帶來嚴重的困難。內(nèi)容耦合對維護會帶來嚴重的困難。 模塊模塊ALAB:MOVE 1模塊模塊BGOTO LAB內(nèi)容耦合內(nèi)容耦

38、合(4)內(nèi)容耦合)內(nèi)容耦合 程序中如果一個模塊直接把程序轉(zhuǎn)移到另一個模塊中,或一個模塊程序中如果一個模塊直接把程序轉(zhuǎn)移到另一個模塊中,或一個模塊使用另一個模塊內(nèi)部的數(shù)據(jù),都會產(chǎn)生內(nèi)容耦合。內(nèi)容耦合是最高程使用另一個模塊內(nèi)部的數(shù)據(jù),都會產(chǎn)生內(nèi)容耦合。內(nèi)容耦合是最高程度的耦合,應該避免采用。度的耦合,應該避免采用。 軟件設計應追求盡可能松散耦合,避免強軟件設計應追求盡可能松散耦合,避免強耦合,這樣模塊間的聯(lián)系就越小,模塊的獨立耦合,這樣模塊間的聯(lián)系就越小,模塊的獨立性就越強,對模塊的測試、維護就越容易。性就越強,對模塊的測試、維護就越容易。 因此建議:因此建議:盡量使用數(shù)據(jù)耦合,少用控制盡量使用數(shù)

39、據(jù)耦合,少用控制耦合,限制公用耦合,完全不用內(nèi)容偶合耦合,限制公用耦合,完全不用內(nèi)容偶合。 二、內(nèi)聚二、內(nèi)聚 內(nèi)聚內(nèi)聚:一個模塊內(nèi)部各個元素彼此結(jié)合:一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。的緊密程度。 它是衡量一個模塊內(nèi)部組成部分間整體它是衡量一個模塊內(nèi)部組成部分間整體統(tǒng)一性的度量。統(tǒng)一性的度量。 常見的內(nèi)聚有七類。常見的內(nèi)聚有七類。 1)功能內(nèi)聚功能內(nèi)聚(Functional Cohesion) 如果一個模塊內(nèi)所有處理元素完成一個,而如果一個模塊內(nèi)所有處理元素完成一個,而且僅完成一個功能,則稱為功能內(nèi)聚。且僅完成一個功能,則稱為功能內(nèi)聚。 功能內(nèi)聚是最高程度的內(nèi)聚。但在軟件結(jié)構(gòu)功能內(nèi)聚是最

40、高程度的內(nèi)聚。但在軟件結(jié)構(gòu)中,并不是每個模塊都能設計成一個功能內(nèi)聚中,并不是每個模塊都能設計成一個功能內(nèi)聚模塊。模塊。2)順序內(nèi)聚順序內(nèi)聚(Sequential Cohesion) 如果一個模塊內(nèi)處理元素和同一個功能密如果一個模塊內(nèi)處理元素和同一個功能密切相關,而且這些處理元素必須順序執(zhí)行,則切相關,而且這些處理元素必須順序執(zhí)行,則稱為順序內(nèi)聚。稱為順序內(nèi)聚。 如圖,一個求一元二次方程根的模塊由三如圖,一個求一元二次方程根的模塊由三個處理元素組成,該模塊中存在順序內(nèi)聚。個處理元素組成,該模塊中存在順序內(nèi)聚。 通常,順序內(nèi)聚中一個處理元素的輸出是通常,順序內(nèi)聚中一個處理元素的輸出是另一個處理元素

41、的輸入。另一個處理元素的輸入。 求一元二次方求一元二次方程根模塊程根模塊1 1輸入方程系數(shù)輸入方程系數(shù)2 2求解求解3 3打印方程的解打印方程的解順序內(nèi)聚示例順序內(nèi)聚示例3)通信內(nèi)聚通信內(nèi)聚(Communicational Cohesion) 如果一個模塊中所有處理元素都使用同一個如果一個模塊中所有處理元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù),稱為通輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù),稱為通信內(nèi)聚。信內(nèi)聚。 如圖,模塊如圖,模塊A的處理單元將根據(jù)同一個數(shù)的處理單元將根據(jù)同一個數(shù)據(jù)文件據(jù)文件FILE的數(shù)據(jù)產(chǎn)生不同的表格,因此它的數(shù)據(jù)產(chǎn)生不同的表格,因此它存在通信內(nèi)聚。存在通信內(nèi)聚。 通

42、信內(nèi)聚有時也稱為數(shù)據(jù)內(nèi)聚。通信內(nèi)聚有時也稱為數(shù)據(jù)內(nèi)聚。A從文件從文件FILE中讀出數(shù)據(jù)中讀出數(shù)據(jù)1.由數(shù)據(jù)產(chǎn)生報表由數(shù)據(jù)產(chǎn)生報表A2.由數(shù)據(jù)產(chǎn)生報表由數(shù)據(jù)產(chǎn)生報表B通信內(nèi)聚示例通信內(nèi)聚示例4)過程內(nèi)聚過程內(nèi)聚(Procedural Cohesion) 如果一個模塊內(nèi)的處理元素是相關的,而如果一個模塊內(nèi)的處理元素是相關的,而且必須以特定的次序執(zhí)行,稱為過程內(nèi)聚。且必須以特定的次序執(zhí)行,稱為過程內(nèi)聚。 過程內(nèi)聚與順序內(nèi)聚的區(qū)別是:過程內(nèi)聚與順序內(nèi)聚的區(qū)別是: 順序內(nèi)聚中是數(shù)據(jù)流從一個處理單元流到順序內(nèi)聚中是數(shù)據(jù)流從一個處理單元流到另一個處理單元,而過程內(nèi)聚是控制流從一個另一個處理單元,而過程內(nèi)聚是

43、控制流從一個動作流向另一個動作。動作流向另一個動作。 5)時間內(nèi)聚時間內(nèi)聚(Temporal Cohesion) 如果一個模塊包含的任務必須在同一段時間如果一個模塊包含的任務必須在同一段時間內(nèi)執(zhí)行,稱為時間內(nèi)聚。也稱為瞬時內(nèi)聚。內(nèi)執(zhí)行,稱為時間內(nèi)聚。也稱為瞬時內(nèi)聚。 例如,完成各種初始化工作的模塊,或者處理故障的模例如,完成各種初始化工作的模塊,或者處理故障的模塊都存在時間內(nèi)聚。塊都存在時間內(nèi)聚。 如圖,在如圖,在“緊急故障處理模塊緊急故障處理模塊”中,中,“關閉文件關閉文件”、“報警報警”、“保留現(xiàn)場保留現(xiàn)場”等任務都必須無中斷地同時處理。等任務都必須無中斷地同時處理。緊急故障處理緊急故障處

44、理模塊模塊1關閉文件關閉文件2報警報警3保留現(xiàn)場保留現(xiàn)場時間內(nèi)聚示例時間內(nèi)聚示例6)邏輯內(nèi)聚邏輯內(nèi)聚(Logical Cohesion) 如果模塊完成的任務在邏輯上屬于相同或如果模塊完成的任務在邏輯上屬于相同或相似的一類,稱為邏輯內(nèi)聚。相似的一類,稱為邏輯內(nèi)聚。 如圖,如圖,A、B、C模塊合并成模塊合并成ABC模塊之后,模塊之后,ABC模塊就是邏輯內(nèi)聚模塊。模塊就是邏輯內(nèi)聚模塊。 XYZABCXYZABC合并合并邏輯內(nèi)聚示例邏輯內(nèi)聚示例 對邏輯內(nèi)聚模塊的調(diào)用,常常需要有一個功能對邏輯內(nèi)聚模塊的調(diào)用,常常需要有一個功能開關,由上層調(diào)用模塊向它發(fā)出一個控制信號,開關,由上層調(diào)用模塊向它發(fā)出一個控制

45、信號,在多個關聯(lián)性功能中選擇執(zhí)行某一個功能。在多個關聯(lián)性功能中選擇執(zhí)行某一個功能。 這種內(nèi)聚較差,增加了模塊之間的聯(lián)系,不易這種內(nèi)聚較差,增加了模塊之間的聯(lián)系,不易修改。修改。 7)偶然內(nèi)聚偶然內(nèi)聚(Coincidental Cohesion) 如果一個模塊由完成若干毫無關系的功能如果一個模塊由完成若干毫無關系的功能處理元素偶然組合在一起的,就叫偶然內(nèi)聚。處理元素偶然組合在一起的,就叫偶然內(nèi)聚。 偶然內(nèi)聚是最差的一種內(nèi)聚。偶然內(nèi)聚是最差的一種內(nèi)聚。 常犯這種錯誤的一種情況是:有時在寫完常犯這種錯誤的一種情況是:有時在寫完程序后,發(fā)現(xiàn)一組語句在多處出現(xiàn),于是為程序后,發(fā)現(xiàn)一組語句在多處出現(xiàn),于是

46、為了節(jié)省空間而將這些語句作為一個模塊設計,了節(jié)省空間而將這些語句作為一個模塊設計,就出現(xiàn)偶然內(nèi)聚。就出現(xiàn)偶然內(nèi)聚。 如圖,模塊如圖,模塊A、B、C出出現(xiàn)公共代碼段現(xiàn)公共代碼段W,于是將于是將W獨立成一個模塊,而獨立成一個模塊,而W中這中這些語句并沒有任何聯(lián)系。些語句并沒有任何聯(lián)系。 如果在測試中發(fā)現(xiàn)模塊如果在測試中發(fā)現(xiàn)模塊A不需要做不需要做“X=Y+Z”,而應而應該做該做“X=Y*Z”,此時對此時對W的維護就很困難了。的維護就很困難了。ABCW模塊模塊X=Y+ZGET CARDIF I=5 THEN E=0偶然內(nèi)聚示例偶然內(nèi)聚示例 軟件設計中應該:軟件設計中應該:力求做到高內(nèi)聚力求做到高內(nèi)聚,

47、盡量少用中內(nèi)盡量少用中內(nèi)聚,不用低內(nèi)聚聚,不用低內(nèi)聚。 5.3 啟發(fā)式規(guī)則啟發(fā)式規(guī)則 1. 改進軟件結(jié)構(gòu)提高模塊獨立性改進軟件結(jié)構(gòu)提高模塊獨立性2.模塊規(guī)模應該適中模塊規(guī)模應該適中 3. 深度、寬度、扇出和扇入都應適當深度、寬度、扇出和扇入都應適當 深度深度:軟件結(jié)構(gòu)中控制的層數(shù);:軟件結(jié)構(gòu)中控制的層數(shù); 寬度寬度:軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值;:軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值; 扇出扇出:一個模塊直接控制(調(diào)用)其它模塊的數(shù)目;:一個模塊直接控制(調(diào)用)其它模塊的數(shù)目; 扇入扇入:一個模塊被其它模塊調(diào)用的數(shù)目。:一個模塊被其它模塊調(diào)用的數(shù)目。 正文加工正文加工系統(tǒng)系統(tǒng)輸

48、入輸入輸出輸出編輯編輯加標題加標題存儲存儲檢索檢索編目錄編目錄格式化格式化添加添加刪除刪除插入插入修改修改合并合并列表列表對扇出、扇入過大的改進:對扇出、扇入過大的改進: (a)對扇入過大的改進對扇入過大的改進(b)對扇出過大的改進對扇出過大的改進4. . 模塊的作用域應該在控制域之內(nèi)模塊的作用域應該在控制域之內(nèi) MAGBCEDF圖圖5.2 模塊的作用域和控制域模塊的作用域和控制域作用域:受該模塊內(nèi)一個判定影響的所有模塊的集合。作用域:受該模塊內(nèi)一個判定影響的所有模塊的集合??刂朴颍耗K本身以及所有從屬于它的模塊的集合??刂朴颍耗K本身以及所有從屬于它的模塊的集合。 如:如:QUAD-ROOT

49、(TBL,X) 求一元二次方程的根的模塊,其中求一元二次方程的根的模塊,其中TBL,X都為數(shù)組,分別代表方程的系數(shù)和方程的根。都為數(shù)組,分別代表方程的系數(shù)和方程的根。 應該使接口更簡單,如:應該使接口更簡單,如: QUAD-ROOT(A,B,C,ROOT1,ROOT2) A、B、C是方程的系數(shù),是方程的系數(shù),ROOT1,ROOT2是方程的根。是方程的根。 5. 力爭降低模塊接口的復雜度力爭降低模塊接口的復雜度6.設計單入口、單出口的模塊設計單入口、單出口的模塊 7.模塊功能應該可以預測模塊功能應該可以預測 5.4 圖形工具圖形工具5.4.1 層次圖和層次圖和HIPO圖圖 正文加工正文加工系統(tǒng)系

50、統(tǒng)輸入輸入輸出輸出編輯編輯加標題加標題存儲存儲檢索檢索編目錄編目錄格式化格式化添加添加刪除刪除插入插入修改修改合并合并列表列表圖圖5.3 正文加工系統(tǒng)的層次圖正文加工系統(tǒng)的層次圖正文加工正文加工系統(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圖是:圖是:“層次圖輸入層次圖輸入/處理處理/輸出圖輸出圖”5.4.2 結(jié)構(gòu)圖結(jié)構(gòu)圖 產(chǎn)生最佳解產(chǎn)生最佳解得到好輸入得到好輸入計

51、算最佳解計算最佳解輸出結(jié)果輸出結(jié)果讀輸入讀輸入編輯輸入編輯輸入結(jié)果格式化結(jié)果格式化顯示結(jié)果顯示結(jié)果圖圖4.5 結(jié)構(gòu)圖的例子結(jié)構(gòu)圖的例子產(chǎn)生最佳解的一般結(jié)構(gòu)產(chǎn)生最佳解的一般結(jié)構(gòu)MAB圖圖5.6 判定為真時調(diào)用判定為真時調(diào)用A,為假時調(diào)用為假時調(diào)用BMABC圖圖5.7 模塊模塊M循環(huán)調(diào)循環(huán)調(diào)用模塊用模塊A、B、C5.5 面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法 面向數(shù)據(jù)流設計(面向數(shù)據(jù)流設計(Data Flow-Oriented Design,DFOD)是與數(shù)據(jù)流分析(是與數(shù)據(jù)流分析(DFA)對應對應的結(jié)構(gòu)化軟件設計技術。的結(jié)構(gòu)化軟件設計技術。 面向數(shù)據(jù)流的設計將得到以數(shù)據(jù)流圖為基礎面向數(shù)據(jù)流的設

52、計將得到以數(shù)據(jù)流圖為基礎的的軟件模塊結(jié)構(gòu)圖軟件模塊結(jié)構(gòu)圖。 數(shù)據(jù)流可以分為兩種類型:數(shù)據(jù)流可以分為兩種類型: 1)變換型數(shù)據(jù)流)變換型數(shù)據(jù)流 2)事務型數(shù)據(jù)流)事務型數(shù)據(jù)流 5.5.1 變換流與事務流變換流與事務流一、一、變換流變換流 具有較明確的輸入、變換(或稱主加工)和輸具有較明確的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。 如圖所示,該變換中心可以理解為數(shù)據(jù)的加工如圖所示,該變換中心可以理解為數(shù)據(jù)的加工和處理程序。和處理程序。 讀入原讀入原始數(shù)據(jù)始數(shù)據(jù)校驗原校驗原始數(shù)據(jù)始數(shù)據(jù)計算最計算最優(yōu)結(jié)果優(yōu)結(jié)果編輯打印編輯打印最優(yōu)結(jié)果最優(yōu)結(jié)果

53、輸入輸入變換中心變換中心輸出輸出 事務型數(shù)據(jù)流圖中存在一個事務中心(也就是數(shù)據(jù)處事務型數(shù)據(jù)流圖中存在一個事務中心(也就是數(shù)據(jù)處理、加工中心),它將輸入分離成若干個發(fā)散的數(shù)據(jù)流,理、加工中心),它將輸入分離成若干個發(fā)散的數(shù)據(jù)流,形成許多活動路徑,并根據(jù)輸入值選擇其中一條路徑。形成許多活動路徑,并根據(jù)輸入值選擇其中一條路徑。要求類要求類別處理別處理分房處理分房處理調(diào)房處理調(diào)房處理退房處理退房處理住房要求住房要求事務中心事務中心活動路徑活動路徑 二、二、事務流事務流 通常,一個實際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務型通常,一個實際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務型兩種類型的混合體。兩種類型的混合體。 如圖所示

54、,中間的子塊屬事務型數(shù)據(jù)流,如果把中如圖所示,中間的子塊屬事務型數(shù)據(jù)流,如果把中間子塊視為一個處理整體的話,整個程序?qū)僮儞Q型程序。間子塊視為一個處理整體的話,整個程序?qū)僮儞Q型程序。 A(事務型,(事務型,A為事務中心)為事務中心)變換中心變換中心輸入輸入輸出輸出混合型數(shù)據(jù)流圖混合型數(shù)據(jù)流圖面向數(shù)據(jù)流設計軟件結(jié)構(gòu)的基本步驟有七步:面向數(shù)據(jù)流設計軟件結(jié)構(gòu)的基本步驟有七步: 1)復審并精化數(shù)據(jù)流圖;)復審并精化數(shù)據(jù)流圖; 2)確定數(shù)據(jù)處理流圖的類型;)確定數(shù)據(jù)處理流圖的類型; 3)確定變換中心或事務中心;)確定變換中心或事務中心; 5.5.2 面向數(shù)據(jù)流設計的步驟面向數(shù)據(jù)流設計的步驟4)將數(shù)據(jù)流圖映

55、射成軟件模塊結(jié)構(gòu)圖,設計)將數(shù)據(jù)流圖映射成軟件模塊結(jié)構(gòu)圖,設計出該數(shù)據(jù)流圖對應的第一層模塊結(jié)構(gòu);出該數(shù)據(jù)流圖對應的第一層模塊結(jié)構(gòu);5)基于數(shù)據(jù)流圖逐步分解,設計下層模塊;)基于數(shù)據(jù)流圖逐步分解,設計下層模塊;6)運用模塊設計和優(yōu)化準則優(yōu)化軟件結(jié)構(gòu);)運用模塊設計和優(yōu)化準則優(yōu)化軟件結(jié)構(gòu);7)描述模塊的接口。)描述模塊的接口。復查、精化數(shù)據(jù)流圖復查、精化數(shù)據(jù)流圖類型類型找出事務中心找出事務中心找出變換中心找出變換中心映射成事務結(jié)構(gòu)映射成事務結(jié)構(gòu)映射成變換結(jié)構(gòu)映射成變換結(jié)構(gòu)優(yōu)化軟件模塊結(jié)構(gòu)優(yōu)化軟件模塊結(jié)構(gòu)導出模塊結(jié)構(gòu)導出模塊結(jié)構(gòu)復查復查不滿意不滿意變換變換事務事務變換設計變換設計事務設計事務設計面向

56、數(shù)據(jù)流的設計步驟面向數(shù)據(jù)流的設計步驟 變換設計變換設計就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過程,也稱以變換為中心的設計。的過程,也稱以變換為中心的設計。 5.5.3 變換設計變換設計變換設計的基本方法有兩步:變換設計的基本方法有兩步:1)分解第一層模塊結(jié)構(gòu))分解第一層模塊結(jié)構(gòu) 就是把整個變換分解成輸入控制模塊就是把整個變換分解成輸入控制模塊Ci、輸輸出控制模塊出控制模塊Co和變換中心控制模塊和變換中心控制模塊Ct,由主控由主控模塊控制。模塊控制。 主控模塊主控模塊輸出控制模塊輸出控制模塊Co變換中心控制模塊變換中心控制模塊Ct輸入控制模塊輸入控制模塊C

57、i2)分別設計輸入、輸出和處理的下層模塊結(jié)構(gòu))分別設計輸入、輸出和處理的下層模塊結(jié)構(gòu) 方法是:方法是: 從變換中心邊界向兩側(cè)移動從變換中心邊界向兩側(cè)移動,分別把輸入通,分別把輸入通路和輸出通路的每個處理映射成輸入控制模塊路和輸出通路的每個處理映射成輸入控制模塊Ci和輸出控制模塊和輸出控制模塊Co的下屬模塊。的下屬模塊。 變換中心的下層模塊,是把每個處理映射成變換中心的下層模塊,是把每個處理映射成變換中心控制模塊變換中心控制模塊Ct的一個直接下屬模塊。的一個直接下屬模塊。 ABCDFEGHIJK變換中心變換中心輸入輸入輸出輸出主控模塊主控模塊輸出控制模塊輸出控制模塊Co變換中心控制模塊變換中心控

58、制模塊Ct輸入控制模塊輸入控制模塊CiDCBAEFGIHJK 事務設計事務設計就是從事務型數(shù)據(jù)流圖映射出軟件模塊結(jié)就是從事務型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過程,也稱為以事務為中心的設計。構(gòu)的過程,也稱為以事務為中心的設計。 5.5.4 事務設計事務設計事務設計的基本方法有兩步:事務設計的基本方法有兩步: 1)建立主控模塊、接收輸入類型分析模塊和事務)建立主控模塊、接收輸入類型分析模塊和事務調(diào)度模塊;調(diào)度模塊;主模塊主模塊調(diào)度調(diào)度輸入類型分析輸入類型分析2)分別設計輸入類型分析模塊和調(diào)度模塊的)分別設計輸入類型分析模塊和調(diào)度模塊的下層模塊結(jié)構(gòu)。下層模塊結(jié)構(gòu)。 方法是:將輸出的每條通路作為調(diào)度模塊

59、方法是:將輸出的每條通路作為調(diào)度模塊的一個判斷分支,而輸入類型分析模塊的下層的一個判斷分支,而輸入類型分析模塊的下層模塊與變換設計類似。模塊與變換設計類似。 I2I3I1TCA1B1C1A2B2C2事務中心事務中心主模塊主模塊調(diào)度調(diào)度輸入類型分析輸入類型分析I1I3I2A1A2B1B2C1C2第第5章小結(jié)章小結(jié) 概要設計說明書概要設計說明書 該說明書是概要實際階段的工作成果,它應說明該說明書是概要實際階段的工作成果,它應說明功能分配、模塊劃分、程序的總體結(jié)構(gòu)、輸入輸出功能分配、模塊劃分、程序的總體結(jié)構(gòu)、輸入輸出以及接口設計、運行設計、數(shù)據(jù)結(jié)構(gòu)設計和出錯處以及接口設計、運行設計、數(shù)據(jù)結(jié)構(gòu)設計和出

60、錯處理設計等,為詳細設計提供基礎。理設計等,為詳細設計提供基礎。第第6章:詳細設計章:詳細設計 目標目標:確定如何具體實現(xiàn)所要求的系統(tǒng)。:確定如何具體實現(xiàn)所要求的系統(tǒng)。 不是具體編寫程序,而是設計程序的不是具體編寫程序,而是設計程序的“藍圖藍圖”。 詳細設計的結(jié)果決定最終程序代碼的詳細設計的結(jié)果決定最終程序代碼的質(zhì)量。質(zhì)量。6.1 結(jié)構(gòu)程序設計結(jié)構(gòu)程序設計 E.W.Dijkstra 最早提出結(jié)構(gòu)程序設計:程序質(zhì)量與最早提出結(jié)構(gòu)程序設計:程序質(zhì)量與程序中包含的程序中包含的Goto語句的數(shù)量成反比(語句的數(shù)量成反比(1965)。)。 1966 ,Bohm, Jacopini ,證明了只用,證明了只

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論