武漢理工軟件工程導論期末_第1頁
武漢理工軟件工程導論期末_第2頁
武漢理工軟件工程導論期末_第3頁
武漢理工軟件工程導論期末_第4頁
武漢理工軟件工程導論期末_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程導論復習

題型及分值

單選題(20分)20x1

推斷題(10分)10x1

問答題(25分)5x5

應用題(45分)7+8+8+10+12

一、軟件工程的基本概念(PPT1-2章)

L軟件危機(產(chǎn)生的緣由)

(1)軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系

列嚴峻問題。

(2)軟件危機主要有以下表現(xiàn):

a.對軟件開發(fā)成本和進度的估計常常不精確。開發(fā)成本超出預算,

實際進度比預定安排一再拖延的現(xiàn)象并不罕見。

b.用戶對“已完成”系統(tǒng)不滿足的現(xiàn)象常常發(fā)生。

c.軟件產(chǎn)品的質(zhì)量往往靠不住。Bug一大堆,Patch一個接一個。

d.軟件的可維護程度特別之低。

e.軟件通常沒有適當?shù)奈臋n資料。

f.軟件的成木不斷提高。

g.軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長。

(3)產(chǎn)生緣由:一方面是及軟件本身的特點有關;另一方面是由軟

件開發(fā)和維護的方法不正確有關。

(4)消退軟件危機的途徑:

a.對計算機軟件有一個正確的相識(軟件W程序)。

b.必需充分相識到軟件開發(fā)不是某種個體勞動的神奇技巧,而應當

是一種組織良好、管理嚴密、各類人員協(xié)同協(xié)作、共同完成的工程項

目。

c.推廣運用在實踐中總結(jié)出來的開發(fā)軟件的勝利技術和方法。

d.開發(fā)和運用更好的軟件工具。

e.加強軟件管理。

2.軟件的特點有哪些?

(1)軟件是一種邏輯實體,而不是具體的物理實體,它具有抽象性;

(2)軟件的生產(chǎn)及硬件不同;

(3)大多數(shù)軟件是定制的;

(4)在軟件的運行和運用期間,沒有硬件那樣的機械磨損、老化問

題;

(5)軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制對計算機系統(tǒng)有

著不同程度的依靠性;

(6)軟件開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式;

(7)軟件是困難的;

(8)軟件成木相當昂貴;

(9)相當多的軟件工作涉及到社會因素。

3.軟件工程?軟件工程的目標?(……)

(1)定義:軟件工程是應用計算機科學、數(shù)學及管理科學等原理開

發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成

本為目的。

(2)軟件工程旨在開發(fā)滿足用戶須要、剛好交付、不超過預算和無

故障的軟件,其主要目標如下:

a.實現(xiàn)預期的軟件功能,達到較好的軟件性能,滿足用戶的需求。

b.增加軟件過程的可見性和可控性,保證軟件的質(zhì)量。

c.提高所開發(fā)軟件的可維護性,降低維護費用。

d.提高軟件開發(fā)生產(chǎn)率,剛好交付運用。

e.合理預算開發(fā)成本,付出較低的開發(fā)費用。

4.軟件生存周期模型?主要的模型類型?(……)

(1)軟件生命周期:軟件生存周期大體可分為如下幾個活動:問題

定義、可行性探討、需求分析、設計、編碼、測試、運行和維護。

(2)典型的軟件過程模型有:

瀑布模型(waterfallmodel)

演化模型(evolutionarymodel)

增量模型(incrementalmodel)

原型模型(prototypingmodel)

螺旋模型(spiralmodel)

噴泉模型(waterfountainmodel)

基于構(gòu)件的開發(fā)模型(component-baseddevelopmentmodel)

形式方法模型(formalmethodsmodel)

5.軟件工程強調(diào)(文檔化、規(guī)范化)?(……)

(1)軟件工程強調(diào)規(guī)范化和文檔化。規(guī)范化的目的是使眾多的開發(fā)

者遵守相同的規(guī)范,使軟件生產(chǎn)擺脫個人生產(chǎn)方式,進入標準化、工

程化的生產(chǎn)方式。

(2)文檔化是將軟件的設計思想、設計過程和實現(xiàn)過程完整地記錄

下來,以便于后人的運用和維護,在開發(fā)過程中各類相關人員借助于

文檔進行溝通和溝通。另外,在開發(fā)過程中產(chǎn)生的各類文檔使得軟件

的生產(chǎn)過程由不行見變?yōu)榭梢?,便于管理者對軟件生產(chǎn)進度和開發(fā)過

程進行管理。在用戶最終驗收時可以通過對提交的文檔進行技術審查

和管理審查,保證軟件的質(zhì)量。

二、可行性探討及需求分析

1.可行性探討的目的

(1)用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。不

是解決問題,而是確定問題是否值得去解決。

(2)說明該軟件開發(fā)項目的實現(xiàn)在技術上、經(jīng)濟上和社會條件上的

可行性;評述為合理地達到開發(fā)目標可能選擇的各種方案。

2.需求分析的任務、方法、工具

(1)任務:需求分析的任務就是借助于當前系統(tǒng)的邏輯模型導出目

標系統(tǒng)的邏輯模型,解決目標系統(tǒng)的“做什么”的問題。

(2)方法:

a.訪談

b.面對數(shù)據(jù)流自頂向下求精

c.簡易的應用規(guī)格說明技術

d.快速建立軟件原型

(3)工具:

3.數(shù)據(jù)流圖(作用)

(1)定義:

數(shù)據(jù)流圖(DataFlowDiagram):簡稱DFD,它從數(shù)據(jù)傳遞和加工

角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流

向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達工具及用于表

示軟件模型的一種圖示方法。

數(shù)據(jù)流圖是結(jié)構(gòu)化分析方法中運用的工具,它以圖形的方式描繪

數(shù)據(jù)在系統(tǒng)中流淌和處理的過程,由于它只反映系統(tǒng)必需完成的邏輯

功能,所以它是一種功能模型。

數(shù)據(jù)流圖英文縮寫DFD(DataFlowDiagram)它是描繪信息流和

數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。數(shù)據(jù)流圖從數(shù)據(jù)傳遞

和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過

程。

(2)作用:

a.便于用戶表達功能需求和數(shù)據(jù)需求及其聯(lián)系;

b.便于兩類人員共同理解現(xiàn)行系統(tǒng)和規(guī)劃系統(tǒng)的框架;

c.清楚表達數(shù)據(jù)流的狀況;

d.有利于系統(tǒng)建模.

4.推斷表、推斷樹

(1)推斷表:假如數(shù)據(jù)流圖的加工須要依靠于多個邏輯條件的取值,

運用判定表來描述比較合適。

以“檢查發(fā)貨單”為例:

(2)推斷樹:判定樹也是用來表達加工邏輯的一種工具。有時侯它

比判定表更直觀。

以“檢查發(fā)貨單”為例:

三、概要設計

1.劃分模塊的標準(高內(nèi)聚低耦合)

(1)什么是耦合?模塊的耦合包括哪些類型?

耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。

模塊的耦合包括以下幾種類型:數(shù)據(jù)耦合,限制耦合,特征耦合,公

共環(huán)境耦合,內(nèi)容耦合,標記耦合,無耦合/非干脆耦合

(2)什么是內(nèi)聚?模塊的內(nèi)聚包括哪些類型?

內(nèi)聚標記著一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度,它是信息

隱藏和局部化概念的自然擴展。模塊的內(nèi)聚包括以下幾種類型:低內(nèi)

聚一偶然內(nèi)聚,邏輯內(nèi)聚,時間內(nèi)聚中內(nèi)聚一過程內(nèi)聚,通信內(nèi)聚;

高內(nèi)聚一依次內(nèi)聚,功能內(nèi)聚。

2.模塊獨立性?衡量的標準?(……)

⑴模塊的獨立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的

子功能,而和軟件系統(tǒng)中其他模塊的接口是簡潔的。

(2)模塊的獨立程度可以由兩個定性標準度量:

a.耦合:模塊之間的相對獨立性的度量。

b.內(nèi)聚:模塊功能強度的度量

耦合及內(nèi)聚都是模塊獨立性的定性標準,都反映模塊獨立性的良好程

度。

3.啟發(fā)性規(guī)則

給軟件工程師以有益的啟示,往往能幫助他們找到改進軟件設計

提高軟件質(zhì)量的途徑。下面介紹幾條啟發(fā)式規(guī)則:

(1)改進軟件結(jié)構(gòu)提高模塊獨立性

設計出軟件的初步結(jié)構(gòu)以后,應當審查分析這個結(jié)構(gòu),通過模塊

分解或合并,力求降低耦合提高內(nèi)聚。例如,多個模塊公有的一個子

功能可以獨立成一個模塊,由這些模塊調(diào)用;有時可以通過分解或合

并模塊以削減限制信息的傳遞及對全程數(shù)據(jù)的引用,并且降低接口的

困難程度。

⑵模塊規(guī)模應當適中

閱歷表明,一個模塊的規(guī)模不應過大,最好能寫在一頁A4紙內(nèi)

(通常不超過60行語句)。有人從心理學角度探討得知,當一個模塊

包含的語句數(shù)超過30以后,模塊的可理解程度快速下降。過大的模

塊往往是由于分解不充分,但是進一步分解必需符合問題結(jié)構(gòu),一般

說來,分解后不應當降低模塊獨立性。過小的模塊開銷大于有效操作,

而且模塊數(shù)目過多將使系統(tǒng)接口困難。因此過小的模塊有時不值得單

獨存在,特殊是只有一個模塊調(diào)用它時,通??梢园阉喜⒌缴霞壞?/p>

塊中去而不必單獨存在。

(3)深度、寬度、扇出和扇入都應適當.

深度:軟件結(jié)構(gòu)中限制的層數(shù);

寬度:軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值;

扇出:一個模塊干脆限制(調(diào)用)其它模塊的數(shù)目;

扇入:一個模塊被其它模塊調(diào)用的數(shù)目。

(4)模塊的作用域應當在限制域之內(nèi)

作用域:受該模塊內(nèi)一個判定影響的全部模塊的集合。

限制域:模塊本身以及全部從屬于它的模塊的集合。

(5)力爭降低模塊接口的困難度

模塊接口困難是軟件發(fā)生錯誤的一個主要緣由。應當細致設計模塊接

口,使得信息傳遞簡潔并且和模塊的功能一樣。

如:QUAD-ROOT(TBL,X)

求一元二次方程的根的模塊,其中TBL,X都為數(shù)組,分別代

表方程的系數(shù)和方程的根。

應當使接口更簡潔,如:

QUAD-ROOT(A,B,C,ROOT1,ROOT2)

A、B、C是方程的系數(shù),ROOTLROOT2是方程的根。

(6)設計單入口單出口的模塊

(7)模塊功能應當可以預料

以上列出的啟發(fā)式規(guī)則多數(shù)是閱歷規(guī)律,對改進設計,提高軟件

質(zhì)量,往往有重要的參考價值;但是,它們既不是設計的目標也不是

設計時應當普遍遵循的原理。

4.深度、寬度、扇出和扇入

⑴深度往往能粗略地標記一個系統(tǒng)的大小和困難程度。深度和程序

長度之間應當有粗略的對應關系,當然這個對應關系是在肯定范圍內(nèi)

改變的。假如層數(shù)過多則應當考慮是否有很多管理模塊過分簡潔了,

能否適當合并。

(2)一般說來,寬度越大系統(tǒng)越困難。對寬度影響最大的因素是模塊

的扇出。

(3)扇出過大意味著模塊過分困難,須要限制和協(xié)調(diào)過多的下級模塊;

扇出過小(例如總是1)也不好。閱歷表明,一個設計得好的典型系統(tǒng)

的平均扇出通常是3或4(扇出的上限通常是5?9)。

(4)扇出太大一般是因為缺乏中間層次,應當適當增加中間層次的限

制模塊。扇出太小時可以把下級模塊進一步分解成若干個子功能模

塊,或者合并到它的上級模塊中去。當然分解模塊或合并模塊必需符

合問題結(jié)構(gòu),不能違反模塊獨立原理。

⑸扇入越大則共享該模塊的上級模塊數(shù)目越多,這是有好處的,但

是,不能違反模塊獨立原理單純追求高扇入。

⑹視察大量軟件系統(tǒng)后發(fā)覺,設計得很好的軟件結(jié)構(gòu)通常頂層扇出

比較高,中層扇出較少,底層扇入到公共的好用模塊中去(底層模塊

有高扇入)。

5.面對數(shù)據(jù)流的設計方法

(1)面對數(shù)據(jù)流設計(DataFlow-OrientecDesign,DFOD)是及數(shù)據(jù)

流分析(DFA)對應的結(jié)構(gòu)化軟件設計技術。

⑵面對數(shù)據(jù)流的設計要解決的任務,就是在需求分析的基礎上,將

表示系統(tǒng)邏輯模型的DFD圖映射(Mapping)成軟件系統(tǒng)結(jié)構(gòu)的初始

設計描述。

6.變換設計

(1)變換設計就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過程,也

稱以變換為中心的設計。

(2)變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變

換數(shù)據(jù)和給出數(shù)據(jù)。

⑶相應于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸

入、中心變換和輸出等三部分組成。

(4)變換分析方法由以下四步組成:

a.重畫數(shù)據(jù)流圖;

b.區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;

c.進行一級分解,設計上層模塊。把整個變換分解成輸入限制模塊

Ci、輸出限制模塊C。和變換中心限制模塊Ct,由主控模塊限制;

d.進行二級分解,設計輸入、輸出和中心變換部分的中、下層模塊。

7.事物設計

⑴事務設計就是從事務型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過程,也

稱為以事務為中心的設計。

⑵它接受一項事務,依據(jù)事務處理的特點和性質(zhì),選擇分派一個適

當?shù)奶幚韱卧?,然后給出結(jié)果。

⑶在事務型系統(tǒng)結(jié)構(gòu)圖中,事務

—(571事務中心又

中心模塊按所接受的事務的類型,

選擇某一事務處理模塊執(zhí)行。各事

務處理模塊并列。每個事務處理模主模塊

_____________u、

輸入類型分析1調(diào)度

Hil111y11芋1

112II13I1A2IIB2I|C21

塊可能要調(diào)用若干個操作模塊,而操作模塊又可能調(diào)用若干個細微環(huán)

節(jié)模塊。

(4)事務設計的基本方法有兩步:

a.建立主控模塊、接收輸入類型分析模塊和事務調(diào)度模塊.

b.分別設計輸入類型分析模塊和調(diào)度模塊的下層模塊結(jié)構(gòu)。

方法是:將輸出的每條通路作為調(diào)度模塊的一個推斷分支,而輸

入類型分析模塊的下層模塊及變換設計類似。

四、具體設計

LSA方法(基本思想)

2,面對對象分析方法建立的模型(對象模型、行為模型、功能模型)

(1)對象模型

(2)行為模型

⑶功能模型

3.結(jié)構(gòu)化程序設計的限制結(jié)構(gòu)(依次、分支、循環(huán))

(1)依次結(jié)構(gòu)

(2)分支結(jié)構(gòu)

(3)循環(huán)結(jié)構(gòu)

4.程序流程圖、N-S盒圖、PAD圖、PDL語言

(1)程序流程圖:程序流程圖也稱為程序框圖,它運用五種基本限制

結(jié)構(gòu)。

(2)N-S盒圖:出于要有一種不允許違反結(jié)構(gòu)程序設計精神的圖形工

具的考慮,Nassi和Shneiderman提出了盒圖,又稱為N-S圖。它有

下述特點:

a.功能域(即,一個特定限制結(jié)構(gòu)的作用域)明確,可以從盒圖上

一眼就看出來。

b.不行能隨意轉(zhuǎn)移限制。

c.很簡潔確定局部和全程數(shù)據(jù)的作用域。

d.很簡潔表現(xiàn)嵌套關系,也可以表示模塊的層次結(jié)構(gòu)。

(3)PAD圖:用二維樹形結(jié)構(gòu)的圖來表示程序的限制流,將這種圖翻

譯成程序代碼比較簡潔。它即克服了傳統(tǒng)的流程圖不能清楚表現(xiàn)程序

結(jié)構(gòu)的缺點,又不像N-S圖那樣受到把全部程序約束在一個方框內(nèi)的

限制,這就是其優(yōu)勢所在。

(6)PDL語言:PDL是一種用于描述功能模塊的算法設計和加工細微

環(huán)節(jié)的語言。稱為過程設計語言。它是一種偽碼。偽碼的語法規(guī)則分

為“外語法”和“內(nèi)語法”。

PDL具有嚴格的關鍵字外語法,用于定義限制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時

它的表示實際操作和條件的內(nèi)語法可運用芻然語言的詞匯。

5.計算McCabe環(huán)路困難性度量(3種方法)

McCabe度量法,又稱環(huán)路困難性度量,是一種基于程序限制流的

困難性度量方法。它基于一個程序模塊的程序圖中環(huán)路的個數(shù),因此

計算它先要畫出程序圖。

程序圖是退化的程序流程圖。流程圖中每個處理都退化成一個結(jié)

點,流線變成連接不同結(jié)點的有向?。ㄟ叄?。

程序圖僅描述程序內(nèi)部的限制流程,

完全不表現(xiàn)對數(shù)據(jù)的具體操作,以及分支

和循環(huán)的具體條件。

⑴流圖中的區(qū)域數(shù)等于環(huán)形困難度

區(qū)域:由邊和結(jié)點圍成的面積稱為區(qū)域,

當計算區(qū)域數(shù)時應當包括圖外部未被圍

起來的那個區(qū)域.

(2)流圖G的環(huán)形困難度V(G)=E-N+2.

其中,E是流圖中邊的條數(shù),N是結(jié)點數(shù)。

(3)流圖G的環(huán)形困難度V(G)=P+1

V(G)=4

PDL

procedure:sort其中,P是流圖中判定

I:dowhilerecordsremain

2:readrecord;結(jié)點的數(shù)目。

ifrecordHeldI-0

3.thenpivcessicccHd.

storeinbutler;五、編碼及測試

incrcmcrtcounter:

4:elseifrecordHeld2O

5:ihenresetcounter;L序言性注釋的作用

6:elseprocessrecord;

storeinfile;

7a:endif通常置于每個程序

eiKlif

7b:enddo

8:end模塊的開頭部分,它應

當給出程序的整體說

明,對于理解程序本身具有引導作用。

⑴夾在程序中的注釋是程序員及日后的程序讀者之間通信的重要手

段。

注釋決不是可有可無的。

⑵一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個源程序的1/3到

1/2,甚至更多。

(3)注釋分為序言性注釋和功能性注釋。

2.軟件測試的目的

(1)想以最少的時間和人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺

陷。假如勝利地實施了測試,就能夠發(fā)覺軟件中的錯誤。

⑵測試的附帶收獲是,它能夠證明軟件的功能和性能及需求說明相

符合。

(3)實施測試收集到的測試結(jié)果數(shù)據(jù)為牢靠性分析供應了依據(jù)。

⑷證明軟件有錯。

3.集成測試策略(驅(qū)動模塊、樁模塊)

⑴集成測試是測試和組裝軟件的系統(tǒng)化技術,其主要目標是發(fā)覺及

接口有關的問題。

如:數(shù)據(jù)穿過接口時可能丟失;一個模塊對另一個模塊可能由于

疏忽而造成有害影響;把子功能組合起來可能不產(chǎn)生預期的主功能;

個別看來是可以接受的誤差可能積累到不能接受的程度;全程數(shù)據(jù)結(jié)

構(gòu)可能有問題等等。

⑵計算機測試:模塊并不是一個獨立的程序,在考慮測試模塊時,

同時要考慮它和外界的聯(lián)系,用一些協(xié)助模塊去模擬及被測模塊相聯(lián)

系的其它模塊。要運行它就必需為其開發(fā)驅(qū)動軟件和(或)存根(樁)

軟件。

驅(qū)動程序也就是一個“主程序”,它接收測試數(shù)據(jù),把這些數(shù)據(jù)

傳送給被測試的模塊,并且印出有關的結(jié)果。

存根(樁)程序代替被測試的模塊所調(diào)用的模塊,也稱為“虛擬

子程序”。它運用被它代替的模塊的接口,可能做最少量的數(shù)據(jù)操作,

印出對入口的檢驗或操作結(jié)果,并且把限制歸還給調(diào)用它的模塊。

⑶方法:

a.非漸增式測試方法,即:先分別測試每個模塊,再把全部模塊按設

計要求放在一起結(jié)合成所要的程序進行測試。

b.漸增式測試,即:先把下一個要測試的模塊同已經(jīng)測試好的那些模

塊結(jié)合起來進行測試,測試完以后再把下一個應當測試的模塊結(jié)合進

來測試。

這種每次增加一個模塊的方法事實上同時完成單元測試和集成

測試,目前在進行集成測試時普遍采納漸增式測試方法。

(4)漸增方式把模塊結(jié)合到程序中去時,有自頂向下和自底向上兩種

集成策略。但在實踐中常采納混合的策略。

4.黑盒測試?黑盒測試方法(等價類劃分、邊界值分析、錯誤推想、

因果圖法)

(1)定義:假如已經(jīng)知道了產(chǎn)品應當具有的功能,可以通過測試來

檢驗是否每個功能都

溫馨提示

  • 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

提交評論