軟件工程軟件設計詳細設計課件_第1頁
軟件工程軟件設計詳細設計課件_第2頁
軟件工程軟件設計詳細設計課件_第3頁
軟件工程軟件設計詳細設計課件_第4頁
軟件工程軟件設計詳細設計課件_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件設計

3.1軟件概要設計概述3.2軟件設計的基本原理3.3軟件結構準則3.5軟件詳細設計3.6軟件詳細設計表示法3.7小結習題軟件設計 3.1軟件概要設計概述3.5軟件詳細設計 3.5.1詳細設計的基本任務 1.算法設計 用某種圖形、表格、語言等工具將每個模塊處理過程的詳細算法描述出來。 2.數(shù)據(jù)結構設計 對于需求分析、概要設計確定的概念性的數(shù)據(jù)類型進行確切的定義。3.5軟件詳細設計 3.5.1詳細設計的基本任務 3.物理設計 對數(shù)據(jù)庫進行物理設計,即確定數(shù)據(jù)庫的物理結構。物理結構主要指數(shù)據(jù)庫的存儲記錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數(shù)據(jù)庫系統(tǒng)。 4.其他設計 根據(jù)軟件系統(tǒng)的類型,還可能要進行以下設計: (1)代碼設計:為了提高數(shù)據(jù)的輸入、分類、存儲及檢索等操作的效率,以及節(jié)約內(nèi)存空間,對數(shù)據(jù)庫中的某些數(shù)據(jù)項的值要進行代碼設計。 3.物理設計 (2)輸入/輸出格式設計。 (3)人機對話設計:對于一個實時系統(tǒng),用戶與計算機需頻繁對話,因此要進行對話方式、內(nèi)容及格式的具體設計。 5.編寫詳細設計說明書 詳細設計說明書有下列的主要內(nèi)容: (1)引言:包括編寫目的、背景、定義、參考資料。 (2)程序系統(tǒng)的組織結構。

(2)輸入/輸出格式設計。 (3)程序1(標識符)設計說明:包括功能、性能、輸入、輸出、算法、流程邏輯、接口。 (4)程序2(標識符)設計說明。 (5)程序N(標識符)設計說明。 6.評審 對處理過程的算法和數(shù)據(jù)庫的物理結構都要評審。

(3)程序1(標識符)設計說明:包括功能、性能、輸入、 3.5.2詳細設計方法 處理過程設計中采用的典型方法是結構化程序設計(SP)方法,最早是由E.W.Dijkstra在20世紀60年代中期提出的。詳細設計并不是具體地編程序,而是已經(jīng)細化成很容易從中產(chǎn)生程序的圖紙。因此詳細設計的結果基本決定了最終程序的質量。為了提高軟件的質量,延長軟件的生存期,軟件的可測試性、可維護性是重要保障。軟件的可測試性、可維護性與程序的易讀性有很大關系。詳細設計的目標不僅是邏輯上能正確地實現(xiàn)每個模塊的功能,還應使設計出的處理過程清晰易讀。結構化程序設計是實現(xiàn)該目標的關鍵技術之一,它指導人們用良好的思想方法開發(fā)易于理解、易于驗證的程序。結構化程序設計方法有以下幾個基本要點。 3.5.2詳細設計方法 1.采用自頂向下、逐步求精的程序設計方法 在需求分析、概要設計中,都采用了自頂向下、逐層細化的方法。使用“抽象”這個手段,上層對問題抽象、對模塊抽象和對數(shù)據(jù)抽象,下層則進一步分解,進入另一個抽象層次。在詳細設計中,雖然處于“具體”設計階段,但在設計某個模塊內(nèi)部處理過程中,仍可以逐步求精,降低處理細節(jié)的復雜度。 1.采用自頂向下、逐步求精的程序設計方法 2.使用三種基本控制結構構造程序

任何程序都可由順序、選擇及重復三種基本控制結構構造。這三種基本結構的共同點是單入口、單出口。 2.使用三種基本控制結構構造程序三種方式對模糊過程進行分解:

(1)用順序方式對過程分解,確定各部分的執(zhí)行順序。 (2)用選擇方式對過程分解,確定某個部分的執(zhí)行條件。3)用循環(huán)方式對過程分解,確定某個部分進行重復的開始和結束的條件。 對處理過程仍然模糊的部分反復使用以上分解方法,最終可將所有細節(jié)確定下來。三種方式對模糊過程進行分解:

(1)用順序方式對過例:在一組數(shù)中找出其中最大的數(shù)

1輸入一組數(shù);1輸入一個數(shù)組;1輸入一個數(shù)組;2找出其中的最大數(shù);3輸出最大數(shù)。3輸出最大數(shù)。2.1任取一數(shù),假定它就是最大數(shù);2.2將該數(shù)與其余各數(shù)逐一比較;2.3若發(fā)現(xiàn)任何數(shù)大于假設的最大數(shù),即取而代之;2.1令”最大數(shù)”=數(shù)組的第一個元素;2.2從第二個元素至最后一個元素做循環(huán);2.3如果新元素>“最大數(shù)”則“最大數(shù)”=新元素;3輸出“最大數(shù)”。求解步驟細化第二步結構化語言描述問題求解逐步細化的過程例:在一組數(shù)中找出其中最大的數(shù)

1輸入一組數(shù);1輸

3.主程序員的組織形式 主程序員的組織形式指開發(fā)程序的人員應采用以一個主程序員(負責全部技術活動)、一個后備程序員(協(xié)調(diào)、支持主程序員)和一個程序管理員(負責事務性工作,如收集、記錄數(shù)據(jù),文檔資料管理等)三人為核心,再加上一些專家(如通信專家、數(shù)據(jù)庫專家)、其他技術人員組成小組。這種組織形式突出了主程序員的領導,設計責任集中在少數(shù)人身上,有利于提高軟件質量,并且能有效地提高軟件生產(chǎn)率。這種組織形式最先由IBM公司實施,隨后其他軟件公司也紛紛采用主程序員制的工作方式。 因此,結構化程序設計方法是綜合應用這些手段來構造高質量程序的思想方法。

3.6軟件詳細設計表示法

關于描述工具的有關說明:1.為了給出軟件結構圖中每一個模塊的算法和塊內(nèi)數(shù)據(jù)結構的清晰描述,需要采用適當?shù)谋磉_工具。2.詳細設計的表達工具有三類:圖形、表格和語言。3.無論哪類描述工具不僅要具有描述設計過程,如控制流程、處理功能、數(shù)據(jù)組織及其它方面的細節(jié)的能力,而且在編碼階段能夠直接將它翻譯為用程序設計語言書寫的源程序。4.詳細設計的描述工具除了以前介紹過判定樹和判定表外,還有程序流程圖、N-S圖、PAD圖及PDL等幾種常用的工具.3.6軟件詳細設計表示法 關于描述工具的有關說明:圖3.8三種基本控制結構的流程圖3.6.1程序流程圖 程序流程圖又稱為程序框圖,它是歷史最悠久、使用最廣泛的一種描述程序邏輯結構的工具,圖3.8為流程圖的三種基本控制結構。圖3.8三種基本控制結構的流程圖3.6.1程序流程圖 流程圖的優(yōu)點是直觀清晰、易于使用,是開發(fā)者普遍采用的工具,但是它有如下嚴重缺點: (1)可以隨心所欲地畫控制流程線的流向,容易造成非結構化的程序結構,編碼時勢必不加限制地使用GOTO語句,導致基本控制塊多入口多出口,這樣會使軟件質量受到影響,與軟件設計的原則相違背。 (2)流程圖不能反映逐步求精的過程,往往反映的是最后的結果。(3)不易表示數(shù)據(jù)結構。 為了克服流程圖的缺陷,要求流程圖都應由三種基本控制結構順序組合和完整嵌套而成,不能有相互交叉的情況,這樣的流程圖是結構化的流程圖。 流程圖的優(yōu)點是直觀清晰、易于使用,是開發(fā)者普遍采用的工具

示例示例例1.“在一組數(shù)中找出其中最大的數(shù)”的程序流程圖

MAX=A(1)i=2i=i+1MAX=A(i)i≤n?MAX<A(ii)TTFF對應程序段:max:=A[1]i:=2WHILEi≤nDOIFA[i]>maxTHENmax:=A[i]i:=i+1注.1.A是一個n元數(shù)組;2.省略變量說明;3.省略輸入、輸出語句。例1.“在一組數(shù)中找出其中最大的數(shù)”的程序流程圖

MAX=A

3.6.2PAD圖 PAD圖指問題分析圖(ProblemAnalysisDiagram),是日本日立公司于1979年提出的一種算法描述工具,它是一種由左往右展開的二維樹型結構。PAD圖的基本控制結構如圖3.9所示。

圖3.9PAD圖的基本控制結構圖3.9PAD圖的基本控制結構 PAD圖的控制流程為自上而下、從左到右地執(zhí)行。圖3.10給出了將數(shù)組A(1)到A(10)進行選擇法排序的算法描述的PAD圖。 PAD圖的控制流程為自上而下、從左到右地執(zhí)行。圖3.10圖3.10PAD圖的示例圖3.10PAD圖的示例 從圖3.10給出的例子可以看出PAD圖的優(yōu)點如下: (1)清晰地反映了程序的層次結構。圖中的豎線為程序的層次線,最左邊豎線是程序的主線,其后一層一層展開,層次關系一目了然。 (2)支持逐步求精的設計方法,左邊層次中的內(nèi)容可以抽象,然后由左到右逐步細化。 (3)易讀易寫,使用方便。

從圖3.10給出的例子可以看出PAD圖的優(yōu)點如下: (4)支持結構化的程序設計原理。 (5)可自動生成程序。PAD圖有對照FORTRAN,Pascal,C等高級語言的標準圖式。因此在有PAD系統(tǒng)的計算機上(如日立公司的M系列機),可以直接輸入PAD圖,由機器自動通過遍歷樹的辦法生成相應的源代碼,大大提高了軟件的生產(chǎn)率。PAD圖為軟件的自動化生成提供了有力的工具。 (4)支持結構化的程序設計原理。例.“在一組數(shù)中找出其中最大的數(shù)”的PAD圖MAX=A(1)WHILEii≤nMAX=A(i)對應程序段:max:=a[1]i=2WHILEi≤nDOIFa[i]>maxTHENmax:=a[i];i=i+1注.1.A是一個n元數(shù)組;2.省略變量說明;3.省略輸入、輸出語句。MAX<A(ii)i=i+1例.“在一組數(shù)中找出其中最大的數(shù)”的PAD圖MAX=A(1)

PAD描述的示例

PAD描述的示例練習:計算n!(要求掌握流程圖、PAD圖)開始結束輸入nS=1T=1S=S×TT=T+1輸出ST>nTF1.程序流程圖練習:計算n!(要求掌握流程圖、PAD圖)開始結束輸入nS輸入nT=1S=1T=T+1S=S×T輸出S2.PAD圖UNTILT>nGetn;T=1;S=1;Repeat

S=S×T;T=T+1Until

T>n

PrintS;

3.PDL語言輸入nT=1S=1T=T+1S=S×T輸出S2.PAD圖UN 3.6.3過程設計語言 過程設計語言(ProcessDesignLanguage,簡稱PDL)是在偽碼的基礎上,擴充了模塊的定義與調(diào)用、數(shù)據(jù)定義和輸入/輸出而形成的。它的控制結構與偽碼相同。PDL是一種用于描述模塊算法設計和處理細節(jié)的語言。PDL與在8.5節(jié)中介紹的結構化語言的結構相似,一般分為內(nèi)外兩層語法,外層語法應符合一般程序設計語言常用的語法規(guī)則,而內(nèi)層語法則用一些簡單的句子、短語和通用的數(shù)學符號,來描述程序應執(zhí)行的功能。PDL具有嚴格的關鍵字外層語法,用于定義控制結構、數(shù)據(jù)結構和模塊接口,而它表示實際操作和條件的內(nèi)層語法又是靈活自由的,使用自然語言的詞匯。 3.6.3過程設計語言 PDL與結構化分析中描述加工邏輯的“結構化語言”所不同的僅是,它們的作用不同,抽象層次不同,模糊程度不同?!敖Y構化語言”是描述加工“做什么”的,并且使開發(fā)人員和用戶都能看懂,因此無嚴格的外語法,內(nèi)層自然語言描述較抽象、較概括。而PDL是描述處理過程“怎么做”的細節(jié)。開發(fā)人員將按其處理細節(jié)編程序,故外層語法更嚴格一些,更趨于形式化,內(nèi)層自然語言描述實際操作更具體更詳細一些。 1.PDL特點 PDL的特點如下: (1)所有關鍵字都有固定語法,以便提供結構化控制結構、數(shù)據(jù)說明和模塊的特征。 PDL與結構化分析中描述加工邏輯的“結構化語言”所不同的 (2)描述處理過程的說明性語言沒有嚴格的語法。 (3)具有數(shù)據(jù)說明機制,包括簡單的與復雜的數(shù)據(jù)說明。 (4)具有模塊定義和調(diào)用機制,開發(fā)人員應根據(jù)系統(tǒng)編程所用的語種,說明PDL表示有關程序結構。 (2)描述處理過程的說明性語言沒有嚴格的語法。 2.程序結構 用PDL表示的程序結構一般有下列幾種結構。 1)順序結構 采用自然語言描述順序結構: 處理S1 處理S2

處理Sn 2.程序結構 2)選擇結構 (1)IF-EISE結構:IF條件IF條件處理S1或處理SELSEENDIF處理S2ENDIF 2)選擇結構 (2)IF-ORIF-ELSE結構:IF條件1處理S1ORIF條件2

ELSE處理SnENDIF (2)IF-ORIF-ELSE結構: (3)CASE結構: CASEOF CASE(1) 處理S1 CASE(2) 處理S2

ELSE處理Sn ENDCASE (3)CASE結構: 3)重復結構 (1)FOR結構:FORi=1TOn循環(huán)體ENDFOR (2)WHILE結構:WHILE條件循環(huán)體ENDWHILE 3)重復結構 (3)UNTIL結構:REPEAT循環(huán)體UNTIL條件 4)出口結構 (1)ESCAPE結構(退出本層結構): WHILE條件處理S1 ESCAPELIF條件處理S2 ENDWHILE L:… (3)UNTIL結構: (2)CYCLE結構(循環(huán)內(nèi)部進入循環(huán)的下一次): L:WHILE條件處理S1CYCLELIF條件處理S2ENDWHILE (2)CYCLE結構(循環(huán)內(nèi)部進入循環(huán)的下一次): 5)擴充結構 (1)模塊定義: PROCEDURE模塊名(參數(shù))RETURN END (2)模塊調(diào)用: CALL模塊名(參數(shù)) 5)擴充結構 (3)數(shù)據(jù)定義: DECLARE屬性變量名,… 屬性有:字符、整型、實型、雙精度、指針、數(shù)組及結構等類型。 (4)輸入/輸出: GET(輸入變量表) PUT(輸出變量表) (3)數(shù)據(jù)定義:

3.PDL應用示例 現(xiàn)以××系統(tǒng)主控模塊詳細設計為例,說明如何用PDL來描述。 PROCEDURE模塊名()清屏;顯示××系統(tǒng)用戶界面;PUT(“請輸入用戶口令:”);GET(password);IFpassword<>系統(tǒng)口令提示警告信息;退出運行ENDIF 3.PDL應用示例 顯示本系統(tǒng)主菜單;WHILE(true)接收用戶選擇ABC;IFABC=“退出”Break;ENDIF調(diào)用相應下層模塊完成用戶選擇功能;ENDWHILE;清屏;RETURNEND 顯示本系統(tǒng)主菜單; 從示例可以看到PDL的總體結構與一般程序完全相同。外語法同相應程序語言一致,內(nèi)語法使用自然語言,易編寫,易理解,也很容易轉換成源程序。除此以外,還有以下優(yōu)點: (1)提供的機制較圖形全面,為保證詳細設計與編碼的質量創(chuàng)造了有利條件。 (2)可將注釋嵌入在源程序中一起作為程序的文檔,并可同高級程序設計語言一樣進行編輯、修改,有利于軟件的維護。 (3)可自動生成程序代碼,提高軟件生產(chǎn)率。目前已有PDL多種版本(如PDL/pascal,PDL/C,PDL/Ada等),為自動生成相應代碼提供了便利條件。 從示例可以看到PDL的總體結構與一般程序完全相同。外語法3.7小結 從軟件設計開始,瀑布模型的各階段都是面向計算機領域的。軟件設計分為概要設計和詳細設計兩個階段。 概要設計的任務是要建立軟件系統(tǒng)的體系結構,即軟件系統(tǒng)要劃分多少個模塊,模塊之間的層次結構和調(diào)用關系是怎樣的。同時還要設計數(shù)據(jù)結構和數(shù)據(jù)庫結構,設計人機接口等。3.7小結 從軟件設計開始,瀑布模型的各階段都是面向計算 概要設計還要求遵守相應的設計原理,如模塊化、抽象、信息隱蔽和模塊獨立性等原理。在建立軟件體系結構時還要遵循軟件結構設計的一些準則,如軟件結構的深度、寬度、扇入、扇出要適當,模塊的作用范圍要在其控制范圍之中等。 軟件體系結構可用軟件結構圖和IPO圖的H圖來描述。概要設計的方法可采用結構化方法和面向對象方法等來設計。概要設計產(chǎn)生的文檔是概要設計說明書。 概要設計之后要進行軟件詳細設計。軟件詳細設計的主要任務是描述每個模塊的算法,即實現(xiàn)該模塊功能的處理過程,它通常采用結構化程序設計來進行,采用程序流程圖、PAD圖、PDL語言等工具來描述。 概要設計還要求遵守相應的設計原理,如模塊化、抽象、信 對于某些項目,由于采用了相應的開發(fā)工具,如PowerBuilder,Develop2000等,這時軟件詳細設計階段工作就不太明顯了。

對于某些項目,由于采用了相應的開發(fā)工具,如PowerBu習題 1.什么是軟件概要設計?該階段的基本任務是什么? 2.軟件設計的基本原理包括哪些內(nèi)容? 3.衡量模塊獨立性的兩個標準是什么?它們各表示什么含義? 4.模塊間的耦合性有哪幾種?它們各表示什么含義? 5.模塊的內(nèi)聚性有哪幾種?各表示什么含義?習題 1.什么是軟件概要設計?該階段的基本任務是什么? 6.什么是軟件結構?簡述軟件結構設計優(yōu)化準則。 7.什么是模塊的影響范圍?什么是模塊的控制范圍?它們之間應該建立什么關系? 8.詳細設計的基本任務是什么?有哪幾種描述方法? 9.結構化程序設計基本要點是什么? 10.請使用流程圖、PAD圖和PDL語言描述下列程序的算法。 (1)在數(shù)據(jù)A(1)~A(10)中求最大數(shù)和次大數(shù)。 (2)輸入三個正整數(shù)作為邊長,判斷該三條邊構成的三角形是直角、等腰或一般三角形。 6.什么是軟件結構?簡述軟件結構設計優(yōu)化準則。

11.用PAD圖描述以下問題的控制結構。 有一個表A(1),A(2),…,A(N),按遞增順序排列。給定一個Key值,在表中用折半法查找。若找到,將表位置i送入x,否則將零送到x,同時將Key值插入表中。 算法: (1)置初值H=1(表頭),T=N(表尾)。 (2)置i=[(H+T)/2](取整)。 (3)若Key=A(i),則找到,i送到x;若Key>A(i),則Key在表的后半部分,i+1送入H;若Key<A(i),則Key在表的前半部分,i-1送入T,重復第2步查找,直到H>T為止。 (4)查不到時,將A(i),…,A(N)移到A(i+1),…,A(N+1),Key值送入A(i)中。 11.用PAD圖描述以下問題的控制結構。軟件設計

3.1軟件概要設計概述3.2軟件設計的基本原理3.3軟件結構準則3.5軟件詳細設計3.6軟件詳細設計表示法3.7小結習題軟件設計 3.1軟件概要設計概述3.5軟件詳細設計 3.5.1詳細設計的基本任務 1.算法設計 用某種圖形、表格、語言等工具將每個模塊處理過程的詳細算法描述出來。 2.數(shù)據(jù)結構設計 對于需求分析、概要設計確定的概念性的數(shù)據(jù)類型進行確切的定義。3.5軟件詳細設計 3.5.1詳細設計的基本任務 3.物理設計 對數(shù)據(jù)庫進行物理設計,即確定數(shù)據(jù)庫的物理結構。物理結構主要指數(shù)據(jù)庫的存儲記錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數(shù)據(jù)庫系統(tǒng)。 4.其他設計 根據(jù)軟件系統(tǒng)的類型,還可能要進行以下設計: (1)代碼設計:為了提高數(shù)據(jù)的輸入、分類、存儲及檢索等操作的效率,以及節(jié)約內(nèi)存空間,對數(shù)據(jù)庫中的某些數(shù)據(jù)項的值要進行代碼設計。 3.物理設計 (2)輸入/輸出格式設計。 (3)人機對話設計:對于一個實時系統(tǒng),用戶與計算機需頻繁對話,因此要進行對話方式、內(nèi)容及格式的具體設計。 5.編寫詳細設計說明書 詳細設計說明書有下列的主要內(nèi)容: (1)引言:包括編寫目的、背景、定義、參考資料。 (2)程序系統(tǒng)的組織結構。

(2)輸入/輸出格式設計。 (3)程序1(標識符)設計說明:包括功能、性能、輸入、輸出、算法、流程邏輯、接口。 (4)程序2(標識符)設計說明。 (5)程序N(標識符)設計說明。 6.評審 對處理過程的算法和數(shù)據(jù)庫的物理結構都要評審。

(3)程序1(標識符)設計說明:包括功能、性能、輸入、 3.5.2詳細設計方法 處理過程設計中采用的典型方法是結構化程序設計(SP)方法,最早是由E.W.Dijkstra在20世紀60年代中期提出的。詳細設計并不是具體地編程序,而是已經(jīng)細化成很容易從中產(chǎn)生程序的圖紙。因此詳細設計的結果基本決定了最終程序的質量。為了提高軟件的質量,延長軟件的生存期,軟件的可測試性、可維護性是重要保障。軟件的可測試性、可維護性與程序的易讀性有很大關系。詳細設計的目標不僅是邏輯上能正確地實現(xiàn)每個模塊的功能,還應使設計出的處理過程清晰易讀。結構化程序設計是實現(xiàn)該目標的關鍵技術之一,它指導人們用良好的思想方法開發(fā)易于理解、易于驗證的程序。結構化程序設計方法有以下幾個基本要點。 3.5.2詳細設計方法 1.采用自頂向下、逐步求精的程序設計方法 在需求分析、概要設計中,都采用了自頂向下、逐層細化的方法。使用“抽象”這個手段,上層對問題抽象、對模塊抽象和對數(shù)據(jù)抽象,下層則進一步分解,進入另一個抽象層次。在詳細設計中,雖然處于“具體”設計階段,但在設計某個模塊內(nèi)部處理過程中,仍可以逐步求精,降低處理細節(jié)的復雜度。 1.采用自頂向下、逐步求精的程序設計方法 2.使用三種基本控制結構構造程序

任何程序都可由順序、選擇及重復三種基本控制結構構造。這三種基本結構的共同點是單入口、單出口。 2.使用三種基本控制結構構造程序三種方式對模糊過程進行分解:

(1)用順序方式對過程分解,確定各部分的執(zhí)行順序。 (2)用選擇方式對過程分解,確定某個部分的執(zhí)行條件。3)用循環(huán)方式對過程分解,確定某個部分進行重復的開始和結束的條件。 對處理過程仍然模糊的部分反復使用以上分解方法,最終可將所有細節(jié)確定下來。三種方式對模糊過程進行分解:

(1)用順序方式對過例:在一組數(shù)中找出其中最大的數(shù)

1輸入一組數(shù);1輸入一個數(shù)組;1輸入一個數(shù)組;2找出其中的最大數(shù);3輸出最大數(shù)。3輸出最大數(shù)。2.1任取一數(shù),假定它就是最大數(shù);2.2將該數(shù)與其余各數(shù)逐一比較;2.3若發(fā)現(xiàn)任何數(shù)大于假設的最大數(shù),即取而代之;2.1令”最大數(shù)”=數(shù)組的第一個元素;2.2從第二個元素至最后一個元素做循環(huán);2.3如果新元素>“最大數(shù)”則“最大數(shù)”=新元素;3輸出“最大數(shù)”。求解步驟細化第二步結構化語言描述問題求解逐步細化的過程例:在一組數(shù)中找出其中最大的數(shù)

1輸入一組數(shù);1輸

3.主程序員的組織形式 主程序員的組織形式指開發(fā)程序的人員應采用以一個主程序員(負責全部技術活動)、一個后備程序員(協(xié)調(diào)、支持主程序員)和一個程序管理員(負責事務性工作,如收集、記錄數(shù)據(jù),文檔資料管理等)三人為核心,再加上一些專家(如通信專家、數(shù)據(jù)庫專家)、其他技術人員組成小組。這種組織形式突出了主程序員的領導,設計責任集中在少數(shù)人身上,有利于提高軟件質量,并且能有效地提高軟件生產(chǎn)率。這種組織形式最先由IBM公司實施,隨后其他軟件公司也紛紛采用主程序員制的工作方式。 因此,結構化程序設計方法是綜合應用這些手段來構造高質量程序的思想方法。

3.6軟件詳細設計表示法

關于描述工具的有關說明:1.為了給出軟件結構圖中每一個模塊的算法和塊內(nèi)數(shù)據(jù)結構的清晰描述,需要采用適當?shù)谋磉_工具。2.詳細設計的表達工具有三類:圖形、表格和語言。3.無論哪類描述工具不僅要具有描述設計過程,如控制流程、處理功能、數(shù)據(jù)組織及其它方面的細節(jié)的能力,而且在編碼階段能夠直接將它翻譯為用程序設計語言書寫的源程序。4.詳細設計的描述工具除了以前介紹過判定樹和判定表外,還有程序流程圖、N-S圖、PAD圖及PDL等幾種常用的工具.3.6軟件詳細設計表示法 關于描述工具的有關說明:圖3.8三種基本控制結構的流程圖3.6.1程序流程圖 程序流程圖又稱為程序框圖,它是歷史最悠久、使用最廣泛的一種描述程序邏輯結構的工具,圖3.8為流程圖的三種基本控制結構。圖3.8三種基本控制結構的流程圖3.6.1程序流程圖 流程圖的優(yōu)點是直觀清晰、易于使用,是開發(fā)者普遍采用的工具,但是它有如下嚴重缺點: (1)可以隨心所欲地畫控制流程線的流向,容易造成非結構化的程序結構,編碼時勢必不加限制地使用GOTO語句,導致基本控制塊多入口多出口,這樣會使軟件質量受到影響,與軟件設計的原則相違背。 (2)流程圖不能反映逐步求精的過程,往往反映的是最后的結果。(3)不易表示數(shù)據(jù)結構。 為了克服流程圖的缺陷,要求流程圖都應由三種基本控制結構順序組合和完整嵌套而成,不能有相互交叉的情況,這樣的流程圖是結構化的流程圖。 流程圖的優(yōu)點是直觀清晰、易于使用,是開發(fā)者普遍采用的工具

示例示例例1.“在一組數(shù)中找出其中最大的數(shù)”的程序流程圖

MAX=A(1)i=2i=i+1MAX=A(i)i≤n?MAX<A(ii)TTFF對應程序段:max:=A[1]i:=2WHILEi≤nDOIFA[i]>maxTHENmax:=A[i]i:=i+1注.1.A是一個n元數(shù)組;2.省略變量說明;3.省略輸入、輸出語句。例1.“在一組數(shù)中找出其中最大的數(shù)”的程序流程圖

MAX=A

3.6.2PAD圖 PAD圖指問題分析圖(ProblemAnalysisDiagram),是日本日立公司于1979年提出的一種算法描述工具,它是一種由左往右展開的二維樹型結構。PAD圖的基本控制結構如圖3.9所示。

圖3.9PAD圖的基本控制結構圖3.9PAD圖的基本控制結構 PAD圖的控制流程為自上而下、從左到右地執(zhí)行。圖3.10給出了將數(shù)組A(1)到A(10)進行選擇法排序的算法描述的PAD圖。 PAD圖的控制流程為自上而下、從左到右地執(zhí)行。圖3.10圖3.10PAD圖的示例圖3.10PAD圖的示例 從圖3.10給出的例子可以看出PAD圖的優(yōu)點如下: (1)清晰地反映了程序的層次結構。圖中的豎線為程序的層次線,最左邊豎線是程序的主線,其后一層一層展開,層次關系一目了然。 (2)支持逐步求精的設計方法,左邊層次中的內(nèi)容可以抽象,然后由左到右逐步細化。 (3)易讀易寫,使用方便。

從圖3.10給出的例子可以看出PAD圖的優(yōu)點如下: (4)支持結構化的程序設計原理。 (5)可自動生成程序。PAD圖有對照FORTRAN,Pascal,C等高級語言的標準圖式。因此在有PAD系統(tǒng)的計算機上(如日立公司的M系列機),可以直接輸入PAD圖,由機器自動通過遍歷樹的辦法生成相應的源代碼,大大提高了軟件的生產(chǎn)率。PAD圖為軟件的自動化生成提供了有力的工具。 (4)支持結構化的程序設計原理。例.“在一組數(shù)中找出其中最大的數(shù)”的PAD圖MAX=A(1)WHILEii≤nMAX=A(i)對應程序段:max:=a[1]i=2WHILEi≤nDOIFa[i]>maxTHENmax:=a[i];i=i+1注.1.A是一個n元數(shù)組;2.省略變量說明;3.省略輸入、輸出語句。MAX<A(ii)i=i+1例.“在一組數(shù)中找出其中最大的數(shù)”的PAD圖MAX=A(1)

PAD描述的示例

PAD描述的示例練習:計算n!(要求掌握流程圖、PAD圖)開始結束輸入nS=1T=1S=S×TT=T+1輸出ST>nTF1.程序流程圖練習:計算n!(要求掌握流程圖、PAD圖)開始結束輸入nS輸入nT=1S=1T=T+1S=S×T輸出S2.PAD圖UNTILT>nGetn;T=1;S=1;Repeat

S=S×T;T=T+1Until

T>n

PrintS;

3.PDL語言輸入nT=1S=1T=T+1S=S×T輸出S2.PAD圖UN 3.6.3過程設計語言 過程設計語言(ProcessDesignLanguage,簡稱PDL)是在偽碼的基礎上,擴充了模塊的定義與調(diào)用、數(shù)據(jù)定義和輸入/輸出而形成的。它的控制結構與偽碼相同。PDL是一種用于描述模塊算法設計和處理細節(jié)的語言。PDL與在8.5節(jié)中介紹的結構化語言的結構相似,一般分為內(nèi)外兩層語法,外層語法應符合一般程序設計語言常用的語法規(guī)則,而內(nèi)層語法則用一些簡單的句子、短語和通用的數(shù)學符號,來描述程序應執(zhí)行的功能。PDL具有嚴格的關鍵字外層語法,用于定義控制結構、數(shù)據(jù)結構和模塊接口,而它表示實際操作和條件的內(nèi)層語法又是靈活自由的,使用自然語言的詞匯。 3.6.3過程設計語言 PDL與結構化分析中描述加工邏輯的“結構化語言”所不同的僅是,它們的作用不同,抽象層次不同,模糊程度不同?!敖Y構化語言”是描述加工“做什么”的,并且使開發(fā)人員和用戶都能看懂,因此無嚴格的外語法,內(nèi)層自然語言描述較抽象、較概括。而PDL是描述處理過程“怎么做”的細節(jié)。開發(fā)人員將按其處理細節(jié)編程序,故外層語法更嚴格一些,更趨于形式化,內(nèi)層自然語言描述實際操作更具體更詳細一些。 1.PDL特點 PDL的特點如下: (1)所有關鍵字都有固定語法,以便提供結構化控制結構、數(shù)據(jù)說明和模塊的特征。 PDL與結構化分析中描述加工邏輯的“結構化語言”所不同的 (2)描述處理過程的說明性語言沒有嚴格的語法。 (3)具有數(shù)據(jù)說明機制,包括簡單的與復雜的數(shù)據(jù)說明。 (4)具有模塊定義和調(diào)用機制,開發(fā)人員應根據(jù)系統(tǒng)編程所用的語種,說明PDL表示有關程序結構。 (2)描述處理過程的說明性語言沒有嚴格的語法。 2.程序結構 用PDL表示的程序結構一般有下列幾種結構。 1)順序結構 采用自然語言描述順序結構: 處理S1 處理S2

處理Sn 2.程序結構 2)選擇結構 (1)IF-EISE結構:IF條件IF條件處理S1或處理SELSEENDIF處理S2ENDIF 2)選擇結構 (2)IF-ORIF-ELSE結構:IF條件1處理S1ORIF條件2

ELSE處理SnENDIF (2)IF-ORIF-ELSE結構: (3)CASE結構: CASEOF CASE(1) 處理S1 CASE(2) 處理S2

ELSE處理Sn ENDCASE (3)CASE結構: 3)重復結構 (1)FOR結構:FORi=1TOn循環(huán)體ENDFOR (2)WHILE結構:WHILE條件循環(huán)體ENDWHILE 3)重復結構 (3)UNTIL結構:REPEAT循環(huán)體UNTIL條件 4)出口結構 (1)ESCAPE結構(退出本層結構): WHILE條件處理S1 ESCAPELIF條件處理S2 ENDWHILE L:… (3)UNTIL結構: (2)CYCLE結構(循環(huán)內(nèi)部進入循環(huán)的下一次): L:WHILE條件處理S1CYCLELIF條件處理S2ENDWHILE (2)CYCLE結構(循環(huán)內(nèi)部進入循環(huán)的下一次): 5)擴充結構 (1)模塊定義: PROCEDURE模塊名(參數(shù))RETURN END (2)模塊調(diào)用: CALL模塊名(參數(shù)) 5)擴充結構 (3)數(shù)據(jù)定義: DECLARE屬性變量名,… 屬性有:字符、整型、實型、雙精度、指針、數(shù)組及結構等類型。 (4)輸入/輸出: GET(輸入變量表) PUT(輸出變量表) (3)數(shù)據(jù)定義:

3.PDL應用示例 現(xiàn)以××系統(tǒng)主控模塊詳細設計為例,說明如何用PDL來描述。 PROCEDURE模塊名()清屏;顯示××系統(tǒng)用戶界面;PUT(“請輸入用戶口令:”);GET(password);IFpassword<>系統(tǒng)口令提示警告信息;退出運行ENDIF 3.PDL應用示例 顯示本系統(tǒng)主菜單;WHILE(true)接收用戶選擇ABC;IFABC=“退出”Break;ENDIF調(diào)用相應下層模塊完成用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論