軟件工程--結(jié)構(gòu)化軟件開發(fā)--需求分析和概要設(shè)計(jì).ppt_第1頁(yè)
軟件工程--結(jié)構(gòu)化軟件開發(fā)--需求分析和概要設(shè)計(jì).ppt_第2頁(yè)
軟件工程--結(jié)構(gòu)化軟件開發(fā)--需求分析和概要設(shè)計(jì).ppt_第3頁(yè)
軟件工程--結(jié)構(gòu)化軟件開發(fā)--需求分析和概要設(shè)計(jì).ppt_第4頁(yè)
軟件工程--結(jié)構(gòu)化軟件開發(fā)--需求分析和概要設(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩69頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、6.2.1 需求分析 6.2.2 軟件設(shè)計(jì) 6.2.3 軟件編碼 6.2.4 軟件測(cè)試,6.2 結(jié)構(gòu)化軟件開發(fā)方法,1)需求分析:弄清用戶對(duì)軟件系統(tǒng)的全部需求并用需求說(shuō)明書的形式準(zhǔn)確地表達(dá)出來(lái)。需求說(shuō)明通常由數(shù)據(jù)流圖、數(shù)據(jù)字典和加工說(shuō)明等一整套文檔組成。 2)總體設(shè)計(jì):主要任務(wù)是建立軟件的總體結(jié)構(gòu),畫出有模塊組成的軟件結(jié)構(gòu)圖或?qū)哟螆D。 3)詳細(xì)設(shè)計(jì):針對(duì)單個(gè)模塊的設(shè)計(jì),目的是確定模塊內(nèi)部的過(guò)程結(jié)構(gòu)。要求為每一個(gè)模塊提供一個(gè)模塊過(guò)程性描述。詳細(xì)說(shuō)明實(shí)現(xiàn)該功能的算法和數(shù)據(jù)結(jié)構(gòu),又稱算法設(shè)計(jì)。 4)編碼:按照選定的高級(jí)語(yǔ)言,寫出源程序。 5)測(cè)試:是保證軟件質(zhì)量的重要手段。測(cè)試階段的文檔成為測(cè)試報(bào)告

2、,包括測(cè)試計(jì)劃、測(cè)試用例與測(cè)試結(jié)果等內(nèi)容。,6.2 結(jié)構(gòu)化軟件開發(fā)方法,6.2.1 需求分析,任務(wù): -解決做什么的問(wèn)題 軟件需求分析的目標(biāo)是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的約束和軟件同其它系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其它有效性需求。 需求分析階段研究的對(duì)象是軟件項(xiàng)目的用戶要求。一方面,必須全面理解用戶的各項(xiàng)要求,但又不能全盤接受所有的要求,另一方面,要準(zhǔn)確地表達(dá)被接受的用戶要求。只有經(jīng)過(guò)確切描述的軟件需求才能成為軟件設(shè)計(jì)的基礎(chǔ)。 特點(diǎn): 準(zhǔn)確性和一致性。是連接計(jì)劃時(shí)期和開發(fā)時(shí)期的橋梁,也是軟件設(shè)計(jì)的依據(jù)。 清晰性和沒(méi)有二義性。 直觀、易讀和易于修改。,需求分析的過(guò)程,1. 問(wèn)題識(shí)別

3、 2. 問(wèn)題分析和方案的綜合 3. 編制需求分析階段的文檔 4. 需求分析評(píng)審,1.問(wèn)題的識(shí)別軟件做什么和做到什么程度 功能需求 (軟件在職能上應(yīng)做什么) 性能需求 (速度,容量等) 環(huán)境需求(硬件和軟件支持要求和操作人員素質(zhì)要求) 可靠性需求 (不發(fā)生故障的概率) 安全保密的需求 (拒絕非法使用等) 用戶界面的需求 (不同級(jí)別用戶使用軟件的界面要求) 資源使用需求 (運(yùn)行時(shí)需要的計(jì)算機(jī)資源,開發(fā)過(guò)程中需要的人力 資源和開發(fā)環(huán)境等軟硬件支持) 軟件成本與開發(fā)進(jìn)度需求 (費(fèi)用,開發(fā)時(shí)間計(jì)劃) 預(yù)先估計(jì)未來(lái)可擴(kuò)展需求 (升級(jí)修改),2. 分析和綜合 根據(jù)信息流和信息結(jié)構(gòu),逐步細(xì)化所有的軟件功能,找

4、出系統(tǒng)元素間的聯(lián)系、接口特性和設(shè)計(jì)上的約束。 對(duì)細(xì)化出的功能作出取舍,綜合出系統(tǒng)解決方案,給出目標(biāo)系統(tǒng)詳細(xì)邏輯模型。 3. 編制需求分析階段的文檔 把確定下的需求清晰準(zhǔn)確地描述,得到需求分析說(shuō)明書。,需求分析常用工具,數(shù)據(jù)流圖(DFD) 軟件系統(tǒng)邏輯模型的一種圖形表示,描述總體要求 數(shù)據(jù)詞典 描述數(shù)據(jù)細(xì)節(jié) 加工說(shuō)明 描述詳細(xì)數(shù)據(jù)處理要求,為了表達(dá)數(shù)據(jù)處理過(guò)程的數(shù)據(jù)加工情況,用一個(gè)數(shù)據(jù)流圖是不夠的。 稍微復(fù)雜的實(shí)際問(wèn)題,在數(shù)據(jù)流圖上常常出現(xiàn)十幾個(gè)甚至幾十個(gè)加工。這樣的數(shù)據(jù)流圖看起來(lái)很不清楚。 層次結(jié)構(gòu)的數(shù)據(jù)流圖能很好地解決這一問(wèn)題。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,并以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)

5、系,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)。,分層數(shù)據(jù)流圖,概括地說(shuō),就是自外向內(nèi),自頂向下,逐層細(xì)化,完善求精。檢查和修改的原則為: 數(shù)據(jù)流圖上所有圖形符號(hào)只限于前述四種基本圖形元素。 頂層數(shù)據(jù)流圖必須包括前述四種基本元素,缺一不可。 頂層數(shù)據(jù)流圖上的數(shù)據(jù)流必須封閉在外部實(shí)體之間。 每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流。 在數(shù)據(jù)流圖中,需按層給加工框編號(hào)。編號(hào)表明該加工處在哪一層,以及上下層的父圖與子圖的對(duì)應(yīng)關(guān)系。 規(guī)定任何一個(gè)數(shù)據(jù)流子圖必須與它上一層的一個(gè)加工對(duì)應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致。此即父圖與子圖的平衡。 可以在數(shù)據(jù)流圖中加入物質(zhì)流,幫助用戶理解數(shù)據(jù)流圖。 圖上每個(gè)元素

6、都必須有名字。數(shù)據(jù)流和數(shù)據(jù)文件的名字應(yīng)當(dāng)是“名詞”或“名詞性短語(yǔ)”,表明流動(dòng)的數(shù)據(jù)是什么。加工的名字應(yīng)當(dāng)是“名詞賓語(yǔ)”,表明做什么事情。 數(shù)據(jù)流圖中不可夾帶控制流。 初畫時(shí)可以忽略瑣碎的細(xì)節(jié),以集中精力于主要數(shù)據(jù)流。,數(shù)據(jù)流圖繪制原則,1 定義: 數(shù)據(jù)詞典精確地、嚴(yán)格地定義了每一個(gè)與系統(tǒng)相關(guān)的數(shù)據(jù)元素,并以字典式順序?qū)⑺鼈兘M織起來(lái),使得用戶和分析員對(duì)所有的輸入、輸出、存儲(chǔ)成分和中間計(jì)算有共同的理解。,數(shù)據(jù)詞典,2 詞條描述 在數(shù)據(jù)詞典的每一個(gè)詞條中應(yīng)包含以下信息: 名稱:數(shù)據(jù)對(duì)象或控制項(xiàng)、數(shù)據(jù)存儲(chǔ)或外部實(shí)體的名字。 別名或編號(hào)。 分類:數(shù)據(jù)對(duì)象?加工?數(shù)據(jù)流?數(shù)據(jù)文件?外部實(shí)體?控制項(xiàng)(事件狀

7、態(tài))? 描述:描述內(nèi)容或數(shù)據(jù)結(jié)構(gòu)等。 何處使用:使用該詞條(數(shù)據(jù)或控制項(xiàng))的加工。 3 內(nèi)容描述 在數(shù)據(jù)詞典的編制中,分析員最常用的描述內(nèi)容或數(shù)據(jù)結(jié)構(gòu)的符號(hào)如表所示。,數(shù)據(jù)詞典,數(shù)據(jù)詞典,存折戶名所號(hào)帳號(hào)開戶日性質(zhì)(印密)1存取行50 戶名2字母24 所號(hào)“001”.“999” 注:儲(chǔ)蓄所編碼,規(guī)定三位數(shù)字 帳號(hào)“00000001”.“99999999” 注:帳號(hào)規(guī)定由八位數(shù)字組成 開戶日年月日 性質(zhì)“1”.“6” 注:“1”表示普通戶,“5”表示工資戶等 印密“0” 注:印密在存折上不顯示 存取行日期(摘要)支出存入余額操作復(fù)核 日期年月日 字母“a”.“z”|“A”.“Z”,數(shù)據(jù)詞典,4加

8、工: 加工規(guī)格說(shuō)明用來(lái)說(shuō)明DFD中的數(shù)據(jù)加工的加工細(xì)節(jié)。 加工規(guī)格說(shuō)明描述了數(shù)據(jù)加工的輸入,實(shí)現(xiàn)加工的算法以及產(chǎn)生的輸出。 加工規(guī)格說(shuō)明指明了加工(功能)的約束和限制,與加工相關(guān)的性能要求,以及影響加工的實(shí)現(xiàn)方式的設(shè)計(jì)約束。 注意,寫加工規(guī)格說(shuō)明的主要目的是要表達(dá)“做什么”,而不是“怎樣做”。 應(yīng)描述數(shù)據(jù)加工實(shí)現(xiàn)加工的策略而不是實(shí)現(xiàn)加工的細(xì)節(jié)。 目前用于寫加工規(guī)格說(shuō)明的工具有結(jié)構(gòu)化語(yǔ)言、判定表和判定樹。,數(shù)據(jù)詞典,a結(jié)構(gòu)化語(yǔ)言: 自然語(yǔ)言加上結(jié)構(gòu)化形式化的語(yǔ)言。是一種介于自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)言之間的語(yǔ)言。 b判定樹 是判定表的圖形表示。 c判定表 采用表格化的形式,適于表達(dá)含有復(fù)雜判斷的加工邏

9、輯。 d加工說(shuō)明卡片 加工說(shuō)明可以像字典條目一樣記載在卡片上,加工規(guī)格說(shuō)明,結(jié)構(gòu)化英語(yǔ) IF (條件語(yǔ)句集合) THEN 滿足條件處理過(guò)程語(yǔ)句集合 ELSE 不滿足條件處理過(guò)程語(yǔ)句集合 ENDIF WHILE (條件語(yǔ)句集合)DO 處理過(guò)程語(yǔ)句集合 ENDDO REPEAT 處理過(guò)程語(yǔ)句集合 UNTIL (條件語(yǔ)句集合) CASE - OF,加工邏輯說(shuō)明,IF 發(fā)貨單金額超過(guò)500元 THEN IF 欠款超過(guò)60天 THEN 拒絕批準(zhǔn) ELSE 欠款未超期 發(fā)批準(zhǔn)書及發(fā)貨單 ENDIF ELSE 發(fā)貨單金額不超過(guò)500元 IF 欠款超過(guò)60天 THEN 發(fā)批準(zhǔn)書、發(fā)貨單及賒欠報(bào)告 ELSE 欠

10、款未超期 發(fā)批準(zhǔn)書及發(fā)貨單 ENDIF ENDIF,判定樹,判定表,需求分析階段生成的文檔 軟件需求規(guī)格說(shuō)明 軟件簡(jiǎn)要使用說(shuō)明書,附錄:軟件需求規(guī)格說(shuō)明模板,a. 引言 a.1目的 a.2 文檔約定 a.3 預(yù)期的讀者和閱讀建議 a.4 產(chǎn)品的范圍 a.5 參考文獻(xiàn),b. 綜合描述 b.1 產(chǎn)品的前景 b.2 產(chǎn)品的功能 b.3 用戶類和特征 b.4 運(yùn)行環(huán)境 b.5 設(shè)計(jì)和實(shí)現(xiàn)上的限制 b.6 假設(shè)和依賴,c. 外部接口需求 c.1 用戶界面 c.2 硬件接口 c.3 軟件接口 c.4 通信接口,d. 系統(tǒng)特性 d.1 說(shuō)明和優(yōu)先級(jí) d.2 激勵(lì)/響應(yīng)序列 d.3 功能需求,e. 其它非功能

11、需求 e.1 性能需求 e.2 安全設(shè)施需求 e.3 安全性需求 e.4 軟件質(zhì)量屬性 e.5 業(yè)務(wù)規(guī)則 e.6 用戶文檔,f. 其它需求 g. 進(jìn)度要求,任何工程項(xiàng)目在施工之前,總要先完成設(shè)計(jì)。 設(shè)計(jì)是開發(fā)活動(dòng)的第一步。 設(shè)計(jì)定義為: 應(yīng)用各種技術(shù)和原理,對(duì)設(shè)備、過(guò)程或系統(tǒng)作出足夠詳細(xì)的定義,使之能夠在物理上得以實(shí)現(xiàn)。 軟件的設(shè)計(jì)與其它領(lǐng)域的工程設(shè)計(jì)一樣,也需要有好的方法、好的分析策賂。 軟件設(shè)計(jì)不僅僅是程序設(shè)計(jì)或者編制程序。 程序設(shè)計(jì)只是軟件設(shè)計(jì)的實(shí)現(xiàn)。 軟件設(shè)計(jì)質(zhì)量決定軟件質(zhì)量 軟件設(shè)計(jì)的目標(biāo)和任務(wù) 軟件需求確定之后,進(jìn)入開發(fā)階段。 開發(fā)階段由三個(gè)互相關(guān)聯(lián)的步驟組成: 設(shè)計(jì) 編碼 測(cè)試,

12、6.2.2 軟件設(shè)計(jì)概述,軟件設(shè)計(jì)在開發(fā)階段中的重要性 軟件需求分析階段已經(jīng)完全弄清楚了軟件的各種需求,解決了要讓所開發(fā)的軟件“做什么”的問(wèn)題,并已在軟件需求說(shuō)明書詳盡和充分地闡明了需求。 開發(fā)階段要實(shí)現(xiàn)軟件的需求,即要著手解決“怎么做”的問(wèn)題。 在設(shè)計(jì)步驟中,根據(jù)軟件的功能和性能需求采用某種設(shè)計(jì)方法進(jìn)行 數(shù)據(jù)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和過(guò)程設(shè)計(jì)。,數(shù)據(jù)設(shè)計(jì) 側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義。 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 定義軟件系統(tǒng)各主要成份之間的關(guān)系。 過(guò)程設(shè)計(jì) 把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過(guò)程性描述。在編碼步驟中根據(jù)這種過(guò)程性描述變成源程序代碼然后通過(guò)測(cè)試最終得到完整有效的軟件。,軟件設(shè)計(jì)任務(wù) 軟件設(shè)計(jì)是一個(gè)把軟件需求變換成軟

13、件表示的過(guò)程。 從工程管理的角度來(lái)看軟件設(shè)計(jì)分兩步完成。 概要設(shè)計(jì):將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。 詳細(xì)設(shè)計(jì):通過(guò)對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。 在概要設(shè)計(jì)過(guò)程中需要完成的工作: 1) 制定規(guī)范 在進(jìn)入軟件開發(fā)階段之初,首先應(yīng)為軟件開發(fā)組制定在設(shè)計(jì)時(shí)應(yīng)該共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。它包括: 閱讀和理解軟件需求說(shuō)明書,在給定預(yù)算范圍內(nèi)和技術(shù)現(xiàn)狀下確認(rèn)用戶要求能否實(shí)現(xiàn)。從而確定設(shè)計(jì)的目標(biāo),以及它們的優(yōu)先順序。 根據(jù)目標(biāo)確定最合適的設(shè)計(jì)方法。 規(guī)定設(shè)計(jì)文檔的編制標(biāo)準(zhǔn),包括文檔體系、用紙及樣式、記述的詳細(xì)程度、圖形的畫法等。 規(guī)定編碼的信息形式(代碼體系

14、)、與硬件操作系統(tǒng)的接口規(guī)約、命名規(guī)則等。,2) 軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì) 在需求分析階段,已經(jīng)從系統(tǒng)開發(fā)的角度出發(fā),把系統(tǒng)按功能逐次分割成層次結(jié)構(gòu)。 在設(shè)計(jì)階段,基于這個(gè)功能的層次結(jié)構(gòu)把各個(gè)部分組合起來(lái)成為系統(tǒng)。 包括: 采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)。 確定每個(gè)模塊的功能,建立與已確定的軟件需求的對(duì)應(yīng)關(guān)系。 確定模塊間的調(diào)用關(guān)系。 確定模塊間的接口,即模塊間傳遞的信息。設(shè)計(jì)接口的信息結(jié)構(gòu)。 評(píng)估模塊劃分的質(zhì)量及導(dǎo)出模塊結(jié)構(gòu)的規(guī)則。,處理方式設(shè)計(jì) 確定為實(shí)現(xiàn)軟件系統(tǒng)的功能需求所必需的算法評(píng)估算法的性能。 確定為滿足軟件系統(tǒng)性能需求所必需的算法和模塊間的控制方式(性

15、能設(shè)計(jì))。性能主要是指周轉(zhuǎn)時(shí)間、響應(yīng)時(shí)間、吞吐量、精度。 確定外部信號(hào)的接收發(fā)送形式。,4)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫(kù)的模式、子模式,進(jìn)行數(shù)據(jù)完整和安全性的設(shè)計(jì)。包括: 確定輸入、輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)。 結(jié)合算法設(shè)計(jì),確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作。 確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包)。限制和確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍。 若需要與操作系統(tǒng)或調(diào)度程序接口所必需的控制表等數(shù)據(jù)時(shí),確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則。 數(shù)據(jù)的保護(hù)性設(shè)計(jì) 防衛(wèi)性設(shè)計(jì):在軟件設(shè)計(jì)中插入自動(dòng)檢錯(cuò)、報(bào)錯(cuò)和糾錯(cuò)的功能。 致性設(shè)計(jì):保證軟件運(yùn)行過(guò)程中使用的數(shù)據(jù)的類型和取值范

16、圍不變。 在并發(fā)處理過(guò)程中使用封鎖和解除封鎖機(jī)制保持?jǐn)?shù)據(jù)不被破壞。 冗余性設(shè)計(jì):針對(duì)同一問(wèn)題,由兩個(gè)開發(fā)者采用不同的程序設(shè)計(jì)風(fēng)格、不同的算法設(shè)計(jì)軟件,當(dāng)兩者運(yùn)行結(jié)果之差不在允許范圍內(nèi)時(shí),利用檢錯(cuò)系統(tǒng)予以糾正,或使用表決技術(shù)決定一個(gè)正確的結(jié)果,以保證軟件容錯(cuò)。,5) 可靠性設(shè)計(jì) 可靠性設(shè)計(jì)也叫質(zhì)量設(shè)計(jì)。在軟件開發(fā)的一開始就要確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于修改和易于維護(hù)。 6) 編寫概要設(shè)計(jì)階段的文檔 概要設(shè)計(jì)階段完成時(shí)應(yīng)編寫以下文檔: 概要設(shè)計(jì)說(shuō)明書: 給出系統(tǒng)目標(biāo)、總體設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、處理方式設(shè)計(jì)、出錯(cuò)設(shè)計(jì)等。 數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書: 給出所使用的數(shù)據(jù)庫(kù)簡(jiǎn)介、數(shù)據(jù)模式設(shè)

17、計(jì)、物理設(shè)計(jì)等。 用戶手冊(cè): 對(duì)需求分析階段編寫的初步的用戶手冊(cè)進(jìn)行審定。 初步的測(cè)試計(jì)劃: 對(duì)測(cè)試的策略、方法和步驟提出明確的要求。,7) 概要設(shè)計(jì)評(píng)審 在以上幾項(xiàng)工作完成之后,應(yīng)當(dāng)組織對(duì)概要設(shè)計(jì)工作的評(píng)審。評(píng)審的內(nèi)容包括: 可追溯性:即分析該軟件的系統(tǒng)結(jié)構(gòu)、子系統(tǒng)結(jié)構(gòu),確認(rèn)該軟件設(shè)計(jì)是否覆蓋了所有已確定的軟件需求,軟件每一成份是否可追溯到某一項(xiàng)需求。 接口:分析軟件各部分間的聯(lián)系,確認(rèn)軟件的內(nèi)部與外部接口是否已明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi)。 風(fēng)險(xiǎn):即確認(rèn)該軟件設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時(shí)實(shí)現(xiàn)。 實(shí)用性:即確認(rèn)該軟件設(shè)計(jì)對(duì)于需求的

18、解決方案是否實(shí)用。 技術(shù)清晰度:即確認(rèn)該軟件設(shè)計(jì)是否以一種易于翻譯成代碼的形式表達(dá)。 可維護(hù)性:從軟件維護(hù)角度出發(fā),確認(rèn)該軟件設(shè)計(jì)是否考慮了方便未來(lái)的維護(hù)。 質(zhì)量:即確認(rèn)識(shí)軟件設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征。 各種選擇方案:看是否考慮過(guò)其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么。 限制:評(píng)估對(duì)該軟件的限制是否現(xiàn)實(shí),是否與需求一致。 其它具體問(wèn)題:對(duì)于文檔、可測(cè)試性、設(shè)計(jì)過(guò)程等進(jìn)行評(píng)估。 軟件系統(tǒng)外部特性:如軟件的功能、一部分性能以及用戶的使用特性等。,詳細(xì)設(shè)計(jì)需要完成的工作 確定軟件各組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織。 選定某種過(guò)程的表達(dá)形式來(lái)描述各種算法。 進(jìn)行詳細(xì)設(shè)計(jì)的評(píng)審。,軟件設(shè)計(jì)的

19、最終目標(biāo)是要取得最佳方案 “最佳”在所有候選方案中,根據(jù)節(jié)省開發(fā)費(fèi)用、降低資源消耗、縮短開發(fā)時(shí)間的原則、選擇能夠贏得較高的生產(chǎn)效率、較高的可靠性和可維護(hù)性的方案。 在整個(gè)設(shè)計(jì)的過(guò)程中,各個(gè)時(shí)期的設(shè)計(jì)結(jié)果需要經(jīng)過(guò)一系列的設(shè)計(jì)質(zhì)量的評(píng)審,以便及時(shí)發(fā)現(xiàn)和及時(shí)解決在軟件設(shè)計(jì)中出現(xiàn)的問(wèn)題,防止把問(wèn)題遺留到開發(fā)的后期階段,造成后患。 在評(píng)審以后,必須針對(duì)評(píng)審中發(fā)現(xiàn)的問(wèn)題,對(duì)設(shè)計(jì)的結(jié)果進(jìn)行必要的修改。為了評(píng)價(jià)設(shè)計(jì)質(zhì)量的高低,必須有一個(gè)標(biāo)準(zhǔn)。,軟件結(jié)構(gòu)表明了軟件各個(gè)部件(模塊)的組織情況,它通常是樹狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu),并蘊(yùn)含了在軟件控制上的層次關(guān)系。 軟件結(jié)構(gòu)未表明軟件的某些過(guò)程性特征。比如,軟件的動(dòng)態(tài)特性,在

20、軟件結(jié)構(gòu)中就未明確體現(xiàn)。 軟件的樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu) 由模塊連接而得到的軟件結(jié)構(gòu)最普通的形式就是樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)。在樹狀結(jié)構(gòu)中,位于最上層的根部是頂層模塊,它是程序的主模塊。與其聯(lián)系的有若干下屬模塊,各下層模塊還可以進(jìn)一步引出更下一層的下屬模塊。,6.2.2 軟件設(shè)計(jì)軟件結(jié)構(gòu),用結(jié)構(gòu)圖來(lái)描述軟件系統(tǒng)的體系結(jié)構(gòu) 描述一個(gè)軟件系統(tǒng)由哪些模塊組成,以及模塊之間的調(diào)用關(guān)系 結(jié)構(gòu)圖的基本成分有:模塊、調(diào)用和數(shù)據(jù),6.2.2 軟件設(shè)計(jì)結(jié)構(gòu)圖,模塊(module),模塊是指具有一定功能的可以用模塊名調(diào)用的一組程序語(yǔ)句,如函數(shù)、子程序等 它們是組成程序的基本單元 一個(gè)模塊具有其外部特征和內(nèi)部特征 外部特征包括

21、:模塊的接口(模塊名、輸入/輸出參數(shù)、返回值等)和模塊的功能 內(nèi)部特征包括:模塊的內(nèi)部數(shù)據(jù)和完成其功能的程序代碼,模塊獨(dú)立性 所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其它的模塊的接口是簡(jiǎn)單的,例如,若一個(gè)模塊只具有單一的功能見與其它模塊沒(méi)有太多的聯(lián)系,我們稱此模塊具有模塊獨(dú)立性。 一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性。 模塊間的耦合性 模塊的內(nèi)聚性。 耦合性是模塊之間互相連接的緊密程度的度量。模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨(dú)立性就越弱。 內(nèi)聚性是一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它

22、的內(nèi)聚性就越高,相對(duì)地,它與其它模塊之間的耦合性就會(huì)減低,模塊獨(dú)立性就越強(qiáng)。 獨(dú)立性比較強(qiáng)的模塊應(yīng)是高內(nèi)聚低耦合的模塊。,調(diào)用和數(shù)據(jù),調(diào)用(call):用從一個(gè)模塊指向另一個(gè)模塊的箭頭來(lái)表示,其含義是前者調(diào)用了后者 為了方便,有時(shí)常用直線替代箭頭,此時(shí),表示位于上方的模塊調(diào)用位于下方的模塊 數(shù)據(jù)(data):模塊調(diào)用時(shí)需傳遞的參數(shù)可通過(guò)在調(diào)用箭頭旁附加一個(gè)小箭頭和數(shù)據(jù)名來(lái)表示,結(jié)構(gòu)圖中的輔助符號(hào),D,B,C,A,循環(huán)調(diào)用,遞歸調(diào)用,結(jié)構(gòu)圖的幾個(gè)概念,深度:程序結(jié)構(gòu)圖中控制的層數(shù),如圖所示結(jié)構(gòu)圖的深度是5 寬度:程序結(jié)構(gòu)圖中同一層次上模塊總數(shù)的最大值,例如圖中所示的結(jié)構(gòu)圖的寬度為7 扇出:該模塊

23、直接調(diào)用的模塊數(shù)目。 扇入:能直接調(diào)用該模塊的模塊數(shù)目。,相關(guān)指標(biāo)的含義,深度和寬度在一定程序上反映了程序的規(guī)模和復(fù)雜程度 相對(duì)而言,如果程序結(jié)構(gòu)圖的深度和寬度較大,則說(shuō)明程序的規(guī)模和復(fù)雜程度都較大。 模塊的扇入扇出會(huì)影響結(jié)構(gòu)圖的深度和寬度,例如減少模塊的扇出,可能導(dǎo)致寬度變小而深度增加 一個(gè)模塊的扇出過(guò)大通常意味著該模塊比較復(fù)雜,然而扇出太少,可能導(dǎo)致深度的增加 一般情況,一個(gè)模塊的扇出以39為宜 一個(gè)模塊的扇入表示有多少模塊可直接調(diào)用它,它反映了該模塊的復(fù)用程度,因此模塊的扇入越大越好,啟發(fā)式設(shè)計(jì)策略-1,按照模塊化設(shè)計(jì)原則,相應(yīng)的啟發(fā)式設(shè)計(jì)策略如下: 改造程序結(jié)構(gòu)圖,降低耦合度,提高內(nèi)聚

24、度 避免高扇出,并隨著深度的增加,力求高扇入 避免如圖a那樣的“平鋪”形態(tài),較好的結(jié)構(gòu)圖形態(tài)是如圖b那樣的“橢圓”型,啟發(fā)式設(shè)計(jì)策略-2,模塊的影響范圍應(yīng)限制在該模塊的控制范圍內(nèi),例如下圖中 圖a中,模塊B2的影響范圍(模塊A)不在其控制范圍(模塊B2)內(nèi) 決策控制是在頂層模塊,其影響范圍(A、B2)在控制范圍內(nèi),但從決策控制模塊到被控模塊之間相差多個(gè)層次 c和d較合適,d為最好,啟發(fā)式設(shè)計(jì)策略-3,降低模塊接口的復(fù)雜程度和冗余程度,提高一致性 模塊接口上應(yīng)盡可能傳遞簡(jiǎn)單數(shù)據(jù),而且傳遞的數(shù)據(jù)應(yīng)保持與模塊的功能相一致,即不傳遞與模塊功能無(wú)關(guān)的數(shù)據(jù) 模塊的功能應(yīng)是可預(yù)測(cè)的,避免對(duì)模塊施加過(guò)多的限制

25、 模塊功能可預(yù)測(cè)是指該模塊對(duì)相同的輸入能產(chǎn)生相同的輸出 限制一個(gè)模塊只處理單一的功能,則這個(gè)模塊體現(xiàn)出高內(nèi)聚 盡可能設(shè)計(jì)單入口和單出口的模塊 單入口和單出口的模塊能有效地避免內(nèi)容耦合,結(jié)構(gòu)化設(shè)計(jì)的步驟,建立初始結(jié)構(gòu)圖 將整個(gè)軟件看作一個(gè)大的功能模塊,通過(guò)功能分解不斷將其分解成若干個(gè)較小的功能模塊,直至得到一組不必再分解的模塊(結(jié)構(gòu)圖中的底層模塊) 對(duì)結(jié)構(gòu)圖進(jìn)行改進(jìn) 可根據(jù)設(shè)計(jì)準(zhǔn)則和啟發(fā)式設(shè)計(jì)策略對(duì)初始結(jié)構(gòu)圖進(jìn)行改進(jìn) 書寫設(shè)計(jì)文檔 書寫設(shè)計(jì)規(guī)格說(shuō)明,特別要為每個(gè)模塊書寫模塊的功能、接口、約束和限制等 設(shè)計(jì)評(píng)審,信息隱蔽 如何分解一個(gè)軟件才能得到最佳的模塊組合呢? 采用“信息隱蔽”方法。 信息隱蔽

26、是指每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來(lái)說(shuō)是隱蔽的。也就是說(shuō),模塊中所包含的信息(包括數(shù)據(jù)和過(guò)程)不允許其它不需要這些信息的模塊使用。 通常有效的模塊化可以通過(guò)定義一組相互獨(dú)立的模塊來(lái)實(shí)現(xiàn),這些模塊相互間的通信僅僅使用對(duì)于實(shí)現(xiàn)軟件功能來(lái)說(shuō)是必要的消息。通過(guò)抽象,幫助我們確定組成軟件的過(guò)程(或信息)實(shí)體,而通過(guò)信息隱蔽,則可定義和實(shí)施對(duì)模塊的過(guò)程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。 由于一個(gè)軟件系統(tǒng)在整個(gè)軟件生存期內(nèi)要經(jīng)過(guò)多次修改,所以在劃分模塊時(shí)要采取措施,使得大多數(shù)過(guò)程和數(shù)據(jù)對(duì)軟件的其它部分是隱蔽的。這樣,在將來(lái)修改軟件時(shí)偶然引入錯(cuò)誤所造成的影響就可以局限在一個(gè)或幾個(gè)模塊內(nèi)部,不致波及到軟件的其它部分

27、。,根據(jù)系統(tǒng)的數(shù)據(jù)流進(jìn)行設(shè)計(jì),面向數(shù)據(jù)流的設(shè)計(jì)或者過(guò)程驅(qū)動(dòng)的設(shè)計(jì) 根據(jù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 面向?qū)ο蟮脑O(shè)計(jì) 結(jié)構(gòu)化設(shè)計(jì)方法是基于模塊化、自頂向下細(xì)化、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)技術(shù)基礎(chǔ)發(fā)展起來(lái)的。該方法實(shí)施的要點(diǎn)是: 首先研究、分析數(shù)據(jù)流圖,從軟件的需求規(guī)格說(shuō)明中弄清數(shù)據(jù)流加工的過(guò)程。 然后根據(jù)數(shù)據(jù)流圖決定問(wèn)題的類型。數(shù)據(jù)處理問(wèn)題中典型的類型有兩種:變換型和事務(wù)型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。 由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。 利用啟發(fā)性原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。 修改和補(bǔ)充數(shù)據(jù)詞典。 制定測(cè)試計(jì)劃。 由于該方法的工作與軟件需求分析

28、階段的結(jié)構(gòu)化分析方法相銜接,所以該方法是面 向數(shù)據(jù)流的設(shè)計(jì)方法。,6.2.2 軟件設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì),典型的系統(tǒng)結(jié)構(gòu)形式 結(jié)構(gòu)化設(shè)計(jì)可以很方便地將用數(shù)據(jù)流圖表示的信息轉(zhuǎn)換成程序結(jié)構(gòu)的設(shè)計(jì)描述。 典型的系統(tǒng)結(jié)構(gòu)類型。 1) 在系統(tǒng)結(jié)構(gòu)圖中的模塊 在系統(tǒng)結(jié)構(gòu)圖中,稱不能再分解的底層模塊為原子模塊。如果一個(gè)軟件系統(tǒng),它的全部實(shí)際加工(即數(shù)據(jù)計(jì)算或處理)都由底層的原子模塊來(lái)完成,而其它所有非原子模塊僅僅執(zhí)行控制或協(xié)調(diào)功能,這樣的系統(tǒng)就是完全因子分解的系統(tǒng)。如果系統(tǒng)結(jié)構(gòu)圖是完全因子分解的,就是最好的系統(tǒng)。但實(shí)際上,這只是我們力圖達(dá)到的目標(biāo),大多數(shù)系統(tǒng)做不到完全因子分解。,一般地,在系統(tǒng)結(jié)構(gòu)圖中有4種類型的模

29、塊; (1) 傳入模塊從下屬模塊取得數(shù)據(jù),經(jīng)過(guò)某些處理,再將其結(jié)果傳送給上級(jí)模塊。它傳送的數(shù)據(jù)流叫邏輯輸入數(shù)據(jù)流。 (2) 傳出模塊從上級(jí)模塊獲得數(shù)據(jù)進(jìn)行某些處理,再將其結(jié)果傳送給下屬模塊。它傳送的數(shù)據(jù)流叫作邏輯輸出數(shù)據(jù)流。 (3) 變換模塊也叫加工模塊。它從上級(jí)模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級(jí)模塊。它加工的數(shù)據(jù)流叫作變換數(shù)據(jù)流。大多 數(shù)計(jì)算模塊(原子模塊)屬于這一類。 (4) 協(xié)調(diào)模塊對(duì)所有下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊。在系統(tǒng)的輸入/輸出部分或數(shù)據(jù)加工部分可以找到這樣的模塊。在一個(gè)好的系統(tǒng)結(jié)構(gòu)圖中,協(xié)調(diào)模 塊應(yīng)在較高層出現(xiàn)。 在實(shí)際系統(tǒng)中有些模塊屬于上述某一類型,有

30、些模塊是上述各種類型的組合,,2) 變換型系統(tǒng)結(jié)構(gòu)圖 變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。這三步反映了變換型問(wèn)題數(shù)據(jù)流圖的基本思想,或者說(shuō)是這類問(wèn)題數(shù)據(jù)流圖概括而抽象的模式。其中,變換數(shù)據(jù)是數(shù)據(jù)處理過(guò)程的核心工作,而取得數(shù)據(jù)只不過(guò)是為它做準(zhǔn)備,給出數(shù)據(jù)則是對(duì)變換后的數(shù)據(jù)進(jìn)行后處理工作。 變換型系統(tǒng)結(jié)構(gòu)圖如圖示,相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、輸出數(shù)據(jù),系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出三部分組成。 ,頂層模塊(圖中的)首先得到控制,沿著結(jié)構(gòu)圖的左支依次調(diào)用其下屬模塊,直至底層讀人數(shù)據(jù)A。然后對(duì)A進(jìn)行預(yù)加工(圖中的),轉(zhuǎn)換成B向上回送。再繼續(xù)對(duì)B進(jìn)行加工 (圖中的

31、),轉(zhuǎn)換成邏輯輸入C回送給主模塊。主模塊得到數(shù)據(jù)C之后,控制中心變換模塊(圖中的),將C加工成D。在調(diào)用傳出模塊輸出D時(shí),由傳出模塊調(diào)用后處理模塊(圖中的),將D加工成適于輸出的形式E。最后輸出結(jié)果E。,3) 事務(wù)型系統(tǒng)結(jié)構(gòu)圖 另一類典型的數(shù)據(jù)處理問(wèn)題是事務(wù)型的,通常它是接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派個(gè)適當(dāng)?shù)奶幚韱卧缓蠼o出結(jié)果。我們把完成選擇分派任務(wù)的部分叫作事務(wù)處理中心,或分派部件。這種事務(wù)型數(shù)據(jù)處理問(wèn)題的數(shù)據(jù)流圖參看圖。其中,輸入數(shù)據(jù)流在事務(wù)中心處作出選擇,通過(guò)調(diào)度激活某一種事務(wù)處理加工。,事務(wù)型數(shù)據(jù)流圖所對(duì)應(yīng)的系統(tǒng)結(jié)構(gòu)圖是事務(wù)型系統(tǒng)結(jié)構(gòu)圖。如圖所示。在事務(wù)型系統(tǒng)結(jié)構(gòu)圖

32、中,事務(wù)中心模塊按所接受的事務(wù)的類型選擇某一個(gè)事務(wù)處理模塊執(zhí)行。各個(gè)事務(wù)處理模塊是并列的,依賴于定的選擇條件,分別完成不同的事務(wù)處理工作。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié) 模塊。由于不同的事務(wù)處理模塊可能有共同的操作,所以某些事務(wù)處理模塊可能共享一些操作模塊。同樣不同的操作模塊可以有相同的細(xì)節(jié),所以某些操作模塊又可以共享一些細(xì)節(jié)模塊。事務(wù)型系統(tǒng)購(gòu)結(jié)構(gòu)圖可以有多種不同的形式。例如,有多層操作層或沒(méi)有操作層。簡(jiǎn)化形式是把分析作業(yè)和調(diào)度都?xì)w入事務(wù)中心模塊。,變換分析 變換分析是系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的一種策略。運(yùn)用變換分析方法建立初始的變換型系統(tǒng)結(jié)構(gòu)圖,然后對(duì)它作進(jìn)一步

33、的改進(jìn),最后得到系統(tǒng)的最終結(jié)構(gòu)圖。 變換分析方法的步驟如下。 1) 重畫數(shù)據(jù)流圖 在需求分析階段得到的數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù):而重畫數(shù)據(jù)流圖的出發(fā)點(diǎn)是描述系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)。因此,重畫數(shù)據(jù)流圖應(yīng)注意以下幾點(diǎn): 以需求分析階段得到的數(shù)據(jù)流因?yàn)榛A(chǔ)重畫數(shù)據(jù)流固時(shí),可以從物理輸入到物理輸出,或者相反。還可以從頂層加工框開始,逐層向下。 在圖上不要出現(xiàn)控制邏輯。用箭頭表示的是數(shù)據(jù)流,而不是控制流。 不要去管系統(tǒng)的開始和終止(假定系統(tǒng)在不停地運(yùn)行)。 省略每一個(gè)加工框的簡(jiǎn)單例外處理。 當(dāng)數(shù)據(jù)流進(jìn)入和離開一個(gè)加工框時(shí),要仔細(xì)地標(biāo)記它們,不要重名。 仔細(xì)檢查每層數(shù)據(jù)流的正確性。,2) 在數(shù)據(jù)

34、流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分 在這一步,可以暫時(shí)不考慮數(shù)據(jù)流圖的一些支流,例如錯(cuò)誤處理等等。 如果設(shè)計(jì)人員的經(jīng)驗(yàn)比較豐富,對(duì)要設(shè)計(jì)系統(tǒng)的軟件規(guī)格說(shuō)明又很熟悉,那么決定哪些加工框是系統(tǒng)的中心變換則是比較容易的。例如,幾股數(shù)據(jù)流匯集的地方往往是系統(tǒng)的中心變換部分。,3) 進(jìn)行一級(jí)分解,設(shè)計(jì)系統(tǒng)模塊結(jié)構(gòu)的頂層和第一層 自頂向下設(shè)計(jì)的關(guān)鍵是找出系統(tǒng)樹形結(jié)構(gòu)圖的根或頂層模塊。事實(shí)上,數(shù)據(jù)流圖的中心變換部分應(yīng)當(dāng)與程序結(jié)構(gòu)圖的主要模塊有著對(duì)應(yīng)關(guān)系。我們首先設(shè)計(jì)一個(gè)主模塊,并用程序的名字為它命名,然后將它畫在與中心變換相對(duì)應(yīng)的位置上。作為系統(tǒng)的頂層,它的功能是調(diào)用下一層模塊,完成系統(tǒng)所要作

35、的各項(xiàng)工作。 主模塊設(shè)計(jì)好之后下面的程序結(jié)構(gòu)可按輸入、中心變換和輸出等分支處理。程序結(jié)構(gòu)的第一層可以這樣設(shè)計(jì):為每一個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊、它的功能是為主模塊提供數(shù)據(jù);為每一個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊、它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊、它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。 第一層模塊與主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流圖相對(duì)應(yīng),圖中主模塊控制、協(xié)調(diào)第一層的輸入模塊、變換模塊和輸出模塊的工作。 它要根據(jù)一些邏輯(條件或循環(huán))來(lái)控制對(duì)這些模塊的調(diào)用。,4) 進(jìn)行二級(jí)分解,設(shè)計(jì)中、下層模塊 這一步工作是自頂向下,逐層細(xì)化,為每一個(gè)輸入模塊、輸出模塊、變換模塊設(shè)計(jì)它們的從屬

36、模塊。 設(shè)計(jì)下層模塊的順序是任意的。但一般是先設(shè)計(jì)輸入模塊的下層模塊。 輸入模塊的功能是向調(diào)用它的上級(jí)模塊提供數(shù)據(jù),所以它必須要有一個(gè)數(shù)據(jù)來(lái)源,因而它必須有兩個(gè)下屬模塊:一個(gè)是接收數(shù)據(jù);另一個(gè)是把這些數(shù)據(jù)變換成它的上一級(jí)模塊所需的數(shù)據(jù)。但是,如果輸入模塊已經(jīng)是原子模塊,即物理輸入端,則細(xì)化工作停止。同樣,輸出模塊是從調(diào)用它的上級(jí)模塊接收數(shù)據(jù),用以輸出,因而也應(yīng)當(dāng)有兩個(gè)下層模塊:一個(gè)是將上級(jí)模塊提供的數(shù)據(jù)變換成輸出的形式;另一個(gè)是將它們輸出。設(shè)計(jì)中心變換模塊的下層模塊沒(méi)有通用的方法,一般應(yīng)參照數(shù)據(jù)流圖的中心變換部分和功能分解的原則來(lái)考慮如何對(duì)中心變換模塊進(jìn)行分解。 圖中的“計(jì)算”是系統(tǒng)的核心數(shù)據(jù)

37、處理部分,即中心變換。中心變換左邊的“編輯”和“檢驗(yàn)”是為“計(jì)算”作準(zhǔn)備的預(yù)變換。預(yù)變換以后,送入主模塊的數(shù)據(jù)流是系統(tǒng)的邏輯輸入。中心變換送出的數(shù)據(jù)流是系統(tǒng)的邏輯輸出。中心變換右邊的“格式化I、和“格式化2”都是對(duì)計(jì)算值作格式化處理的后變換。,運(yùn)用變換分析方法建立系統(tǒng)的結(jié)構(gòu)圖時(shí)應(yīng)當(dāng)注意以下幾點(diǎn): 選擇模塊設(shè)計(jì)的次序時(shí),不一定要沿一條分支路徑向下,直到該分支的最底層模塊設(shè)計(jì)完成后,才開始對(duì)另一條分支路徑的下層模塊進(jìn)行設(shè)計(jì)。但是,必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成之后,才能轉(zhuǎn)向另一個(gè)模塊的下層模塊的設(shè)計(jì)。如果我們已設(shè)計(jì)了主模塊和第一層A,B,C模塊,下一步要分解模塊A。那么,應(yīng)當(dāng)先設(shè)計(jì)模塊

38、A的直接下屬E,F(xiàn),G模塊,然后才可以去設(shè)計(jì)模塊B和C的直接下屬模塊。 在設(shè)計(jì)下層模塊時(shí)應(yīng)考慮模塊的耦合和內(nèi)聚問(wèn)題,以提高初始結(jié)構(gòu)圖的質(zhì)量。,注意“黑盒”技術(shù)的使用。在設(shè)計(jì)當(dāng)前模塊時(shí),先把這個(gè)模塊的所有下層模塊定義成“黑盒”,并在系統(tǒng)設(shè)計(jì)中利用它們,暫不考慮它們的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)方法。在這一步定義好的“黑盒“,由于已確定了它的功能和輸入、輸出,在下一步可以對(duì)它們進(jìn)行設(shè)計(jì)和加工。這樣、又會(huì)導(dǎo)致更多的“黑盒”。最后,全部“黑盒”的內(nèi)容和結(jié)構(gòu)被完全被確定。這就是我們所說(shuō)的自頂向下、逐步求精的過(guò)程。使用黑盒技術(shù)的主要好處是使設(shè)計(jì)人員可以只關(guān)心當(dāng)前的有關(guān)問(wèn)題,暫時(shí)不必考慮進(jìn)一步的瑣碎的次要的細(xì)節(jié),待進(jìn)一步

39、分解時(shí)再去關(guān)心它們的內(nèi)部細(xì)節(jié)與結(jié)構(gòu)。,事務(wù)分析 在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流叫做事務(wù)。 如何從數(shù)據(jù)流圖建立系統(tǒng)結(jié)構(gòu)圖。 與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始自項(xiàng)向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。 1) 識(shí)別事務(wù)源利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問(wèn)題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來(lái)自物理輸入裝置。有時(shí),設(shè)計(jì)人員還必須區(qū)別系統(tǒng)的購(gòu)輸入、中心加工和輸出中產(chǎn)生的事務(wù)。在變換型系統(tǒng)的上層模塊設(shè)計(jì)出來(lái)之后常常會(huì)遇到這種情形。 2) 規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后根據(jù)模塊

40、劃分理論、建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。 3) 識(shí)別各種事務(wù)和它們定義的操作對(duì)于系統(tǒng)內(nèi)部產(chǎn)生的事務(wù)必須仔細(xì)地定義它們的操作。 4) 注意利用公用模塊在事務(wù)分析的過(guò)程中,如果不同事務(wù)的一些中間模塊可由具有類似的語(yǔ)法和語(yǔ)義的若干個(gè)低層模塊組成,則可以把這些低層模塊構(gòu)造成公用模塊。 5)對(duì)每一事務(wù)或者聯(lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),可以把它們組成一個(gè)事務(wù)處理模塊。但如果組合后的模塊是低聚的,則應(yīng)該打散重新考慮。,6) 對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K下層操作模塊的分解方法類似于變換分析。但要注意,事務(wù)處理模塊共享公用(操作)模塊的情形相當(dāng)常見。 7) 對(duì)操作模塊

41、規(guī)定它們的全部細(xì)節(jié)模塊對(duì)于大型系統(tǒng)的復(fù)雜事務(wù)處理,可能有 若干層細(xì)節(jié)模塊。另外,盡可能使類似的操作模塊共享公用的細(xì)節(jié)模塊。 圖示的數(shù)據(jù)流圖中,首先確定了它是具有事務(wù)型特征的數(shù)據(jù)流圖。也就是說(shuō),數(shù)據(jù)流A是一個(gè)帶有“請(qǐng)求”性質(zhì)的信息,即為事務(wù)源。而加工I具有“事務(wù)中心”的功能,它后繼的3個(gè)加L,M,N是并列的,在加工A的選擇控制下完成不同功能的處理。最后,經(jīng)過(guò)加工O將某一加工處理的結(jié)果整理輸出。為此,首先建立一個(gè)主模塊用以代表整個(gè)加工,它位于P-層(即主層)。然后考慮被稱為T-層(事務(wù)層)第一層模塊。這時(shí)第一層模塊只能是3類:取得事務(wù)、處理事務(wù)和給出結(jié)果。依據(jù)并列的3個(gè)加工,在主模塊之下建立了3個(gè)

42、事務(wù)模塊,分別完成L、M和N的工作。并在主模塊的下沿以菱形引出對(duì)這3個(gè)事務(wù)模塊的選擇,而在這些事務(wù)模塊的左右兩邊則是對(duì)應(yīng)于加工I和O的“取得A”模塊和“給出H“模塊。 各個(gè)事務(wù)模塊下層的操作模塊,即A-層(活動(dòng)層)和細(xì)節(jié)模塊,即D-層(細(xì)節(jié)層),在圖中未畫出,可以繼續(xù)分解擴(kuò)展,直至完成整個(gè)結(jié)構(gòu)圖。,變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的主要方法。因?yàn)榇蟛糠周浖到y(tǒng)都可以應(yīng)用變換分析進(jìn)行設(shè)計(jì)。但是,在很多情況下,僅使用變換分析是不夠的,還需要用其它方法作為補(bǔ)充。事務(wù)分析就是最重要的一種方法。雖然不能說(shuō)全部數(shù)據(jù)處理系統(tǒng)都是事務(wù)型的,但是很多數(shù)據(jù)處理系統(tǒng)屬于事務(wù)型系統(tǒng)。一個(gè)典型的商業(yè)數(shù)據(jù)處理系統(tǒng)的主要組成部分

43、(包括輸入和輸出部分)也可以使用事務(wù)處理方法。所以事務(wù)分析方法很重要。 一個(gè)大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。在系統(tǒng)結(jié)構(gòu)設(shè)計(jì)時(shí),首先利用變換分析方法把軟件系統(tǒng)分為輸入、中心變換和輸出3個(gè)部分,設(shè)計(jì)上層模塊,即主模塊和第一層模塊。然后根據(jù)數(shù)據(jù)流圖各部分的結(jié)構(gòu)特點(diǎn)適當(dāng)?shù)乩米儞Q分析或事務(wù)分析,可以得到初始系統(tǒng)結(jié)構(gòu)圖的某個(gè)方案。 圖示的例子是一個(gè)典型的變換事務(wù)混合型問(wèn)題的結(jié)構(gòu)圖。系統(tǒng)的輸入、中心變換、輸出3個(gè)部分是利用變換分析方法確定的,由此得到主模塊“x x系統(tǒng)”及其下屬的第一層模塊“得到D”、“變換”和“給出K”。對(duì)圖中

44、的輸入部分和變換部分又可以利用事務(wù)分析方法進(jìn)行設(shè)計(jì)。例如,模塊“調(diào)度BC”及其下屬模塊、模塊“變換”及其下屬模塊部屬于事務(wù)型。,軟件模塊結(jié)構(gòu)的改進(jìn) 為了改進(jìn)系統(tǒng)的初始模塊結(jié)構(gòu)圖,人們經(jīng)過(guò)長(zhǎng)期軟件開發(fā)的實(shí)踐,得到了一些啟發(fā)或規(guī)則,利用它們,可以幫助設(shè)計(jì)人員改進(jìn)軟件設(shè)計(jì),提高設(shè)計(jì)的質(zhì)量。 1) 模塊功能的完善化 一個(gè)完整的功能模塊,不僅能夠完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使用者完成任務(wù)的狀態(tài),以及不能完成的原因。也就是說(shuō),一個(gè)完整的模塊應(yīng)當(dāng)有: 執(zhí)行規(guī)定的功能的部分; 出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,向它的調(diào)用者報(bào)告出現(xiàn)這種例外情況的原因。 所有上述部分,部應(yīng)當(dāng)看作是個(gè)模塊的有機(jī)組成部分,不應(yīng)分離到其它模塊中去,否則將會(huì)增大模塊間的耦合程度。,2) 消除重復(fù)功能,改善軟件結(jié)構(gòu) 在系統(tǒng)的初始結(jié)構(gòu)圖得出之后,應(yīng)當(dāng)審查分折這個(gè)結(jié)構(gòu)圖。如果發(fā)現(xiàn)幾個(gè)模塊的功能有相似之處,可以加以改進(jìn)。 完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時(shí)可以采取完全合并的方

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論