軟件結(jié)構(gòu)化設(shè)計3_第1頁
軟件結(jié)構(gòu)化設(shè)計3_第2頁
軟件結(jié)構(gòu)化設(shè)計3_第3頁
軟件結(jié)構(gòu)化設(shè)計3_第4頁
軟件結(jié)構(gòu)化設(shè)計3_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

§4.3.2詳細(xì)設(shè)計(過程設(shè)計、模塊設(shè)計)主要任務(wù):編寫詳細(xì)設(shè)計說明書為此,設(shè)計人員應(yīng):(1)確定每個模塊的算法,用工具表達(dá)算法的過程,寫出模塊的詳細(xì)過程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)(視圖)。(3)確定模塊接口的細(xì)節(jié)。詳細(xì)設(shè)計是編碼的先導(dǎo)。4.3.2.1

結(jié)構(gòu)化程序設(shè)計(SP)方法傳統(tǒng)的設(shè)計技術(shù)和舊觀念:強(qiáng)調(diào)設(shè)計的隨意性,具有濃厚的個人色彩追求程序效率和個人設(shè)計技巧新的設(shè)計思想和風(fēng)格:清晰第一使用標(biāo)準(zhǔn)的、規(guī)范的控制結(jié)構(gòu)逐步細(xì)化結(jié)構(gòu)程序設(shè)計的概念最早由E.W.Dijkstra提出。1965年他在一次會議上指出:“可以從高級語言中取消GOTO語句”,“程序的質(zhì)量與程序中所包含的GOTO語句的數(shù)量成反比”。

1966年B?hm和JacoPini證明了,只用三種基本的控制結(jié)構(gòu),就能實現(xiàn)任何單入口單出口的程序。這三種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)”。結(jié)構(gòu)程序設(shè)計的由來這三種基本的控制結(jié)構(gòu)的流程圖如下:實際上用順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)(DO_WHILE結(jié)構(gòu))完全可以實現(xiàn)選擇結(jié)構(gòu)(IF_THEN_ELSE結(jié)構(gòu)),因此,理論上最基本的控制結(jié)構(gòu)只有兩種。

B?hm和Jacopini的證明給結(jié)構(gòu)程序設(shè)計技術(shù)奠定了理論基礎(chǔ)。s1s2s1s3s2條件s循環(huán)條件YNYN順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)

1968年Dijkstra再次建議從一切高級語言中取消GOTO語句,只使用三種基本控制結(jié)構(gòu)寫程序。經(jīng)過討論人們認(rèn)識到,不是簡單地去掉GOTO語句的問題,而是要創(chuàng)立一種新的程序設(shè)計思想、方法和風(fēng)格,以顯著地提高軟件生產(chǎn)率和降低軟件維護(hù)代價。結(jié)構(gòu)化程序設(shè)計的思想就誕生了。

1972年IBM公司的Mills進(jìn)一步提出,程序應(yīng)該只有一個入口和一個出口,從而補(bǔ)充了結(jié)構(gòu)程序設(shè)計的規(guī)則。

1971年IBM公司在紐約時報信息庫管理系統(tǒng)的設(shè)計中成功地使用了結(jié)構(gòu)程序設(shè)計技術(shù),隨后在美國宇航局空間實驗室飛行模擬系統(tǒng)的設(shè)計中,結(jié)構(gòu)程序設(shè)計技術(shù)再次獲得圓滿成功。這兩個系統(tǒng)都相當(dāng)龐大,前者包含8萬3千行高級語言源程序,后者包含40萬行源程序,而且在設(shè)計過程中用戶需求又曾有過很多改變,然而兩個系統(tǒng)的開發(fā)工作都按時并且高質(zhì)量地完成了,原因是采用結(jié)構(gòu)化編程技術(shù)能夠成功地開發(fā)軟件且軟件生產(chǎn)率比以前提高了一倍。有兩種觀念:GOTO語句的存在增加了程序的靈活性;程序的質(zhì)量與程序中所包含的GOTO語句的數(shù)量成反比。GOTO語句的討論現(xiàn)在通常的做法是:

允許GOTO語句存在;限制GOTO語句的使用。

那么,什么是結(jié)構(gòu)程序設(shè)計呢?目前還沒有一個為所有人普遍接受的定義,一個比較流行的定義是:

結(jié)構(gòu)程序設(shè)計是一種設(shè)計程序的技術(shù),它采用自頂向下、逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu)。

關(guān)于逐步求精方法Wirth曾做過如下說明:“我們對付復(fù)雜問題的最重要的辦法是抽象,因此,對一個復(fù)雜的問題不應(yīng)該立刻用計算機(jī)指令、數(shù)字和邏輯符號來表示,而應(yīng)該用較自然的抽象語句來表示,從而得出抽象程序。抽象程序?qū)Τ橄蟮臄?shù)據(jù)進(jìn)行某些特定的運(yùn)算并用某些合適的記號(可能是自然語言)來表示。對抽象程序做進(jìn)一步的分解,并進(jìn)入下一個抽象層次,這樣的精細(xì)化過程一直進(jìn)行下去,直到程序能被計算機(jī)接受為止。這時的程序可能是用某種高級語言或機(jī)器指令書寫的?!痹诳傮w設(shè)計階段采用自頂向下逐步求精的方法,可以把一個復(fù)雜問題的解法分解和細(xì)化成一個由許多模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。

在詳細(xì)設(shè)計或編碼階段采用自頂向下逐步求精的方法,可以把一個模塊的功能逐步分解細(xì)化為一系列具體的處理步驟或某種高級語言的語句。使用結(jié)構(gòu)程序設(shè)計技術(shù)主要有下述一些好處:1)自頂向下、逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律,可顯著提高軟件開發(fā)的成功率和生產(chǎn)率。2)用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),易閱讀、理解。3)不使用GOTO語句僅使用單入口、單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和動態(tài)執(zhí)行情況比較一致。程序容易閱讀和理解,開發(fā)時也比較容易保證程序的正確性,即使出現(xiàn)錯誤也比較容易診斷和糾正。4)控制結(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當(dāng)?shù)姆绞?,因此源程序清晰流暢,易讀易懂而且容易測試。5)程序清晰和模塊化使得在修改和重新設(shè)計一個軟件時,可以重用的大量的代碼。6)程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。結(jié)構(gòu)程序設(shè)計的缺點(diǎn)

需要的存儲容量和運(yùn)行時間都有一些增加(估計增加10%~20%);現(xiàn)有的許多程序設(shè)計語言是非結(jié)構(gòu)化的語言,并不提供上述的單入口單出口的基本控制結(jié)構(gòu)。但是,由于硬件技術(shù)的飛速進(jìn)步,程序需要的存儲容量和運(yùn)行時間稍有增加,在今天對絕大多數(shù)應(yīng)用領(lǐng)域已經(jīng)不是問題。如果使用非結(jié)構(gòu)化語言編寫程序,則可以利用GOTO語句實現(xiàn)上述基本控制結(jié)構(gòu),雖然形式上程序中有GOTO語句,卻仍然能夠體現(xiàn)出結(jié)構(gòu)程序設(shè)計的基本精神。雖然從理論上說只用上述三種基本控制結(jié)構(gòu)就可以實現(xiàn)任何單入口單出口的程序,但是為了實際使用方便起見,常常還允許使用DO_UNTIL和DO_CASE兩種控制結(jié)構(gòu),它們的流程圖如下:有時需要立即從循環(huán)(甚至嵌套的循環(huán))中轉(zhuǎn)移出來,如果允許使用LEAVE(或BREAK)結(jié)構(gòu),則不僅方便而且會使效率提高很多。LEAVE或BREAK結(jié)構(gòu)實質(zhì)上是限制的GOTO語句,用于轉(zhuǎn)移到循環(huán)結(jié)構(gòu)后面的語句。如果只允許使用順序、IF_THEN_ELSE型分支和DO_WHILE型循環(huán)三種基本控制結(jié)構(gòu),則稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計;如果除了上述三種基本控制結(jié)構(gòu)之外應(yīng)允許使用DO_CASE型分支結(jié)構(gòu)和DO_UNTIL型循環(huán)結(jié)構(gòu),則稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計;如果再加上允許使用LEAVE(或BREAK)結(jié)構(gòu),則稱為修正的結(jié)構(gòu)程序設(shè)計。s循環(huán)條件YNDO_UNTIL型循環(huán)結(jié)構(gòu)CASE1:S1DOCASE多分支結(jié)構(gòu)CASE2:S1CASE2:S1…4.3.2.2詳細(xì)設(shè)計的描述方法詳細(xì)設(shè)計工具:(1)圖形工具(2)表格工具(3)語言工具1.程序流程圖2.盒圖(N-S圖)3.問題分析圖(PAD)4.過程設(shè)計語言(PDL)(偽碼)5.判定表2.盒圖(N-S圖)用方框圖代替?zhèn)鹘y(tǒng)的流程圖描述五種基本控制結(jié)構(gòu)的圖形構(gòu)件(1)順序型ABC(2)選擇型(If–then–else)If–then–elseIf–thenABF條件TAFT條件then–部分then–部分else–部分(3)多分支選擇型(CASE型)A1值1A2An........條件值2值n(4)WHILE重復(fù)型(5)UNTIL重復(fù)型S(循環(huán)體)DO-WHILEPS(循環(huán)體)REPEATUNTILP(先測試循環(huán))(后測試循環(huán))循環(huán)條件(6)并行結(jié)構(gòu)A1A2An....(7)移出標(biāo)記ACBF條件TA:D(調(diào)用結(jié)構(gòu))(A模塊結(jié)構(gòu))3.問題分析圖(PAD)

(ProblemAnalysisDiagram)基本控制結(jié)構(gòu):(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)

ABCABTF條件(3)重復(fù)結(jié)構(gòu)

WHILE

CSUNTIL

CS(先測試循環(huán))(后測試循環(huán))等價的PASCAL語言:REPEATSUNTILC等價的PASCAL語言:WHILECDOS(4)多分支選擇型(CASE型)

A1值1值2值nA2An......條件程序流程圖

在DFD之前的一種建模工具。

以圖形方式說明系統(tǒng)中的控制流和數(shù)據(jù)流。程序流程圖示例初始處理數(shù)據(jù)檢查、庫存詢問、庫存分配定貨處理帳單處理啟動定貨銷售工作結(jié)束定貨或詢問顯示數(shù)據(jù)顧客文卷庫存文卷庫存文卷接受的定貨文卷臨時定貨文件顯示選擇查問庫存的初始顯示輸入查詢輸入錯詢問回答檢查定貨單說明定貨單發(fā)票詢問定貨4.3.2.3詳細(xì)設(shè)計說明書的構(gòu)成詳細(xì)設(shè)計說明書的構(gòu)成如下:功能概要說明;(來自概要設(shè)計說明書)畫面格式設(shè)計與說明;(界面設(shè)計)數(shù)據(jù)關(guān)聯(lián)圖;(與數(shù)據(jù)庫的關(guān)聯(lián))輸入/輸出數(shù)據(jù)項的詳細(xì)描述;(約束規(guī)則)處理功能邏輯說明;(用流程圖、文字等描述)畫面遷移。(功能邏輯關(guān)系的反映)詳細(xì)設(shè)計說明書的實例例如,“支付認(rèn)可數(shù)據(jù)訂正/取消”模塊的詳細(xì)設(shè)計說明書如下:1.處理概要AP201F支付認(rèn)可數(shù)據(jù)訂正/取消菜單更新19970902支付預(yù)定日交易方制造編碼(注1)

(注2)▼條件輸入?yún)^(qū)數(shù)據(jù)顯示區(qū)命令控制區(qū)確認(rèn)功能描述:

從支付管理DB中抽取滿足以下條件的數(shù)據(jù)。條件:①畫面的支付預(yù)定日=DB的支付認(rèn)可出金日

②支付委托區(qū)分=2③認(rèn)可區(qū)分=1或C④畫面的交易方編碼=DB的交易方編碼(當(dāng)輸入時)⑤畫面的制造編碼=DB的制造編碼(當(dāng)輸入時)注1:任意輸入項目、用下拉表(COMBEBOX)從交易方主文件輸入;

注2:任意輸入項目AP201F支付認(rèn)可數(shù)據(jù)訂正/取消菜單更新19970902支付預(yù)定日交易方制造編碼(注1)(注2)▼確認(rèn)交易方名稱制造編碼工程名稱支付認(rèn)可金額中止工程區(qū)分訂貨編號貨幣支付預(yù)定日支付認(rèn)可抵消額入庫南京螺旋槳34560螺旋槳5,3004700D6745050J09/02R南通制鐵34560閥5004500D6745000R09/02500南通制鐵34560電線6004600D6745010R09/02600顯示順序①交易方②制造編碼③工程區(qū)分④訂貨編號支付管理DB交易方主文件支付管理DB+訂貨管理DB+背景灰色的數(shù)據(jù)項不可編輯制造工程訂貨貨幣交易方支付預(yù)支付委認(rèn)可支付認(rèn)可支付認(rèn)支付認(rèn)可編碼區(qū)分編號代碼編碼定金額托區(qū)分區(qū)分出金日可金額抵消額123451000A1000000R12345001002119970501100

123451000A1000123R12345002002219970510200

123451000A1000124R12345003002219970820300

183451000B2000000R12345004002119970901400

248001000C3300000U4564000100021199709011000

345604500D6745000R55555005002119970902500500345604600D6745010R55555006002119970902600600345604700D6745050J2222200530021199709025300

支付管理DB南通制鐵公司0055555川崎制鐵0045640南京螺旋槳公司0022222中國鋼鐵公司0012345交易方名稱(漢字)交易方編碼銀行編碼交易方主文件編碼區(qū)分訂貨編號名稱123451000A1000000鋼材123451000A1000123型鋼123451000A1000124鐵板183451000B2000000型鋼248001000C3300000鋼材345604500D6745000閥345604600D6745010電線345604700D6745050螺旋槳訂貨管理DB依據(jù)下面的關(guān)聯(lián)關(guān)系抽對象數(shù)據(jù)可編輯數(shù)據(jù)項的編輯要求:①支付認(rèn)可金額:不能超過支付管理DB的支付預(yù)定金額

②支付認(rèn)可抵消額:不能超過畫面上的支付認(rèn)可金額

③支付預(yù)定日:不能輸入小于系統(tǒng)日期的日期

④中止:不能輸入空格、C以外的數(shù)據(jù)。

依據(jù)條件可以抽取出對象數(shù)據(jù),如上圖。

根據(jù)下列條件查找訂貨主數(shù)據(jù)文件條件:訂貨主DB的「訂貨要求編碼」=支付管理DB的「訂貨編號」若查得的訂貨主數(shù)據(jù)文件的記錄的「入庫日」≠(ZEROorNULL),則「入庫」項必須設(shè)定為'R';否則,設(shè)定為空(NULL)AP201F支付認(rèn)可數(shù)據(jù)訂正/取消菜單更新19970902支付預(yù)定日交易方制造編碼(注1)(注2)▼確認(rèn)交易方名稱制造編碼工程名稱支付認(rèn)可金額中止工程區(qū)分訂貨編號貨幣支付預(yù)定日支付認(rèn)可抵消額入庫南京螺旋槳34560螺旋槳5,300C4700D6745050J09/02R南通制鐵34560閥5004500D6745000R09/02500南通制鐵34560電線6004600D6745010R09/10600更新后支付管理DB的畫面

530019970902C253002222200JD674505047003456060060019970910126005555500RD674501046003456050050019970902125005555500RD6745000450034560支付認(rèn)可抵消額支付認(rèn)可金額支付認(rèn)可出金日認(rèn)可區(qū)分支付委托區(qū)分支付預(yù)定金額交易方編碼貨幣代碼訂貨編號工程區(qū)分制造編碼更新后的支付管理DB注1:中止從C變?yōu)榭崭駮r,支付管理DB的支付認(rèn)可區(qū)分變?yōu)椤?”。2.畫面格式更新YYYY/MM/DDHH:MM:SS操作員編碼XXXXXX返回文件(F)編輯(E)視圖(V)工具(T)幫助(H)(AP2O1F)支付認(rèn)可數(shù)據(jù)訂正/取消READY支付預(yù)定日YYYY/MM/DD交易方編碼制造編碼XXXXXXX交易方名稱XXX制造編碼XXXXXXX支付認(rèn)可抵消額XXXX工程區(qū)分XXXXXX訂貨編號XXXXXX貨幣代碼XXX支付預(yù)定日YY/MM/DD中止X工程名稱XXXXXX支付認(rèn)可金額XXXXXXXXXXXX確認(rèn)入庫R根據(jù)概要設(shè)計說明書,給出畫面的格式設(shè)計;整個系統(tǒng)應(yīng)該使用統(tǒng)一的畫面格式。3.數(shù)據(jù)庫關(guān)聯(lián)XXXX結(jié)合條件:1.制造編碼

2.工程區(qū)分

3.訂貨編號結(jié)合條件:1.交易方編碼訂貨管理數(shù)據(jù)文件支付管理數(shù)據(jù)文件交易方主文件給出本模塊中所關(guān)聯(lián)的數(shù)據(jù)文件,并給出相互關(guān)聯(lián)的數(shù)據(jù)項。對數(shù)據(jù)庫文件而言,注意用箭頭表示是數(shù)據(jù)的讀出,還是寫入?4.畫面表示條件1).抽取對象數(shù)據(jù)的條件∶

支付管理數(shù)據(jù)文件的支付認(rèn)可出金日=畫面中輸入的支付預(yù)定日支付管理數(shù)據(jù)文件的支付委托區(qū)分=2

支付管理數(shù)據(jù)文件的支付認(rèn)可區(qū)分=(1OR'C')

支付管理數(shù)據(jù)文件的交易方編碼=畫面中輸入的交易方編碼支付管理數(shù)據(jù)文件的制造編碼=畫面中輸入的制造編碼

但是、交易方編碼或制造編碼未輸入時全體數(shù)據(jù)作為對象數(shù)據(jù)處理(相當(dāng)于*的作用).

按下「確認(rèn)」按鈕后,滿足以上條件的數(shù)據(jù)以交易方名稱、制造編碼、工程區(qū)分、訂貨編號、工程名稱、貨幣代碼等的順序在畫面上顯示。2).陰影部分的數(shù)據(jù)項(見畫面)是不可以編輯的數(shù)據(jù)項。3).交易方名稱:根據(jù)交易方編碼從交易方主文件中抽取。工程名稱:根據(jù)工程編碼從訂貨管理數(shù)據(jù)文件中抽取。4).對畫面上的任一個數(shù)據(jù),根據(jù)其「訂貨編號」查訂貨主數(shù)據(jù)文件(對應(yīng)項目為「訂貨要求編碼」)。若對應(yīng)記錄的「入庫日」≠(ZEROorNULL),則畫面的「入庫」項編輯為‘R’;

若對應(yīng)記錄不存在或「入庫日」=ZERO,則畫面的「入庫」項編輯為空(NULL)。5).畫面的左上角處顯示畫面編號與功能名稱、右上角處分別顯示日期、時刻和操作員編號。

6).打開畫面后,光標(biāo)設(shè)在標(biāo)題部的「支付預(yù)定日」處。7).金額欄用10位整數(shù)2位小數(shù)的編輯格式顯示。名稱欄用30位字符(15漢字)顯示。其它數(shù)據(jù)項按數(shù)據(jù)文件的定義位數(shù)來調(diào)整控件的尺寸。數(shù)值項靠右對齊,字符項靠左對齊。5.畫面輸入內(nèi)容檢查任何一個系統(tǒng),對于畫面上輸入的數(shù)據(jù),都要做嚴(yán)格的數(shù)據(jù)檢查。

空格、C以外的輸入出錯中止○詳細(xì)部的支付預(yù)定日<系統(tǒng)日期時出錯支付預(yù)定日○

溫馨提示

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

評論

0/150

提交評論