基于新信息技術(shù)的軟件工程與UML教程課件:軟件設(shè)計(jì)_第1頁
基于新信息技術(shù)的軟件工程與UML教程課件:軟件設(shè)計(jì)_第2頁
基于新信息技術(shù)的軟件工程與UML教程課件:軟件設(shè)計(jì)_第3頁
基于新信息技術(shù)的軟件工程與UML教程課件:軟件設(shè)計(jì)_第4頁
基于新信息技術(shù)的軟件工程與UML教程課件:軟件設(shè)計(jì)_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件設(shè)計(jì)任務(wù)一總體設(shè)計(jì)任務(wù)二詳細(xì)設(shè)計(jì)任務(wù)三編寫文檔習(xí)題

項(xiàng)目引導(dǎo)

軟件設(shè)計(jì)是對(duì)需求分析的結(jié)果進(jìn)行軟件模塊設(shè)計(jì)和算法設(shè)計(jì)的過程,分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩部分。本項(xiàng)目主要介紹總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)的任務(wù)和過程、圖形工具,并重點(diǎn)介紹結(jié)構(gòu)化設(shè)計(jì)技術(shù)和結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)。

知識(shí)目標(biāo)

(1)了解軟件設(shè)計(jì)的任務(wù)和過程。

(2)掌握軟件設(shè)計(jì)的圖形工具。

(3)掌握結(jié)構(gòu)化設(shè)計(jì)技術(shù)。

(4)掌握結(jié)構(gòu)化程序設(shè)計(jì)思路。

能力目標(biāo)

會(huì)運(yùn)用軟件設(shè)計(jì)的圖形工具對(duì)小型軟件或網(wǎng)站進(jìn)行總體設(shè)計(jì)、詳細(xì)設(shè)計(jì),并完成總體設(shè)計(jì)說明書、詳細(xì)設(shè)計(jì)說明書。

任務(wù)一總體設(shè)計(jì)

總體設(shè)計(jì)又稱為概要設(shè)計(jì)或初步設(shè)計(jì),基本目的就是回答“系統(tǒng)應(yīng)該如何實(shí)現(xiàn)”這個(gè)問題。這個(gè)階段有兩個(gè)任務(wù):一是劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、人工過程和文檔等,但是每個(gè)物理元素仍然處于黑盒子級(jí),即具體內(nèi)容將在以后仔細(xì)設(shè)計(jì);二是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。

總的來說,總體設(shè)計(jì)過程有以下三個(gè)步驟:

(1)分析員根據(jù)數(shù)據(jù)流圖尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案。

(2)分析員從供選擇的方案中選取若干個(gè)合理的方案,并為每個(gè)合理的方案準(zhǔn)備系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進(jìn)行成本/效益分析,制訂實(shí)現(xiàn)這個(gè)方案的進(jìn)度

計(jì)劃。

(3)分析員綜合分析上述合理方案,從中選出一個(gè)最佳方案向用戶推薦。如果用戶接受了推薦的方案,分析員應(yīng)進(jìn)一步為這個(gè)最佳方案設(shè)計(jì)軟件結(jié)構(gòu)。

一、總體設(shè)計(jì)概述

概要設(shè)計(jì)也稱總體設(shè)計(jì),其基本目標(biāo)是能夠針對(duì)軟件需求分析中提出的一系列軟件問題,概要地回答問題如何解決。例如,軟件系統(tǒng)將采用什么樣的體系構(gòu)架,需要?jiǎng)?chuàng)建哪些功能模塊,模塊之間的關(guān)系如何,數(shù)據(jù)結(jié)構(gòu)如何,軟件系統(tǒng)需要什么樣的網(wǎng)絡(luò)環(huán)境提供支持,需要采用什么類型的后臺(tái)數(shù)據(jù)庫等??傮w設(shè)計(jì)過程通常由兩個(gè)主要階段組成:

①系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案;

②結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu)。

典型的總體設(shè)計(jì)過程包括下述九個(gè)步驟。

1.設(shè)想供選擇的方案

分析員根據(jù)需求分析階段得出的數(shù)據(jù)流圖,考慮各種可能的實(shí)現(xiàn)方案,并且力求從中選出最佳方案。常用的方法是:設(shè)想數(shù)據(jù)流圖中處理的各種可能的分組方法,拋棄在技術(shù)上行不通的分組方法,余下的分組方法代表可能的實(shí)現(xiàn)策略。

2.選取合理的方案

分析員從供選擇的方案中選取若干個(gè)合理的方案,通常至少選取低成本、中等成本和高成本的三種方案。在判斷合理方案時(shí)應(yīng)該考慮在問題定義和可行性研究階段確定的工程規(guī)模和目標(biāo),有時(shí)可能還需要進(jìn)一步征求用戶的意見。

對(duì)每個(gè)合理的方案,分析員都應(yīng)該準(zhǔn)備4份資料:

(1)系統(tǒng)流程圖;

(2)組成系統(tǒng)的物理元素清單;

(3)成本/效益分析;

(4)實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。

3.推薦最佳方案

分析員應(yīng)該綜合分析對(duì)比各種合理方案的利弊,推薦一個(gè)最佳的方案,并且為推薦的方案制訂詳細(xì)的實(shí)現(xiàn)計(jì)劃。

用戶和有關(guān)技術(shù)專家應(yīng)認(rèn)真審查分析員所推薦的最佳系統(tǒng),如果滿足用戶的需要,經(jīng)使用部門審批之后,將進(jìn)入下一階段——結(jié)構(gòu)設(shè)計(jì)。

4.功能分解

為實(shí)現(xiàn)目標(biāo)系統(tǒng),必須設(shè)計(jì)出組成系統(tǒng)的所有功能,以及程序和文件(或數(shù)據(jù)庫)結(jié)構(gòu)。對(duì)程序結(jié)構(gòu)的設(shè)計(jì),通常分為兩個(gè)階段完成:首先進(jìn)行結(jié)構(gòu)設(shè)計(jì),然后進(jìn)行過程設(shè)計(jì)。結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成,以及模塊間的關(guān)系;過程設(shè)計(jì)確定每個(gè)模塊的處理過程。結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),過程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù)。

5.設(shè)計(jì)軟件結(jié)構(gòu)

軟件結(jié)構(gòu)是由模塊組成的層次系統(tǒng),可以用層次圖或結(jié)構(gòu)圖來描繪。

在設(shè)計(jì)過程中,把系統(tǒng)模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用它的下層模塊,每個(gè)下層模塊再調(diào)用更下層的模塊,最下層的模塊完成具體的功能。

6.設(shè)計(jì)數(shù)據(jù)庫

分析員在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫。在數(shù)據(jù)庫課程中已詳細(xì)講述了設(shè)計(jì)數(shù)據(jù)庫的方法。

7.制訂測(cè)試計(jì)劃

在開發(fā)的早期考慮測(cè)試問題,能促使設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。

8.書寫文檔

書寫文檔記錄總體設(shè)計(jì)的結(jié)果,應(yīng)該完成的文檔通常有以下幾種:

(1)系統(tǒng)說明主要內(nèi)容包括用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本/效益分析,對(duì)最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其他工具(例如PDL語言)簡(jiǎn)要描述的各個(gè)模塊的算法,模塊間的接口關(guān)系,以及需求、功能和模塊三者之間的關(guān)系等。

(2)用戶手冊(cè)根據(jù)總體設(shè)計(jì)階段的結(jié)果,修改更正在需求分析階段產(chǎn)生的初步的用戶手冊(cè)。

(3)測(cè)試計(jì)劃,包括測(cè)試策略、測(cè)試方案、預(yù)期的測(cè)試結(jié)果、測(cè)試進(jìn)度計(jì)劃等。

(4)詳細(xì)的實(shí)現(xiàn)計(jì)劃。

(5)數(shù)據(jù)庫設(shè)計(jì)結(jié)果。

9.審查和復(fù)審

分析員對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查,在技術(shù)審查通過之后再由用戶從管理角度進(jìn)行復(fù)審。

二、軟件設(shè)計(jì)原理

1.模塊化

模塊是數(shù)據(jù)說明,可執(zhí)行語句等程序?qū)ο蟮募?,它是?gòu)成程序的基本構(gòu)件。每個(gè)模塊均有標(biāo)識(shí)符標(biāo)識(shí)。如過程、函數(shù)、子程序和宏等,都可作為模塊。

模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子功能,把若干模塊構(gòu)成一個(gè)整體,完成用戶需求。

設(shè)函數(shù)C(x)定義問題x的復(fù)雜程度,函數(shù)E(x)確定解決問題x需要的工作量(時(shí)間)。對(duì)于兩個(gè)問題P1和P2,如果C(P1)>C(P2),顯然E(P1)>E(P2)。

根據(jù)經(jīng)驗(yàn),一個(gè)有趣的規(guī)律是C(P1+P2)>C(P1)+C(P2),即如果一個(gè)問題由P1和P2兩個(gè)問題組合而成,那么它的復(fù)雜程度大于分別考慮每個(gè)問題時(shí)的復(fù)雜程度之和。

綜上所述,得到結(jié)論E(P1+P2)>E(P1)+E(P2),這就是模塊化的根據(jù)。

由上面的不等式還能得出下述結(jié)論:當(dāng)模塊數(shù)目增加時(shí)每個(gè)模塊的規(guī)模將減小,開發(fā)單個(gè)模塊需要的成本(工作量)確實(shí)減少了;但是,隨著模塊數(shù)目增加,設(shè)計(jì)模塊間接口所需要的工作量也將增加。根據(jù)這兩個(gè)因素,得出圖4-1中的總成本曲線。

圖4-1模塊數(shù)目與成本的關(guān)系

2.抽象

抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié),即提取共性、忽略差異。軟件工程過程的每一步都是對(duì)軟件解法的抽象層次的一次精化。對(duì)于復(fù)雜系統(tǒng),抽象也是自頂向下,逐步細(xì)化的,即由高層到低層,直至可直接實(shí)現(xiàn)。

3.逐步求精

逐步求精是解決復(fù)雜問題時(shí)采用的基本方法,也是軟件工程技術(shù)(如規(guī)格說明技術(shù)、設(shè)計(jì)和實(shí)現(xiàn)技術(shù))的基礎(chǔ)。它將現(xiàn)實(shí)問題經(jīng)過幾次抽象(細(xì)化)處理,最后到求解域中只是一些簡(jiǎn)單的算法描述和算法實(shí)現(xiàn)問題,即將系統(tǒng)功能按層次進(jìn)行分解,每一層不斷將功能細(xì)化,到最后一層都是功能單一、簡(jiǎn)單易實(shí)現(xiàn)的模塊。求解過程可以劃分為若干個(gè)階段,在不同階段采用不同的工具來描述問題。

4.信息隱藏和局部化

信息隱藏原理指出:在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來說,是不能訪問的,即模塊內(nèi)部的信息對(duì)于別的模塊來說是隱藏的。信息隱蔽為軟件系統(tǒng)的修改、測(cè)試及以后的維護(hù)帶來好處。

局部化是指把關(guān)系密切的軟件元素物理地放在一起,要求在劃分模塊時(shí)采用局部數(shù)據(jù)結(jié)構(gòu),使大多數(shù)過程和數(shù)據(jù)對(duì)軟件的其他部分是隱藏的。局部化有助于實(shí)現(xiàn)信息隱藏。

5.模塊獨(dú)立

模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。模塊獨(dú)立是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。

模塊獨(dú)立性之所以重要,主要原因有兩方面:第一,有效的模塊化(即具有獨(dú)立的模塊)的軟件比較容易開發(fā)出來;第二,獨(dú)立的模塊比較容易測(cè)試和維護(hù)。

模塊的獨(dú)立程度可用兩個(gè)定性標(biāo)準(zhǔn)度量:耦合和內(nèi)聚。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。以下分別詳細(xì)闡述。

1)耦合

耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。

模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。

模塊的耦合有六種類型(低→高):無直接耦合、數(shù)據(jù)耦合、標(biāo)記耦合、控制耦合、公共耦合和內(nèi)容耦合。

(1)無直接耦合:指兩模塊之間沒有直接關(guān)系。

(2)數(shù)據(jù)耦合:指兩模塊之間有調(diào)用關(guān)系,傳遞的是簡(jiǎn)單的數(shù)據(jù)值,相當(dāng)于高級(jí)語言中的值傳遞。

(3)標(biāo)記耦合:指兩模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)。如高級(jí)語言中的數(shù)組名、記錄名、文件名等即為標(biāo)記,傳遞的是這個(gè)數(shù)據(jù)結(jié)構(gòu)的地址。

(4)控制耦合:指一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),傳遞的是控制變量(如開關(guān)、標(biāo)志)。

(5)公共耦合:指通過一個(gè)公共數(shù)據(jù)環(huán)境相互作用的模塊間的耦合。公共數(shù)據(jù)環(huán)境可以是全程變量或數(shù)據(jù)結(jié)構(gòu),共享的通信區(qū)、內(nèi)存、文件、物理設(shè)備等。

如果只有兩個(gè)模塊有公共環(huán)境,那么這種耦合有兩種可能:

①一個(gè)模塊往公共環(huán)境送數(shù)據(jù),另一個(gè)模塊從公共環(huán)境取數(shù)據(jù)。這是數(shù)據(jù)耦合的一種形式,是比較松散的耦合。

②兩個(gè)模塊既往公共環(huán)境送數(shù)據(jù),又從公共環(huán)境取數(shù)據(jù)。這種耦合比較緊密,介于數(shù)據(jù)和控制耦合之間。

(6)內(nèi)容耦合:是最高程度的耦合,當(dāng)一個(gè)模塊直接使用另一個(gè)模塊的內(nèi)部數(shù)據(jù)或通過非正常的入口而轉(zhuǎn)入另一模塊內(nèi)部或兩模塊間有一部分程序代碼重疊(僅在匯編語言中)時(shí),這就是內(nèi)容耦合。

為了降低模塊間的耦合度,可采取以下措施:

(1)在耦合方式上降低模塊間接口的復(fù)雜性,包括接口方式、接口信息的結(jié)構(gòu)和數(shù)據(jù)。

(2)在傳遞信息類型上盡量使用數(shù)據(jù)耦合,避免控制耦合,限制公共耦合,不使用內(nèi)容耦合。

2)內(nèi)聚

內(nèi)聚指模塊功能強(qiáng)度的度量,即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程序的度量。一個(gè)模塊內(nèi)各元素(語句之間、程序段之間)聯(lián)系得越緊密,則它的內(nèi)聚性就越高。

內(nèi)聚性也有六種類型(低→高):偶然內(nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

(1)偶然內(nèi)聚:指一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)系,即使有聯(lián)系也是非常松散的。

(2)邏輯內(nèi)聚:指模塊內(nèi)執(zhí)行幾個(gè)邏輯上相同或相似的功能,通過參數(shù)確定該模塊完成哪一功能。

(3)時(shí)間內(nèi)聚:一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,就稱時(shí)間內(nèi)聚,如初始化一組變量,同時(shí)打開或關(guān)閉若干個(gè)文件等。

(4)通信內(nèi)聚:指模塊內(nèi)所有處理元素都在同一數(shù)據(jù)結(jié)構(gòu)上操作,或指各處理使用相同的輸入數(shù)據(jù)或產(chǎn)生相同的輸出數(shù)據(jù),如完成“建表”、“查表”等。

(5)順序內(nèi)聚:指一個(gè)模塊中各處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能元素的輸出就是下一功能元素的輸入。

(6)功能內(nèi)聚:指模塊內(nèi)所有元素共同完成一個(gè)功能,缺一不可,因此模塊不可再分,如“打印日?qǐng)?bào)表”。

耦合和內(nèi)聚是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),在軟件系統(tǒng)劃分模塊時(shí),盡量做到高內(nèi)聚低耦合,提高模塊的獨(dú)立性。

6.啟發(fā)規(guī)則

啟發(fā)規(guī)則是在開發(fā)軟件過程中總結(jié)出來的原則,能幫助人們改進(jìn)軟件設(shè)計(jì),提高軟件質(zhì)量。啟發(fā)規(guī)則如下:

(1)改進(jìn)軟件結(jié)構(gòu),提高模塊獨(dú)立性。設(shè)計(jì)出軟件初步結(jié)構(gòu)后,通過模塊分解和合并,力求降低耦合提高內(nèi)聚,如多個(gè)模塊公有的一個(gè)子功能可獨(dú)立成一個(gè)模塊。

(2)模塊規(guī)模應(yīng)該適中。一個(gè)模塊的規(guī)模不過大,最好能在一頁紙內(nèi)寫完(60行語句左右)。

(3)深度、寬度、扇出和扇入都應(yīng)適當(dāng)。

①深度:軟件結(jié)構(gòu)中控制的層次。

②寬度:軟件結(jié)構(gòu)中同一層上模塊的最大數(shù)。

③扇出:一個(gè)模塊直接調(diào)用(控制)的模塊數(shù)目。平均扇出數(shù)通常是3個(gè)或4個(gè)。

④扇入:一個(gè)模塊直接被調(diào)用(控制)的模塊數(shù)目。扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多,這是有好處的,但不能違背模塊獨(dú)立性原則。

圖4-2所示模塊示意圖中,其深度為5,寬度為7,扇出數(shù)最大為3,扇入數(shù)最大為3(如模塊D扇入數(shù)為1)。

圖4-2模塊示意圖

(4)模塊的作用域應(yīng)該在控制域之內(nèi),模塊作用域和控制域示意圖如圖4-3所示。

圖4-3模塊作用域和控制域示意圖

修改軟件結(jié)構(gòu)可使作用域是控制域的子集,方法是:

①把判定點(diǎn)往上移,如把判定從模塊A移到模塊M中。

②把在作用域內(nèi)但不在控制域內(nèi)的模塊移到控制域內(nèi),如把模塊G移到模塊A的下面,成為其直接的下級(jí)模塊。

(5)力爭(zhēng)降低模塊接口的復(fù)雜程度。模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因,應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。

(6)設(shè)計(jì)單入口單出口的模塊。設(shè)計(jì)單入口單出口的模塊是結(jié)構(gòu)化程序設(shè)計(jì)的需求,可增強(qiáng)系統(tǒng)的理解性和維護(hù)性。

(7)模塊功能應(yīng)該可以預(yù)測(cè)。模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防止模塊功能過分局限。每一個(gè)模塊實(shí)現(xiàn)的功能應(yīng)該能夠預(yù)測(cè),也要防止模塊功能過分局限。

三、總體設(shè)計(jì)圖形工具

1.層次圖和HIPO圖

層次圖用來描繪軟件的層次結(jié)構(gòu),圖中的一個(gè)矩形框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系。圖4-4是正文加工系統(tǒng)的層次圖。

注意:層次方框圖表示組成數(shù)據(jù)結(jié)構(gòu)的層次關(guān)系,與層次圖不同。

圖4-4正文加工系統(tǒng)層次結(jié)構(gòu)圖

HIPO圖是“層次圖加輸入/處理/輸出圖”。在H圖(層次圖)里除了最頂層的方框之外,每個(gè)方框都加了編號(hào)。H圖中的每個(gè)方框?qū)?yīng)著一張IPO圖(輸入/處理/輸出圖),用以描繪這個(gè)方框代表的模塊的處理過程。圖4-5是正文加工系統(tǒng)HIPO圖。

圖4-5正文加工系統(tǒng)HIPO圖

2.結(jié)構(gòu)圖

結(jié)構(gòu)圖和層次圖類似,也是描繪軟件結(jié)構(gòu)的圖形工具,圖中一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能,方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系。

在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息,尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。圖4-6是產(chǎn)生最佳解的結(jié)構(gòu)圖。

圖4-6結(jié)構(gòu)圖的例子——產(chǎn)生最佳解系統(tǒng)的一般結(jié)構(gòu)

四、結(jié)構(gòu)化設(shè)計(jì)技術(shù)

面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)。在軟件工程的需求分析階段,通常用數(shù)據(jù)流圖描繪信息在系統(tǒng)中加工和流動(dòng)的情況。面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的映射,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。通常所說的結(jié)構(gòu)化設(shè)計(jì)方法(SD方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。

1.基本概念

面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有變換流和事務(wù)流兩種類型。

1)變換流

具有明顯的輸入、變換(或主加工)和輸出界面的數(shù)據(jù)流稱為變換流,如圖4-7所示。

圖4-7變換流

2)事務(wù)流

數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來執(zhí)行,這類數(shù)據(jù)流稱為事務(wù)流,如圖4-8所示。它完成下述任務(wù):

(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));

(2)分析每個(gè)事務(wù)以確定它的類型;

(3)根據(jù)事務(wù)類型選取一條活動(dòng)通路。

圖4-8事務(wù)流

2.設(shè)計(jì)過程

圖4-9說明了使用面向數(shù)據(jù)流方法逐步設(shè)計(jì)的過程。應(yīng)該注意,任何設(shè)計(jì)過程都不是機(jī)械的、一成不變的,設(shè)計(jì)需要判斷力和創(chuàng)造精神。

圖4-9設(shè)計(jì)過程

3.變換分析設(shè)計(jì)

第1步:復(fù)查基本系統(tǒng)模型。

第2步:復(fù)查并精化數(shù)據(jù)流圖。

第3步:確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。

第4步:確定輸入流和輸出流的邊界,從而孤立出變換中心。

第5步:完成“第一級(jí)分解”。

第6步:完成“第二級(jí)分解”。

第7步:使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化。

4.事務(wù)分析設(shè)計(jì)

事務(wù)分析設(shè)計(jì)的步驟和變換分析的設(shè)計(jì)步驟大部分相同或類似,主要差別在于數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。

事務(wù)流映射成軟件結(jié)構(gòu)包括一個(gè)接收分支和一個(gè)發(fā)送分支。映射出接收分支是從事務(wù)中心的邊界開始,把沿著接收通路的處理映射成模塊。發(fā)送分支的結(jié)構(gòu)包括一個(gè)調(diào)度模塊,它控制下層的所有活動(dòng)模塊,然后把數(shù)據(jù)流圖中的每個(gè)活動(dòng)通路映射成與它的流特征相對(duì)應(yīng)的結(jié)構(gòu),如圖4-10所示。

圖4-10事務(wù)分析的映射方法

5.設(shè)計(jì)優(yōu)化

(1)對(duì)軟件結(jié)構(gòu)進(jìn)行精化:使用盡可能少的模塊。

(2)對(duì)運(yùn)行時(shí)間的優(yōu)化:可在詳細(xì)設(shè)計(jì)階段、編寫程序過程中進(jìn)行。

優(yōu)化方法遵循了一句格言:“先使它能工作,然后再使它快起來?!?/p>

五、教務(wù)管理信息系統(tǒng)總體設(shè)計(jì)

1.軟件結(jié)構(gòu)設(shè)計(jì)

在對(duì)希望中學(xué)教務(wù)管理信息系統(tǒng)的分析階段完成后,為了將系統(tǒng)分析階段提出的系統(tǒng)的邏輯方案轉(zhuǎn)換成可以實(shí)施的基于計(jì)算機(jī)和網(wǎng)絡(luò)通信系統(tǒng)的物理方案,概要設(shè)計(jì)主要考慮的是實(shí)現(xiàn)這個(gè)系統(tǒng)/子系統(tǒng)應(yīng)該設(shè)計(jì)幾個(gè)功能模塊,這些模塊由哪些程序組成以及它們之間以什么方式鏈接在一起構(gòu)成一個(gè)最好的系統(tǒng)機(jī)內(nèi)結(jié)構(gòu)。

系統(tǒng)設(shè)計(jì)階段主要考慮的是計(jì)算機(jī)知識(shí)和應(yīng)用軟件開發(fā)經(jīng)驗(yàn)。由系統(tǒng)的特性決定在系統(tǒng)設(shè)計(jì)過程中可以使用“自頂向下”的原則,將系統(tǒng)分為若干個(gè)模塊之后,可以用結(jié)構(gòu)圖來表達(dá)這些模塊之間的連接關(guān)系。

結(jié)構(gòu)圖中是用一個(gè)矩形來表示模塊的,模塊的名稱寫在矩形的里面,模塊結(jié)構(gòu)圖是用圖形的方法表示一個(gè)系統(tǒng)的輸入、輸出功能,以及系統(tǒng)模塊層次。模塊結(jié)構(gòu)圖主要包括兩方面內(nèi)容:

(1)模塊分層圖:表示自頂向下分解所得系統(tǒng)的模塊層次結(jié)構(gòu)。

(2)

IPO圖(輸入—處理—輸出圖):用此圖描述一個(gè)模塊的輸入、處理和輸出內(nèi)容。

按照結(jié)構(gòu)化設(shè)計(jì)方法,希望中學(xué)教務(wù)管理信息系統(tǒng)/子系統(tǒng)從功能上可以劃分為教學(xué)安排管理、學(xué)生檔案管理、教師檔案管理、學(xué)生成績(jī)管理、考核評(píng)定管理、系統(tǒng)維護(hù)等六大部分。

從數(shù)據(jù)流程圖轉(zhuǎn)換為模塊結(jié)構(gòu)圖采用的是變換中心法。依據(jù)數(shù)據(jù)流程圖的頂層圖,轉(zhuǎn)化得到系統(tǒng)的總體功能模塊結(jié)構(gòu)圖如圖4-11所示。

圖4-11希望中學(xué)教務(wù)管理信息系統(tǒng)結(jié)構(gòu)圖

在分解HIPO圖時(shí),應(yīng)采用自頂向下逐步擴(kuò)展的方法,先分解綜合性強(qiáng)、層次較少的模塊結(jié)構(gòu),然后再根據(jù)需要一步一步擴(kuò)充,因此,需要對(duì)第一輪的HIPO圖進(jìn)行分解,直到每個(gè)單元功能模塊都能明確它的作用,如添加功能、查詢功能等,從而得到教務(wù)管理系統(tǒng)的HIPO圖,如圖4-12、圖4-13所示。

圖4-12希望中學(xué)教務(wù)管理信息系統(tǒng)HIPO圖圖4-13希望中學(xué)教務(wù)管理信息系統(tǒng)HIPO圖(頂層)

2.?dāng)?shù)據(jù)庫的概念設(shè)計(jì)

由需求分析階段的E-R圖得知,系統(tǒng)中涉及的實(shí)體有七個(gè),其結(jié)構(gòu)如下:

年級(jí)組:年級(jí)組名稱、年級(jí)組組長(zhǎng)姓名、年級(jí)組電話;

教師:教師工號(hào)、教師姓名、性別、出生年月、家庭住址、郵編、政治面貌、學(xué)歷、職稱、任教課程、備注;

班級(jí):班級(jí)名、班主任姓名、教室編號(hào)、班級(jí)人數(shù);

課程:課程編號(hào)、課程名、學(xué)分、學(xué)時(shí);

學(xué)生:學(xué)號(hào)、班級(jí)編號(hào)、姓名、性別、出生年月、家庭住址、郵編、政治面貌、入學(xué)時(shí)間、備注;

獎(jiǎng)懲:獎(jiǎng)懲編號(hào)、獎(jiǎng)懲標(biāo)志、獎(jiǎng)懲名稱、獎(jiǎng)懲日期、備注;

家長(zhǎng):家長(zhǎng)姓名、稱謂、單位地址、單位電話。

該系統(tǒng)有八個(gè)聯(lián)系,包括七個(gè)一對(duì)多聯(lián)系和一個(gè)多對(duì)多聯(lián)系。其中一個(gè)多對(duì)多聯(lián)系有屬性,其屬性為:成績(jī)(分?jǐn)?shù))。

任務(wù)二詳細(xì)設(shè)計(jì)

一、詳細(xì)設(shè)計(jì)概述詳細(xì)設(shè)計(jì)也叫程序算法設(shè)計(jì),程序算法設(shè)計(jì)的目標(biāo)是對(duì)目標(biāo)系統(tǒng)作出精確的設(shè)計(jì)描述,其內(nèi)容包括確定模塊內(nèi)部數(shù)據(jù)結(jié)構(gòu)和確定模塊內(nèi)部程序算法。程序算法設(shè)計(jì)結(jié)果將成為程序編碼的依據(jù)。

二、詳細(xì)設(shè)計(jì)圖形工具

1.程序流程圖

程序流程圖又稱為程序框圖,它是描述過程設(shè)計(jì)的方法。它是使用最廣泛,也是用得最混亂的一種方法。從20世紀(jì)40年代末到70年代中期,程序流程圖一直是軟件設(shè)計(jì)的主要工具。

程序流程圖的主要優(yōu)點(diǎn)是:對(duì)控制流程的描繪很直觀,便于初學(xué)者掌握。

程序流程圖的主要缺點(diǎn)如下:

(1)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。

(2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。

(3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。

2.盒圖(N-S圖)

盒圖是由Nassi和Shneiderman提出的,故又稱為N-S圖。它有下述特點(diǎn):

(1)功能域(即控制結(jié)構(gòu))明確,從盒圖上一眼就能看出來。

(2)不能任意轉(zhuǎn)移控制。

(3)很容易確定局部和全程數(shù)據(jù)的作用域。

(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。

圖4-14給出了結(jié)構(gòu)化控制結(jié)構(gòu)的盒圖表示,也給出了調(diào)用子程序的盒圖表示方法。

圖4-14盒圖組成

3.PAD圖

PAD即問題分析圖(ProblemAnalysisDiagram),自1973年由日本日立公司發(fā)明以后,已得到一定程度的推廣。它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流。圖4-15給出了PAD圖的基本符號(hào)。

圖4-15PAD圖的基本符號(hào)

PAD圖的主要優(yōu)點(diǎn)如下:

(1)使用PAD圖設(shè)計(jì)出來的程序必然是結(jié)構(gòu)化程序。

(2)PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中4-15最左面的豎線是程序的主線,即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。

(3)用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維樹形結(jié)構(gòu)的圖形,程序從圖中最左豎線上端的節(jié)點(diǎn)開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有節(jié)點(diǎn)。

(4)容易將PAD圖轉(zhuǎn)換成高級(jí)語言源程序,這種轉(zhuǎn)換可用軟件工具自動(dòng)完成,有利于提高軟件可靠性和軟件生產(chǎn)率。

(5)

PAD圖可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。

(6)

PAD?圖的符號(hào)支持自頂向下、逐步求精方法的使用。開始時(shí)設(shè)計(jì)者可以定義一個(gè)抽象的程序,隨著設(shè)計(jì)工作的深入而使用def符號(hào)逐步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計(jì),如圖4-16所示。

4.判定表

當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、盒圖、PAD圖或過程設(shè)計(jì)語言(PDL)都不易清楚地描述,然而判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。

判定表一般由四個(gè)部分組成。其中,表的左上部分列出所有條件,表的左下部分是所有可能出現(xiàn)的動(dòng)作,表的右上部分用于表示各種可能的條件組合,表的右下部分則是和每種條件組合相對(duì)應(yīng)的動(dòng)作。這樣一來,判定表的右半部分的每一列實(shí)質(zhì)上就構(gòu)成了一條規(guī)則,它規(guī)定了與特定的條件組合相對(duì)應(yīng)的動(dòng)作。

下面以航空公司飛機(jī)票價(jià)計(jì)算規(guī)則為例說明判定表的使用方法。

假設(shè)該公司飛機(jī)票價(jià)計(jì)算規(guī)則是:國(guó)內(nèi)乘客按規(guī)定票價(jià)計(jì)算,國(guó)外乘客按規(guī)定票價(jià)加倍計(jì)算。但中小學(xué)生憑學(xué)生證按規(guī)定票價(jià)半價(jià)優(yōu)惠,70歲以上老年乘客憑老年證或身份證按規(guī)定票價(jià)8折優(yōu)惠,殘疾人可根據(jù)殘疾人證明按8折優(yōu)惠。以上優(yōu)惠可按最優(yōu)折扣率計(jì)算,但不能重復(fù)計(jì)算。另外,身高不足1米的兒童可以免票。

該飛機(jī)票價(jià)計(jì)算問題的判定表如表4-1所列。其中,表中右上部分中的“T”表示它左邊那個(gè)條件成立,“F”表示條件不成立,空白表示這個(gè)條件成立與否并不影響對(duì)動(dòng)作的選擇。表的右下部分中畫“Y”的標(biāo)記表示做它左邊的那項(xiàng)動(dòng)作,空白表示不做這項(xiàng)動(dòng)作。

5.判定樹

判定樹是判定表的變種,能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定樹的優(yōu)點(diǎn)在于,它的形式簡(jiǎn)單到不需任何說明,一眼就可以看出其含義。圖4-17是用判定樹表示計(jì)算行李費(fèi)的算法。

圖4-17行李費(fèi)的判定樹

6.過程設(shè)計(jì)語言(PDL)

PDL也稱偽碼,是一種類程序設(shè)計(jì)語言。一方面,PDL有嚴(yán)格的關(guān)鍵字外部語法,借用某種語言(如使用PASCAL、C語言)的語法控制框架,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面,PDL使用某一自然語言的詞匯,靈活自由地表示實(shí)際操作和判定條件,以適應(yīng)各種工程項(xiàng)目的需要。

PDL具有以下特點(diǎn):

(1)提供結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的特點(diǎn);

(2)自然語言的自由語法;

(3)數(shù)據(jù)說明包括簡(jiǎn)單和復(fù)雜的數(shù)據(jù)結(jié)構(gòu);

(4)提供模塊定義和模塊調(diào)用的各種接口描述模塊。

PDL具有以下優(yōu)點(diǎn):

(1)可作為注釋直接插在程序中間;

(2)

PDL的編輯和書寫可用普遍的正文編輯程序或文字處理系統(tǒng);

(3)

PDL可以經(jīng)自動(dòng)處理程序,生成程序源代碼。

三、結(jié)構(gòu)化程序設(shè)計(jì)

結(jié)構(gòu)程序設(shè)計(jì)的概念最早由E.W.Dijkstra提出。1965年他在一次會(huì)議上指出:“可以從高級(jí)語言中取消GOTO語句?!?966年Bohm和Jacopini證明了,只用三種基本的控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序,即順序、選擇和循環(huán)(見圖4-18)。

圖4-18程序流程圖的結(jié)構(gòu)

結(jié)構(gòu)化程序設(shè)計(jì)中通常還允許使用DO-UNTIL和DO-CASE兩種控制結(jié)構(gòu),它們的流程圖如圖4-19所示。

圖4-19程序流程圖的結(jié)構(gòu)

使用結(jié)構(gòu)程序設(shè)計(jì)的優(yōu)點(diǎn)如下:

(1)發(fā)出的程序結(jié)構(gòu)層次清晰;

(2)不使用GOTO語句,程序的靜態(tài)和動(dòng)態(tài)結(jié)構(gòu)情況比較一致;

(3)控制結(jié)構(gòu)有確定的邏輯模式;

(4)可重用的代碼量大;

(5)程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。

四、教務(wù)管理信息系統(tǒng)詳細(xì)設(shè)計(jì)

1.程序流程圖

為了簡(jiǎn)單明了地描述本系統(tǒng)的處理過程,采用了比較傳統(tǒng)的程序流程圖。這是一種早就使用的模式,用來描述程序執(zhí)行的邏輯過程。按照程序流程圖的方法,可以把系統(tǒng)的處理過程分為處理、判斷、輸入、輸出、起始和終止等幾個(gè)過程。

系統(tǒng)流程圖主要用符號(hào)的形式描述了所有的輸入輸出和處理過程以及數(shù)據(jù)流向。

(1)主界面操作流程圖如圖4-20所示。

(2)教師情況查詢程序流程圖如圖4-21所示。

圖4-20主界面程序流程圖圖4-21教師情況查詢流程圖

2.?dāng)?shù)據(jù)庫的邏輯設(shè)計(jì)

E-R模型所表示的全局概念結(jié)構(gòu),是對(duì)用戶數(shù)據(jù)需求的一種抽象表示形式,它獨(dú)立于任何一種數(shù)據(jù)模型。為了實(shí)現(xiàn)用戶的需求,必須將概念結(jié)構(gòu)進(jìn)一步轉(zhuǎn)化為與我們選用的具體機(jī)器上DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu),這就

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論