軟件工程修改課件_第1頁
軟件工程修改課件_第2頁
軟件工程修改課件_第3頁
軟件工程修改課件_第4頁
軟件工程修改課件_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程修改1軟件工程軟件工程第8章面向過程的結(jié)構(gòu)化設(shè)計軟件工程修改2 軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護(hù)工作的軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。系統(tǒng)結(jié)構(gòu)。軟件工程修改3 軟件系統(tǒng)進(jìn)行模塊設(shè)計時,可有不同的抽象層次。軟件系統(tǒng)進(jìn)行模塊設(shè)計時,可有不同的抽象層次。 在最高的抽象層次上,使用問題所處環(huán)境的語言概在最高的抽象層次上,使用問題所處環(huán)境的語言概括的描述問題的解法;括的描述問題的解法; 在較低的抽象層次上,將提供更詳細(xì)的解決方案。在較低的抽象層次上,將提供更詳細(xì)的解決方案。8.1 軟件設(shè)計的基本概念和

2、原理軟件工程修改4 (1 1)過程抽象)過程抽象 過程抽象是指具有明確和有限功能的指令序列。過過程抽象是指具有明確和有限功能的指令序列。過程抽象的命名暗示了這些功能,但隱藏了具體的細(xì)節(jié)。程抽象的命名暗示了這些功能,但隱藏了具體的細(xì)節(jié)。 在軟件工程中,從系統(tǒng)定義到實現(xiàn),在軟件工程中,從系統(tǒng)定義到實現(xiàn),每進(jìn)展一步每進(jìn)展一步都可以看做是對軟件解決方法的抽象化過程的一次細(xì)都可以看做是對軟件解決方法的抽象化過程的一次細(xì)化?;\浖こ绦薷? (2 2)數(shù)據(jù)抽象)數(shù)據(jù)抽象 數(shù)據(jù)抽象是描述數(shù)據(jù)對象的冠名數(shù)據(jù)集合。數(shù)據(jù)抽象是描述數(shù)據(jù)對象的冠名數(shù)據(jù)集合。 在不同層次上描述數(shù)據(jù)對象的細(xì)節(jié),定義與該數(shù)據(jù)在不同層次上

3、描述數(shù)據(jù)對象的細(xì)節(jié),定義與該數(shù)據(jù)對象相關(guān)的操作。對象相關(guān)的操作。軟件工程修改6 體系結(jié)構(gòu)是程序構(gòu)件(模塊)的結(jié)構(gòu)或組織、這些體系結(jié)構(gòu)是程序構(gòu)件(模塊)的結(jié)構(gòu)或組織、這些構(gòu)件交互的形式以及這些構(gòu)件所用數(shù)據(jù)的結(jié)構(gòu)。構(gòu)件交互的形式以及這些構(gòu)件所用數(shù)據(jù)的結(jié)構(gòu)。n 結(jié)構(gòu)圖:反結(jié)構(gòu)圖:反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定的符號表示模塊、模塊間的調(diào)用關(guān)系和系:它以特定的符號表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。模塊間信息的傳遞。軟件工程修改7 模塊:模塊用矩形框表示,并用模塊的名字標(biāo)記它。模塊:模塊用矩形框表示,并用模塊的名字標(biāo)記它。 模塊的調(diào)用關(guān)系和接

4、口:模塊之間用單向箭頭聯(lián)模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊。結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊。軟件工程修改8 模塊間的信息傳遞:當(dāng)一個模塊調(diào)用另一個模塊時,模塊間的信息傳遞:當(dāng)一個模塊調(diào)用另一個模塊時,調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行。而被調(diào)用模塊在執(zhí)行過程使被調(diào)用模塊能夠運(yùn)行。而被調(diào)用模塊在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊軟件工程修改9軟件工程修改10 軟件被劃分為獨(dú)立命名的構(gòu)件,稱之為模塊。這些軟件被劃分為獨(dú)立命名的

5、構(gòu)件,稱之為模塊。這些模塊可以被組裝起來以滿足整個問題的需求。模塊可以被組裝起來以滿足整個問題的需求。經(jīng)驗經(jīng)驗1 1:工作量:工作量e(p1+p2)e(p1)+e(p2)e(p1+p2)e(p1)+e(p2)經(jīng)驗經(jīng)驗2 2:成本成本成本成本 / / 模塊模塊最小成本區(qū)最小成本區(qū)接口成本接口成本軟件總成本軟件總成本模塊數(shù)目模塊數(shù)目軟件工程修改11軟件工程修改12軟件工程修改13軟件工程修改14軟件工程修改158.2 軟件總體設(shè)計的任務(wù)和目標(biāo)v在總體設(shè)計階段中應(yīng)從系統(tǒng)開發(fā)的角度出發(fā),將系統(tǒng)逐次分割成層次結(jié)構(gòu),系統(tǒng)被表達(dá)為一個結(jié)構(gòu)清晰層次分明的模塊組合,每個模塊完成各自相對簡單的功能,并且他們之間都

6、保持一定的聯(lián)系,另外還定義這個系統(tǒng)與外部系統(tǒng)的接口。v這一階段要從需求分析轉(zhuǎn)化到設(shè)計模型 軟件工程修改168.2 軟件總體設(shè)計的任務(wù)和目標(biāo)從分析模型轉(zhuǎn)化到設(shè)計模型的元素對應(yīng)關(guān)系 分析模型元素分析模型元素轉(zhuǎn)化成設(shè)計模型轉(zhuǎn)化成設(shè)計模型的元素的元素狀態(tài)轉(zhuǎn)換圖、控制規(guī)格說明、處理規(guī)格說明過程設(shè)計數(shù)據(jù)流圖接口設(shè)計數(shù)據(jù)流圖體系結(jié)構(gòu)設(shè)計實體聯(lián)系圖、數(shù)據(jù)對象描述、數(shù)據(jù)字典數(shù)據(jù)設(shè)計軟件工程修改178.3 軟件體系結(jié)構(gòu)設(shè)計v根據(jù)數(shù)據(jù)變換的性質(zhì),我們可以把數(shù)據(jù)流圖分為變換型和事務(wù)型兩類,所以,結(jié)構(gòu)化設(shè)計也被分為變換設(shè)計、事務(wù)設(shè)計以及兩者相結(jié)合的綜合設(shè)計。軟件工程修改188.3.1基本概念v面向數(shù)據(jù)流的設(shè)計方法,把信

7、息流映射成軟件體系結(jié)構(gòu),不同的信息流選用不同的映射方法,總體來說,有以下兩種類型的數(shù)據(jù)流:變換流 事務(wù)流 軟件工程修改198.3.1基本概念v變換流變換流體現(xiàn)的是數(shù)據(jù)從輸入到加工,再到輸出的一般步驟,數(shù)據(jù)首先需要輸入過程,由外部形式變換成內(nèi)部形式,這種內(nèi)部形式適合進(jìn)行加工處理;然后經(jīng)過變換中心,將輸入的數(shù)據(jù)加工成一種新的數(shù)據(jù)形態(tài);接著再通過輸出通道變換成外部形式。當(dāng)數(shù)據(jù)流圖具備這些特性時,這種信息流我們就稱為變換流。 軟件工程修改208.3.1基本概念v變換流軟件工程修改218.3.1基本概念v事務(wù)流 當(dāng)輸入的信息流可以引發(fā)多個不同的事務(wù)活動流程,并且數(shù)據(jù)流圖中有一個事務(wù)調(diào)度中心,那么我們稱這

8、種信息流為事務(wù)流。軟件工程修改228.3.1基本概念v事務(wù)流 軟件工程修改238.3.1基本概念不同的信息流對應(yīng)的分析方法是不同的,我們需要根據(jù)數(shù)據(jù)流圖中的流的類型分別進(jìn)行變換分析或事務(wù)分析,從數(shù)據(jù)流圖到最終的軟件體系結(jié)構(gòu)的分析設(shè)計過程如圖所示 軟件工程修改24軟件工程修改25軟件工程修改26軟件工程修改278.4 過程設(shè)計 在計算機(jī)技術(shù)發(fā)展的初期,由于計算機(jī)硬件條件的限制,導(dǎo)致對運(yùn)算速度與存儲空間都有要求,這樣開發(fā)人員追求高效率,把程序的可理解性、可擴(kuò)充性等因素被放到第二位。 隨著計算機(jī)應(yīng)用規(guī)模也越來越大,應(yīng)用和開發(fā)越來越普及,計算機(jī)硬件與通信技術(shù)得到了高速發(fā)展,程序設(shè)計不再是一兩個程序員可

9、以完成的任務(wù)。編寫程序不能再以片面追求高效率為第一要求,而要綜合考慮程序的可靠性、可擴(kuò)充性、可重用性和可理解性等因素。正是這種發(fā)展刺激了程序設(shè)計方法與程序設(shè)計語言的發(fā)展。軟件工程修改288.4 過程設(shè)計v過程設(shè)計的目標(biāo)除了要使開發(fā)出來的程序滿足功能、性能上的要求,同時也要滿足代碼簡潔明了易懂的要求。v過程設(shè)計的好壞決定了最終代碼的質(zhì)量。隨著程序規(guī)模與復(fù)雜性的不斷增長,人們探索出新的程序設(shè)計方法。v專家證明了只用順序、選擇、循環(huán)這三種基本控制結(jié)構(gòu),即可實現(xiàn)任何單入口/單出口的程序。 以下介紹幾種結(jié)構(gòu)設(shè)計的工具: 軟件工程修改298.4.1程序流程圖 程序流程圖是人們對解決問題的方法、思路或算法的

10、一種描述。它的優(yōu)點(diǎn)在于:采用簡單規(guī)范的符號,畫法簡單;結(jié)構(gòu)清晰,邏輯性強(qiáng);便于描述,容易理解。軟件工程修改308.4.1程序流程圖流程圖采用以下的一些基本符號: 軟件工程修改318.4.1程序流程圖例如:使用程序流程圖判斷某個整數(shù)x是否為質(zhì)數(shù)的算法 軟件工程修改328.4.1程序流程圖 傳統(tǒng)的程序流程圖是一種非結(jié)構(gòu)化的程序算法設(shè)計工具,它有以下一些缺點(diǎn):它無法對嵌套進(jìn)行清晰地表達(dá),尤其當(dāng)嵌套比較復(fù)雜的時候;程序流程圖無法制止goto語句;程序流程圖會使程序員過早地考慮程序的控制流程,它不是逐步求精的好工具。 軟件工程修改338.4.2盒式圖n-s 傳統(tǒng)的程序流程圖是一種非結(jié)構(gòu)化的程序算法設(shè)計工

11、具,它有以下一些缺點(diǎn):它無法對嵌套進(jìn)行清晰地表達(dá),尤其當(dāng)嵌套比較復(fù)雜的時候;程序流程圖無法制止goto語句;程序流程圖會使程序員過早地考慮程序的控制流程,它不是逐步求精的好工具。 軟件工程修改348.4.2盒式圖n-snassi和shneiderman提出的盒式圖n-s,它把整個程序?qū)懺谝粋€大框圖內(nèi),這個大框圖由若干個小的基本框圖構(gòu)成,在盒式圖n-s中,有三種基本控制結(jié)構(gòu)的n-s圖 軟件工程修改358.4.2盒式圖n-s下圖為判斷某個整數(shù)x是否為質(zhì)數(shù)的算法設(shè)計圖: 軟件工程修改368.4.2盒式圖n-sn-s盒式圖實際上是程序流程圖去掉控制流線的變種,它有以下特點(diǎn):功能表達(dá)明確;容易確定局部數(shù)

12、據(jù)和全局?jǐn)?shù)據(jù)的作用域;容易表達(dá)模塊的層次與嵌套關(guān)系;容易培養(yǎng)程序員養(yǎng)成結(jié)構(gòu)化分析問題和解決問題的習(xí)慣。n-s盒式圖的缺點(diǎn)在于,獲得結(jié)構(gòu)嚴(yán)密的同時,犧牲了一定的靈活性,不便于進(jìn)行算法的調(diào)整優(yōu)化,如果問題較為復(fù)雜,作圖的難度會加大。軟件工程修改378.4.3pad圖問題分析圖pad(problem analysis diagram),由日本日立公司于1973年發(fā)明,它用二維樹形結(jié)構(gòu)的圖表示程序的控制流,將這種圖轉(zhuǎn)換為程序代碼比較容易。以下是pad的基本符號。軟件工程修改388.4.3pad圖同樣是上面那個判定質(zhì)數(shù)的例子 軟件工程修改398.4.3pad圖pad圖的優(yōu)點(diǎn)在于:v用pad圖可以容易讀懂

13、程序所要表達(dá)的邏輯,pad圖是二維樹型結(jié)構(gòu)的圖形,程序從圖中最左邊上端的結(jié)點(diǎn)開始執(zhí)行,自上而下,從左到右順序執(zhí)行;vpad是一種程序結(jié)構(gòu)可見性好、結(jié)構(gòu)唯一、易于編制、易于檢查和易于修改的詳細(xì)設(shè)計表現(xiàn)方法,用pad可以消除軟件開發(fā)過程中設(shè)計與制作的分離,也可消除制作過程中的主觀性;vpad圖所描述的程序結(jié)構(gòu)十分清晰。圖中最左邊的豎線是程序的主線,即第一層控制結(jié)構(gòu),隨著程序?qū)哟蔚脑黾?,pad圖逐漸向右延伸,每增加一個層次,圖形向右擴(kuò)展一條豎線,pad圖中豎線的總條數(shù)就是程序的層次數(shù);既可用于表示程序邏輯,也可用于描述數(shù)據(jù)結(jié)構(gòu)。 軟件工程修改408.4.4pdl語言pdl(program desig

14、n language)也稱為偽碼,它是用正文形式表示數(shù)據(jù)和處理過程的設(shè)計工具。pdl具有嚴(yán)格的關(guān)鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面,pdl表示實際操作和條件的內(nèi)部語法通常又是靈活自由的,以便可以適應(yīng)各種工程項目的需要。因此,一般說來pdl是一種“混雜”語言,它使用一種語言(通常是某種自然語言)的詞匯,同時卻使用另一種語言(某種結(jié)構(gòu)化的程序設(shè)計語言)的語法。 軟件工程修改418.4.4pdl語言pdl程序的構(gòu)成 pdl程序的構(gòu)成類型子類型數(shù)據(jù)說明declareas具體的數(shù)據(jù)結(jié)構(gòu):scalararraylistcharstructure子程序結(jié)構(gòu)procedureinterface

15、returnend分程序結(jié)構(gòu)beginend軟件工程修改428.4.4pdl語言pdl程序的構(gòu)成 順序結(jié)構(gòu)選擇型if thenelseend ifif thenelse if thenelseend ifwhile循環(huán)型loop while end loopuntil循環(huán)型loop until end loopcase型case of,default :end case軟件工程修改438.4.4pdl語言同樣是上面那個判定質(zhì)數(shù)的例子,用pdl表示如下:procedure 判定質(zhì)數(shù)declare x,n,j as 整型簡單變量從鍵盤讀入x將變量n賦值為x1/2將變量i賦值為2loop while

16、 i=n+1輸出:x是質(zhì)數(shù)else輸出:x不是質(zhì)數(shù)end ifend判定質(zhì)數(shù)軟件工程修改448.4.4pdl語言pdl具有下述特點(diǎn):它使用關(guān)鍵字的固定語法,為了使結(jié)構(gòu)清晰和可讀性好,通常在所有可能嵌套使用的控制結(jié)構(gòu)的頭和尾都有關(guān)鍵字,例如,ifend if、loopend loop等。它使用自然語言的自由語法,來描述具體的處理邏輯。它需要對數(shù)據(jù)進(jìn)行說明。應(yīng)該既包括簡單的數(shù)據(jù)結(jié)構(gòu)(例如簡單變量和數(shù)組),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表或?qū)哟蔚臄?shù)據(jù)結(jié)構(gòu))。它需要對模塊定義和調(diào)用的技術(shù)進(jìn)行說明。 軟件工程修改458.4.5判定表 判定表(decision table),是指一個表格,用于顯示條件和條

17、件導(dǎo)致動作的集合。判定表是分析和表達(dá)多邏輯條件下執(zhí)行不同操作的情況的工具。如果數(shù)據(jù)流圖的加工需要依賴于多個邏輯條件的取值,使用判定表來描述比較合適。軟件工程修改468.4.5判定表 一張判定表通常由四部分組成,左上部列出的是所有的條件,左下部為所有可能的操作,右上部分表示各種條件組合的一個矩陣,右下部分是對應(yīng)于每種條件組合應(yīng)有的操作。 軟件工程修改478.4.5判定表 以學(xué)生的獎學(xué)金評定為例,說明判定表的應(yīng)用。獎勵的目的在于鼓勵學(xué)生的品學(xué)兼優(yōu),此處理功能是要合理確定獎學(xué)金評定等級。決定受獎的條件為:成績優(yōu)秀占70或50以上,成績?yōu)橹谢蛑幸韵抡?5或20以下,團(tuán)結(jié)紀(jì)律為優(yōu)或中。獎勵方案為一等獎、

18、二等獎、三等獎三種。因為受獎條件有些是相容的,相互組合的項較多。描述此學(xué)生獎勵政策的判定表如下表所示:軟件工程修改488.4.5判定表條件各門功課的成績等級比率優(yōu)秀=70% 優(yōu)秀=50%-中以下15% 中以下20% -綜合素質(zhì)評分優(yōu) 中 獎勵方案一等獎 二等獎 三等獎 軟件工程修改498.4.5判定表v判定表的優(yōu)點(diǎn):能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。因此,利用判定表能夠設(shè)計出完整的測試用例集合。v在一些數(shù)據(jù)處理問題當(dāng)中,某些操作的實施依賴于多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。判定表很適合于處理這類問題。 軟件工程修改508.4.6

19、判定樹 判定樹是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。判定表雖然能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系,但其含義卻不是一眼就能看出來的,初次接觸這種工具的人要理解它需要有一個簡短的學(xué)習(xí)過程。此外,當(dāng)數(shù)據(jù)元素的值多于兩個時,判定表的簡潔程度也將下降。軟件工程修改518.4.6判定樹一個支持自行開發(fā)、購買決策的決策樹 軟件工程修改528.4.6判定樹 判定樹易于掌握和使用,它形式簡單,不需任何說明,一眼就可以看出其含義。從不足方面來看,判定樹雖然比判定表直觀,但簡潔性卻不如判定表,數(shù)據(jù)元素的同一個值往往要重復(fù)畫出多遍,而且越接近樹的葉端重復(fù)次數(shù)越多。此外還可以看出畫判定樹時分枝的次序可能對最終畫出的判定樹的簡潔程度有較大影響。軟

溫馨提示

  • 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

提交評論