版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 軟件設(shè)計(jì) 第5章 軟件設(shè)計(jì) 5.1 軟件設(shè)計(jì)中的根本概念和原理軟件設(shè)計(jì)中的根本概念和原理 5.2 體系構(gòu)造設(shè)計(jì)概述體系構(gòu)造設(shè)計(jì)概述 5.3 面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)方法面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)方法 5.4 詳細(xì)設(shè)計(jì)概述詳細(xì)設(shè)計(jì)概述 5.5 面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法5.6 面向數(shù)據(jù)構(gòu)造的設(shè)計(jì)方法面向數(shù)據(jù)構(gòu)造的設(shè)計(jì)方法5.7 小結(jié)小結(jié) 第5章 軟件設(shè)計(jì) 5.1 5.1 軟件設(shè)計(jì)中的根本概念和原理軟件設(shè)計(jì)中的根本概念和原理 1. 模塊化 所謂模塊,是指具有相對(duì)獨(dú)立性的,由數(shù)聽闡明、執(zhí)行語句等程序?qū)ο髽?gòu)成的集合。程序中的每個(gè)模塊都需求單獨(dú)命名,經(jīng)過名字可實(shí)現(xiàn)對(duì)指定模塊的
2、訪問。在高級(jí)言語中,模塊詳細(xì)表現(xiàn)為函數(shù)、子程序、過程等。一個(gè)模塊具有輸入/輸出(接口)、功能、內(nèi)部數(shù)據(jù)和程序代碼四個(gè)特征。輸入/輸出用于實(shí)現(xiàn)模塊與其他模塊間的數(shù)據(jù)傳送,即向模塊傳入所需的原始數(shù)據(jù)及從模塊傳出得到的結(jié)果數(shù)據(jù)。功能指模塊所完成的任務(wù)。模塊的輸入/輸出和功能構(gòu)成了模塊的外部特征。內(nèi)部數(shù)據(jù)是指僅能在模塊內(nèi)部運(yùn)用的部分量。程序代碼用于描畫實(shí)現(xiàn)模塊功能的詳細(xì)方法和步驟。模塊的內(nèi)部數(shù)據(jù)和程序代碼反映的是模塊的內(nèi)部特征。第5章 軟件設(shè)計(jì) 模塊化是指將整個(gè)程序劃分為假設(shè)干個(gè)模塊,每個(gè)模塊用于實(shí)現(xiàn)一個(gè)特定的功能。劃分模塊對(duì)于處理大型復(fù)雜的問題是非常必要的,可以大大降低處理問題的難度。為了闡明這一點(diǎn)
3、,我們可對(duì)問題復(fù)雜性、開發(fā)任務(wù)量和模塊數(shù)之間的關(guān)系進(jìn)展以下推理。 首先,我們?cè)O(shè)C(x)為問題x所對(duì)應(yīng)的復(fù)雜度函數(shù),E(x)為處理問題x所需求的任務(wù)量函數(shù)。對(duì)于兩個(gè)問題P1和P2,假設(shè): C(P1) C(P2) 即問題P1的復(fù)雜度比P2高,那么顯然有: E(P1) E(P2) 即處理問題P1比P2所需的任務(wù)量大。第5章 軟件設(shè)計(jì) 在人們處理問題的過程中,發(fā)現(xiàn)存在有另一個(gè)有趣的規(guī)律:C(P1+P2) C(P1)+C(P2)即處理由多個(gè)問題復(fù)合而成的大問題的復(fù)雜度大于單獨(dú)處理各個(gè)問題的復(fù)雜度之和。也就是說,對(duì)于一個(gè)復(fù)雜問題,將其分解成多個(gè)小問題分別處理比較容易。由此我們可以推出:E(P1+P2) E
4、(P1)+E(P2)即將復(fù)雜問題分解成假設(shè)干個(gè)小問題,各個(gè)擊破,所需求的任務(wù)量小于直接處理復(fù)雜問題所需的任務(wù)量。第5章 軟件設(shè)計(jì) 根據(jù)上面的推理,我們可以得到這樣一個(gè)結(jié)論,模塊化可以降低處理問題的復(fù)雜度,從而降低軟件開發(fā)的任務(wù)量。但是不是模塊劃分得越多越好呢?雖然添加程序中的模塊數(shù)可以降低開發(fā)每個(gè)模塊的任務(wù)量,但同時(shí)卻添加了設(shè)計(jì)模塊接口的任務(wù)量。經(jīng)過圖5.1所示的模塊數(shù)與軟件開發(fā)本錢的關(guān)系圖中可以看出,當(dāng)劃分的模塊數(shù)處于最小本錢區(qū)時(shí),開發(fā)軟件的總本錢最低。雖然目前還不能得到模塊數(shù)M的準(zhǔn)確取值,但總本錢曲線對(duì)我們進(jìn)展模塊劃分具有重要的指點(diǎn)意義。 模塊化不但可以降低軟件開發(fā)的難度,而且可以使程序構(gòu)
5、造明晰,添加易讀性和易修正性。此外,模塊化還有利于提高代碼的可重用性及團(tuán)隊(duì)協(xié)作開發(fā)大型軟件的可行性。第5章 軟件設(shè)計(jì) 圖5.1 模塊數(shù)與軟件開發(fā)本錢成本(工作量)模塊數(shù)接口成本軟件總成本最小成本區(qū)M成本 / 模塊第5章 軟件設(shè)計(jì) 2. 模塊獨(dú)立性 1) 耦合性 耦合性是對(duì)一個(gè)軟件構(gòu)造內(nèi)部不同模塊間聯(lián)絡(luò)嚴(yán)密程度的度量目的。模塊間的聯(lián)絡(luò)越嚴(yán)密,耦合性就越高,模塊的獨(dú)立性也就越低。由于模塊間的聯(lián)絡(luò)是經(jīng)過模塊接口實(shí)現(xiàn)的,因此,模塊耦合性的高低主要取決于模塊接口的復(fù)雜程度、調(diào)用模塊的方式以及經(jīng)過模塊接口的數(shù)據(jù)。模塊間的耦合性主要可劃分為如下幾種類型。第5章 軟件設(shè)計(jì) (1) 數(shù)據(jù)耦合。假設(shè)兩個(gè)模塊之間僅
6、經(jīng)過模塊參數(shù)交換信息,且交換的信息全部為簡(jiǎn)單數(shù)據(jù),那么稱這種耦合為數(shù)據(jù)耦合。數(shù)據(jù)耦合的耦合性最低,通常軟件中都包含有數(shù)據(jù)耦合。數(shù)據(jù)耦合的例子如下所示:第5章 軟件設(shè)計(jì) sum(int a,int b)int c; c=a+b; return(c); main()int x,y; printf(x+y= %d,sum(x,y);/*主函數(shù)與sum函數(shù)之間即為數(shù)據(jù)耦合關(guān)系*/第5章 軟件設(shè)計(jì) (2) 公共耦合。假設(shè)兩個(gè)或多個(gè)模塊經(jīng)過援用公共數(shù)據(jù)相互聯(lián)絡(luò),那么稱這種耦合為公共耦合。例如,在程序中定義了全局變量,并在多個(gè)模塊中對(duì)全局變量進(jìn)展了援用,那么援用全局變量的多個(gè)模塊間就具有了公共耦合關(guān)系。 F
7、ORTRAN言語中運(yùn)用的common語句也會(huì)在多個(gè)模塊間建立公共耦合關(guān)系。公共耦合的復(fù)雜度隨著耦合的模塊個(gè)數(shù)的添加而顯著添加。在程序設(shè)計(jì)中,假設(shè)兩個(gè)模塊間需求交換的數(shù)據(jù)較多,僅經(jīng)過參數(shù)傳送難以實(shí)現(xiàn)時(shí),可以思索采用公共耦合完成,但一定留意盡量降低公共耦合的程度。第5章 軟件設(shè)計(jì) (3) 控制耦合。假設(shè)模塊之間交換的信息中包含有控制信息(雖然有時(shí)控制信息是以數(shù)據(jù)的方式出現(xiàn)的),那么稱這種耦合為控制耦合??刂岂詈鲜侵械瘸潭鹊鸟詈希鼤?huì)添加程序的復(fù)雜性。控制耦合的例子如下所示:void output(flag)if (flag) printf(OK! ); else printf(NO! );main
8、() int flag;output(flag); /*主函數(shù)與output函數(shù)之間即為控制耦合關(guān)系*/第5章 軟件設(shè)計(jì) (4) 內(nèi)容耦合。假設(shè)一個(gè)模塊對(duì)另一模塊中的內(nèi)容(包括數(shù)據(jù)和程序段)進(jìn)展了直接的援用甚至修正,或經(jīng)過非正常入口進(jìn)入到另一模塊內(nèi)部,或一個(gè)模塊具有多個(gè)入口,或兩個(gè)模塊共享一部分代碼,那么稱模塊間的這種耦合為內(nèi)容耦合。內(nèi)容耦合是一切耦合關(guān)系中程度最高的,會(huì)使因模塊間的聯(lián)絡(luò)過于嚴(yán)密而對(duì)后期的開發(fā)和維護(hù)任務(wù)帶來很大的費(fèi)事,因此,應(yīng)堅(jiān)決防止任何方式的內(nèi)容耦合。實(shí)踐上,許多高級(jí)程序設(shè)計(jì)言語在設(shè)計(jì)時(shí)就充分思索到了內(nèi)容耦合的危害,因此在規(guī)定語法時(shí)就曾經(jīng)杜絕了任何方式的內(nèi)容耦合。 耦合是影響
9、軟件復(fù)雜度的一個(gè)重要要素,設(shè)計(jì)過程中應(yīng)力求降低程序的耦合性。在以上所引見的耦合中,數(shù)據(jù)耦合的程度最低,其次是公共耦合,再其次是控制耦合,程度最高的是內(nèi)容耦合。第5章 軟件設(shè)計(jì) 2) 內(nèi)聚性 內(nèi)聚性是對(duì)一個(gè)模塊內(nèi)部各個(gè)組成元素之間相互結(jié)合的嚴(yán)密程度的度量目的。模塊中組成元素結(jié)合的越嚴(yán)密,模塊的內(nèi)聚性就越高,模塊的獨(dú)立性也就越高。理想的內(nèi)聚性要求模塊的功能應(yīng)明確、單一,即一個(gè)模塊只做一件事情。模塊的內(nèi)聚性和耦合性是兩個(gè)相互對(duì)立且又親密相關(guān)的概念?,F(xiàn)實(shí)上,它們是同一事物的兩個(gè)方面,模塊的高內(nèi)聚性往往就意味著模塊間的低耦合性。由于程序中的各個(gè)部分必定是有聯(lián)絡(luò)的,假設(shè)將其中親密相關(guān)的部分放在同一個(gè)模塊中
10、,模塊間的聯(lián)絡(luò)就會(huì)降低;反之,假設(shè)將親密相關(guān)的部分分散放在不同的模塊之中,模塊間的聯(lián)絡(luò)必然會(huì)加強(qiáng)。在進(jìn)展模塊化設(shè)計(jì)時(shí),耦合性和內(nèi)聚性都是必需思索的重要目的。但經(jīng)實(shí)際證明,保證模塊的高內(nèi)聚性比低耦合性更為重要,在軟件設(shè)計(jì)時(shí)應(yīng)將更多的留意力集中在提高模塊的內(nèi)聚性上。模塊的內(nèi)聚性主要可劃分為如下幾種不同的類型。第5章 軟件設(shè)計(jì) (1) 偶爾內(nèi)聚。假設(shè)一個(gè)模塊由多個(gè)完成不同義務(wù)的語句段組成,各語句段之間的聯(lián)絡(luò)非常松散或根本沒有任何聯(lián)絡(luò),那么稱此模塊的內(nèi)聚為偶爾內(nèi)聚。例如,程序中多處出現(xiàn)一些無聯(lián)絡(luò)的語句段序列,為了節(jié)省內(nèi)存空間將其組合成為一個(gè)模塊,這個(gè)模塊就屬于偶爾內(nèi)聚。偶爾內(nèi)聚的模塊由于組成部分之間沒
11、有本質(zhì)的聯(lián)絡(luò),因此難于了解和修正,會(huì)給軟件開發(fā)帶來很大的困擾。現(xiàn)實(shí)上,偶爾內(nèi)聚的模塊出錯(cuò)的機(jī)率要比其他類型的模塊大得多。偶爾內(nèi)聚是內(nèi)聚程度最低的一種,在軟件設(shè)計(jì)時(shí)應(yīng)盡量防止。第5章 軟件設(shè)計(jì) (2) 邏輯內(nèi)聚。假設(shè)一個(gè)模塊可實(shí)現(xiàn)多個(gè)邏輯上一樣或類似的一類功能,那么稱該模塊的內(nèi)聚為邏輯內(nèi)聚。例如,將程序中多種不同類型數(shù)據(jù)的輸出放在同一個(gè)模塊中實(shí)現(xiàn),這個(gè)模塊就屬于邏輯聚合。邏輯內(nèi)聚比偶爾內(nèi)聚的內(nèi)聚程度高一些。雖然邏輯聚合模塊的組成部分之間有一定的關(guān)系,但不同功能混在一同并公用模塊中的部分代碼,給修正帶來了一定的費(fèi)事。另外,為了在調(diào)用模塊時(shí)能選擇執(zhí)行其中的某個(gè)功能,需求傳送相應(yīng)的控制參數(shù),因此會(huì)呵斥
12、模塊間的控制耦合,降低模塊的獨(dú)立性。第5章 軟件設(shè)計(jì) (3) 時(shí)間內(nèi)聚。假設(shè)一個(gè)模塊包含了需求在同一時(shí)間段中執(zhí)行的多個(gè)義務(wù),那么稱該模塊的內(nèi)聚為時(shí)間內(nèi)聚。例如,將多個(gè)變量的初始化放在同一個(gè)模塊中實(shí)現(xiàn),或?qū)⑿枨笸瑫r(shí)運(yùn)用的多個(gè)庫文件的翻開操作放在同一個(gè)模塊中,都會(huì)產(chǎn)生時(shí)間內(nèi)聚的模塊。由于時(shí)間內(nèi)聚模塊中的各個(gè)部分在時(shí)間上的聯(lián)絡(luò),其內(nèi)聚程度比邏輯內(nèi)聚高一些。但這樣的模塊往往會(huì)和其他相關(guān)模塊有著嚴(yán)密的聯(lián)絡(luò),因此會(huì)呵斥耦合性的添加。第5章 軟件設(shè)計(jì) (4) 過程內(nèi)聚。假設(shè)一個(gè)模塊中的各個(gè)部分相關(guān),并且必需按特定的次序執(zhí)行,那么稱該模塊的內(nèi)聚為過程內(nèi)聚。在構(gòu)造化程序中,通常采用程序流程圖作為設(shè)計(jì)軟件和確定模
13、塊劃分的工具,因此,這樣得到的模塊往往具有過程內(nèi)聚的特性。 (5) 通訊內(nèi)聚。假設(shè)一個(gè)模塊中的各個(gè)部分運(yùn)用同一個(gè)輸入數(shù)據(jù)或產(chǎn)生同一個(gè)輸出數(shù)據(jù),那么稱該模塊的內(nèi)聚為通訊內(nèi)聚。由于通訊內(nèi)聚模塊中的各個(gè)部分都與某個(gè)共同的數(shù)據(jù)親密相關(guān),因此內(nèi)聚性高于前幾種內(nèi)聚。第5章 軟件設(shè)計(jì) (6) 順序內(nèi)聚。假設(shè)一個(gè)模塊中的各個(gè)部分都與同一個(gè)功能親密相關(guān),并且必需按照先后順序執(zhí)行(通常前一個(gè)部分的輸出數(shù)據(jù)就是后一個(gè)部分的輸入數(shù)據(jù)),那么稱該模塊的內(nèi)聚為順序內(nèi)聚。例如,在一個(gè)處置學(xué)生成果的模塊中,前一個(gè)部分根據(jù)成果統(tǒng)計(jì)出及格的學(xué)生人數(shù),后一個(gè)部分根據(jù)及格人數(shù)計(jì)算出學(xué)生的及格率。根據(jù)數(shù)據(jù)流圖劃分出的模塊通常都是順序內(nèi)
14、聚的模塊。由于順序內(nèi)聚模塊中的各個(gè)部分在功能和執(zhí)行順序上都親密相關(guān),因此內(nèi)聚程度很高且易于了解。第5章 軟件設(shè)計(jì) (7) 功能內(nèi)聚。假設(shè)一個(gè)模塊中各個(gè)組成部分構(gòu)成一個(gè)整體并共同完成一個(gè)單一的功能,那么稱該模塊的內(nèi)聚為功能內(nèi)聚。由于功能內(nèi)聚模塊中的各個(gè)部分關(guān)系非常親密,構(gòu)成一個(gè)不可分割的整體,因此功能內(nèi)聚是一切內(nèi)聚中內(nèi)聚程度最高的一種。 在以上所引見的七種內(nèi)聚中,按照內(nèi)聚性從低到高進(jìn)展陳列的結(jié)果如圖5.2所示。 第5章 軟件設(shè)計(jì) 偶然內(nèi)聚邏輯內(nèi)聚時(shí)間內(nèi)聚低內(nèi)聚過程內(nèi)聚通信內(nèi)聚中內(nèi)聚順序內(nèi)聚功能內(nèi)聚高內(nèi)聚低高圖圖5.2 內(nèi)聚性的陳列內(nèi)聚性的陳列 第5章 軟件設(shè)計(jì) 3. 3. 籠統(tǒng)籠統(tǒng) 籠統(tǒng)是人類在
15、處理復(fù)雜問題時(shí)經(jīng)常采用的一種思想方式,籠統(tǒng)是人類在處理復(fù)雜問題時(shí)經(jīng)常采用的一種思想方式,它是指將現(xiàn)實(shí)世界中具有共性的一類事物的類似的、本質(zhì)的方它是指將現(xiàn)實(shí)世界中具有共性的一類事物的類似的、本質(zhì)的方面集中概括起來,而暫時(shí)忽略它們之間的細(xì)節(jié)差別。在軟件開面集中概括起來,而暫時(shí)忽略它們之間的細(xì)節(jié)差別。在軟件開發(fā)中運(yùn)用籠統(tǒng)的概念,可以將復(fù)雜問題的求解過程分層,在不發(fā)中運(yùn)用籠統(tǒng)的概念,可以將復(fù)雜問題的求解過程分層,在不同的籠統(tǒng)層上實(shí)現(xiàn)難度的分解。在籠統(tǒng)級(jí)別較高的層次上,可同的籠統(tǒng)層上實(shí)現(xiàn)難度的分解。在籠統(tǒng)級(jí)別較高的層次上,可以將瑣碎的細(xì)節(jié)的信息暫時(shí)隱藏起來,以利于處理系統(tǒng)中的全以將瑣碎的細(xì)節(jié)的信息暫時(shí)隱
16、藏起來,以利于處理系統(tǒng)中的全局性的問題。軟件開發(fā)過程中從問題定義到最終的軟件生成,局性的問題。軟件開發(fā)過程中從問題定義到最終的軟件生成,每一階段都是在前一階段根底上對(duì)軟件解法的籠統(tǒng)層上的一次每一階段都是在前一階段根底上對(duì)軟件解法的籠統(tǒng)層上的一次求精和細(xì)化。求精和細(xì)化。第5章 軟件設(shè)計(jì) 構(gòu)造化程序中自頂向下、逐漸求精的模塊劃分思想正是人類思想中運(yùn)用籠統(tǒng)方法處理復(fù)雜問題的表達(dá)。軟件構(gòu)造中頂層的模塊籠統(tǒng)級(jí)別最高,控制并協(xié)調(diào)軟件的主要功能且影響全局;軟件構(gòu)造中位于底層的模塊籠統(tǒng)級(jí)別最低,詳細(xì)實(shí)現(xiàn)數(shù)據(jù)的處置過程。采用自頂向下、由籠統(tǒng)到詳細(xì)的思想方式,不但降低了軟件開發(fā)中每個(gè)階段的任務(wù)難度,簡(jiǎn)化了軟件的設(shè)
17、計(jì)和實(shí)現(xiàn)過程,還有助于提高軟件的可讀性、可測(cè)試性和可維護(hù)性。此外,在程序設(shè)計(jì)中運(yùn)用籠統(tǒng)的方法還可以提高代碼的可重用性。第5章 軟件設(shè)計(jì) 4. 信息隱蔽 信息隱蔽是指一個(gè)模塊將本身的內(nèi)部信息向其他模塊隱藏起來,以防止其他模塊不恰當(dāng)?shù)脑L問和修正,只需對(duì)那些為了完成系統(tǒng)功能所必需的數(shù)據(jù)交換才被允許在模塊間進(jìn)展。信息隱蔽的目的主要是為了提高模塊的獨(dú)立性,減少將一個(gè)模塊中的錯(cuò)誤分散到其他模塊的時(shí)機(jī)。但是需求強(qiáng)調(diào)一點(diǎn),信息隱蔽并不意味著某個(gè)模塊中的內(nèi)部信息對(duì)其他模塊來說是完全不可見或不能運(yùn)用的,而是說模塊之間的信息傳送只能經(jīng)過合法的調(diào)用接口來實(shí)現(xiàn)。顯然,信息隱蔽對(duì)提高軟件的可讀性和可維護(hù)性都是非常重要的。
18、第5章 軟件設(shè)計(jì) 5.2 5.2 體系構(gòu)造設(shè)計(jì)概述體系構(gòu)造設(shè)計(jì)概述5.2.1 5.2.1 體系構(gòu)造設(shè)計(jì)的義務(wù)體系構(gòu)造設(shè)計(jì)的義務(wù) 在體系構(gòu)造設(shè)計(jì)過程中,首先要根據(jù)需求分析階段產(chǎn)生的在體系構(gòu)造設(shè)計(jì)過程中,首先要根據(jù)需求分析階段產(chǎn)生的成果尋務(wù)虛現(xiàn)目的系統(tǒng)的各種能夠的方案,然后由系統(tǒng)分析員成果尋務(wù)虛現(xiàn)目的系統(tǒng)的各種能夠的方案,然后由系統(tǒng)分析員對(duì)一切能夠的方案進(jìn)展綜合分析比較,從中選擇出一個(gè)最正確對(duì)一切能夠的方案進(jìn)展綜合分析比較,從中選擇出一個(gè)最正確方案向用戶引薦。在與用戶達(dá)成共識(shí)之后,系統(tǒng)分析員就可以方案向用戶引薦。在與用戶達(dá)成共識(shí)之后,系統(tǒng)分析員就可以著手對(duì)選擇出的最正確方案進(jìn)展體系構(gòu)造的設(shè)計(jì),并為
19、軟件確著手對(duì)選擇出的最正確方案進(jìn)展體系構(gòu)造的設(shè)計(jì),并為軟件確定數(shù)據(jù)構(gòu)造及設(shè)計(jì)數(shù)據(jù)庫。體系構(gòu)造設(shè)計(jì)階段終了時(shí),系統(tǒng)分定數(shù)據(jù)構(gòu)造及設(shè)計(jì)數(shù)據(jù)庫。體系構(gòu)造設(shè)計(jì)階段終了時(shí),系統(tǒng)分析員需求提交軟件的體系構(gòu)造闡明書并參與該階段的評(píng)審。體析員需求提交軟件的體系構(gòu)造闡明書并參與該階段的評(píng)審。體系構(gòu)造設(shè)計(jì)的主要義務(wù)有如下四點(diǎn)。系構(gòu)造設(shè)計(jì)的主要義務(wù)有如下四點(diǎn)。第5章 軟件設(shè)計(jì) 1. 軟件體系構(gòu)造設(shè)計(jì) 設(shè)計(jì)軟件的體系構(gòu)造需求在對(duì)需求分析階段生成的數(shù)據(jù)流圖進(jìn)一步分析和精化的根底上,首先將系統(tǒng)按照功能劃分為模塊,接著需求確定模塊之間的調(diào)用關(guān)系及其接口,最后還應(yīng)該對(duì)劃分的結(jié)果進(jìn)展優(yōu)化和調(diào)整。良好的軟件構(gòu)造設(shè)計(jì)對(duì)詳細(xì)設(shè)計(jì)及編
20、碼階段的任務(wù)都是至關(guān)重要的。第5章 軟件設(shè)計(jì) 2. 數(shù)據(jù)構(gòu)造和數(shù)據(jù)庫設(shè)計(jì) 體系構(gòu)造設(shè)計(jì)中應(yīng)對(duì)需求分析階段所生成的數(shù)據(jù)字典加以細(xì)化,從計(jì)算機(jī)技術(shù)實(shí)現(xiàn)的角度出發(fā),確定軟件涉及的文件系統(tǒng)及各種數(shù)據(jù)的構(gòu)造。主要包括確定輸入、輸出文件的數(shù)據(jù)構(gòu)造及確定算法所需的邏輯數(shù)據(jù)構(gòu)造等。在需求分析階段僅為系統(tǒng)所需的數(shù)據(jù)庫建立了概念數(shù)據(jù)模型(最常采用的是E-R模型)。體系構(gòu)造設(shè)計(jì)階段需求將本來獨(dú)立于數(shù)據(jù)庫實(shí)現(xiàn)的概念模型與詳細(xì)的數(shù)據(jù)庫管理系統(tǒng)的特征結(jié)合起來,建立數(shù)據(jù)庫的邏輯構(gòu)造,主要包括確定數(shù)據(jù)庫的方式、子方式及對(duì)數(shù)據(jù)庫進(jìn)展規(guī)范和優(yōu)化等。第5章 軟件設(shè)計(jì) 3. 系統(tǒng)可靠性、平安性設(shè)計(jì) 可靠性設(shè)計(jì)也稱為質(zhì)量設(shè)計(jì),目的是為
21、了保證程序及其文檔具有較高的正確性和容錯(cuò)性,并對(duì)能夠出現(xiàn)的錯(cuò)誤易于修正和維護(hù)。平安性設(shè)計(jì)的主要目的是為了加強(qiáng)系統(tǒng)的自我防護(hù)才干和運(yùn)轉(zhuǎn)的穩(wěn)定性,防止系統(tǒng)遭遭到有意或無意地入侵和破壞,保證系統(tǒng)在平安的環(huán)境下正常地任務(wù)。第5章 軟件設(shè)計(jì) 4. 編寫文檔,參與復(fù)審 體系構(gòu)造設(shè)計(jì)階段應(yīng)交付的文檔通常包括:體系構(gòu)造設(shè)計(jì)闡明書、用戶手冊(cè)、數(shù)據(jù)庫設(shè)計(jì)闡明書及系統(tǒng)初步測(cè)試方案。 (1) 體系構(gòu)造設(shè)計(jì)闡明書: 給出系統(tǒng)總體構(gòu)造設(shè)計(jì)的結(jié)果,為系統(tǒng)的詳細(xì)設(shè)計(jì)提供根底。 (2) 用戶手冊(cè):根據(jù)體系構(gòu)造設(shè)計(jì)成果,對(duì)需求分析階段編寫的用戶手冊(cè)進(jìn)展補(bǔ)充和修正。 (3) 測(cè)試方案:明確測(cè)試中應(yīng)采用的戰(zhàn)略、方案、預(yù)期的測(cè)試結(jié)果及
22、測(cè)試的進(jìn)度安排。第5章 軟件設(shè)計(jì) (4) 數(shù)據(jù)庫設(shè)計(jì)闡明書:主要用于給出目的系統(tǒng)中數(shù)據(jù)庫管理系統(tǒng)的選擇及邏輯構(gòu)造等的設(shè)計(jì)結(jié)果。 體系構(gòu)造設(shè)計(jì)階段復(fù)審的重點(diǎn)主要是系統(tǒng)的總體構(gòu)造、模塊劃分和內(nèi)/外接口等方面,復(fù)審的對(duì)象就是該階段的設(shè)計(jì)文檔。由于體系構(gòu)造設(shè)計(jì)中的微小失誤能夠會(huì)導(dǎo)致軟件開發(fā)中的艱苦問題,因此復(fù)審一定要按嚴(yán)厲的步驟,經(jīng)過正式會(huì)議的方式進(jìn)展,爭(zhēng)取盡能夠地及早發(fā)現(xiàn)設(shè)計(jì)中的缺陷和錯(cuò)誤。除軟件開發(fā)人員以外,體系構(gòu)造設(shè)計(jì)復(fù)審必需有用戶參與,必要時(shí)還可以約請(qǐng)相關(guān)領(lǐng)域的專家參與會(huì)議。第5章 軟件設(shè)計(jì) 5.2.2 5.2.2 體系構(gòu)造設(shè)計(jì)中可采用的工具體系構(gòu)造設(shè)計(jì)中可采用的工具 1. HIPO1. HI
23、PO圖圖 HIPO(Hierarchy Plus Input/Processing/Output)HIPO(Hierarchy Plus Input/Processing/Output)圖是圖是IBMIBM公司在公司在2020世紀(jì)世紀(jì)7070年代開展起來的用于描畫軟件構(gòu)造的圖形工具。年代開展起來的用于描畫軟件構(gòu)造的圖形工具。它本質(zhì)上是在描畫軟件總體模塊構(gòu)造的層次圖它本質(zhì)上是在描畫軟件總體模塊構(gòu)造的層次圖(H(H圖圖) )的根底上,的根底上,參與了用于描畫每個(gè)模塊輸入?yún)⑴c了用于描畫每個(gè)模塊輸入/ /輸出數(shù)據(jù)和處置功能的輸出數(shù)據(jù)和處置功能的IPOIPO圖,因圖,因此它的中文全名為層次圖加輸入此它的
24、中文全名為層次圖加輸入/ /處置處置/ /輸出圖。輸出圖。第5章 軟件設(shè)計(jì) 1) HIPO圖中的H圖 H圖用于在體系構(gòu)造設(shè)計(jì)過程中描畫軟件的層次構(gòu)造。在H圖中,每一個(gè)矩形框代表一個(gè)模塊,圖中最頂層的矩形框表示系統(tǒng)中的主控模塊,矩形框之間的連線用于表示模塊之間的調(diào)用關(guān)系。為了使H圖更具有可追蹤性,可以為除頂層矩形框以外的其他矩形框加上能反映層次關(guān)系的編號(hào)。H圖比較適用于自頂向下進(jìn)展分解的軟件構(gòu)造設(shè)計(jì)方法。工資計(jì)算系統(tǒng)的H圖如圖5.3所示。第5章 軟件設(shè)計(jì) 圖5.3 工資計(jì)算系統(tǒng)的H圖計(jì)算出勤獎(jiǎng)1.1.2.1計(jì)算業(yè)績(jī)獎(jiǎng)1.1.2.2計(jì)算工資檔案各基本數(shù)據(jù)項(xiàng)之和1.1.1計(jì)算獎(jiǎng)金1.1.2計(jì)算應(yīng)發(fā)工
25、資1.1計(jì)算水電扣款1.2.1計(jì)算缺勤扣款1.2.2計(jì)算所得稅扣款1.2.3計(jì)算扣款1.2計(jì)算實(shí)發(fā)工資1.3計(jì)算工資1查詢職工賬號(hào)2.1生成工資存款清單2.2工資轉(zhuǎn)存2打印工資清單3工資計(jì)算系統(tǒng)第5章 軟件設(shè)計(jì) 2) IPO圖 IPO圖可以方便、明晰地描畫出模塊的輸入數(shù)據(jù)、加工和輸出數(shù)據(jù)之間的關(guān)系。與層次圖中每個(gè)矩形框相對(duì)應(yīng),應(yīng)該有一張IPO圖描畫該矩形框所代表的模塊的詳細(xì)處置過程,作為對(duì)層次圖中內(nèi)容的補(bǔ)充闡明。IPO圖的根本方式為:在圖中左邊的框中列出模塊涉及的一切輸入數(shù)據(jù),在中間的框中列出主要的加工,在右邊的框中列出處置后產(chǎn)生的輸出數(shù)據(jù);圖中的箭頭用于指明輸入數(shù)據(jù)、加工和輸出結(jié)果之間的關(guān)系
26、。工資計(jì)算系統(tǒng)中的計(jì)算工資模塊的IPO圖如圖5.4所示。第5章 軟件設(shè)計(jì) 圖5.4 計(jì)算工資模塊的IPO圖業(yè)績(jī)表出勤表工資檔案文件獎(jiǎng)懲條例水電扣款表計(jì)算獎(jiǎng)金計(jì)算應(yīng)發(fā)工資計(jì)算扣款計(jì)算實(shí)發(fā)工資獎(jiǎng)金發(fā)放表應(yīng)發(fā)工資表扣款表工資清單實(shí)發(fā)工資表第5章 軟件設(shè)計(jì) 2. 構(gòu)造圖 在軟件工程中,軟件構(gòu)造經(jīng)常采用20世紀(jì)70年代中期由Yourdon等人提出的構(gòu)造圖(SC,Structure Chart)這種圖形工具來表示。構(gòu)造圖可以描畫出軟件系統(tǒng)的模塊層次構(gòu)造,清楚地反映出程序中各模塊之間的調(diào)用關(guān)系和聯(lián)絡(luò)。構(gòu)造圖中的根本符號(hào)及其含義見表5.1。第5章 軟件設(shè)計(jì) 表表5.1 5.1 構(gòu)造圖中的根本符號(hào)構(gòu)造圖中的根本
27、符號(hào)ABCABC符 號(hào)含 義用于表示模塊,方框中標(biāo)明模塊的稱號(hào)用于描畫模塊之間的調(diào)用關(guān)系用于表示模塊調(diào)用過程中傳送的信息,箭頭上標(biāo)明信息的稱號(hào);箭頭尾部為空心圓表示傳送的信息是數(shù)據(jù),假設(shè)為實(shí)心圓那么表示傳送的是控制信息 表示模塊A選擇調(diào)用模塊B或模塊C表示模塊A循環(huán)調(diào)用模塊B和模塊C第5章 軟件設(shè)計(jì) 5.2.3 5.2.3 體系構(gòu)造設(shè)計(jì)的原那么體系構(gòu)造設(shè)計(jì)的原那么 體系構(gòu)造設(shè)計(jì)的原那么有如下體系構(gòu)造設(shè)計(jì)的原那么有如下6 6點(diǎn)。點(diǎn)。 (1) (1) 降低模塊的耦合性,提高模塊的內(nèi)聚性。降低模塊的耦合性,提高模塊的內(nèi)聚性。 為了提高軟件中各個(gè)模塊的獨(dú)立性,提高程序的可讀性、為了提高軟件中各個(gè)模塊的
28、獨(dú)立性,提高程序的可讀性、可測(cè)試性和可維護(hù)性,在軟件體系構(gòu)造設(shè)計(jì)時(shí)應(yīng)盡能夠采用內(nèi)可測(cè)試性和可維護(hù)性,在軟件體系構(gòu)造設(shè)計(jì)時(shí)應(yīng)盡能夠采用內(nèi)聚性高的模塊,如最好實(shí)現(xiàn)功能內(nèi)聚;盡量只運(yùn)用數(shù)據(jù)耦合,聚性高的模塊,如最好實(shí)現(xiàn)功能內(nèi)聚;盡量只運(yùn)用數(shù)據(jù)耦合,限制公共耦合的運(yùn)用,防止控制耦合的運(yùn)用,杜絕內(nèi)容耦合的限制公共耦合的運(yùn)用,防止控制耦合的運(yùn)用,杜絕內(nèi)容耦合的出現(xiàn)。出現(xiàn)。第5章 軟件設(shè)計(jì) (2) 堅(jiān)持適中的模塊規(guī)模。 程序中模塊的規(guī)模過大,會(huì)降低程序的可讀性;而模塊規(guī)模過小,勢(shì)必會(huì)導(dǎo)致程序中的模塊數(shù)目過多,添加接口的復(fù)雜性。對(duì)于模塊的適當(dāng)規(guī)模并沒有嚴(yán)厲的規(guī)定,但普遍的觀念是模塊中的語句數(shù)最好堅(jiān)持在1010
29、0之間。為了使模塊的規(guī)模適中,在保證模塊獨(dú)立性的前提下,可對(duì)程序中規(guī)模過小的模塊進(jìn)展合并或?qū)σ?guī)模過大的模塊進(jìn)展分解。第5章 軟件設(shè)計(jì) (3) 模塊應(yīng)具有高扇入和適當(dāng)?shù)纳瘸觥?在模塊調(diào)用中,某個(gè)模塊的上級(jí)模塊數(shù)被稱為該模塊的扇入(如圖5.5(a)所示,模塊M的扇入數(shù)為n);而某個(gè)模塊可以調(diào)用的下級(jí)模塊數(shù)被稱為該模塊的扇出(如圖5.5(b)所示,模塊M的扇出數(shù)為k)。顯然,一個(gè)模塊的扇入闡明了共有多少個(gè)模塊需求調(diào)用該模塊,而其扇出闡明了該模塊可以控制的下級(jí)模塊的數(shù)目。第5章 軟件設(shè)計(jì) 圖5.5 模塊的扇入和扇出(a) 扇入;(b) 扇出M1M2MnM(a)(b)M1M2MkM第5章 軟件設(shè)計(jì) 模塊
30、的扇入越大,那么闡明共享該模塊的上級(jí)模塊數(shù)越多,或者說該模塊在程序中的重用性越高,這正是程序設(shè)計(jì)所追求的目的之一。當(dāng)多個(gè)模塊具有一部分一樣功能時(shí),應(yīng)將這部分一樣的功能分別出來,編寫成獨(dú)立的模塊供需求的模塊調(diào)用。經(jīng)過消除不同模塊中的反復(fù)內(nèi)容,提高代碼的可重用性,可以減少程序的總代碼量,便于程序的測(cè)試和維護(hù)。第5章 軟件設(shè)計(jì) 模塊的扇出假設(shè)過大,如在一個(gè)模塊中要調(diào)用八個(gè)下級(jí)模塊,那么會(huì)使該模塊的調(diào)用控制過于復(fù)雜。這種景象發(fā)生的緣由通常都是由于設(shè)計(jì)階段,模塊細(xì)化的過程中,分解速度過快呵斥的。最常見的處理方法是經(jīng)過在此模塊和下級(jí)模塊間添加一個(gè)中間層來控制模塊分解的速度。模塊的扇出過小,如扇出為1(下級(jí)
31、模塊層中只需一個(gè)模塊),在系統(tǒng)設(shè)計(jì)中通常是不可取的。常見的處理方法是思索將其合并到上級(jí)模塊中。但假設(shè)合并會(huì)影響模塊的獨(dú)立性,那么將其保管下來也未嘗不可。根據(jù)實(shí)際閱歷,設(shè)計(jì)良好的典型系統(tǒng)中,模塊的平均扇出通常為3或4。第5章 軟件設(shè)計(jì) 可以看出:在一個(gè)好的軟件構(gòu)造中,模塊應(yīng)具有較高的扇入和適當(dāng)?shù)纳瘸觥5^不能為了單純追求高扇入或適宜的扇出而破壞了模塊的獨(dú)立性。此外,經(jīng)過對(duì)大量軟件系統(tǒng)的研討后發(fā)現(xiàn),在設(shè)計(jì)良好的軟件構(gòu)造中,通常頂層的扇出數(shù)較大,中間層的扇出數(shù)較小,底層的扇入數(shù)較大,如圖5.6所示。第5章 軟件設(shè)計(jì) 圖5.6 軟件構(gòu)造圖例如 第5章 軟件設(shè)計(jì) (4) 軟件構(gòu)造中的深度和寬度不宜過大。
32、 所謂深度,是指軟件體系構(gòu)造中控制的層數(shù),它可以粗略地反映出軟件系統(tǒng)的規(guī)模和復(fù)雜程度;所謂寬度,是指軟件體系構(gòu)造內(nèi)同一層次上模塊個(gè)數(shù)的最大值,通常寬度越大的系統(tǒng)越復(fù)雜。如圖5.6所示的軟件構(gòu)造圖中,深度為5,寬度為8。深度在程序中表現(xiàn)為模塊的嵌套調(diào)用,嵌套的層數(shù)越多,程序就越復(fù)雜,程序的可了解性也就隨之下降。對(duì)寬度影響最大的要素是模塊的扇出,即模塊可以調(diào)用的下級(jí)模塊數(shù)越多,軟件構(gòu)造的寬度就越大。深度過大可經(jīng)過將構(gòu)造中過于簡(jiǎn)單的模塊分層與上一級(jí)模塊合并來處理;而寬度過大那么可經(jīng)過添加中間層來處理。顯然,軟件構(gòu)造中的深度和寬度是相互對(duì)立的兩個(gè)方面,降低深度會(huì)引起寬度的添加,而降低寬度又會(huì)帶來深度的
33、添加。第5章 軟件設(shè)計(jì) (5) 模塊的作用域應(yīng)處于其控制域范圍之內(nèi)。 模塊的作用域是指受該模塊內(nèi)一個(gè)斷定條件影響的一切模塊范圍。模塊的控制域是指該模塊本身以及一切該模塊的下屬模塊(包括該模塊可以直接調(diào)用的下級(jí)模塊和可以間接調(diào)用的更下層的模塊)。例如,在圖5.7中,模塊C的控制域?yàn)槟KC、E和F;假設(shè)在模塊C中存在一個(gè)對(duì)模塊D、E和F均有影響的斷定條件,即模塊C的作用域?yàn)槟KC、D、E和F(圖中帶陰影的模塊),那么顯然模塊C的作用域超出了其作用域。由于模塊D在模塊C的作用域中,因此模塊C對(duì)模塊D的控制信息必然要經(jīng)過上級(jí)模塊B進(jìn)展傳送,這樣不但會(huì)添加模塊間的耦合性,而且會(huì)給模塊的維護(hù)和修正帶來費(fèi)事
34、(假設(shè)要修正模塊C,能夠會(huì)對(duì)不在它控制域中的模塊D呵斥影響)。因此,軟件設(shè)計(jì)時(shí)應(yīng)使各個(gè)模塊的作用域處于其控制域范圍之內(nèi)。假設(shè)發(fā)現(xiàn)不符合此設(shè)計(jì)原那么的模塊,可經(jīng)過下面的方法進(jìn)展改良:第5章 軟件設(shè)計(jì) 將斷定位置上移。如將圖5.7中的模塊C中的斷定條件上移到上級(jí)模塊B中或?qū)⒛KC整個(gè)合并到模塊B中。 將超出作用域的模塊下移。如將圖5.7中的模塊D移至模塊C的下一層上,使模塊D處于模塊C的控制域中。第5章 軟件設(shè)計(jì) MABCDEF圖圖5.7 模塊的作用域和控制域模塊的作用域和控制域 第5章 軟件設(shè)計(jì) (6) 盡量降低模塊的接口復(fù)雜度。 由于復(fù)雜的模塊接口是導(dǎo)致軟件出現(xiàn)錯(cuò)誤的主要緣由之一,因此在軟件設(shè)
35、計(jì)中應(yīng)盡量使模塊接口簡(jiǎn)單明晰,如減少接口傳送的信息個(gè)數(shù)以及確保實(shí)參和形參的一致性和對(duì)應(yīng)性等。降低模塊的接口復(fù)雜度,可以提高軟件的可讀性,減少出現(xiàn)錯(cuò)誤的能夠性,并有利于軟件的測(cè)試和維護(hù)。第5章 軟件設(shè)計(jì) 5.2.4 5.2.4 體系構(gòu)造設(shè)計(jì)闡明書體系構(gòu)造設(shè)計(jì)闡明書 體系構(gòu)造設(shè)計(jì)闡明書是體系構(gòu)造設(shè)計(jì)階段中最重要的技術(shù)體系構(gòu)造設(shè)計(jì)闡明書是體系構(gòu)造設(shè)計(jì)階段中最重要的技術(shù)文檔,其主要內(nèi)容應(yīng)包括:文檔,其主要內(nèi)容應(yīng)包括: (1) (1) 引言:用于闡明編寫本闡明書的目的、背景,定義所引言:用于闡明編寫本闡明書的目的、背景,定義所用到的術(shù)語和縮略語,以及列出文檔中所援用的參考資料等。用到的術(shù)語和縮略語,以及
36、列出文檔中所援用的參考資料等。 (2) (2) 總體設(shè)計(jì):用于闡明軟件的需求規(guī)定、運(yùn)轉(zhuǎn)環(huán)境要求、總體設(shè)計(jì):用于闡明軟件的需求規(guī)定、運(yùn)轉(zhuǎn)環(huán)境要求、處置流程及軟件體系構(gòu)造等。處置流程及軟件體系構(gòu)造等。 (3) (3) 運(yùn)轉(zhuǎn)設(shè)計(jì):用于闡明軟件的運(yùn)轉(zhuǎn)模塊組合、運(yùn)轉(zhuǎn)控制運(yùn)轉(zhuǎn)設(shè)計(jì):用于闡明軟件的運(yùn)轉(zhuǎn)模塊組合、運(yùn)轉(zhuǎn)控制方式及運(yùn)轉(zhuǎn)時(shí)間等。方式及運(yùn)轉(zhuǎn)時(shí)間等。第5章 軟件設(shè)計(jì) (4) 模塊設(shè)計(jì):用于闡明軟件中各模塊的功能、性能及接口等。 (5) 數(shù)據(jù)設(shè)計(jì):用于闡明軟件系統(tǒng)所涉及的數(shù)據(jù)對(duì)象的邏輯數(shù)據(jù)構(gòu)造的設(shè)計(jì)。 (6) 出錯(cuò)處置設(shè)計(jì):用于闡明軟件系統(tǒng)能夠出現(xiàn)的各種錯(cuò)誤及可采取的處置措施。第5章 軟件設(shè)計(jì) 5.3 5
37、.3 面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)方法面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)方法5.3.1 5.3.1 數(shù)據(jù)流圖的類型數(shù)據(jù)流圖的類型 面向數(shù)據(jù)流的體系設(shè)計(jì)方法可以方便地將需求分析階段生面向數(shù)據(jù)流的體系設(shè)計(jì)方法可以方便地將需求分析階段生成的數(shù)據(jù)流圖轉(zhuǎn)換成設(shè)計(jì)階段所需的軟件構(gòu)造。但對(duì)于不同類成的數(shù)據(jù)流圖轉(zhuǎn)換成設(shè)計(jì)階段所需的軟件構(gòu)造。但對(duì)于不同類型的數(shù)據(jù)流圖,轉(zhuǎn)換得到的軟件構(gòu)造也不同,因此有必要首先型的數(shù)據(jù)流圖,轉(zhuǎn)換得到的軟件構(gòu)造也不同,因此有必要首先研討一下數(shù)據(jù)流圖的典型方式。根據(jù)數(shù)據(jù)流圖的構(gòu)造特點(diǎn)通常研討一下數(shù)據(jù)流圖的典型方式。根據(jù)數(shù)據(jù)流圖的構(gòu)造特點(diǎn)通??蓪?shù)據(jù)流圖劃分為如下兩個(gè)根本類型??蓪?shù)據(jù)流圖劃分為如下兩
38、個(gè)根本類型。第5章 軟件設(shè)計(jì) 1. 變換型數(shù)據(jù)流圖 變換型數(shù)據(jù)流圖呈現(xiàn)出的構(gòu)造特點(diǎn)為:由(邏輯)輸入、變換中心和(邏輯)輸出三部分組成,如圖5.8所示。該類型數(shù)據(jù)流圖所描畫的加工過程為:首先,外部數(shù)據(jù)沿邏輯輸入途徑進(jìn)入系統(tǒng),同時(shí)數(shù)據(jù)的方式由外部方式轉(zhuǎn)化為內(nèi)部方式;接著,數(shù)據(jù)被送往變換中心進(jìn)展加工處置;最后,經(jīng)過加工得到的結(jié)果數(shù)據(jù)的內(nèi)部方式被轉(zhuǎn)換為外部方式并沿邏輯輸出途徑分開系統(tǒng)??梢钥闯?,變換型數(shù)據(jù)流圖反映的是一個(gè)順序構(gòu)造的加工過程。第5章 軟件設(shè)計(jì) 變換中心變換輸入輸出圖圖5.8 變換型數(shù)據(jù)流圖的根本模型變換型數(shù)據(jù)流圖的根本模型 第5章 軟件設(shè)計(jì) 2. 事務(wù)型數(shù)據(jù)流圖 原那么上,一切根本系統(tǒng)
39、模型都屬于變換型,但其中有一類具有特殊形狀的數(shù)據(jù)流圖又被單獨(dú)劃分為事務(wù)型。事務(wù)型數(shù)據(jù)流圖呈現(xiàn)出的構(gòu)造特點(diǎn)為:輸入流在經(jīng)過某個(gè)被稱為“事務(wù)中心的加工時(shí)被分別為多個(gè)發(fā)散的輸出流,構(gòu)成多個(gè)平行的加工處置途徑,如圖5.9所示。該類型數(shù)據(jù)流圖所描畫的加工過程為:外部數(shù)據(jù)沿輸入通路進(jìn)入系統(tǒng)后,被送往事務(wù)中心;事務(wù)中心接納輸入數(shù)據(jù)并分析確定其類型;最后根據(jù)所確定的類型為數(shù)據(jù)選擇其中的一條加工途徑。第5章 軟件設(shè)計(jì) 圖5.9 事務(wù)型數(shù)據(jù)流圖的根本模型事務(wù)中心輸入流接收路徑加工路徑第5章 軟件設(shè)計(jì) 5.3.2 5.3.2 面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)過程面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)過程 運(yùn)用面向數(shù)據(jù)流的方法進(jìn)展軟件體系
40、構(gòu)造的設(shè)計(jì)時(shí),應(yīng)該運(yùn)用面向數(shù)據(jù)流的方法進(jìn)展軟件體系構(gòu)造的設(shè)計(jì)時(shí),應(yīng)該首先對(duì)需求分析階段得到的數(shù)據(jù)流圖進(jìn)展復(fù)查,必要時(shí)進(jìn)展修首先對(duì)需求分析階段得到的數(shù)據(jù)流圖進(jìn)展復(fù)查,必要時(shí)進(jìn)展修正和精化;接著在仔細(xì)分析系統(tǒng)數(shù)據(jù)流圖的根底上,確定數(shù)據(jù)正和精化;接著在仔細(xì)分析系統(tǒng)數(shù)據(jù)流圖的根底上,確定數(shù)據(jù)流圖的類型,并按照相應(yīng)的設(shè)計(jì)步驟將數(shù)據(jù)流圖轉(zhuǎn)化為軟件構(gòu)流圖的類型,并按照相應(yīng)的設(shè)計(jì)步驟將數(shù)據(jù)流圖轉(zhuǎn)化為軟件構(gòu)造;最后還要根據(jù)體系構(gòu)造設(shè)計(jì)的原那么對(duì)得到的軟件構(gòu)造進(jìn)造;最后還要根據(jù)體系構(gòu)造設(shè)計(jì)的原那么對(duì)得到的軟件構(gòu)造進(jìn)展優(yōu)化和改良。面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)過程如圖展優(yōu)化和改良。面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)過程如圖5.10
41、5.10所示。所示。第5章 軟件設(shè)計(jì) 圖5.10 面向數(shù)據(jù)流的體系構(gòu)造設(shè)計(jì)過程事務(wù)流變換流精化數(shù)據(jù)流圖區(qū)分事務(wù)中心、接收路徑及加工路徑區(qū)分變換中心、輸入及輸出部分映射成事務(wù)結(jié)構(gòu)映射成變換結(jié)構(gòu)詳細(xì)設(shè)計(jì)根據(jù)體系結(jié)構(gòu)設(shè)計(jì)基本原則優(yōu)化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查事務(wù)分析變換分析流類型第5章 軟件設(shè)計(jì) 普通來說,大多數(shù)系統(tǒng)的加工問題被表示為變換型,可采用變換分析設(shè)計(jì)方法建立系統(tǒng)的軟件構(gòu)造,但當(dāng)數(shù)據(jù)流圖具有明顯的事務(wù)特點(diǎn)時(shí),那么應(yīng)采用事務(wù)分析技術(shù)進(jìn)展處置。變換分析設(shè)計(jì)方法與事務(wù)分析設(shè)計(jì)方法類似,都遵照?qǐng)D5.10所示的設(shè)計(jì)過程,主要差別僅在于由數(shù)據(jù)流圖向軟件構(gòu)造的映射方法不同。對(duì)于一個(gè)復(fù)雜的系統(tǒng),
42、數(shù)據(jù)流圖中能夠既存在變換流又存在事務(wù)流,這時(shí)該當(dāng)根據(jù)數(shù)據(jù)流圖的主要處置功能,選擇一個(gè)面向全局的、涉及整個(gè)軟件系統(tǒng)的總體類型,映射得到系統(tǒng)的整體軟件構(gòu)造。此外,再對(duì)部分范圍內(nèi)的數(shù)據(jù)流圖進(jìn)展詳細(xì)研討,確定它們各自的類型并分別處置,得到系統(tǒng)的部分軟件構(gòu)造。第5章 軟件設(shè)計(jì) 1. 1. 變換分析設(shè)計(jì)變換分析設(shè)計(jì) 對(duì)于變換型的數(shù)據(jù)流圖,應(yīng)按照變換分析設(shè)計(jì)的方法建立對(duì)于變換型的數(shù)據(jù)流圖,應(yīng)按照變換分析設(shè)計(jì)的方法建立系統(tǒng)的構(gòu)造圖。下面以圖系統(tǒng)的構(gòu)造圖。下面以圖5.115.11所示的工資計(jì)算系統(tǒng)數(shù)據(jù)流圖為所示的工資計(jì)算系統(tǒng)數(shù)據(jù)流圖為例來引見變換分析建立軟件構(gòu)造的詳細(xì)步驟。例來引見變換分析建立軟件構(gòu)造的詳細(xì)步驟
43、。第5章 軟件設(shè)計(jì) (1) 劃分邊境,區(qū)分系統(tǒng)的輸入、變換中心和輸出部分。 變換中心在圖中往往是多股數(shù)據(jù)流聚集的地方,閱歷豐富的設(shè)計(jì)人員通??筛鶕?jù)其特征直接確定系統(tǒng)的變換中心。另外,下述方法可協(xié)助設(shè)計(jì)人員確定系統(tǒng)的輸入和輸出:從數(shù)據(jù)流圖的物理輸入端出發(fā),沿著數(shù)據(jù)流方向逐漸向系統(tǒng)內(nèi)部挪動(dòng),直至遇到不能被看作是系統(tǒng)輸入的數(shù)據(jù)流為止,那么此數(shù)據(jù)流之前的部分即為系統(tǒng)的輸入;同理,從數(shù)據(jù)流圖的物理輸出端出發(fā),逆著數(shù)據(jù)流方向逐漸向系統(tǒng)內(nèi)部挪動(dòng),直至遇到不能被看作是系統(tǒng)輸出的數(shù)據(jù)流為止,那么該數(shù)據(jù)流之后的部分即為系統(tǒng)的輸出;夾在輸入和輸出之間的部分就是系統(tǒng)的變換中心。工資計(jì)算系統(tǒng)的數(shù)據(jù)流圖的劃分如圖5.11
44、所示。第5章 軟件設(shè)計(jì) 圖5.11 進(jìn)展了邊境劃分的工資計(jì)算系統(tǒng)數(shù)據(jù)流圖獎(jiǎng)金發(fā)放表缺勤扣款表工資檔案F2應(yīng)發(fā)工資表所得稅扣款后勤部門水電扣款表工資清單F3實(shí)發(fā)工資表工資條職工打印工資清單職工個(gè)人工資賬號(hào)清單F4查找職工銀行工資賬號(hào)實(shí)發(fā)工資銀行工資存款清單賬號(hào)計(jì)算出勤獎(jiǎng)獎(jiǎng)懲條例F1統(tǒng)計(jì)出勤、請(qǐng)假及曠工時(shí)數(shù)人事部門出勤表業(yè)績(jī)表計(jì)算缺勤扣款計(jì)算業(yè)績(jī)獎(jiǎng)業(yè)績(jī)獎(jiǎng)出勤獎(jiǎng)出勤時(shí)數(shù)請(qǐng)假及曠工時(shí)數(shù)基本工資計(jì)算各項(xiàng)基本數(shù)據(jù)之和計(jì)算應(yīng)發(fā)工資生成工資存款清單計(jì)算所得稅計(jì)算各項(xiàng)獎(jiǎng)金之和計(jì)算實(shí)發(fā)工資第5章 軟件設(shè)計(jì) (2) 完成第一級(jí)分解,設(shè)計(jì)系統(tǒng)的上層模塊。 這一步主要是確定軟件構(gòu)造的頂層和第一層。任何系統(tǒng)的頂層都只含一
45、個(gè)用于控制的主模塊。變換型數(shù)據(jù)流圖對(duì)應(yīng)的軟件構(gòu)造的第一層普通由輸入、變換和輸出三種模塊組成。系統(tǒng)中的每個(gè)邏輯輸入對(duì)應(yīng)一個(gè)輸入模塊,完成為主模塊提供數(shù)據(jù)的功能;每一個(gè)邏輯輸出對(duì)應(yīng)一個(gè)輸出模塊,完成為主模塊輸出數(shù)據(jù)的功能;變換中心對(duì)應(yīng)一個(gè)變換模塊,完成將系統(tǒng)的邏輯輸入轉(zhuǎn)換為邏輯輸出的功能。工資計(jì)算系統(tǒng)的一級(jí)分解結(jié)果如圖5.12所示。第5章 軟件設(shè)計(jì) 工資計(jì)算系統(tǒng)取得基本數(shù)據(jù)計(jì)算工資輸出計(jì)算結(jié)果圖圖5.12 工資計(jì)算系統(tǒng)的一級(jí)分解工資計(jì)算系統(tǒng)的一級(jí)分解 第5章 軟件設(shè)計(jì) (3) 完成第二級(jí)分解,設(shè)計(jì)輸入、變換中心和輸出部分的中、下層模塊。 這一步主要是對(duì)上一步確定的軟件構(gòu)造進(jìn)展逐層細(xì)化,為每一個(gè)輸入
46、、輸出模塊及變換模塊設(shè)計(jì)下屬模塊。通常,一個(gè)輸入模塊應(yīng)包括用于接納數(shù)據(jù)和轉(zhuǎn)換數(shù)據(jù)(將接納的數(shù)據(jù)轉(zhuǎn)換成下級(jí)模塊所需的方式)的兩個(gè)下屬模塊;一個(gè)輸出模塊應(yīng)包括用于轉(zhuǎn)換數(shù)據(jù)(將上級(jí)模塊的處置結(jié)果轉(zhuǎn)換成輸出所需的方式)和傳出數(shù)據(jù)的兩個(gè)下屬模塊;變換模塊的分解沒有固定的方法,普通應(yīng)根據(jù)變換中心的組成情況及模塊分解的原那么來確定下屬模塊。完成二級(jí)分解后,工資計(jì)算系統(tǒng)的軟件構(gòu)造如圖5.13所示(圖中省略了模塊調(diào)用傳送的信息)。第5章 軟件設(shè)計(jì) 圖5.13 完成二級(jí)分解后的工資計(jì)算系統(tǒng)軟件構(gòu)造取得水電扣款計(jì)算出勤獎(jiǎng)、缺勤扣款計(jì)算業(yè)績(jī)獎(jiǎng)計(jì)算基本工資讀水電扣款表讀考勤表讀業(yè)績(jī)表讀工資檔案取得基本數(shù)據(jù)計(jì)算應(yīng)發(fā)工資計(jì)
47、算實(shí)發(fā)工資計(jì)算獎(jiǎng)金之和計(jì)算所得稅計(jì)算工資生成工資存款清單查找職工銀行工資賬號(hào)打印工資清單工資計(jì)算系統(tǒng)輸出計(jì)算結(jié)果第5章 軟件設(shè)計(jì) 2. 2. 事務(wù)分析設(shè)計(jì)事務(wù)分析設(shè)計(jì)圖5.14 進(jìn)展了邊境劃分的事務(wù)型數(shù)據(jù)流圖 AEGBCIJKH接收路徑事務(wù)中心F加工路徑 2加工路徑 1第5章 軟件設(shè)計(jì) (1) 劃分邊境,明確數(shù)據(jù)流圖中的接納途徑、事務(wù)中心和加工途徑。 事務(wù)中心在數(shù)據(jù)流圖中位于多條加工途徑的起點(diǎn),經(jīng)過事務(wù)中心的數(shù)據(jù)流被分解為多個(gè)發(fā)散的數(shù)據(jù)流,根據(jù)這個(gè)特征很容易在圖中找到系統(tǒng)的事務(wù)中心。向事務(wù)中心提供數(shù)據(jù)的途徑是系統(tǒng)的接納途徑,而從事務(wù)中心引出的一切途徑都是系統(tǒng)的加工途徑,如圖5.14中對(duì)數(shù)據(jù)流圖
48、的劃分。每條加工途徑都具有本人的構(gòu)造特征,能夠?yàn)樽儞Q型,也能夠?yàn)槭聞?wù)型。如圖5.14中,途徑1為變換型,途徑2為事務(wù)型。第5章 軟件設(shè)計(jì) (2) 建立事務(wù)型構(gòu)造的上層模塊。 事務(wù)型流圖對(duì)應(yīng)的軟件構(gòu)造的頂層只需一個(gè)由事務(wù)中心映射得到的總控模塊;總控模塊有兩個(gè)下級(jí)模塊,分別是由接納途徑映射得到的接納模塊和由全部加工途徑映射得到的調(diào)度模塊。接納模塊擔(dān)任接納系統(tǒng)處置所需的數(shù)據(jù),調(diào)度模塊擔(dān)任控制下層的一切加工模塊。兩個(gè)模塊共同構(gòu)成了事務(wù)型軟件構(gòu)造的第一層。圖5.14中,事務(wù)型數(shù)據(jù)流圖映射得到的上層軟件構(gòu)造如圖5.15所示。第5章 軟件設(shè)計(jì) 圖5.15總控接收調(diào)度第5章 軟件設(shè)計(jì) (3) 分解、細(xì)化接納途
49、徑和加工途徑,得到事務(wù)型構(gòu)造的下層模塊。 由于接納途徑通常都具有變換型的特性,因此對(duì)事務(wù)型構(gòu)造接納模塊的分解方法與對(duì)變換型構(gòu)造輸入模塊的分解方法一樣。對(duì)加工途徑的分解應(yīng)按照每一條途徑本身的構(gòu)造特征,分別采用變換分析或事務(wù)分析方法進(jìn)展分解。經(jīng)過分解后得到的完好的事務(wù)型軟件構(gòu)造如圖5.16所示。第5章 軟件設(shè)計(jì) 圖5.16 完好的事務(wù)型軟件構(gòu)造調(diào)度IKJ總控BA事務(wù)1事務(wù)2EFGH第5章 軟件設(shè)計(jì) 3. 軟件構(gòu)造的改良和優(yōu)化 為了使最終生成的軟件系統(tǒng)具有良好的風(fēng)格及較高的效率,應(yīng)在軟件的早期設(shè)計(jì)階段盡量地對(duì)軟件構(gòu)造進(jìn)展優(yōu)化。因此在建立軟件構(gòu)造后,軟件設(shè)計(jì)人員需求按照體系構(gòu)造設(shè)計(jì)的根本原那么對(duì)其進(jìn)展
50、必要的改良和調(diào)整。軟件構(gòu)造的優(yōu)化應(yīng)該力求在保證模塊劃分合理的前提下,減少模塊的數(shù)量、提高模塊的內(nèi)聚性及降低模塊的耦合性,設(shè)計(jì)出具有良好特性的軟件構(gòu)造。第5章 軟件設(shè)計(jì) 5.4 5.4 詳細(xì)設(shè)計(jì)概述詳細(xì)設(shè)計(jì)概述5.4.1 5.4.1 詳細(xì)設(shè)計(jì)的義務(wù)詳細(xì)設(shè)計(jì)的義務(wù) 詳細(xì)設(shè)計(jì)的義務(wù)主要有如下五點(diǎn)。詳細(xì)設(shè)計(jì)的義務(wù)主要有如下五點(diǎn)。 (1) (1) 確定每個(gè)模塊的詳細(xì)算法。確定每個(gè)模塊的詳細(xì)算法。根據(jù)體系構(gòu)造設(shè)計(jì)所建立的系統(tǒng)軟件構(gòu)造,為劃分的每個(gè)模塊根據(jù)體系構(gòu)造設(shè)計(jì)所建立的系統(tǒng)軟件構(gòu)造,為劃分的每個(gè)模塊確定詳細(xì)的算法,并選擇某種表達(dá)工具將算法的詳細(xì)處置過程確定詳細(xì)的算法,并選擇某種表達(dá)工具將算法的詳細(xì)處置
51、過程描畫出來。描畫出來。 第5章 軟件設(shè)計(jì) (2) 確定每個(gè)模塊的內(nèi)部數(shù)據(jù)構(gòu)造及數(shù)據(jù)庫的物理構(gòu)造。 為系統(tǒng)中的一切模塊確定并構(gòu)造算法實(shí)現(xiàn)所需的內(nèi)部數(shù)據(jù)構(gòu)造;根據(jù)前一階段確定的數(shù)據(jù)庫的邏輯構(gòu)造,對(duì)數(shù)據(jù)庫的存儲(chǔ)構(gòu)造、存取方法等物理構(gòu)造進(jìn)展設(shè)計(jì)。 (3) 確定模塊接口的詳細(xì)細(xì)節(jié)。 按照模塊的功能要求,確定模塊接口的詳細(xì)信息,包括模塊之間的接口信息、模塊與系統(tǒng)外部的接口信息及用戶界面等。第5章 軟件設(shè)計(jì) (4) 為每個(gè)模塊設(shè)計(jì)一組測(cè)試用例。 由于擔(dān)任詳細(xì)設(shè)計(jì)的軟件人員對(duì)模塊的實(shí)現(xiàn)細(xì)節(jié)非常清楚,因此由他們?cè)谕瓿稍敿?xì)設(shè)計(jì)后提出模塊的測(cè)試要求是非常恰當(dāng)和有效的。 (5) 編寫文檔,參與復(fù)審。 詳細(xì)設(shè)計(jì)階段的
52、成果主要以詳細(xì)設(shè)計(jì)闡明書的方式保管下來,在經(jīng)過復(fù)審對(duì)其進(jìn)展改良和完善后作為編碼階段進(jìn)展程序設(shè)計(jì)的主要根據(jù)。第5章 軟件設(shè)計(jì) 5.4.2 5.4.2 詳細(xì)設(shè)計(jì)可采用的工具詳細(xì)設(shè)計(jì)可采用的工具 1. 1. 程序流程圖程序流程圖 程序流程圖是最早出現(xiàn)且運(yùn)用較為廣泛的算法表達(dá)工具之程序流程圖是最早出現(xiàn)且運(yùn)用較為廣泛的算法表達(dá)工具之一,可以有效地描畫問題求解過程中的程序邏輯構(gòu)造。程序流一,可以有效地描畫問題求解過程中的程序邏輯構(gòu)造。程序流程圖中經(jīng)常運(yùn)用的根本符號(hào)如圖程圖中經(jīng)常運(yùn)用的根本符號(hào)如圖5.175.17所示。所示。圖5.17 程序流程圖中的根本符號(hào)(a) 普通處置框;(b) 輸入/輸出框;(c)
53、判別框;(d) 流程線;(e) 起止框(a)(b)(c)(d)(e)第5章 軟件設(shè)計(jì) 程序流程圖的主要優(yōu)點(diǎn)在于對(duì)程序的控制流程描畫直觀、明晰,運(yùn)用靈敏,便于閱讀和掌握,因此在20世紀(jì)40年代末到70年代初被普遍采用。但隨著程序設(shè)計(jì)方法的開展,程序流程圖的許多缺陷逐漸暴顯露來。這些缺陷主要表達(dá)在以下方面: (1) 程序流程圖中可以隨心所欲地運(yùn)用流程線,容易呵斥程序控制構(gòu)造的混亂,與構(gòu)造化程序設(shè)計(jì)的思想相違背。第5章 軟件設(shè)計(jì) (2) 程序流程圖難以描畫逐漸求精的過程,容易導(dǎo)致程序員過早思索程序的控制流程,而忽略程序全局構(gòu)造的設(shè)計(jì)。 (3) 程序流程圖難以表示系統(tǒng)中的數(shù)據(jù)構(gòu)造。 正是由于程序流程圖
54、存在的這些缺陷,越來越多的軟件設(shè)計(jì)人員放棄了對(duì)它的運(yùn)用,而去選擇其他一些更有利于構(gòu)造化設(shè)計(jì)的表達(dá)工具,下面所引見的NS圖和PAD圖就是其中的兩種圖形工具。第5章 軟件設(shè)計(jì) 2. NS圖 NS圖又稱為盒圖,它是為了保證構(gòu)造化程序設(shè)計(jì)而由Nassi和Shneiderman共同提出的一種圖形工具。在NS圖中,一切的程序構(gòu)造均運(yùn)用矩形框表示,它可以明晰地表達(dá)構(gòu)造中的嵌套及模塊的層次關(guān)系。NS圖中,根本控制構(gòu)造的表示符號(hào)如圖5.18所示。由于NS圖中沒有流程線,不能夠隨意轉(zhuǎn)移控制,因此表達(dá)出的程序構(gòu)造必然符合構(gòu)造化程序設(shè)計(jì)的思想,有利于培育軟件設(shè)計(jì)人員的良好設(shè)計(jì)風(fēng)格。但當(dāng)所描畫的程序嵌套層次較多時(shí),NS
55、圖的內(nèi)層方框會(huì)越畫越小,不僅影響可讀性而且不易修正。第5章 軟件設(shè)計(jì) 圖5.18 NS圖中根本控制構(gòu)造的表示符號(hào)順序構(gòu)造;(b) 分支構(gòu)造;(c) 多分支CASE構(gòu)造;(d) while-do構(gòu)造;(e) do-until構(gòu)造;(f) 調(diào)用模塊A值1值2值nCASE 1部分CASE 2部分CASE n部分CASE條件(c)(b)S1S2IF條件TFS2S1(a)while循環(huán)條件while-do部分(d)until條件do-until部分(e)(f)A第5章 軟件設(shè)計(jì) 3. PAD圖 PAD(Problem Analysis Diagram,問題分析圖)是繼程序流程圖和NS圖后,由日立公司在2
56、0世紀(jì)70年代提出的又一種用于詳細(xì)設(shè)計(jì)的圖形表達(dá)工具。它只能用于構(gòu)造化程序的描畫。PAD圖采用了易于運(yùn)用的樹型構(gòu)造圖形符號(hào),既利于明晰地表達(dá)程序構(gòu)造,又利于修正。PAD圖中所經(jīng)常運(yùn)用的根本符號(hào)如圖5.19所示。第5章 軟件設(shè)計(jì) 圖5.19 PAD中根本符號(hào)順序構(gòu)造;(b) 分支構(gòu)造;(c) 多分支CASE構(gòu)造;(d) 當(dāng)型循環(huán);(e);直到型循環(huán);(f) 對(duì)s的細(xì)化S1S2(a)S1S2(b)條件TFS1S2(c)CASE值1Sn值2值nSWHILE條件(d)SUNTIL條件(e)S1S2Sn(f)S第5章 軟件設(shè)計(jì) PAD圖具有的主要優(yōu)點(diǎn)如下: (1) 運(yùn)用PAD圖描畫的程序構(gòu)造層次明晰,邏
57、輯構(gòu)造關(guān)系直觀、易讀、易記、易修正。 (2) PAD圖為多種常用高級(jí)言語提供了相應(yīng)的圖形符號(hào), 每種控制語句都與一個(gè)專門的圖形符號(hào)相對(duì)應(yīng),易于PAD圖向高級(jí)言語源程序轉(zhuǎn)換。 (3) 支持自頂向下、逐漸求精的設(shè)計(jì)過程。 (4) 既可以描畫程序的邏輯構(gòu)造,又可以描畫系統(tǒng)中的數(shù)據(jù)構(gòu)造。第5章 軟件設(shè)計(jì) 是 文 件 結(jié) 束 位 置 嗎 ?開 始在 工 資 檔 案 中 讀 一 條 記 錄是 文 件 結(jié) 束 位 置 嗎 ?計(jì) 算 工 資 檔 案 各 項(xiàng) 基 本 數(shù) 據(jù) 之 和 并 存 入 paynum 當(dāng) 前 職 工 號(hào)在 獎(jiǎng) 金 發(fā) 放 表 中 查 找 職 工 號(hào) 與 num相 同 的 記 錄找 到 了
58、 嗎 ?計(jì) 算 各 項(xiàng) 獎(jiǎng) 金 總 和 并 存 入 bonus應(yīng) 發(fā) 工 資 pay bonus讀 下 一 條 記 錄YN顯 示 錯(cuò) 誤NY結(jié) 束(a)(b)計(jì) 算 工 資 各 項(xiàng) 基 本 數(shù) 據(jù) 之 和 并 存 入 paynum 當(dāng) 前 職 工 號(hào)在 獎(jiǎng) 金 表 中 查 職 工 號(hào) 與 num相 同 的 記 錄 找 到 了 嗎 ?計(jì) 算 各 項(xiàng) 獎(jiǎng) 金 總 和 并 存 入 bonus應(yīng) 發(fā) 工 資 pay bonus顯 示錯(cuò) 誤讀 下 一 條 記 錄TF 在 工 資 檔 案 中 讀 一 條 記 錄在 工 資 檔 案 中 讀 一 條 記 錄當(dāng) 文 件 沒 有 讀 完 時(shí)計(jì) 算 應(yīng) 發(fā) 工 資檢
59、 索 個(gè) 人 獎(jiǎng) 金num 當(dāng) 前 職 工 號(hào)在 獎(jiǎng) 金 表 中 查 找 職 工 號(hào) 與 num相 同 的 記 錄計(jì) 算 應(yīng) 發(fā) 工 資顯 示 錯(cuò) 誤 信 息TF找 到 了 嗎 ?讀 下 一 條 記 錄檢 索 個(gè) 人 獎(jiǎng) 金def計(jì) 算 各 項(xiàng) 獎(jiǎng) 金 之 和 并 存 入 bonus計(jì) 算 工 資 基 本 數(shù) 據(jù) 項(xiàng) 之 和 并 存 入 pay應(yīng) 發(fā) 工 資 pay bonus計(jì) 算 應(yīng) 發(fā) 工 資def(c)圖5.20 三種詳細(xì)設(shè)計(jì)中運(yùn)用的圖形工具例如采用程序流程圖描畫計(jì)算應(yīng)發(fā)工資模塊;(b) 采用NS圖描畫計(jì)算應(yīng)發(fā)工資模塊;(c) 采用PAD圖描畫計(jì)算應(yīng)發(fā)工資模塊第5章 軟件設(shè)計(jì) 4. P
60、DL言語 PDL (Process Design Language)言語即過程設(shè)計(jì)言語,是一種用于描畫程序算法和定義數(shù)據(jù)構(gòu)造的偽代碼。PDL言語的構(gòu)成與用于描畫加工的構(gòu)造化言語類似,是一種兼有自然言語和構(gòu)造化程序設(shè)計(jì)言語語法的“混合型言語。自然言語的采用使算法的描畫靈敏自在、明晰易懂,構(gòu)造化程序設(shè)計(jì)言語的采用使控制構(gòu)造的表達(dá)具有固定的方式且符合構(gòu)造化設(shè)計(jì)的思想。PDL言語與構(gòu)造化言語的主要區(qū)別在于:由于PDL言語表達(dá)的算法是編碼的直接根據(jù),因此其語法構(gòu)造更加嚴(yán)厲并且處置過程描畫更加詳細(xì)詳細(xì)。第5章 軟件設(shè)計(jì) PDL言語的主要特點(diǎn)如下: (1) 各種定義語句及控制構(gòu)造的表達(dá)都具有嚴(yán)厲的語法方式,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【名師一號(hào)】2020-2021學(xué)年北師大版高中數(shù)學(xué)必修3雙基限時(shí)練15
- 【全程復(fù)習(xí)方略】2020年高考政治一輪課時(shí)提升作業(yè)-必修1-第2課(廣東專供)
- 《產(chǎn)業(yè)發(fā)展報(bào)告》課件
- 【同步輔導(dǎo)】2021高中數(shù)學(xué)北師大版必修二導(dǎo)學(xué)案:《直線和圓的位置關(guān)系》
- 一本正經(jīng)造句三年級(jí)簡(jiǎn)單
- 2022中考分類試題29選擇填空
- 大學(xué)英語聽力
- 2025年0278南京搜貓數(shù)據(jù)技術(shù)有限公司
- 2025年0045廣東大倉機(jī)器人科技有限公司
- 【案例6-3】胡潤(rùn)富豪榜順勢(shì)而生
- 論海瀾之家存貨管理的問題、成因及其對(duì)策
- 醫(yī)院長(zhǎng)期醫(yī)囑單(模板)
- 班主任育人故事(通用17篇)
- 初二化學(xué)上冊(cè)知識(shí)點(diǎn)7篇
- 汽車保養(yǎng)與維護(hù)
- 2023-2024學(xué)年貴州省黔西南布依族苗族自治州貞豐縣三年級(jí)數(shù)學(xué)第一學(xué)期期末經(jīng)典模擬試題含答案
- 娛樂場(chǎng)所消防安全操作規(guī)程
- 社區(qū)服務(wù)中心
- 商業(yè)天然氣灶具用氣量明細(xì)
- 物業(yè)公司合規(guī)管理與風(fēng)險(xiǎn)防控全書
- 部編版五年級(jí)語文上冊(cè)作文總復(fù)習(xí)課件
評(píng)論
0/150
提交評(píng)論