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

下載本文檔

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

文檔簡介

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

項目引導(dǎo)

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

知識目標(biāo)

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

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

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

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

能力目標(biāo)

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

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

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

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

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

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

計劃。

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

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

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

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

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

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

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

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

2.選取合理的方案

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

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

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

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

(3)成本/效益分析;

(4)實現(xiàn)這個系統(tǒng)的進度計劃。

3.推薦最佳方案

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

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

4.功能分解

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

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

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

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

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

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

7.制訂測試計劃

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

8.書寫文檔

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

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

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

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

(4)詳細的實現(xiàn)計劃。

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

9.審查和復(fù)審

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

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

1.模塊化

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

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

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

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

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

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

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

2.抽象

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

3.逐步求精

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

4.信息隱藏和局部化

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

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

5.模塊獨立

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

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

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

1)耦合

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2)內(nèi)聚

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

圖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)可使作用域是控制域的子集,方法是:

①把判定點往上移,如把判定從模塊A移到模塊M中。

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

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

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

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

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

1.層次圖和HIPO圖

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

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

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

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

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

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

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

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

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

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

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

1.基本概念

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

1)變換流

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

圖4-7變換流

2)事務(wù)流

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

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

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

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

圖4-8事務(wù)流

2.設(shè)計過程

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

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

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

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

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

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

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

第5步:完成“第一級分解”。

第6步:完成“第二級分解”。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(2)

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

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

從數(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圖時,應(yīng)采用自頂向下逐步擴展的方法,先分解綜合性強、層次較少的模塊結(jié)構(gòu),然后再根據(jù)需要一步一步擴充,因此,需要對第一輪的HIPO圖進行分解,直到每個單元功能模塊都能明確它的作用,如添加功能、查詢功能等,從而得到教務(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è)計

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

年級組:年級組名稱、年級組組長姓名、年級組電話;

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

班級:班級名、班主任姓名、教室編號、班級人數(shù);

課程:課程編號、課程名、學(xué)分、學(xué)時;

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

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

家長:家長姓名、稱謂、單位地址、單位電話。

該系統(tǒng)有八個聯(lián)系,包括七個一對多聯(lián)系和一個多對多聯(lián)系。其中一個多對多聯(lián)系有屬性,其屬性為:成績(分數(shù))。

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

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

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

1.程序流程圖

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

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

程序流程圖的主要缺點如下:

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

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

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

2.盒圖(N-S圖)

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

(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圖的基本符號。

圖4-15PAD圖的基本符號

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

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

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

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

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

(5)

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

(6)

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

4.判定表

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

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

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

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

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

5.判定樹

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

圖4-17行李費的判定樹

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

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

PDL具有以下特點:

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

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

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

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

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

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

(2)

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

(3)

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

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

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

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

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

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

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

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

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

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

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

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

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

1.程序流程圖

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

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

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

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

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

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

E-R模型所表示的全局概念結(jié)構(gòu),是對用戶數(shù)據(jù)需求的一種抽象表示形式,它獨立于任何一種數(shù)據(jù)模型。為了實現(xiàn)用戶的需求,必須將概念結(jié)構(gòu)進一步轉(zhuǎn)化為與我們選用的具體機器上DBMS產(chǎn)品所支持的數(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

提交評論