軟件工程導(dǎo)論第6章詳細(xì)設(shè)計2課件_第1頁
軟件工程導(dǎo)論第6章詳細(xì)設(shè)計2課件_第2頁
軟件工程導(dǎo)論第6章詳細(xì)設(shè)計2課件_第3頁
軟件工程導(dǎo)論第6章詳細(xì)設(shè)計2課件_第4頁
軟件工程導(dǎo)論第6章詳細(xì)設(shè)計2課件_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章詳細(xì)設(shè)計6.1結(jié)構(gòu)程序設(shè)計6.2人機(jī)界面設(shè)計6.3過程設(shè)計的工具6.4程序復(fù)雜程度的定量度量1詳細(xì)設(shè)計階段的根本目標(biāo)子目標(biāo)1:確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)?!筮壿嬌险_地實(shí)現(xiàn)每個模塊的功能。子目標(biāo)2:使得將來編寫出的程序易理解、易測試、易修改和易維護(hù)。2詳細(xì)設(shè)計階段的任務(wù)詳細(xì)設(shè)計階段的任務(wù)是設(shè)計出程序的詳細(xì)規(guī)格說明,而不是具體地編寫程序。在編碼階段才是寫出實(shí)際的代碼。3詳細(xì)設(shè)計的任務(wù)主要有如下五點(diǎn)。(1)確定每個模塊的具體算法。(2)確定每個模塊的內(nèi)部數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫的物理結(jié)構(gòu)。(3)確定模塊接口的具體細(xì)節(jié)。(4)為每個模塊設(shè)計一組測試用例。(5)編寫文檔,參加復(fù)審。4詳細(xì)設(shè)計階段的結(jié)果決定了最終的程序代碼的質(zhì)量。

結(jié)構(gòu)程序設(shè)計技術(shù):是實(shí)現(xiàn)質(zhì)量要求的基本保證,是詳細(xì)設(shè)計的邏輯基礎(chǔ)。結(jié)構(gòu)程序設(shè)計定義:①一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本的控制結(jié)構(gòu)進(jìn)行連接;②并且每個代碼塊只有一個入口和一個出口。6.1

結(jié)構(gòu)程序設(shè)計5“結(jié)構(gòu)程序設(shè)計是盡可能少用GOTO語句。因?yàn)槌绦虻馁|(zhì)量與程序中所包含的GOTO語句的數(shù)量成反比”。Bohm和Jacopini已證明:只用三種基本的控制結(jié)構(gòu)(順序,選擇,循環(huán))就能實(shí)現(xiàn)任何單入口單出口的程序。從而實(shí)現(xiàn)結(jié)構(gòu)程序設(shè)計。結(jié)構(gòu)程序設(shè)計質(zhì)量保證6順序結(jié)構(gòu)選擇結(jié)構(gòu)一TTFF選擇結(jié)構(gòu)二結(jié)構(gòu)程序設(shè)計三種基本的控制結(jié)構(gòu)一個菱形判斷框有兩個出口,而一個選擇結(jié)構(gòu)只有一個出口。不要將菱形框的出口和選擇結(jié)構(gòu)的出口混淆。)7循環(huán)結(jié)構(gòu)的圖示:

當(dāng)型(While型)循環(huán)結(jié)構(gòu)直到型(Until型)循環(huán)TTFF8三種基本結(jié)構(gòu)的共同特點(diǎn):(1)只有一個入口;(2)只有一個出口;(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到;(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。

9結(jié)構(gòu)程序設(shè)計的特點(diǎn):由三種基本結(jié)構(gòu)順序組成的,可以解決任何復(fù)雜的問題。程序內(nèi)不存在無規(guī)律的轉(zhuǎn)向,只在基本結(jié)構(gòu)內(nèi)才允許存在分支和向前或向后的跳轉(zhuǎn)。10課堂練習(xí)1右圖給出的程序流程圖代表一個非結(jié)構(gòu)化的程序,請問:(1)為什么說它是非結(jié)構(gòu)化的?(2)設(shè)計一個等價的結(jié)構(gòu)化程序。(3)在(2)題的設(shè)計中你使用附加的標(biāo)志變量flag了嗎?若沒用,請?jiān)僭O(shè)計一個使用flag的程序;若用了,再設(shè)計一個不用flag的程序。結(jié)束11

(1)圖示的程序的循環(huán)控制結(jié)構(gòu)有兩個出口,顯然不符合狹義的結(jié)構(gòu)程序的定義,因此是非結(jié)構(gòu)化的程序。結(jié)束12

(2)使用附加的標(biāo)志變量flag程序流程圖13

(3)不使用附加的標(biāo)志變量flag程序流程圖14人機(jī)界面設(shè)計是接口設(shè)計的一個重要組成部分。近來年,人機(jī)界面在系統(tǒng)中占的比例越來越大,有的系統(tǒng)中甚至占總設(shè)計量的一半以上。人機(jī)界面的設(shè)計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價。6.2人機(jī)界面設(shè)計15系統(tǒng)響應(yīng)時間:從用戶完成某個控制動作到軟件給出預(yù)期的響應(yīng)之間的這段時間。2.用戶幫助設(shè)施:

集成和附加兩類。3.出錯信息處理:

如何辦,用戶心理。4.命令交互:

用戶可以從菜單中選擇軟件功能,也可以通過鍵盤命令序列調(diào)用軟件功能。6.2.1設(shè)計問題16用戶界面設(shè)計是一個迭代的過程。過程一般如下:1.通常先創(chuàng)建設(shè)計用戶界面模型2.實(shí)現(xiàn)該設(shè)計模型的原型3.由用戶試用和評估原型4.根據(jù)用戶意見進(jìn)行修改6.2.2

設(shè)計過程171、一般交互指南一致性:為人機(jī)界面中的菜單選擇、命令輸入、數(shù)據(jù)顯示及眾多其他功能,使用一致的格式。確認(rèn):在執(zhí)行有較大破壞性的動作之前要求用戶確認(rèn)。UNDO:允許用戶取消絕大數(shù)操作。易記:應(yīng)該盡量減少記憶量。層次:按功能對動作分類,并據(jù)此設(shè)計屏幕布局。多媒體:應(yīng)向用戶提供視覺和聽覺的反饋,以建立雙向通信。6.2.3人機(jī)界面設(shè)計指南18

1)、可使用性

①使用簡單②用戶界面中所用術(shù)語的標(biāo)準(zhǔn)化和一致性③

具有HELP功能④

快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本2)、靈活性

①提供不同的系統(tǒng)響應(yīng)信息(多媒體)。②提供根據(jù)用戶需求制定和修改界面。3)、界面的復(fù)雜性與可靠性

復(fù)雜性—界面規(guī)模及組織應(yīng)該愈簡單愈好。只顯示與當(dāng)前工作內(nèi)容相關(guān)的信息。使用窗口分隔不同類型的信息。

可靠性—用戶界面應(yīng)該能夠保證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。產(chǎn)生有意義的出錯信息。2、信息顯示界面設(shè)計19數(shù)據(jù)輸入界面,是系統(tǒng)的重要組成部分。主要從輸入速度和減少出錯率考慮。1)盡量減少輸入工作量對相同內(nèi)容輸入設(shè)置默認(rèn)值自動填入列表選擇或點(diǎn)擊選擇2)保持信息顯示和數(shù)據(jù)輸入之間的一致性(大小、顏色和位置)。3)交互應(yīng)該是靈活的,允許鼠標(biāo)輸入和鍵盤輸入。4)使在當(dāng)前動作語境中不起作用的命令不起作用。3、數(shù)據(jù)輸入界面設(shè)計20復(fù)習(xí)與回顧(1)經(jīng)典的結(jié)構(gòu)化程序設(shè)計有什么特點(diǎn)?

采用三種基本的控制結(jié)構(gòu);單入口,單出口(2)根據(jù)你使用和開發(fā)軟件的經(jīng)驗(yàn),談?wù)勅绾伪M量減少用戶的輸入工作量?

1)對相同內(nèi)容輸入設(shè)置默認(rèn)值

2)自動填入

3)列表選擇或點(diǎn)擊選擇(3)你認(rèn)為應(yīng)如何減少界面的復(fù)雜度?

1)顯示與當(dāng)前工作內(nèi)容相關(guān)的信息。

2)使用窗口分隔不同類型的信息。

3)

21新課導(dǎo)入請問:詳細(xì)設(shè)計階段的根本目標(biāo)是什么?引入:算法設(shè)計的工具226.3

過程設(shè)計的工具

(1)過程設(shè)計是設(shè)計模塊的詳細(xì)步驟(算法),是詳細(xì)設(shè)計階段應(yīng)完成的主要工作。

(2)過程設(shè)計的工具描述程序處理過程的工具。

描述工具程序流程圖N-S

圖PAD

圖PDL

偽代碼判定表/判定樹詳細(xì)設(shè)計階段的描述工具23起止框判斷框處理框輸入/輸出框注釋框流向線連接點(diǎn)美國國家標(biāo)準(zhǔn)化協(xié)會ANSI(AmericanNationalStandardInstitute)規(guī)定了一些常用的流程圖符號:24例:用流程圖表示:打印50名學(xué)生中成績在80分以上者的學(xué)號和成績。TF25程序流程圖的優(yōu)缺點(diǎn):主要優(yōu)點(diǎn):對控制流程的描繪很簡明直觀、易于理解,便于初學(xué)者掌握。主要缺點(diǎn):本質(zhì)上不是逐步求精的好工具。

----改進(jìn):PAD圖用箭頭代表控制流,描述程序時可以隨意跳轉(zhuǎn)。

----改進(jìn):N-S圖不易表示數(shù)據(jù)結(jié)構(gòu)。

----改進(jìn):PAD圖嵌套的條件選擇表示不清。----判定樹、判定表26為了避免流程圖在描述程序時的隨意跳轉(zhuǎn),提出了N-S圖代替流程圖。N-S圖由而且僅由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成。順序結(jié)構(gòu)塊1塊2塊3塊4條件TF塊1塊2選擇結(jié)構(gòu)CaseI=1,2,3塊1塊2多分支選擇結(jié)構(gòu)塊3塊當(dāng)條件成立時當(dāng)型循環(huán)(while)塊直到條件成立時直到型循環(huán)(until)6.3.2N—S圖圖6.4N-S圖27例:用N-S圖表示:打印50名學(xué)生中成績在80分以上者的學(xué)號和成績。N-S圖28盒圖(N-S圖)特點(diǎn)1)形象直觀,可讀性強(qiáng);2)限制了隨意的控制轉(zhuǎn)移;3)特定的控制結(jié)構(gòu)的作用域明確;4)很容易確定局部和全程數(shù)據(jù);5)很容易表現(xiàn)嵌套和模塊的層次結(jié)構(gòu)。其缺點(diǎn)是:修改算法比較困難。296.3.3PAD圖PAD(ProblemAnalysisDiagram)是問題分析圖。PAD圖除了自上而下外,還有從左向右的展開,是使用二維樹型結(jié)構(gòu)圖表示程序的控制流。30PAD圖基本符號順序結(jié)構(gòu)選擇結(jié)構(gòu)Case型多分支結(jié)構(gòu)While型循環(huán)Until型循環(huán)定義31使用PAD圖提供的定義功能逐步求精的例子32例:用PAD圖表示:打印50名學(xué)生中成績在80分以上者的學(xué)號和成績。PAD圖33PAD圖的特點(diǎn)1)能展現(xiàn)算法的層次結(jié)構(gòu);2)表示形式直觀易懂;3)既可用于表示程序邏輯,又可用于描述數(shù)據(jù)結(jié)構(gòu);4)支持自頂向下,逐步求精的過程。346.3.4判定表當(dāng)算法中包含多重嵌套的條件選擇時,用程序流程圖、盒圖、PAD圖等都不易清楚地描述,然而,判定表能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。35判定表舉例——行李托運(yùn)費(fèi)的算法假設(shè)某航空公司規(guī)定:乘客可以免費(fèi)托運(yùn)不超過30kg的行李。當(dāng)行李重量超過30kg時,對頭等艙的國內(nèi)乘客超重部分每公斤收費(fèi)4元,對其他艙的國內(nèi)乘客超重部分每公斤收費(fèi)6元,對外國乘客超重部分每公斤收費(fèi)比國內(nèi)乘客多一倍,對殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。用判定表可以清楚地表示與上述每種組合相對應(yīng)的計算行李費(fèi)的算法。36一張判定表由4部分組成:左上部列出所有條件左下部是所有可能做的動作右上部表示各種條件組合的一個矩陣右下部是和每種條件組合相對應(yīng)的動作。判定表右半部的每一列實(shí)質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對應(yīng)的動作。37以“檢查發(fā)貨單”為例:××××××××38判定表的優(yōu)缺點(diǎn)優(yōu)點(diǎn):判定表能夠簡潔而無歧義地描述處理規(guī)則??梢詫ε卸ū磉M(jìn)行校驗(yàn)或化簡。缺點(diǎn):并不適于作為一種通用的設(shè)計工具,直觀性不夠。39

判定樹是用來表達(dá)加工邏輯的一種工具。比判定表更直觀,是一種常用的系統(tǒng)分析和設(shè)計工具。6.3.5判定樹40圖6.7用判定樹表示計算行李費(fèi)的算法數(shù)據(jù)元素的同一個值往往要寫多次畫判定樹的次序?qū)θ~子結(jié)點(diǎn)有較大影響。41檢查發(fā)貨單金額>$500金額$500

欠款>60天不發(fā)出批準(zhǔn)書

欠款60天發(fā)出批準(zhǔn)書、發(fā)貨單

欠款>60天發(fā)出批準(zhǔn)書、發(fā)貨單及賒欠報告

欠款60天發(fā)出批準(zhǔn)書、發(fā)貨單以“檢查發(fā)貨單”為例:42判定樹的優(yōu)缺點(diǎn)優(yōu)點(diǎn):比判定表更直觀。缺點(diǎn):(1)不夠簡潔,數(shù)據(jù)元素重復(fù)多次地寫。(2)畫判定樹時分枝的次序?qū)啙嵆绦蛴杏绊憽?3PDL:是一種非形式化、比較靈活的混雜語言。也稱為偽碼。用于描述模塊內(nèi)部過程的具體算法,以便在開發(fā)人員之間比較精確的進(jìn)行交流。例子6.3.6PDL(ProgramDesignLanguage)程序設(shè)計語言44商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”的偽碼if發(fā)貨單金額超過$500then

if欠款超過了60天then

在償還欠款前不予批準(zhǔn)

else(欠款未超期)發(fā)批準(zhǔn)書、發(fā)貨單

else(發(fā)貨單金額未超過$500)

if

欠款超過60天then

發(fā)批準(zhǔn)書、發(fā)貨單及賒欠報告

else

(欠款未超期)發(fā)批準(zhǔn)書、發(fā)貨單使用一種語言(通常是自然語言)的詞匯,同時卻使用另一種語言(某種結(jié)構(gòu)化語言)的語法。45PDL用正文形式表示數(shù)據(jù)和處理過程的設(shè)計工具,其外層語法是確定的,而內(nèi)層語法則不確定。

(1)PDL具有嚴(yán)格的關(guān)鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。外層語法描述控制結(jié)構(gòu)它用類似于一般程序設(shè)計語言控制結(jié)構(gòu)的關(guān)鍵字:如:

IF-THEN-ELSEDOWHILE

REPEAT-UNTIL

DOCASE

等表示。有時還用關(guān)鍵字反排,表示控制結(jié)構(gòu)結(jié)束:

DO-ODIF-FI

(2)PDL表示實(shí)際操作和條件的內(nèi)部語法通常又是靈活自由的,可以適應(yīng)各種工程項(xiàng)目的需要。PDL的特點(diǎn)46PDL的優(yōu)缺點(diǎn)優(yōu)點(diǎn):可以作為注釋直接插入到源程序中。有利于PDL和源程序保持一致性。PDL編寫方便??梢杂勺詣犹幚沓绦?qū)DL生成程序代碼。缺點(diǎn):(1)不如圖形工具形象直觀。(2)描述復(fù)雜的條件組合與動作間的對應(yīng)關(guān)系時,不如判定表清晰簡單。47思考題詳細(xì)設(shè)計的算法與概要設(shè)計中的模塊有什么關(guān)系?48第五章:總體設(shè)計通常采用結(jié)構(gòu)圖或HIPO圖來描述軟件的層次結(jié)構(gòu)。第六章:詳細(xì)設(shè)計可采用程序流程圖、N-S圖、PAD圖或PDL語言等手段進(jìn)行描述,描述第五章結(jié)構(gòu)圖或HIPO圖中模塊的算法。4950516.4程序復(fù)雜程度的定量度量用途:可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作量。比較兩個不同的設(shè)計或兩個不同算法的優(yōu)劣。作為模塊規(guī)模的精確限度。526.4.1McCabe方法基本步驟:(1)將程序流程圖或PDL等簡化為流圖。(2)基于流圖計算環(huán)形復(fù)雜度,以定量度量程序的復(fù)雜程度。

53McCabe的流圖定義:

—僅僅描繪程序的控制流程基本符號:

—圓:代表一條或多條語句

—箭頭線:邊

—區(qū)域:由邊和圓圍成的面積基本原則:

—合并原則:順序處理框和菱形判定框、順序處理框序列可以映射成流圖中的一個結(jié)點(diǎn)。

—分解原則:復(fù)合條件分解為若干個簡單條件,每個簡單條件對應(yīng)流圖中一個結(jié)點(diǎn)。54程序流程圖翻譯FFTFTT順序處理框和菱形判定框映射成一個結(jié)點(diǎn)一條邊必須終止于一個結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語句流圖一個菱形判定框映射成流圖中的一個結(jié)點(diǎn)在流圖中,用圓表示結(jié)點(diǎn)一個圓表示一條或多條語句邊代表控制流Ri表示區(qū)域(由邊和點(diǎn)圍成的面積)順序處理框序列55PDL翻譯流圖56……IFaORb

thenprocedurexelseprocedureyENDIF……復(fù)合條件的PDL映射成的流圖把復(fù)合條件分解為若干個簡單條件,每個簡單條件對應(yīng)流圖中一個結(jié)點(diǎn)。572.計算環(huán)形復(fù)雜度的方法

McCabe方法基于流圖中程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,稱為程序的環(huán)形復(fù)雜度。(1)流圖中的環(huán)形復(fù)雜度V(G)=區(qū)域數(shù)。(2)流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。(3)流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目。示例示例示例583.環(huán)形復(fù)雜度的用途

對測試難度的一種定量度量,能對軟件最終的可靠性給出某種預(yù)測。環(huán)形復(fù)雜度高的程序往往是最困難、最容易出問題的程序。實(shí)踐表明,模塊規(guī)模以V(G)≤10為宜。59

CEXAMPLELOOP:DOWHILEX>0A=B+1IFA>10THENX=AELSEY=ZENDIFIFY<5THENPRINTX,YELSEIFY=2THENGOTOLOOPELSEC=3ENDIFENDIFP142:8畫出下列偽碼程序的流圖,計算它的環(huán)形復(fù)雜度。你覺得這個程序的邏輯有什么問題嗎?G=H+RENDDOIFF>0THENPRINTGELSEPRINTKENDIFSTOP課堂討論及解答1234567891011121311415161718192060

方法1:V(G)=邊數(shù)E-結(jié)點(diǎn)數(shù)n+2=18-14+2=6方法2:

V(G)

=判斷結(jié)點(diǎn)

+1=5+1=6方法3:

V(G)

=流圖中的區(qū)域數(shù)=6=環(huán)形復(fù)雜度。

R1R2R3R4R

溫馨提示

  • 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

提交評論