軟件工程復習筆記_第1頁
軟件工程復習筆記_第2頁
軟件工程復習筆記_第3頁
軟件工程復習筆記_第4頁
軟件工程復習筆記_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第1章軟件工程學概述

1.1軟件危機

軟件危機一一在軟件的開發和維護過程中遇到的一系列問題。

1.2軟件工程

軟件工程定義:指導計算機軟件開發和維護的一門工程學科。采用工程的概念原理技術

來開發和維護軟件,把經時間考驗正確的技術和當前最好的技術相結合,從而開發出高

質量的可維護的軟件。

軟件工程方法學:軟件的生命周期中使用的一整套技術方法的集合

軟件工程(方法學)三個要素:方法、工具和過程。

目前最廣泛的軟件工程方法學:傳統方法學、面向對象方法學

1.3軟件生命周期

軟件生命周期由軟件定義、軟件開發和運行維護三個時期組成,每個時期又可進一步劃

分成若干個階段,每個階段有各自的任務

軟件定義:問題定義;可行性研究;需求分析

軟件開發:總體設計;詳細設計;編碼和單元測試;綜合測試

維護

1.4軟件過程

生命周期模型規定了把生命周期劃分成哪些階段及各個階段的執行順序,因此,也稱為

過程模型。

瀑布模型:運用最廣泛;從上到下;階段間有明顯的周期性和依賴性;推遲實現的觀點:

不希望有變化,盡量推遲物理代碼的實現;質量保證的觀點:每個階段都有規定的文檔,

每個階段完成都需要進行評審,盡早發現錯誤。

快速原型模型:快速建立起可以運行的程序,其功能往往是最終產品功能的子集。快速

建立能反映用戶主需求的系統,讓用戶試用,從而來了解系統的全貌。一般正式開發時

原型將被拋棄。

增量模型:把軟件產品看作一系列增量來設計、編碼、運行和維護。第一個增量構件往

往是最核心的功能,以滾雪球的方式逐步為系統增添功能。

螺旋模型:螺旋模型的基本思想就是用原型或其他方法盡量降低風險。在每個階段之前

都增加風險判斷的快速原型模型。

噴泉模型:噴泉模型是典型的面向對象生命周期模型。體現了面向對象開發的“迭代、

無縫對接”的特性。階段之間沒有明顯的界限。

1.4.6Rational統一過程

Rational統一過程RUP是一種完整而且完美的軟件過程。運用迭代和漸增的方式來

開發軟件。RUP重復一系列的組成軟件生命周期的循環,每次循環都給軟件增加一

些新的功能,并給用戶交付?個可運行的版本。更容易擁抱變化,容納需求的變更。

RUP的每個生命底期分為4個階段:初始;精化;構建;移交

1.4.7敏捷開發和極限編程

敏捷過程

極限編程是嫩捷過程的典型,具有對變化和不確定性更快速更敏捷的反應特性,而

且在快速的同時仍然能夠保持可持續的開發速度。能較好的適應對小型項目提出的

有限資源和有限開發時間的約束。

1.4.8微軟過程

微軟軟件的生命周期:規劃階段、設計階段、開發階段、穩定階段、發布階段

微軟過程模型適用于商業環境下具有有限資源和有限開發時間約束的項目。是RUP

的一種精簡的配置版本,整個過程包含若干個生命周期的循環;是敏捷軟件過程的

一種擴展,擴充了各個階段的具體工作流程

1.5小結

第2章可行性研究

2.1可行性研究的任務

可行性研究4個方面;

技術可行性

經濟可行性

操作可行性

法律可行性

2.2可行性研究過程

2.3系統流程圖:表達數據在系統各個部分間流動的情況,不是對數據進行加工處理的控制

過程(物理構成)

>概括描繪物理系統的傳統工具

>用圖形符號,以黑盒子形式描述組成系統的每個部件(一些符號與程序流程圖相似)

>程序、文檔、數據庫、人工過程

2.4數據流圖:描繪信息流和數據從輸入移動到輸出的過程中所經受的變換。(邏輯功能)

數據流圖有四種基本符號:

數據的源點或終點;變換數據的處理;數據存儲;數據流。

數據流

數據存儲

命名:數據流的命名一般是具體的數據內容的載體;處理的命名一般是一個動賓短語

2.5數據字典:是關于數據信息的集合,即對設計圖中包含的元素的定義

=意思是等價于(或定義為);

+意思是和(即,連接兩個分量:);

[]意思是或(即,從方括弧內列出的若干個分量中選擇一個),用"I”號分開供選擇的

分量;

{}意思是重復(即,重復花括弧內的分量);

()意思是可選(即,圓括弧里的分量可有可無)。

使用上限和下限進一步注釋表示重復的花括弧。

左邊用上角標和下角標分別表明重復的上限和下限:

左側標明重復的下限,在閉括弧的右側標明上限。

例如:{A}和1{A}5含義相同。

2.6成本/效益分析

2.7小結

第3章需求分析

建立模型,結構化分析。通常需要建立數據模型(ER圖)、功能模型(數據流圖)、行為模型

(狀態轉換圖)用來描述系統

3.1需求分析的任務

3.2與用戶溝通獲取需求的方法

訪談:分為正式和非正式倆種;分發調查表;情景分析

面向數據流自頂向下求精:數據決定了需要處理的方式和算法,是需求的出發點

簡易應用規格說明的方法

快速原型模型

3.3分析建模與規格說明

3.4實體一聯系圖(ER圖):數據模型包含三種相互關聯的信息:數據對象、描述數據對象

屬性及數據對象彼此間相互連接的關系。

ER圖中包含實體(即數據對象)、關系和屬性三種基本成分.

3.5數據規范化

3.6狀態轉換圖(狀態圖):通過描繪系統的狀態及引起系統狀態轉換的事件,來表示系統的

行為。

狀態一一是任何可以被觀察到的系統行為模式。

事件一一是在某個特定時刻發生的事情,引起系統從一個狀態轉換到另一個狀態的轉換

3.7其它圖形工具

3.7.3IPO圖一一是輸入、處理、輸出圖的簡稱,能方便描述輸入數據、對數據處理和

輸出數據之間的關系。

?人處及

3.8驗證軟件需求

3.9小結

第5章總體設計

5.1設計過程

5.2設計原理

模塊化

模塊一一是由邊界元素限定的相鄰程序元素的序列,而且有一個總體標識符代表它

模塊是構成程序的基本構件。

模塊化一一就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,

把所有模塊構成一個整體,就能滿足用戶的需求。

抽象

把事物中相似的部分集中概括起來,暫時忽略它們之間的差異,這就是抽象

逐步求精

為集中精力解次主要問題而推遲了對問題細節的考慮

信息隱藏和局部化

信息隱藏一一一個模塊內包含的信息對于不需要這些信息的模塊來說是不可見的。

局部化一一把一些密切相關的軟件元素物理地放得很近。

模塊獨立:模塊的獨立程度可以由兩個定性標準來度量,這兩個標準分別稱為內聚和耦

合。

耦合衡量不同模塊彼此間互相依賴(連接)緊密程度;

內聚衡量一個模塊內部各個元素彼此結合的緊密程度。

耦合

?非直接耦合

?數據耦合:交換簡單的數據參數信息。

?標記(特征)耦合:傳遞參數表記錄信息,如文件、數組、指針等。(傳遞整個

數據結構)。傳參傳遞整個數據結構,但是使用的數據只是數據結構的一部分“

?控制耦合:控制變量,有可能是一個簡單變量,但可能改變程序流程。模塊與

模塊間交換的是控制信息.

?外部耦合:一組模塊都訪問同一全局簡單變量。

?公共耦合:i組模塊訪問同一個公共數據環境。公共區可以降低語句的數量和

內存的耗費,但增加耦合度。

?內容耦合:一組模塊使用另一模塊內部數據:模塊通過非正常渠道進入另一模

塊執行。一個模塊由多個入口(一個模塊由幾種功能)

原則:盡量使用數據耦合,少用控制耦合,縮小公共耦合的范圍,避免內容耦合

內聚

?(高)功能內聚:模塊內所有元素屬于一個整體,完成單一功能。

?(高)信息內聚(順序內聚):模塊完成多個功能,每個功能都在同一數據結構

上操作(按一定的順序),各功能有唯一的出口點和入口點。

-(中)通信內聚:模塊內各功能部分使用了相同的輸入數據,或產生了相同的

輸出數據。

?(中)過程內聚:模塊內部的處理元素是相關的模塊中包含有一組任務,必須

按照一定的順序執行完成功能。(沒有公共數據),通常上一任務的輸出是下一

任務的輸入。

?(低)時間內聚:任務需在同一時間段完成。(各種初始化)

?(低)邏輯內聚:相關功能通過邏輯關系組成在模塊內,功能相同或相似,(應

合理使用,否則增加模塊數)

?(低)巧合內聚/巧合內聚:各部分之間沒有任何聯系,或有聯系也很松散。

5.3啟發規則

深度,寬度,扇入,扇出

5.4描繪軟件結構的圖形工具

5.4.1層次圖和HIPO圖

層次圖用來描述軟件的層次結構,一個方框代表一個模塊,方框間的連線表示調用,

每個方框都對應一張IPO圖就構成了HIPO圖

5.5面向數據流的設計方法

解決的問題:根據數據流圖構造出層次圖

數據流包括變換流和事物流。

5.6小結

第6章詳細設計

6.1結構程序設計

結構化設計定義:

如果一個程序的代碼塊僅僅通過順序、選擇和循環這三種控制結構進行連接,并且每個

代碼塊只有一個入口和一個出口,則稱這個程序是結構化的。

?如果只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環這三種基本控制結

構,則稱為經典的結構程序設計;

?如果除了上述三種基本控制結構之外,還允許使用DO-CASE型多分支結構和D0-

UNTIL型循環結構,則稱為擴展的結構程序設計;

?如果再加上允許使用LEAVE(或BREAK)結構,則稱為修正的結構程序設計。

6.2人機界面設計

6.3過程設計的工具

描述程序處理過程的工具稱為過程設計的工具,它們可以分為圖形、表格和語言三類。

程序流程圖

合圖

PAD圖

判定表:能夠清晰地表示復雜的條件組合與應做動作之間的關系

6.4面向數據結構的設計方法

6.5程序復雜程度的度量方法

流圖一一表示程序的控制流

流圖的環形復雜度:環形復雜度定量度量程序的邏輯復雜性。三種方法來計算環形復雜

度。

-流圖中的區域數等于環形復雜度。

?流圖G的環形復雜度V(G)=E-N+2,其中E是流圖中邊的條數,N是流圖中節點數。

?流圖G的環形復雜度V(G)=P+1,其中P是流圖中判定節點的數目。

6.6小結

第7章實現

通常把編碼和測試統稱為實現。

軟件測試在軟件生命周期中橫跨兩個階段。

-單元測試,模塊的編寫者和測試者是同一個人,編碼和單元測試屬于軟件生命周期的同

一個階段。

對軟件系統還應該進行各種綜合測試,這是軟件生命周期中的另一個獨立的階段,通常

由專門的測試人員承擔這項工作。

7.1編碼

7.2軟件測試基礎

測試是為了發現程序中的錯誤而執行的過程。

測試方法(黑盒測試和白盒測試)

?黑盒測試法把程序看成一個黑盒子,完全不考慮程序的內部結構和處理過程。

?黑盒測試是在程序接口進行的測試

-只檢查程序功能是否能按照規格說明書的規定正常使用

-程序是否能適當地接收輸入數據產生正確的輸出信息,并且保持外部信息(如,數據

庫或文件)的完整性.

?黑盒測試又稱為功能測試。

?白盒測試法是把程序看成裝在一個透明的白盒子里,也就是完全了解程序的結構和

處理過程。

?白盒測試按照程序內部的邏輯測試程序,檢驗程序中的每條通路是否都能按預定要

求正確工作。

?白盒測試又稱為結構測試。

測試步驟

1.單元測試(模塊測試):使用白盒測試技術

2.集成測試:將模塊組合起來進行測試,一般運用黑盒測試

3.系統測試

4.驗收測試(確認測試):在用戶參與下使用實際數據進行測試,驗證系統能否滿足用

戶的要求

73單元測試

可以應用人工測試和計算機測試這兩種不同的方法來完成單元測試。

人工測試:代碼審查,由審查小組正式進行

計算機測試:模塊不是一個單獨的程序,必須開發驅動軟件和存根軟件。

驅動軟件是一個“主程序”,接受測試數據,并傳送給被測試程序,打印相關結果。

存根程序是一個“虛擬子程序”,代替被測試模塊所調用的模塊。

7.4集成測試

主要是為了發現與接口有關的問題

模塊組裝時的兩種方法:非漸增式測試方法和漸增式測試方法

漸增方式把模塊結合到程序中時有兩種策略:自頂向下;自底向上

自頂向下:從主程序開始測試,有寬度優先和深度優先的測試方法,測試時需要用到存

根程序來代替附屬模塊。為了保證新加入的程序沒有錯誤,需要進行回歸測試(重復之

前全部或者部分的測試內容)。

自底向上:從“原子模塊”開始進行測試,測試時需要“驅動程序”

7.5確認測試

確認一一保證軟件滿足客戶的需求

驗證一一保證軟件正確地實現了某個特定的功能

Alpha測試一一用戶在開發者的場所并在開發者的“指導”下進行測試。

Beta測試一一在客戶場所下進行測試

7.6白盒測試技術

邏輯覆蓋是白盒測試技術。

測試的數據和預計輸出項叫做測試用例

覆蓋的不同等級:

語句覆蓋一一每個語句至少執行一次

判定覆蓋(分支覆蓋)一一不僅每個語句至少執行一次,每個判定分支都執行一次

條件卷蓋一一不僅每個語句執行一次判定表達式中的每個條件都取到可能的結果

判定/條件覆蓋一一判定覆蓋和條件覆蓋不能相互包含

條件組合覆蓋一一條件的各種組合都執行一次

基本路徑測試也是白盒測試的技術

控制結構測試:基本路徑測試步驟(先寫長度短的路徑)

畫出相應流圖

-計算流圖的環形復雜度

確定線性獨立路徑的基本組合(獨立路徑至少包含一條在定義該路徑之前不曾用過

的邊)

-環形復雜度決定獨立路徑的上限

循環測試:

簡單循環

嵌套循環

套接循環

7.7黑盒測試技術

等價劃分是一種黑盒測試技術

等價劃分把輸入域劃分為若干個數據類

(1)對于有效的筆價類在一個測試方案中盡可能多地被覆蓋

(2)對于無效的等價類在一個測試方案中覆蓋一個即可

邊界值分析

按照邊界值分析法,應該選取剛好等于、稍小于和梢大于等價類邊界值的數據作為測試

數據

錯誤推測

7.8調試

7.9軟件可靠性

軟件可靠性的定義:

軟件可靠性是程序在給定的時間間隔內,按照規格說明書的規定成功地運行的概率

7.10小結

UML

UML的表示法:

UML由視圖(view)、圖(diagram)、模型元素(modelelement)和通用機制(generalmechanism)等

幾個部分組成。

多個圖組成視圖

用例圖:是對系統提出功能的描述。是從用戶的角度出發來描述系統,定義了系統的藝能需

1用例圖的主要元素是用例和執行者。

A用例:是系統執行一系列操作之后所完成的功能。

山執行者:是與系統交互的人或物。

A用例的三種關系:擴展(extend)、包含(include)>泛化

擴展(extend):基于甫例中一段獨立的可選的動作,輔用例依賴主用例,箭頭指向上用

例。

包含(include):這些動作是必選的,主用例依賴輔用例,箭頭指向輔用例。

類圖:不僅定義了類,還描述了類與類之間的關系,定義了類的方法和屬性(靜態圖;

類圖是構建其他圖的基礎。

UML描述屬性的語法格式為:可見性屬性名:類型名=初值{性質串}

屬性的可見性(即可訪問性)通常分為三種:公有的(public)、私有的(private)和保護的

(protected),分別用加號(+)、減號(-)和井號(的表示

UML描述操作的語法格式為:可見性操作名(參數表):返回值類型{性質串}

類與類之間的關系:關聯、泛化(繼承)、依賴和細化

關聯關系:

1)普通關聯關系:關聯一般為雙向,單向的稱為導航關聯。用帶箭頭的實線表示,箭

頭指向賓語

2)限定關聯:把模型中的重數從一對多變成一對一或多對多簡化為多對一,提取限定

詞,提高語義的精度。

3)關聯類:用關聯類來記錄一些關聯的屬性

4)聚集:關聯的一個特例,說明了類與類之間是整體和部分的關系。組合聚集表示“同

生共死”;共享聚集不表示“同生共死二(分別用實心菱形和空心菱形表示)

泛化(繼承)關系:用空心三角形表示

1)普通泛化

2)受限泛化

依賴和細化:

1)依賴關系:一種非固定的聯系,表示“A用到B",用帶箭頭的虛線來表示,箭頭指

向A

2)細化:表示一種具體的描述

對象圖:類圖的實例(靜態圖)

對象的名字下面加卜劃線,格式為:對象名:類名

狀態圖:狀態圖描述類的對象可能具有的所有狀態,以及引起狀態變化的事件,狀態變化稱

作狀態轉換。通常,狀態圖是對類圖的補充(行為圖)

與第六章的狀態圖相同。

活動圖:活動圖描述為滿足用例要求而進行的動作以及動作間的關系(行為圖)

活動圖舉例:

順序圖:顯示若「個對象間的動態協作關系,它強調對象之間發送消息的先后次序,推述對

象之間的交互過程(交互圖)

▲順序圖有兩個坐標軸:縱坐標軸表示時間,橫坐標地表示不同的對象。

[ondiUon]

同步消息

異步消息

簡單消息

|cMldltmci]

消息類型:W第7.1gcgiix同步立即返回

0順序圖舉例:

a協作圖:與順序圖類似,也描述對象間的動態協作關系。除了顯示對象間發送的消息之

外,協作圖還顯示對象及它們之間的關系(稱為上下文相關)(交互圖)

4協作圖對象與對象之間的消息傳遞用消息標簽。

1消息標簽格式:前綴:守衛條件]序列表達式返回值:=消息說明

4協作圖舉例:

架構模式(architecturepattern)

Layers層次架構模式:結構被分解為響應的層,每一層都是一個子任務的抽象

特點:

每一層都給更高的層提供服務

每一層服務的實現都依賴于低一層提供的服務

服務頻繁地通過同步程序調用被請求

例子:網絡的5層結構

Model-view-controllerMVC架構模式:將交互式的應用分為3個部分。Model,核心的功能

和和數據;view,向用戶展示信息;controller,控制用戶的輸入

特點:控制器輸入事件時對模型和視圖進行控制和調度。模型接受事件后改變自身的狀態,

同時立即通知與之相關聯的視圖更新顯示。

例子:Smalltalk

Client-serverC/S架構模式

特點:

服務器可以為多個客戶機提供服務

客戶機發出的服務請求來自服務器

請求將通過進程或機器邊界來完成

服務器永遠都是運行狀態,等待來自客戶機的請求

例子:web應用

Master-slave主從架構模式

特點:

主從模式提供錯誤的容忍度較高以及并行計算

主部分可以將任務分發給幾個相同的從部分來進行計算,最后從各個從部分中收集信息并

計算最后的結果

例子:線程控制、嵌入式系統

Pipe-filter管道過濾器架構模式

特點:

?種為系統傳輸數據流的結構

每一步的處理都被壓縮進一個“過濾器”

數據通過相鄰過濾器之間的管道進行傳輸

舉例:unix的shell命令行

設計原則一一子系統類與類之間的設計原則

面向接口編程一一使用“接口繼承”,而非“實現繼承”

C++使用純虛類來實現“接口編程”

JAVA有單獨的“接口編程”的語法結構

依賴倒置一一高層模塊不應該依賴于底層模塊,兩者都依賴于抽象

組合優于繼承一一優先使用組合可以獲得重用性和簡單性更加的設計

繼承一般表示的是子類是父類的一種“特殊類型”而不是父類將要扮演的角色

單一職責一一類的功能只有一個

DataChannel

開放一封閉法則(OCP)——OCP認為應該試圖設計出永遠也不需要改變的模塊。可以添加

新代碼來擴展系統的行為;不能對已有的代碼進行修改。

Liskov替換一一派生類永遠可以替換基類在程序中出現的位置

設計模式一一基于設計原則

Factory工廠模式一一客戶類和

溫馨提示

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

最新文檔

評論

0/150

提交評論