《軟件工程實(shí)踐與項(xiàng)目管理》課件第5章_第1頁
《軟件工程實(shí)踐與項(xiàng)目管理》課件第5章_第2頁
《軟件工程實(shí)踐與項(xiàng)目管理》課件第5章_第3頁
《軟件工程實(shí)踐與項(xiàng)目管理》課件第5章_第4頁
《軟件工程實(shí)踐與項(xiàng)目管理》課件第5章_第5頁
已閱讀5頁,還剩160頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

5.1概要設(shè)計(jì)的任務(wù) 5.2概要設(shè)計(jì)的步驟5.3結(jié)構(gòu)化概要設(shè)計(jì)原則和基本要點(diǎn)

5.4軟件體系結(jié)構(gòu)

5.5結(jié)構(gòu)化概要設(shè)計(jì)工具

5.6詳細(xì)設(shè)計(jì)的任務(wù)5.7詳細(xì)設(shè)計(jì)的原則5.8結(jié)構(gòu)化詳細(xì)設(shè)計(jì)工具

5.9“詳細(xì)設(shè)計(jì)說明書”的書寫格式

5.10實(shí)例:資金監(jiān)控系統(tǒng)設(shè)計(jì)

本章小結(jié)

習(xí)題

第5章結(jié)構(gòu)化軟件設(shè)計(jì)5.1概要設(shè)計(jì)的任務(wù)在需求分析階段,要解決系統(tǒng)“做什么”的問題。在概要設(shè)計(jì)階段,要解決系統(tǒng)“怎么做”的問題,即將軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,從總體上說明軟件系統(tǒng)是如何實(shí)現(xiàn)的,又稱為總體結(jié)構(gòu)設(shè)計(jì)。具體有:

(1)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)(簡稱軟件結(jié)構(gòu))。考慮系統(tǒng)結(jié)構(gòu)時(shí)主要有如下幾個(gè)方面:①采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊;②確定每個(gè)模塊的功能;③確定模塊之間的調(diào)用關(guān)系;④確定模塊之間的接口,即模塊之間傳遞的信息;⑤評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。

(2)提出候選的推薦方案。

(3)編寫概要設(shè)計(jì)文檔。

(4)專家評(píng)審。評(píng)審?fù)ㄟ^后進(jìn)入詳細(xì)設(shè)計(jì)。5.2概要設(shè)計(jì)的步驟結(jié)構(gòu)化概要設(shè)計(jì)的步驟包括:確定體系結(jié)構(gòu)、進(jìn)行模塊劃分、確定系統(tǒng)接口、制定設(shè)計(jì)規(guī)范、確定用戶主界面、確定主要的算法、設(shè)計(jì)異常處理、書寫概要設(shè)計(jì)說明書。

1.確定體系結(jié)構(gòu)仔細(xì)閱讀需求規(guī)格說明書,理解系統(tǒng)建設(shè)目標(biāo)、業(yè)務(wù)現(xiàn)狀、現(xiàn)有系統(tǒng)、客戶需求的各功能說明,選擇體系結(jié)構(gòu),如B/S(Browser/Server,瀏覽器/服務(wù)器)體系結(jié)構(gòu)、C/S(Client/Server,客戶/服務(wù)器)體系結(jié)構(gòu)等。

2.確定系統(tǒng)的外部接口和內(nèi)部接口

接口設(shè)計(jì)從總體說明外部接口(外部用戶、軟/硬件環(huán)境與本系統(tǒng)的接口)和內(nèi)部接口(模塊間接口)。另外還需要對(duì)接口的命名、順序、數(shù)據(jù)類型、傳遞形式等做出具體規(guī)定。

3.分析數(shù)據(jù)流圖數(shù)據(jù)流圖是需求分析的產(chǎn)品,分析數(shù)據(jù)流圖便于理解數(shù)據(jù)流加工過程。

4.模塊劃分模塊劃分的原則是:高內(nèi)聚,低耦合。內(nèi)聚是一個(gè)模塊內(nèi)部各成分之間相關(guān)聯(lián)程度的度量標(biāo)準(zhǔn),耦合是模塊之間依賴程度的度量標(biāo)準(zhǔn)。內(nèi)聚和耦合是密切相關(guān)的,與其他模塊存在強(qiáng)耦合的模塊通常意味著弱內(nèi)聚,而強(qiáng)內(nèi)聚的模塊通常意味著與其他模塊之間存在弱耦合。

5.對(duì)模塊劃分進(jìn)行改進(jìn)所有的加工都要能對(duì)應(yīng)到相應(yīng)模塊(模塊的完整性在于它們完成了需求中的所有加工),消除完全相似或局部相似的重復(fù)功能,理清模塊間的層次、控制關(guān)系,減少模塊間信息交換量及平衡模塊的大小。對(duì)模塊劃分進(jìn)行合理調(diào)整。

6.導(dǎo)出邏輯數(shù)據(jù)結(jié)構(gòu)對(duì)需求階段設(shè)計(jì)的數(shù)據(jù)字典進(jìn)行修改、補(bǔ)充和完善,導(dǎo)出每種數(shù)據(jù)結(jié)構(gòu)的操作,并把這些操作對(duì)應(yīng)到相應(yīng)的模塊,將接口數(shù)據(jù)分配給具體的模塊。

7.部署規(guī)劃確定系統(tǒng)包含的應(yīng)用服務(wù)器系統(tǒng)、客戶端、數(shù)據(jù)庫管理系統(tǒng)等;

確定每個(gè)模塊放在哪個(gè)應(yīng)用服務(wù)器或客戶端的哪個(gè)目錄、哪個(gè)文件(庫),或是在數(shù)據(jù)庫內(nèi)部建立對(duì)象。

8.相關(guān)說明對(duì)每個(gè)篩選后的模塊和邏輯數(shù)據(jù)結(jié)構(gòu)進(jìn)行列表說明。

9.進(jìn)行主要的算法設(shè)計(jì)給出系統(tǒng)中復(fù)雜處理模塊的算法描述,給出業(yè)務(wù)步驟。

10.進(jìn)行異常處理設(shè)計(jì)給出系統(tǒng)中異常處理模塊的處理流程。

11.制定設(shè)計(jì)規(guī)范設(shè)計(jì)規(guī)范包括:命名約定,界面約定,程序編寫規(guī)范,文檔書寫規(guī)范。

12.制定測試計(jì)劃

《ANSI/IEEE軟件測試文檔標(biāo)準(zhǔn)829-1983》將測試計(jì)劃定義為:“一個(gè)敘述了預(yù)定的測試活動(dòng)的范圍、途徑、資源及進(jìn)度安排的文檔。它確認(rèn)了測試項(xiàng)、被測特征、測試任務(wù)、人員安排,以及任何偶發(fā)事件的風(fēng)險(xiǎn)?!睖y試計(jì)劃規(guī)定了各個(gè)測試階段所要使用的方法策略、測試環(huán)境、測試通過或失敗的準(zhǔn)則等內(nèi)容。測試計(jì)劃包括測試目的、測試范圍、測試對(duì)象、測試策略、測試任務(wù)、測試用例、資源配置、測試結(jié)果分析和度量以及測試風(fēng)險(xiǎn)評(píng)估等。

13.編寫概要設(shè)計(jì)文檔在這個(gè)階段應(yīng)該完成的文檔通常有下述幾種:概要設(shè)計(jì)說明書、用戶手冊、測試計(jì)劃、詳細(xì)的實(shí)現(xiàn)計(jì)劃。

14.審查與復(fù)審概要設(shè)計(jì)文檔最后對(duì)概要設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查,在技術(shù)審查通過之后還必須經(jīng)過使用部門的負(fù)責(zé)人從管理的角度進(jìn)行復(fù)審。5.3結(jié)構(gòu)化概要設(shè)計(jì)原則和基本要點(diǎn)

1.結(jié)構(gòu)化概要設(shè)計(jì)原則概要設(shè)計(jì)原則的基本思想(也就是概要設(shè)計(jì)基本原理)是:模塊化設(shè)計(jì)、抽象、自頂向下逐步求精設(shè)計(jì)、模塊獨(dú)立性、信息隱蔽性。

1)模塊化模塊是一個(gè)軟件系統(tǒng)的最小單元。從邏輯上看,模塊能完成一定的處理功能,給它一定的輸入信息,它可對(duì)之進(jìn)行加工處理,輸出相應(yīng)的結(jié)果信息;從物理上看,模塊是通過名字來調(diào)用的一段程序,例如:過程、函數(shù)、子程序、宏等都可作為模塊。模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希梢詥为?dú)被命名而且可通過名字來訪問。模塊一般具有如下三個(gè)屬性:

(1)功能:指該模塊實(shí)現(xiàn)什么功能,解決什么需求。此處的功能指該模塊本身的功能與它所調(diào)用的所有子模塊功能之和。

(2)邏輯:指描述模塊內(nèi)部如何做,即模塊內(nèi)部的執(zhí)行過程。

(3)狀態(tài):指該模塊使用時(shí)的環(huán)境和條件。

2)抽象抽象是認(rèn)識(shí)現(xiàn)實(shí)世界中復(fù)雜問題的思維工具,即從事物的本質(zhì)中抽出其共性而不考慮其他因素。軟件設(shè)計(jì)方法中對(duì)功能逐步細(xì)化的每一步都是抽象化處理。

3)自頂向下逐步求精“分解”和“抽象”是結(jié)構(gòu)化方法解決復(fù)雜問題的兩個(gè)基本手段。分解是把大問題分解成若干個(gè)小問題,然后“分而治之”。抽象是抽取出事物共同的本質(zhì)特性而暫不考慮它的細(xì)節(jié)。軟件工程過程中的每一步都可以看做是對(duì)軟件解決方法的抽象層次的一次細(xì)化。抓住主要問題,忽略次要問題,集中精力先解決主要問題,這就是“抽象”。逐步求精是把問題的求解過程分成若干步驟或階段,每個(gè)步驟或階段都比上一個(gè)步驟或階段更精化,更接近問題的解法。逐步求精是與抽象緊密相關(guān)的概念,是一個(gè)由抽象到具體的過程。自頂向下逐步求精是先設(shè)計(jì)頂層結(jié)構(gòu),再逐層向下設(shè)計(jì)。把整個(gè)系統(tǒng)看做一個(gè)模塊,然后按功能將它分解成若干第一層模塊,第一層模塊又可以分解成更為簡單一些的第二層模塊,越下層的模塊,其功能越具體、越簡單。

4)模塊獨(dú)立性模塊獨(dú)立性指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。在實(shí)際開發(fā)工作中,由于各個(gè)模塊屬于同一個(gè)軟件系統(tǒng),它們之間必然存在著一些聯(lián)系,因此模塊的獨(dú)立性是一個(gè)相對(duì)的概念。具有獨(dú)立功能而且和其他模塊之間相互作用少的模塊稱為獨(dú)立性高的模塊。模塊具有較高的獨(dú)立性是設(shè)計(jì)軟件系統(tǒng)的一個(gè)關(guān)鍵,其重要性主要體現(xiàn)在以下幾個(gè)方面:

(1)系統(tǒng)容易開發(fā)。由于模塊之間接口簡單,當(dāng)許多人分工合作開發(fā)同一個(gè)軟件時(shí),可以簡化合作者之間的協(xié)調(diào)工作,提高系統(tǒng)開發(fā)的效率。

(2)系統(tǒng)可靠性高。模塊之間的相互影響小,當(dāng)一個(gè)模塊出錯(cuò)時(shí),由于模塊之間的聯(lián)系小,其他模塊受到的錯(cuò)誤波及也小,從而提高了系統(tǒng)的可靠性。

(3)系統(tǒng)易于測試和維護(hù)。模塊之間具有較高的獨(dú)立性,相對(duì)說來,模塊間的聯(lián)系較少,當(dāng)某模塊發(fā)生錯(cuò)誤時(shí)其錯(cuò)誤傳播范圍較小,修改設(shè)計(jì)和修改程序需要的工作量也就比較小,這樣系統(tǒng)測試和維護(hù)的工作量也就相對(duì)小一些。模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)衡量,即模塊間的耦合性和模塊的內(nèi)聚性。耦合性衡量不同模塊彼此間互相連接的緊密程度;內(nèi)聚性衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。為保證模塊的獨(dú)立性,在進(jìn)行物理模型設(shè)計(jì)時(shí)就要遵循以下兩條原則:

(1)一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密越好,即要使模塊具有較高的內(nèi)聚性。

(2)各個(gè)模塊之間的信息聯(lián)系要盡可能地減少,即模塊的耦合性要盡可能的低。

5)信息隱蔽信息隱蔽是指在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對(duì)于不需要這些信息的其他模塊來說,是不能直接訪問的。通過信息隱蔽,可以定義和實(shí)施對(duì)模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。

2.結(jié)構(gòu)化概要設(shè)計(jì)的基本要點(diǎn)結(jié)構(gòu)化概要設(shè)計(jì)(簡稱結(jié)構(gòu)化設(shè)計(jì))的基本要點(diǎn)是:

(1)采用自頂向下,逐步求精的程序設(shè)計(jì)方法;

(2)使用三種基本控制結(jié)構(gòu)構(gòu)造程序。任何程序結(jié)構(gòu)上都由順序、選擇、循環(huán)三種基本結(jié)構(gòu)構(gòu)造。構(gòu)造方法如下:

(1)用順序方法對(duì)過程進(jìn)行分解,確定各部分的執(zhí)行順序;

(2)用選擇方法對(duì)過程進(jìn)行分解,確定各部分的執(zhí)行條件;

(3)用循環(huán)方法對(duì)過程進(jìn)行分解,確定各部分進(jìn)行重復(fù)的開始和結(jié)束的條件;

(4)對(duì)處理過程仍然未求解部分反復(fù)使用上述分解方法,最終將所有細(xì)節(jié)確定下來。5.4軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的思想最早是由Dijsktra等人提出的,MaryShaw(瑪麗·蕭)、DavidGarlan(戴維·甘蘭)、DewaynePerry(迪維恩·伯瑞)和AlexWolf(亞歷克斯·沃爾夫)等人在20世紀(jì)80年代末對(duì)其作了進(jìn)一步的研究和發(fā)展。軟件體系結(jié)構(gòu)如今已經(jīng)成為軟件工程研究的重點(diǎn),許多研究人員基于自己的經(jīng)驗(yàn)從不同角度對(duì)軟件體系結(jié)構(gòu)進(jìn)行了刻畫。

Perry和Wolf等人認(rèn)為軟件體系結(jié)構(gòu)由一組具有特定形式的體系結(jié)構(gòu)元素組成,包括處理元素、數(shù)據(jù)元素和連接元素三種。

Garlan和Perry則指出,軟件體系結(jié)構(gòu)包括系統(tǒng)的構(gòu)件結(jié)構(gòu)、構(gòu)件間的相互關(guān)系、以及控制構(gòu)件設(shè)計(jì)與演化的原則和規(guī)范等三個(gè)方面。

Shaw和Garlan認(rèn)為,體系結(jié)構(gòu)是對(duì)構(gòu)成系統(tǒng)的元素、這些元素間的交互、它們的構(gòu)成模式,以及這些模式之間限制的描述。目前比較統(tǒng)一的定義是:軟件體系結(jié)構(gòu)是系統(tǒng)的高層結(jié)構(gòu)共性的抽象,是建立系統(tǒng)時(shí)的構(gòu)造模型、構(gòu)造風(fēng)格和構(gòu)造模式。目前在商業(yè)軟件開發(fā)中常用的軟件體系結(jié)構(gòu)有以下幾種:層次體系結(jié)構(gòu)、C/S結(jié)構(gòu)和B/S結(jié)構(gòu)。

1.層次體系結(jié)構(gòu)層次體系結(jié)構(gòu)就是利用分層的處理方式來處理復(fù)雜的問題,層次系統(tǒng)要求上層子系統(tǒng)調(diào)用下層子系統(tǒng)的功能,而下層子系統(tǒng)不能夠調(diào)用上層子系統(tǒng)的功能。例如,TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)就是層次體系結(jié)構(gòu),它是通過四層(應(yīng)用層、傳輸層、網(wǎng)際層、網(wǎng)絡(luò)接口層)來實(shí)現(xiàn)的,如圖5-1所示。圖5-1TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)

TCP/IP體系結(jié)構(gòu)的層次按功能來劃分,每一層都有特定的功能,它一方面利用下一層所提供的功能,另一方面又為其上一層提供服務(wù)。通信雙方在相同層之間進(jìn)行通話,通話規(guī)則和協(xié)定的整體就是該層的協(xié)議。每一層都有一個(gè)或多個(gè)協(xié)議。協(xié)議的分層模型便于協(xié)議軟件按模塊方式進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),這樣每層協(xié)議的設(shè)計(jì)、修改、實(shí)現(xiàn)和測試都可以相對(duì)獨(dú)立進(jìn)行,從而減少復(fù)雜性。

2.?C/S結(jié)構(gòu)客戶機(jī)/服務(wù)器結(jié)構(gòu)簡稱C/S結(jié)構(gòu),它是兩層體系結(jié)構(gòu),由服務(wù)器提供應(yīng)用(數(shù)據(jù))服務(wù),客戶機(jī)通過網(wǎng)絡(luò)與服務(wù)器進(jìn)行連接,向服務(wù)器提出服務(wù)請求。如圖5-2所示。在實(shí)際應(yīng)用中常采用基于“胖客戶機(jī)”的兩層應(yīng)用??蛻舳塑浖话阌蓱?yīng)用程序及相應(yīng)的數(shù)據(jù)庫連接程序組成,服務(wù)器端軟件一般是某種數(shù)據(jù)庫管理系統(tǒng)。圖5-3瀏覽器/服務(wù)器模式

3.?B/S結(jié)構(gòu)“瀏覽器/服務(wù)器”結(jié)構(gòu)簡稱B/S結(jié)構(gòu),如圖5-3所示。在這種結(jié)構(gòu)下,主要業(yè)務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),極少部分業(yè)務(wù)邏輯在前端瀏覽器實(shí)現(xiàn)??蛻魴C(jī)統(tǒng)一采用瀏覽器,用戶工作界面通過WWW瀏覽器來實(shí)現(xiàn)。圖5-3瀏覽器/服務(wù)器模式這種結(jié)構(gòu)最大的優(yōu)點(diǎn)是:客戶機(jī)端只需安裝瀏覽器,登錄服務(wù)器即可執(zhí)行B/S結(jié)構(gòu)的軟件應(yīng)用系統(tǒng)。這樣不僅讓用戶使用方便,而且使得客戶機(jī)不存在安裝維護(hù)的問題。當(dāng)然軟件開發(fā)和維護(hù)的工作不是消失了,而是轉(zhuǎn)移到了Web服務(wù)器端。

4.?B/S和C/S比較

1)響應(yīng)速度

C/S結(jié)構(gòu)的軟件系統(tǒng)比B/S結(jié)構(gòu)的軟件系統(tǒng)在客戶端響應(yīng)方面速度快,能充分發(fā)揮客戶端的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。由于C/S結(jié)構(gòu)的軟件系統(tǒng)在邏輯結(jié)構(gòu)上比B/S結(jié)構(gòu)的軟件系統(tǒng)少一層,對(duì)于相同的任務(wù),C/S完成的速度總比B/S快,因此C/S結(jié)構(gòu)的軟件系統(tǒng)利于處理局域網(wǎng)內(nèi)大量數(shù)據(jù),B/S結(jié)構(gòu)的軟件系統(tǒng)利于處理遠(yuǎn)程信息查詢業(yè)務(wù)。

2)交互性

B/S結(jié)構(gòu)的軟件系統(tǒng)只需在客戶端(除操作系統(tǒng)軟件外)安裝一個(gè)瀏覽器,由于瀏覽器和HTML頁面的交互性比較差,因此B/S結(jié)構(gòu)的軟件系統(tǒng)沒有C/S軟件系統(tǒng)的交互性好。

3)打印和I/O接口的處理能力

C/S結(jié)構(gòu)的軟件系統(tǒng)在軟件處理打印和計(jì)算機(jī)接口方面比B/S結(jié)構(gòu)的軟件系統(tǒng)方便。例如,打印報(bào)表、RS-232異步通信口的控制等。

4)維護(hù)費(fèi)用

C/S結(jié)構(gòu)的軟件系統(tǒng)在系統(tǒng)維護(hù)方面沒有B/S結(jié)構(gòu)的軟件系統(tǒng)方便。C/S結(jié)構(gòu)的客戶端需要安裝專用的客戶端軟件,屬于“胖客戶端”。系統(tǒng)軟件升級(jí)時(shí),每一臺(tái)客戶機(jī)需要重新安裝,其維護(hù)和升級(jí)成本非常高。而B/S結(jié)構(gòu)的軟件系統(tǒng)屬于“瘦客戶端”,軟件工程師維護(hù)軟件系統(tǒng)不需要在不同地域之間來回奔跑,只需要在服務(wù)器端進(jìn)行維護(hù)就可以。5.5結(jié)構(gòu)化概要設(shè)計(jì)工具描述軟件結(jié)構(gòu)的工具主要有:HIPO(HierarrchyplusInput-Process-Output,層次加輸入—處理—輸出)圖(簡稱H圖)和模塊結(jié)構(gòu)圖,它們能夠反映整個(gè)系統(tǒng)的功能實(shí)現(xiàn)。

1.使用HIPO圖對(duì)庫存/銷售系統(tǒng)進(jìn)行概要設(shè)計(jì)

1)任務(wù)描述假定庫存/銷售(或者稱為盤存/銷售)系統(tǒng)分為兩部分:庫存部分和銷售部分。庫存/銷售系統(tǒng)主要處理的任務(wù)有兩個(gè):準(zhǔn)備庫存/銷售事務(wù);處理庫存/銷售事務(wù)。圖5-4給出了系統(tǒng)的工作流程圖。圖5-4庫存/銷售系統(tǒng)的工作流程圖下面的任務(wù)是:根據(jù)圖5-4所示的工作流程圖畫出庫存/銷售系統(tǒng)的HIPO圖。

2)?HIPO圖方法介紹

HIPO圖由四部分組成:層次圖、圖例、描述說明和IPO圖(輸入/處理/輸出),其中層次圖(H圖)、圖例、描述說明稱為可視目錄表,IPO圖描述各部分的工作細(xì)節(jié)。

(1)層次圖。層次圖又稱H圖或者體系框圖,它表明各個(gè)功能的隸屬關(guān)系。層次圖是自頂向下逐層分解得到的,是一個(gè)樹形結(jié)構(gòu)。它的頂層是整個(gè)系統(tǒng)的名稱和系統(tǒng)的概括功能說明;第二層把系統(tǒng)的功能展開,分成了幾個(gè)框;將第二層功能進(jìn)一步分解,就得到了第三層、第四層……直到最后一層。每個(gè)框內(nèi)都應(yīng)有一個(gè)名字,用以標(biāo)識(shí)它的功能。還應(yīng)有一個(gè)編號(hào),以記錄它所在的層次及在該層次的位置。

(2)圖例。每一套HIPO圖都應(yīng)當(dāng)有一個(gè)圖例,即圖形符號(hào)說明。附上圖例,不管人們在什么時(shí)侯閱讀它都能對(duì)其符號(hào)的意義一目了然。

(3)描述說明。它是對(duì)層次圖中每個(gè)框的補(bǔ)充說明,在必須說明時(shí)才用,所以它是可選的。描述說明可以使用自然語言。

(4)?IPO圖。IPO圖描述輸入數(shù)據(jù)、對(duì)數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關(guān)系。

IPO圖有固定的格式,圖中處理操作部分總是列在中間,輸入和輸出部分分別在其左邊和右邊。由于某些細(xì)節(jié)很難在一張IPO圖中表達(dá)清楚,常常把IPO圖又分為兩部分,簡單概括的稱為概要IPO圖,細(xì)致具體一些的稱為詳細(xì)IPO圖。

3)任務(wù)實(shí)現(xiàn)對(duì)于庫存/銷售系統(tǒng),HIPO圖的設(shè)計(jì)方法如下:

(1)?H圖的第一層是系統(tǒng)名稱:盤存/銷售系統(tǒng)。

(2)?H圖的第二層是庫存系統(tǒng)和銷售系統(tǒng)。

(3)庫存的第三層分為檢查庫存情況,記錄庫存情況,產(chǎn)生庫存報(bào)表等。

(4)銷售的第三層分為計(jì)算銷售記錄,核對(duì)顧客賒欠金額等。以上的分析結(jié)果如圖5-5所示,其中,圖(a)是系統(tǒng)的層次圖,圖(b)是后面IPO圖的圖例,圖(c)是描述說明。圖5-5庫存/銷售系統(tǒng)的可視目錄表圖5-6是表示庫存/銷售系統(tǒng)第二層的對(duì)應(yīng)于H圖上的1.1.0框的概要IPO圖。圖5-6對(duì)應(yīng)H圖上1.1.0框的概要IPO圖在概要IPO圖中,沒有指明輸入—處理—輸出三者之間的關(guān)系,用它來進(jìn)行下一步的設(shè)計(jì)是不可能的。故需要使用詳細(xì)IPO圖以指明輸入—處理—輸出三者之間的關(guān)系,其圖形與概要IPO圖一樣,但輸入、輸出最好用具體的介質(zhì)和設(shè)備類型的圖形表示。圖5-7是銷售/庫存系統(tǒng)中對(duì)應(yīng)于1.1.2框的一張?jiān)敿?xì)IPO圖。圖5-7對(duì)應(yīng)于H圖1.1.2框的詳細(xì)IPO圖

2.設(shè)計(jì)采購/銷售系統(tǒng)的模塊結(jié)構(gòu)圖

1)任務(wù)描述假設(shè)某公司采購/銷售系統(tǒng)的數(shù)據(jù)處理過程是:公司營業(yè)部對(duì)每天的顧客訂貨單形成一個(gè)訂貨單文件,它記錄了訂貨項(xiàng)目的數(shù)量、貨號(hào)、型號(hào)等詳細(xì)數(shù)據(jù)。在這個(gè)文件的基礎(chǔ)上對(duì)顧客訂貨情況進(jìn)行分類統(tǒng)計(jì)、匯總等項(xiàng)處理操作。下面的任務(wù)是:利用模塊結(jié)構(gòu)圖的方法設(shè)計(jì)采購/銷售系統(tǒng)的模塊結(jié)構(gòu)圖。

2)模塊結(jié)構(gòu)圖的設(shè)計(jì)方法模塊結(jié)構(gòu)圖也稱控制結(jié)構(gòu)圖,它表示一個(gè)軟件系統(tǒng)的層次分解關(guān)系、模塊調(diào)用關(guān)系、模塊之間數(shù)據(jù)流和控制信息流的傳遞關(guān)系,它是描述軟件系統(tǒng)物理模型、進(jìn)行概要設(shè)計(jì)的主要工具,也是軟件文檔的一部分。模塊結(jié)構(gòu)圖既能反映系統(tǒng)整體結(jié)構(gòu),又能反映系統(tǒng)的細(xì)節(jié)和它們之間的聯(lián)系。通過模塊結(jié)構(gòu)圖,將系統(tǒng)分解為若干個(gè)模塊,這樣可以由不同設(shè)計(jì)人員分別承擔(dān)不同模塊的設(shè)計(jì)和實(shí)施任務(wù),便于管理與控制。

(1)模塊結(jié)構(gòu)圖的基本符號(hào)。繪制模塊結(jié)構(gòu)圖的基本符號(hào)如表5-1所示。表5-1模塊結(jié)構(gòu)圖的基本符號(hào)

(2)模塊結(jié)構(gòu)圖的用途。模塊結(jié)構(gòu)圖可以表示模塊的調(diào)用關(guān)系。模塊之間的調(diào)用關(guān)系主要有三種:直接調(diào)用、選擇調(diào)用和循環(huán)調(diào)用。這與程序流程圖中三種基本結(jié)構(gòu)—順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是對(duì)應(yīng)的。圖5-8給出了模塊結(jié)構(gòu)圖的形式表示這三種結(jié)構(gòu)。圖5-8IPO圖的三種基本結(jié)構(gòu)任何復(fù)雜的模塊結(jié)構(gòu)圖都可以由這三種基本結(jié)構(gòu)組合而成。

(3)模塊結(jié)構(gòu)圖中的模塊類型。在模塊結(jié)構(gòu)圖中,不能再分解的模塊稱為原子模塊。如果一個(gè)軟件系統(tǒng)的全部加工都是由原子模塊來完成,而其他所有非原子模塊僅僅執(zhí)行控制或協(xié)調(diào)功能,這樣的系統(tǒng)就是完全因子分解的最好的系統(tǒng)。實(shí)際上這只是我們要力圖達(dá)到的目標(biāo),大多數(shù)系統(tǒng)都達(dá)不到完全因子分解。一般地,在模塊結(jié)構(gòu)圖中有以下四種類型的模塊:①傳入模塊。傳入模塊從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級(jí)模塊。變換型數(shù)據(jù)流程圖的輸入模塊以及事務(wù)型數(shù)據(jù)流圖中的接受事務(wù)模塊均屬于此類模塊。②傳出模塊。傳出模塊從上級(jí)模塊中獲取數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模塊。如變換型數(shù)據(jù)流圖及事務(wù)型數(shù)據(jù)流圖中的輸出模塊均屬于此類模塊。③變換模塊,也叫加工模塊。它從上級(jí)模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其他形式,再傳回上級(jí)模塊。事務(wù)型數(shù)據(jù)流圖中的調(diào)度模塊就屬于此類模塊,如圖5-9(a)所示。④協(xié)調(diào)模塊。它是對(duì)所有的下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊。在一個(gè)較好的模塊結(jié)構(gòu)圖中,該模塊應(yīng)出現(xiàn)在較高層。變換型數(shù)據(jù)流圖的總控模塊以及事務(wù)型數(shù)據(jù)流圖中的事務(wù)中心模塊均屬于此類模塊,如圖5-9(b)所示。在實(shí)際系統(tǒng)中,有些模塊屬于上述某一類型,還有一些是上述各種類型的組合。圖5-9模塊結(jié)構(gòu)圖的類型

(4)模塊間調(diào)用的規(guī)則有:①每個(gè)模塊有自身的任務(wù),只有接收到上級(jí)模塊的調(diào)用命令時(shí)才能執(zhí)行。②模塊之間的通信只限于其直接上、下級(jí)模塊,任何模塊不能直接與其他上下級(jí)模塊或同級(jí)模塊發(fā)生通信聯(lián)系。③若有某模塊要與非直接上、下級(jí)的其他模塊發(fā)生通信聯(lián)系,必須通過其上下級(jí)模塊進(jìn)行傳遞。④模塊調(diào)用順序?yàn)樽陨隙隆T谀K結(jié)構(gòu)圖中,將一個(gè)系統(tǒng)分解為若干模塊,即將一個(gè)比較抽象的、物理內(nèi)容不大確定的任務(wù),分解為若干個(gè)比較具體的、物理內(nèi)容比較確定的任務(wù)。這些模塊可以進(jìn)一步分解,使下層模塊的任務(wù)更加具體、確定,這個(gè)分解過程是一個(gè)由抽象到具體、由復(fù)雜到簡單的過程。從邏輯上看,上層模塊包括下層模塊,下層模塊功能是上層模塊功能的一部分。

(5)模塊結(jié)構(gòu)圖的改進(jìn)。在劃分模塊之后,要進(jìn)一步地完善模塊的功能,對(duì)于系統(tǒng)模塊中重復(fù)的功能部分要予以刪除,即刪除那些完全相似或局部相似的模塊。例如圖5-10(a)所示,模塊R1和R2中虛線框部分是相似的,可以將R1和R2中共同部分從R1和R2中分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊,如圖5-10(b)所示。為了減少控制的傳遞、接口的復(fù)雜性,R1和R2中剩余的部分可根據(jù)情況與其上一層模塊合并,形成圖5-10(c)和圖5-10(d)中所示的方案。圖5-10完善模塊的功能

(6)提高模塊獨(dú)立性。對(duì)模塊結(jié)構(gòu)進(jìn)行分析,通過模塊分解或模塊合并,盡量降低模塊之間的耦合以提高模塊之間的內(nèi)聚,從而對(duì)所設(shè)計(jì)的模塊結(jié)構(gòu)圖進(jìn)行優(yōu)化。

(7)合理確定模塊結(jié)構(gòu)的規(guī)模,盡可能減少模塊的高扇出,增加高扇入。模塊的規(guī)模包括兩個(gè)方面:模塊結(jié)構(gòu)的深度和模塊結(jié)構(gòu)的寬度。深度表示模塊結(jié)構(gòu)中的層數(shù),它往往能粗略地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。模塊結(jié)構(gòu)圖一般不要超過7層。寬度是模塊結(jié)構(gòu)圖內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值。一般來說,寬度越大,系統(tǒng)越復(fù)雜。對(duì)寬度影響最大的因素是模塊的扇出。

模塊的扇出是指一個(gè)模塊直接調(diào)用的子模塊數(shù)目。經(jīng)驗(yàn)表明,扇出數(shù)應(yīng)保持在合理的大小范圍,一個(gè)設(shè)計(jì)得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限通常是5到9)。扇出過大就應(yīng)該適當(dāng)增加中間層次的控制模塊。扇出過小則可以將下級(jí)模塊進(jìn)一步劃分成若干子功能模塊,或者合并到它的上級(jí)模塊中去。模塊的扇入是指直接調(diào)用該模塊的上級(jí)模塊的數(shù)目。扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多。如果一個(gè)模塊的扇入數(shù)過大,例如超過8,而這個(gè)模塊又不是公用模塊,說明該模塊包含多個(gè)功能,這時(shí)應(yīng)對(duì)它進(jìn)行功能分解。如圖5-11所示,M的扇出數(shù)目是3,Y的扇入數(shù)目是3。經(jīng)驗(yàn)表明,上層扇出比較高,中層扇出較少,底層為高扇入公用模塊的軟件模塊結(jié)構(gòu)是設(shè)計(jì)較好的結(jié)構(gòu)。圖5-11扇入/扇出示例

(8)模塊大小應(yīng)該適中。模塊的大小可用模塊中所含語句的數(shù)量多少來衡量。一個(gè)模塊所含語句不應(yīng)過多,過多時(shí),會(huì)影響模塊程序的可理解性。在保證模塊的獨(dú)立性的前提下,通常模塊中語句行數(shù)應(yīng)在50~100范圍內(nèi)。以上這些準(zhǔn)則對(duì)改進(jìn)設(shè)計(jì),提高軟件質(zhì)量有著重要的參考價(jià)值。模塊結(jié)構(gòu)圖的圖例如圖5-12所示。其中的箭頭有兩種:實(shí)心箭尾表示模塊結(jié)構(gòu)圖標(biāo)志,空心箭尾表示模塊結(jié)構(gòu)圖的數(shù)據(jù)流向。圖5-12模塊結(jié)構(gòu)圖的5個(gè)圖例

3)任務(wù)實(shí)現(xiàn)根據(jù)以上模塊結(jié)構(gòu)圖的設(shè)計(jì)方法,所設(shè)計(jì)的采購/銷售系統(tǒng)的模塊結(jié)構(gòu)圖如圖5-13所示。圖5-13采購/銷售系統(tǒng)的模塊結(jié)構(gòu)圖

3.“概要設(shè)計(jì)說明書”的書寫格式下面給出概要設(shè)計(jì)說明書的主要內(nèi)容及結(jié)構(gòu),以供參考。

1引言

2編寫目的闡明編寫概要設(shè)計(jì)說明書的目的,指明讀者對(duì)象。

3項(xiàng)目背景項(xiàng)目背景包括:

·項(xiàng)目的委托單位、開發(fā)單位和主管部門;

·該軟件系統(tǒng)與其他系統(tǒng)的關(guān)系。

4任務(wù)概述

5定義列出本文檔中用到的專門術(shù)語的定義和縮寫詞的原義。

6運(yùn)行環(huán)境

7需求概述

·系統(tǒng)目標(biāo);

·系統(tǒng)設(shè)計(jì)原則;

·功能需求描述;

·性能需求描述。

8條件與限制

9模塊設(shè)計(jì)

·系統(tǒng)功能設(shè)計(jì);

·模塊劃分;

·模塊之間的調(diào)用關(guān)系。

10接口設(shè)計(jì)

·外部接口:包括用戶界面、軟件接口與硬件接口;

·內(nèi)部接口:各模塊之間的接口。

11數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

·概念設(shè)計(jì);

·邏輯結(jié)構(gòu)的設(shè)計(jì);

·物理結(jié)構(gòu)的設(shè)計(jì)。

12運(yùn)行設(shè)計(jì)

·運(yùn)行模塊的組合;

·運(yùn)行控制。

13異常處理設(shè)計(jì)

·異常輸出信息;

·異常處理對(duì)策,如設(shè)置后備、性能降級(jí)、恢復(fù)及再啟動(dòng)等。

14安全保密設(shè)計(jì)

·維護(hù)設(shè)計(jì),說明為方便維護(hù)工作的設(shè)施,如維護(hù)模塊等。

15參考資料

·列出有關(guān)資料的作者、標(biāo)題、編號(hào)、發(fā)表日期、出版單位或資料來源??砂ǎ?/p>

·項(xiàng)目經(jīng)核準(zhǔn)的計(jì)劃任務(wù)書、合同或上級(jí)機(jī)關(guān)的批文;

·項(xiàng)目總體計(jì)劃;

·需求分析說明書;

·測試計(jì)劃書(初稿);

·用戶使用手冊(初稿);

·文檔所引用的資料、采用的標(biāo)準(zhǔn)和規(guī)范。5.6詳細(xì)設(shè)計(jì)的任務(wù)詳細(xì)設(shè)計(jì)階段主要進(jìn)行過程設(shè)計(jì),即確定各個(gè)模塊的實(shí)現(xiàn)算法,并采用一定的工具精確地描述這些算法,為編寫程序代碼提供依據(jù)。此外,在詳細(xì)設(shè)計(jì)階段還要完成代碼設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、界面設(shè)計(jì)、網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)等任務(wù)。詳細(xì)設(shè)計(jì)是軟件設(shè)計(jì)的第二階段,其基本任務(wù)如下:

(1)為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。選擇適當(dāng)?shù)墓ぞ?,并詳?xì)描述算法的過程。

(2)確定每個(gè)模塊使用的數(shù)據(jù)結(jié)構(gòu)。

(3)功能構(gòu)件的詳細(xì)設(shè)計(jì)。

(4)其他設(shè)計(jì):根據(jù)軟件系統(tǒng)類型,還要進(jìn)行用戶界面設(shè)計(jì)、輸入/輸出格式設(shè)計(jì)以及外部接口設(shè)計(jì)和內(nèi)部接口設(shè)計(jì)。

(5)編寫詳細(xì)設(shè)計(jì)說明書并進(jìn)行評(píng)審。5.7詳細(xì)設(shè)計(jì)的原則詳細(xì)設(shè)計(jì)應(yīng)遵循以下原則:

(1)模塊的邏輯描述要清晰易讀、正確可靠。

(2)采用結(jié)構(gòu)化設(shè)計(jì)方法,改善控制結(jié)構(gòu),降低程序的復(fù)雜程度,從而提高程序的可讀性、可測試性、可維護(hù)性。

(3)選擇恰當(dāng)描述工具來描述各模塊算法。描述工具包括:程序流程圖、NS圖(方塊圖)、PAD(ProblemAnalysisDiagram,問題分析圖)和PDL(ProcessDesignLanguage,過程設(shè)計(jì)語言)等。

(4)職能劃分功能化,如企業(yè)組織架構(gòu),企業(yè)部門職能的組成要素描述,部門層次結(jié)構(gòu),部門職能劃分,員工職務(wù)職能劃分,職務(wù)職能的組成要素等。

(5)功能劃分流程化,如功能需求描述(業(yè)務(wù)、系統(tǒng)),功能需求的整理與組合,功能間的耦合關(guān)系,功能的組成要素,功能的拆分描述與實(shí)現(xiàn)等。

(6)流程劃分單據(jù)化,如現(xiàn)實(shí)業(yè)務(wù)單據(jù)收集,單據(jù)的整理與組合,單據(jù)在功能實(shí)現(xiàn)流程中不同時(shí)期的狀態(tài)變化,單據(jù)的拆分描述與實(shí)現(xiàn)(數(shù)據(jù)源/數(shù)據(jù)流向/數(shù)據(jù)處理動(dòng)作)等。

(7)單據(jù)劃分表格化,如單據(jù)內(nèi)容的拆分與整合等。

(8)表格劃分原子化,如表格的字段設(shè)計(jì)(數(shù)據(jù)類型、值域、屬性表),表格主鍵外鍵和約束的設(shè)計(jì),表格索引的設(shè)計(jì),表格對(duì)不同角色用戶的權(quán)限分配,視圖的設(shè)計(jì)等。5.8結(jié)構(gòu)化詳細(xì)設(shè)計(jì)工具詳細(xì)描述處理過程常用三種工具:圖形、表格和語言。圖形工具:如結(jié)構(gòu)化程序流程圖、方塊圖和問題分析圖(PAD)。IPO圖也是詳細(xì)設(shè)計(jì)的主要工具之一。表格工具:如判定表可作為詳細(xì)設(shè)計(jì)中描述邏輯條件復(fù)雜的算法。過程設(shè)計(jì)語言(PDL):是一種用于描述模塊算法設(shè)計(jì)和處理細(xì)節(jié)的語言工具。

1.程序流程圖

1)任務(wù)描述畫出下面描述的流程圖:判定2000~2500年中的哪一年是閏年,將結(jié)果輸出。

2)任務(wù)分析閏年的條件是:能被4整除,但不能被100整除的年份是閏年,或者能被100整除,又能被400整除的年份是閏年。對(duì)于輸入的年份,使用上面的條件做除法,求結(jié)果的余數(shù)是否為零,為零說明能夠整除,不為零說明不能整除。另外,對(duì)于2000~2500年中的每個(gè)年份可以使用循環(huán)語句來控制。

3)任務(wù)實(shí)現(xiàn)下面首先介紹程序流程圖的畫法。在程序流程圖中只能使用三種控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),任何復(fù)雜的程序流程圖都是由這三種基本的控制結(jié)構(gòu)組成的。下面分別用圖示對(duì)這三種結(jié)構(gòu)加以說明,其中,P表示判斷,A表示處理加工,Y表示判斷條件成立,N表示條件不成立。

(1)順序結(jié)構(gòu)。順序結(jié)構(gòu)是由幾個(gè)連續(xù)的加工步驟依次排列構(gòu)成,如圖5-14所示。圖5-14順序結(jié)構(gòu)

(2)選擇結(jié)構(gòu)。選擇型結(jié)構(gòu)有兩類,一類由某個(gè)邏輯判斷式的取值決定選擇兩個(gè)加工中的一個(gè),如圖5-15(a)所示;一類是列舉多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一,如圖5-15(b)所示。圖5-15選擇結(jié)構(gòu)

(3)循環(huán)結(jié)構(gòu)。循環(huán)型結(jié)構(gòu)中有兩類,一類是當(dāng)型循環(huán)結(jié)構(gòu),先判定循環(huán)條件,當(dāng)循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加工,如5-16(a)所示;另一類是直到型循環(huán)結(jié)構(gòu),先執(zhí)行某些特定的加工,后判定循環(huán)條件,直到控制條件成立為止,如圖5-16(b)所示。圖5-16循環(huán)結(jié)構(gòu)依據(jù)前面的任務(wù)分析,可畫出如圖5-17所示的程序流程圖。圖5-17完整的程序流程圖

4)任務(wù)總結(jié)雖然程序流程圖可以清晰完整地描述系統(tǒng)處理的算法。但是流程圖也具有以下缺點(diǎn):

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

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

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

2.方塊圖

1)任務(wù)描述同上面判斷閏年的例子,我們利用方塊圖(N-S圖)畫出其處理過程。

2)方法步驟首先我們介紹一下方塊圖的畫法。方塊圖是由Nassi和Shneiderman提出的一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,又稱之為盒圖。在方塊圖中的6種基本控制結(jié)構(gòu),如圖5-18所示。圖5-18N-S圖的基本控制結(jié)構(gòu)對(duì)于前面的任務(wù),判斷閏年的方塊圖如圖5-19所示。圖5-19計(jì)算閏年的方塊圖

3)任務(wù)總結(jié)方塊圖具有以下特點(diǎn):

(1)每一個(gè)特定控制結(jié)構(gòu)的作用域很明確,能夠清晰辨別。

(2)繪制時(shí)需遵守結(jié)構(gòu)化程序設(shè)計(jì)的要求,不能任意轉(zhuǎn)移控制。

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

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

3.?PAD圖

1)任務(wù)描述使用判斷閏年的例子,畫出PAD圖。

2)方法步驟首先介紹PAD圖的畫法。

PAD圖是日本人二村良彥等提出的算法圖形表示法,它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,是一種用結(jié)構(gòu)化程序設(shè)計(jì)思想表現(xiàn)程序邏輯結(jié)構(gòu)的圖形工具。其所表達(dá)的程序結(jié)構(gòu)清晰、結(jié)構(gòu)化程度高,比流程圖更容易閱讀。另外,PAD圖是樹形結(jié)構(gòu),比流程圖更適應(yīng)于在計(jì)算機(jī)上處理。

PAD圖設(shè)置了五種控制結(jié)構(gòu):順序結(jié)構(gòu)、雙分支結(jié)構(gòu)、while循環(huán)結(jié)構(gòu)、until循環(huán)結(jié)構(gòu)和雙分支結(jié)構(gòu)。如圖5-20所示。圖5-20PAD圖的基本控制結(jié)構(gòu)判斷閏年的PAD圖如圖5-21所示。圖5-21判斷閏年的PAD圖

4.?PDL程序

1)任務(wù)描述對(duì)于在一個(gè)文檔中查找錯(cuò)拼的單詞的步驟是:首先把整個(gè)文檔分離成單詞,然后在字典中查這些單詞,如果在字典中查不到,則顯示該單詞并加入到字典中。寫出以上描述所對(duì)應(yīng)的PDL偽碼程序。

2)方法步驟

PDL有四種基本處理結(jié)構(gòu)的方法:順序結(jié)構(gòu)、分支結(jié)構(gòu)、選擇型結(jié)構(gòu)和循環(huán)結(jié)構(gòu)(包括while型和until型結(jié)構(gòu))。(1)順序結(jié)構(gòu):

<PDL語句>

……

<PDL語句>(2)選擇型結(jié)構(gòu):

if<條件>then

<PDL語句>

elseif<條件>then

<PDL語句>

else

<PDL語句>

endif(3)?while循環(huán)結(jié)構(gòu):

loopwhile<條件>

<PDL語句>

endloop(4)?until型循環(huán)結(jié)構(gòu):

loopuntil<條件>

<PDL語句>

endloop (5)分支型結(jié)構(gòu):

case<選擇句子>of

<標(biāo)號(hào)>{,<標(biāo)號(hào)}:><PDL語言>

[defoult]:[<PDL語句>]

endcase本任務(wù)的PDL描述的過程如下:首先把整個(gè)文檔分離成單詞,然后在字典中查這些單詞,如果在字典中查不到,則顯示這些單詞并將它們加入到字典中。

3)任務(wù)總結(jié)

PDL是一種混合語言,它使用自然語言(如英語)詞匯,同時(shí)使用另一種結(jié)構(gòu)化的程序設(shè)計(jì)語言(如C語言)的語法。

PDL程序的主要特征如下:

(1)用PDL寫出的程序具有正文格式,在計(jì)算機(jī)上可做正文處理。

(2)?PDL程序中有一些能夠標(biāo)明程序結(jié)構(gòu)的關(guān)鍵字。

(3)?PDL語言僅有少量的簡單語法規(guī)則,大量使用人們習(xí)慣的自然語言。

(4)使用PDL語言常常按逐步細(xì)化的方式寫出程序。

(5)?PDL程序的注釋行對(duì)語句進(jìn)行解釋,起到提高可讀性的作用。

(6)它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明,具有模塊化的特點(diǎn)。

(7)有自然語言的語法。

(8)用模擬英語的口氣描述每一個(gè)特定操作。

(9)避免使用最終的程序語句。PDL就是為了讓程序員在一個(gè)比較高的層次上思考,如果PDL太底層,那就失去了PDL的好處。

(10)在設(shè)計(jì)意向這一層次上寫PDL描述方法的意義,而不是描述如何實(shí)現(xiàn)。

(11)?PDL非常適合描述算法,當(dāng)寫好PDL之后,就可以根據(jù)它來編碼,而PDL則成為程序語言的注釋。這可以省去大量的注釋工作。如果遵循了這一指導(dǎo)方針,那么注釋將是非常完備而且富有意義的。5.9“詳細(xì)設(shè)計(jì)說明書”的書寫格式下面給出“詳細(xì)設(shè)計(jì)說明書”的格式,以供參考。

1引言

2編寫目的闡明編寫詳細(xì)設(shè)計(jì)說明書的目的,指明讀者對(duì)象。

3項(xiàng)目背景與需求概述項(xiàng)目背景應(yīng)包括項(xiàng)目來源和主管部門等;簡要描述需求的主要功能要求等。

4定義列出文檔中用到的專門術(shù)語的定義和縮寫詞的原義。

5參考資料列出有關(guān)資料的作者、標(biāo)題、編號(hào)、發(fā)表日期、出版單位或資料來源。

6軟件結(jié)構(gòu)設(shè)計(jì)給出軟件系統(tǒng)的結(jié)構(gòu)圖。

7模塊詳細(xì)設(shè)計(jì)對(duì)于每個(gè)模塊應(yīng)給出以下說明:

(1)功能;

(2)性能;

(3)輸入項(xiàng);

(4)輸出項(xiàng);

(5)算法:模塊所選用的算法;

(6)程序邏輯描述;

(7)程序流程圖。

8接口詳細(xì)設(shè)計(jì)

9模塊目錄結(jié)構(gòu)描述把模塊按照某種結(jié)構(gòu)進(jìn)行分類存儲(chǔ),以便于軟件的配置管理。

10控制層設(shè)計(jì)

11表示層設(shè)計(jì)給出界面事件、界面的輸入/輸出和事件處理。

12限制條件

13測試要點(diǎn)給出測試模塊的主要測試要求。

14尚未解決的問題5.10實(shí)例:資金監(jiān)控系統(tǒng)設(shè)計(jì)這里給出一個(gè)資金監(jiān)控系統(tǒng)設(shè)計(jì)的實(shí)例,本實(shí)例包括項(xiàng)目背景、系統(tǒng)架構(gòu)與處理策略、系統(tǒng)模塊劃分、網(wǎng)絡(luò)體系結(jié)構(gòu)、模塊功能設(shè)計(jì)、數(shù)據(jù)流程圖、數(shù)據(jù)輸出格式、數(shù)據(jù)庫表的結(jié)構(gòu)設(shè)計(jì)等。

1.項(xiàng)目背景實(shí)現(xiàn)集團(tuán)資金監(jiān)控是一個(gè)系統(tǒng)工程,它需要集團(tuán)企業(yè)總部、子公司和銀行三者間的緊密聯(lián)系。集團(tuán)總部要掌握子公司資金的使用情況,如現(xiàn)金、銀行存款、應(yīng)收應(yīng)付賬款、應(yīng)收應(yīng)付票據(jù)、其他貨幣資金等等,就需要集團(tuán)總部與子公司間建立一個(gè)內(nèi)部資金管理系統(tǒng),及時(shí)獲取子公司的資金狀況,對(duì)子公司的資金進(jìn)行管理。通過了解各單位資金流入與流出情況,集團(tuán)公司總部可以深入了解和掌握各子公司的生產(chǎn)經(jīng)營活動(dòng)是否正常、投入產(chǎn)出是否合理、經(jīng)濟(jì)效益是否顯著、償債能力是否足夠、貨幣回籠是否正常等等。通常還需要在集團(tuán)與商業(yè)銀行間建立一個(gè)外部的資金信息接口處理系統(tǒng),通過銀行信息及時(shí)反映出子公司的資金現(xiàn)狀和流向,如對(duì)方收款單位名稱、金額、付款時(shí)間等真實(shí)、詳細(xì)的資料,這樣才能做到真正意義上的資金監(jiān)控。省電信總公司對(duì)全省各地資金進(jìn)行實(shí)時(shí)監(jiān)控與分析,達(dá)到統(tǒng)一的資金管理。實(shí)現(xiàn)資金收支兩條線管理,有效監(jiān)控資金的運(yùn)動(dòng),實(shí)時(shí)查詢賬戶余額。

2.項(xiàng)目投資方該項(xiàng)目投資方為某省電信總公司。

3.系統(tǒng)架構(gòu)與處理策略省電信總公司和開戶銀行之間的信息交互需要有一個(gè)公共平臺(tái)(或公共接口),使得省電信總公司資金監(jiān)控在內(nèi)部對(duì)用戶來說是透明的,因此我們將電信系統(tǒng)的各下屬子公司的信息請求格式統(tǒng)一為標(biāo)準(zhǔn)的接口格式,此格式需要由前置機(jī)上的公共模塊軟件進(jìn)行處理。因省電信在多家銀行開戶結(jié)算,因此本系統(tǒng)從下至上分以下三個(gè)層次設(shè)計(jì)(見圖5-22所示):圖5-22資金監(jiān)控系統(tǒng)模塊

(2)前置機(jī)處理層:包括公共收款模塊、公共付款模塊、公共查詢模塊、公共對(duì)賬模塊。它的功能是分析來自應(yīng)用層的請求,并轉(zhuǎn)到相應(yīng)的目標(biāo)銀行接口模塊處理,同時(shí)接收來自目標(biāo)銀行接口模塊返回的數(shù)據(jù),處理后發(fā)送到應(yīng)用層。

(3)系統(tǒng)應(yīng)用層:包括賬戶結(jié)算處理系統(tǒng)、銀行資金監(jiān)控系統(tǒng)。應(yīng)用層主要是供操作者使用的。系統(tǒng)應(yīng)用層負(fù)責(zé)與銀行計(jì)算機(jī)數(shù)據(jù)進(jìn)行交換。它將中間層公共模塊發(fā)出的請求按與銀行協(xié)商好的格式發(fā)到銀行的計(jì)算機(jī),并將銀行返回的結(jié)果提交給中間層公共模塊處理。最低層對(duì)操作者來是透明的。中間層是半透明的。

4.系統(tǒng)模塊劃分圖5-23監(jiān)控分析系統(tǒng)監(jiān)控分析系統(tǒng)分為以下幾大部分:

1)?(銀行端)監(jiān)控分析系統(tǒng)監(jiān)控分析系統(tǒng)收集省系統(tǒng)所有銀行賬戶的余額及結(jié)算明細(xì),并對(duì)收集的數(shù)據(jù)進(jìn)行分析。本系統(tǒng)供省級(jí)公司使用。如圖5-23所示。圖5-23監(jiān)控分析系統(tǒng)

2)賬戶管理系統(tǒng)賬戶管理系統(tǒng)主要管理省公司在銀行開戶的資金,包括賬戶余額及結(jié)算明細(xì)。它的實(shí)時(shí)性比地市公司的資金監(jiān)控性要高,收付款做到實(shí)時(shí),并對(duì)收付款進(jìn)行賬務(wù)處理。

3)賬戶查詢系統(tǒng)省公司既然已建立起整個(gè)省公司的銀行賬戶數(shù)據(jù)庫,就為地市分公司查詢銀行賬戶余額、結(jié)算明細(xì)、報(bào)表打下了基礎(chǔ)。它分兩個(gè)層次,其第一層次為地市公司查詢所屬銀行賬戶余額、結(jié)算明細(xì)、資金報(bào)表;第二層為縣公司查詢賬戶余額和結(jié)算明細(xì)。本系統(tǒng)供地市及縣使用。本系統(tǒng)采用Web方式通過IE等瀏覽器來瀏覽信息。資金監(jiān)控系統(tǒng)主要功能模塊劃分如圖5-24所示。圖5-24資金監(jiān)控系統(tǒng)功能模塊劃分

5.網(wǎng)絡(luò)體系結(jié)構(gòu)省電信總公司資金監(jiān)控系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)圖如圖5-25所示。圖5-25資金監(jiān)控系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)圖中:

(1)前置機(jī)用于與各商業(yè)銀行的聯(lián)接,并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。

(2)服務(wù)器建議安裝兩塊網(wǎng)卡,其中一塊與前置機(jī)相聯(lián),另一塊與現(xiàn)有的局域網(wǎng)相連。

(3)省電信總公司信息技術(shù)局已有完整的財(cái)務(wù)服務(wù)器,系統(tǒng)安裝有Windows2003Server和Oracle(版本:Oracle10g)數(shù)據(jù)庫。本系統(tǒng)可在現(xiàn)有的服務(wù)器硬件環(huán)境(除增加一塊網(wǎng)卡與前置機(jī)服務(wù)器連接外)和軟件環(huán)境下運(yùn)行,不需要新增設(shè)備。

(4)省電信總公司只管地市一級(jí),縣公司由地市分公司管理。

6.模塊功能設(shè)計(jì)

1)銀行賬戶管理流程銀行賬戶實(shí)行分級(jí)專戶管理。電信公司設(shè)立并使用本資金監(jiān)控系統(tǒng)的部門有計(jì)財(cái)科和各下屬單位的相關(guān)部門,在銀行建立“收入總賬戶”、“支出總賬戶”和“工程總賬戶”。用以歸集、反映全省的收入、支出、工程的現(xiàn)金流總況。

(1)省對(duì)地市實(shí)行收支專戶管理:地市原則上只開立相應(yīng)專戶,各專戶間不得串戶使用;

(2)地市對(duì)縣實(shí)行收支專行管理:縣原則上只開立相應(yīng)專戶,各專戶間不得串戶使用。省與市/縣各設(shè)立相應(yīng)賬戶,同行同戶。如圖5-26所示。圖5-26省與市/縣各賬戶設(shè)置示意圖

2)資金上劃業(yè)務(wù)流程縣公司收入要求定時(shí)上劃至地市分公司,地市分公司收入要定時(shí)上劃至省電信總公司。

3)資金下?lián)軜I(yè)務(wù)流程資金下?lián)芗词∮?jì)財(cái)處將根據(jù)業(yè)務(wù)需要定時(shí)把資金撥到地市基本存款戶(支出戶)或工程戶上,它影響省公司的收支總賬戶余額(減少)和地市支出總賬戶或工程總賬戶余額(增加)。賬戶流程如圖5-27所示。圖5-27資金下?lián)軜I(yè)務(wù)流程

4)資金撥付網(wǎng)上結(jié)算流程本系統(tǒng)根據(jù)各銀行接口協(xié)議,將資金下?lián)艿怯浀母犊钫埱?經(jīng)復(fù)核)的付款信息生成銀行能識(shí)別的數(shù)據(jù)包,網(wǎng)上支付接口系統(tǒng)自動(dòng)將付款請求發(fā)送到銀行接收端,完成付款手續(xù)。如圖5-28所示。圖5-28資金撥付網(wǎng)上結(jié)算流程

5)銀企對(duì)賬業(yè)務(wù)流程總公司對(duì)所有注冊賬戶的銀行對(duì)公數(shù)據(jù)查詢、下載后,可以將數(shù)據(jù)傳送到企業(yè)的財(cái)務(wù)系統(tǒng)中進(jìn)行自動(dòng)對(duì)賬。本系統(tǒng)完整記錄所有公司的明細(xì)信息,包括子公司向上劃款、下?lián)?,只要從銀行取回結(jié)算明細(xì)即可由電腦自動(dòng)完成對(duì)賬工作,產(chǎn)生銀行存款余額調(diào)節(jié)表。銀行的對(duì)賬單可以從銀行提供的企業(yè)網(wǎng)上銀行下載,因各家銀行提供的數(shù)據(jù)格式不一樣,故由前置機(jī)處理模塊進(jìn)行預(yù)定處理。

6)集團(tuán)內(nèi)部付款審批流程集團(tuán)內(nèi)部付款審批流程是:市公司錄入對(duì)外付款憑證,先經(jīng)市公司領(lǐng)導(dǎo)審批后把付款憑證送省公司進(jìn)行批準(zhǔn),再經(jīng)省公司批準(zhǔn)后發(fā)出批準(zhǔn)指令,然后付款指令經(jīng)付款接口送到相應(yīng)銀行。

7.數(shù)據(jù)流程圖

1)銀行信息接收數(shù)據(jù)流程銀行信息接收數(shù)據(jù)流程如圖5-29所示。圖5-29銀行信息接收數(shù)據(jù)流程

2)生成統(tǒng)計(jì)報(bào)表數(shù)據(jù)流程生成統(tǒng)計(jì)報(bào)表的數(shù)據(jù)流程如圖5-30所示。圖5-30生成統(tǒng)計(jì)報(bào)表數(shù)據(jù)流程

3)資金撥付數(shù)據(jù)流程資金撥付數(shù)據(jù)流程如圖5-31所示。圖5-31資金撥付數(shù)據(jù)流程

8.數(shù)據(jù)輸出報(bào)表格式

1)年度上劃收入款一覽表年度上劃收入款一覽表格式見表5-2。表5-2年度上劃收入款一覽表

2)年度下?lián)苤С隹钜挥[表年度下?lián)苤С隹钜挥[表格式見表5-3。表5-3年度下?lián)苤С隹钜挥[表

3)劃撥款對(duì)比分析表劃撥款對(duì)比分析表格式見表5-4。表5-4劃撥款對(duì)比分析表

9.數(shù)據(jù)庫表的結(jié)構(gòu)設(shè)計(jì)這里給出了銀行端的數(shù)據(jù)庫表的結(jié)構(gòu)設(shè)計(jì)。主要分為如下幾個(gè)功能方面的表結(jié)構(gòu):對(duì)公賬戶余額的查詢、對(duì)公賬戶當(dāng)日流水查詢、批量賬戶余額查詢、批量對(duì)公賬戶當(dāng)日流水查詢。每個(gè)功能在方向上可分為兩方面:客戶端到服務(wù)器信息和服務(wù)器到客戶端的信息。

(1)對(duì)公賬戶余額的查詢(見表5-5)。表5-5對(duì)公賬戶余額信息表

(2)對(duì)公賬戶當(dāng)日流水查詢(見表5-6)。表5-6對(duì)公賬戶當(dāng)日流水信息表

(3)批量查詢賬戶余額(見表5-7)。表5-7批量賬戶余額查詢信息表

(4)批量查詢賬戶流水(見表5-8)。表5-8批量賬戶流水信息表本章小結(jié)本章介紹了概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的任務(wù)、原則和內(nèi)容。結(jié)構(gòu)化設(shè)計(jì)方法的設(shè)計(jì)原則是:使每個(gè)模塊執(zhí)行一個(gè)功能(堅(jiān)持功能性內(nèi)聚),每個(gè)模塊用過程語句(或函數(shù)方式等)調(diào)用其他模塊,模塊間傳送的參數(shù)作數(shù)據(jù)用,模塊間共用的信息(如參數(shù)等)盡量少。軟件工程概要設(shè)計(jì)是在系統(tǒng)分析的基礎(chǔ)上進(jìn)行的,這個(gè)階段的主要任務(wù)是:采用正確的方法確定系統(tǒng)在計(jì)算機(jī)內(nèi)的程序模塊;確定模塊間的系統(tǒng)結(jié)構(gòu);使用一定的工具將所設(shè)計(jì)的結(jié)果表達(dá)出來;編寫概要設(shè)計(jì)說明書。詳細(xì)設(shè)計(jì)階段的主要任務(wù)是在概要設(shè)計(jì)的基礎(chǔ)上對(duì)編寫軟件程序所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計(jì)出全部必要的過程細(xì)節(jié),并給予清晰的表達(dá),使之成為編碼的依據(jù)。具體內(nèi)容包括:代碼設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、界面設(shè)計(jì)、網(wǎng)絡(luò)設(shè)計(jì)、處理過程設(shè)計(jì)。此外本章還介紹了詳細(xì)設(shè)計(jì)說明書的編寫格式與內(nèi)容。最后給出了一個(gè)實(shí)例的詳細(xì)設(shè)計(jì)過程—集團(tuán)資金監(jiān)控系統(tǒng)的軟件設(shè)計(jì)。習(xí)題

一、選擇題

1.對(duì)一個(gè)模塊處理過程的分解,以下正確的說法是()。

A.用循環(huán)方式對(duì)過程進(jìn)行分解,確定各個(gè)部分的執(zhí)行順序

B.用選擇方式對(duì)過程進(jìn)行分解,確定各個(gè)部分的執(zhí)行條件

C.用順序方式對(duì)過程進(jìn)行分解,確定某個(gè)部分進(jìn)行重復(fù)的開始和結(jié)束條件

D.對(duì)處理過程仍然模糊的部分反復(fù)使用循環(huán)方式對(duì)過程進(jìn)行分解

2.下列敘述正確的是()。

A.?N-S圖可以用于系統(tǒng)設(shè)計(jì)

B.?PDL語言可以用于運(yùn)行

C.?PAD圖表達(dá)軟件的過程呈樹型結(jié)構(gòu)

D.?結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)效率第一

3.程序流程圖是一種傳統(tǒng)的程序設(shè)計(jì)表示工具,有其優(yōu)點(diǎn)和缺點(diǎn),使用該工具時(shí)應(yīng)該注意()。

A.考慮控制流程 B.考慮信息隱蔽

C.遵守結(jié)構(gòu)化設(shè)計(jì)原則 D.支持逐步求精

4.可行性研究后得出的結(jié)論主要與()有關(guān)。

A.軟件系統(tǒng)目標(biāo) B.軟件的效率

C.軟件的性能 D.軟件的質(zhì)量

5.結(jié)構(gòu)設(shè)計(jì)是一種應(yīng)用最廣泛的系統(tǒng)設(shè)計(jì)方法,是以()為基礎(chǔ)、自頂向下、逐步求精和模塊化的過程。

A.數(shù)據(jù)流 B.數(shù)據(jù)流圖

C.數(shù)據(jù)庫 D.數(shù)據(jù)結(jié)構(gòu)

6.概要設(shè)計(jì)的結(jié)果是提供一份()。

A.模塊說明書 B.框圖

C.程序 D.數(shù)據(jù)結(jié)構(gòu)

7.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)程序的()。

A.效率 B.速度

C.可讀性 D.大小

8.在軟件生命期中,()階段所需工作量最大,約占70%。

A.分析 B.設(shè)計(jì)C.編碼 D.測試E.維護(hù)

9.軟件設(shè)計(jì)階段可劃分為①設(shè)計(jì)階段和②設(shè)計(jì)階段,用結(jié)構(gòu)化設(shè)計(jì)方法的最終目的是使③,用于表示模塊間

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論