軟件工程學習資料_第1頁
軟件工程學習資料_第2頁
軟件工程學習資料_第3頁
軟件工程學習資料_第4頁
軟件工程學習資料_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄

第1章軟件工程概述..................................................2

1.軟件具有如下特點:........................................................................................................2

2.軟件危機..................................................................3

3.軟件工程的定義............................................................4

4.軟件工程的目標和內容.....................................................4

5.軟件工程的原則............................................................6

6.軟件過程..................................................................7

7.軟件生命周期..............................................................7

第2章需求分析.....................................................10

1.概述.....................................................................10

2.需求分析階段的工作.......................................................10

3.需求分析方法.............................................................11

4.結構化分析方法...........................................................12

第3章結構化設計方法...............................................13

1.軟件設計的基礎............................................................13

2軟件設計的基本原理和原則..................................................15

第4章概要設計.....................................................17

1.概要設計的任務...........................................................17

2.結構圖...................................................................18

3.面向數(shù)據(jù)流的設計方法....................................................20

4.面向數(shù)據(jù)流的結構化設計過程..............................................22

5.結構化設計的準則........................................................22

第5章詳細設計.....................................................23

第6章軟件測試.....................................................24

L軟件測試的目的...........................................................24

2.軟件測試的準則...........................................................25

3.軟件測試方法.............................................................26

4.白盒測試的測試用例設計..................................................27

5.黑盒測試的測試用例設計..................................................27

6.軟件測試的實施...........................................................29

第7章程序的調試...................................................32

1.程序調試的基本概念.......................................................32

2.軟件調試的方法...........................................................33

1

第1章軟件工程概述

L軟件具有如下特點:

⑴軟件是一種邏輯實體,具有抽象性

軟件區(qū)別于一般的、看的見摸得著的、屬于物理實體的工程對象,

人們只能看見它的存儲介質,而尢法看到它本身的形態(tài)。只有運用邏

輯思維才能把握軟件的功能和特性。

⑵軟件沒有明顯的制作過程

硬件研制成功后,在重復制造時,要進行質量控制,才能保證產

品合格;而軟件一旦研制成功,就可以得到大量的、成本極低的,并

且完整精確的副本c因此,軟件的質量控制必須著重于軟件開發(fā)。

⑶軟件在使用期間不存在磨損、老化問題

軟件價值的損失方式是很特殊的,軟件會為了適應硬件、環(huán)境以

及需求的變化而進行修改,而這些修改不可避免地引入錯誤,導致軟

件失效率升高,從而使得軟件退化。當修改的成本變得難以接受時,

軟件就會被拋棄。

⑷對硬件和環(huán)境具有依賴性

軟件的開發(fā)、運行對計算機硬件和環(huán)境具有不同程度的依賴性,

這給軟件的移植帶來了新的問題。

⑸軟件復雜性高,成本昂貴

軟件涉及人類社會的各行各業(yè)、方方面面,軟件開發(fā)常常涉及其

他領域的專業(yè)知識c軟件開發(fā)需要投入大量、高強度的腦力勞動,成

本高,風險大。現(xiàn)在軟件的成本已大大地超過了硬件的成本。

2

⑹軟件開發(fā)涉及諸多的社會因素

軟件除了本身具有的復雜性以外,在開發(fā)過程中,涉及的社會因

素也是非常復雜的C

下列描述中正確的是()

A)桂序就是軟件

B)軟件開發(fā)不受計算機系統(tǒng)的限制

C)軟件既是邏輯實體,又是物理實體

D)軟件是程序、數(shù)據(jù)與相關文檔的集合

2,軟件危機

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

列嚴重問題。這些問題絕不僅僅是不能正常運行的軟件才具有的,實

際上,幾乎所有軟件都不同程度地存在這些問題。

具體地說,在軟件開發(fā)和維護過程中,軟件危機主要表現(xiàn)在以下

幾個方面:

(1)不能滿足軟件需求的增長。經常會有用戶對系統(tǒng)不滿意的情況

出現(xiàn)。

(2)軟件開發(fā)的成本和進度無法控制。開發(fā)成本過高以及開發(fā)周期

過長的情況經常發(fā)生。

(3)軟件質量難以保證。

(4)軟件可維護程度低或者不可維護。

(5)軟件的成本不斷提高。

(6)軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。

3

總之,可以將軟件危機歸結為成本、質量、生產率等問題。

下面描述中,不屬于軟件危機表現(xiàn)的是0

A)軟件過程不規(guī)范

B)軟件開發(fā)生產率低

C)軟件質量難以控制

D)軟件成本不斷提高

3.軟件工程的定義

軟件工程概念的出現(xiàn)源自軟件危機。通過認真研究消除軟件危機

的途徑,逐漸形成了一門新興的工程學科——計算機軟件工程學(簡

稱為軟件工程)。

國家標準(GB)中指出:軟件工程是指應用于計算機軟件的定義、

開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。

軟件工程包含3個要素:方法、工具和過程。

方法:方法是完成軟件開發(fā)各項任務的技術手段。

工具:工具支持軟件的開發(fā)、管理、文檔生成。

過程:過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。

下面不屬于軟件工程的3個要素是()

A)工具B)過程C)方法D)環(huán)境

4,軟件工程的目標和內容

軟件工程的目標是:在給定成本、進度的前提下,開發(fā)出具有有

效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植

性、可追蹤性和可互操作性且滿足用戶需求的產品。為了實現(xiàn)其目標,

4

軟件工程提出了工程化的思想。

工程是對技術(或社會)實體的分析、設計、建造、驗證和管理。

軟件工程從管理和技術兩方面指導軟件開發(fā)。它們各自包含的內容如

下圖所示。

「軟件開發(fā)方法學一U的是使軟件的開發(fā)規(guī)范化和I.程化,以克服

Y期的下[作坊生產時的隨意性和作現(xiàn)能性

軟件開J開發(fā)過程

發(fā)技術)開發(fā)工八

I軟件I:程環(huán)境

包括人員組織、進度安排、質瞅保證、

/軟件管理學一

配置管理和項目計劃等

由件工J

程管理〈軟件Ib經濟學——用經濟學的林本原理來研究軟件開發(fā)中的經濟

效益問題.包括成本的估算、成本效益分析等

L.w、血/從個體心理、人類行為、組織行為和企業(yè)

“欠仃心理字一文化等角度來研究軟件管理和軟件]:科

圖3.2軟件匚程的理論和技術性研究

軟件工程研究內容:

軟件開發(fā)模型。如:瀑布模型、增量模型、迭代模型。

軟件開發(fā)方法。如:面向過程方法、面向數(shù)據(jù)方法、面向對象方法。

目前使用最廣泛的軟件工程方法學是結構化方法學和面向對象

方法學。結構化方法學也稱為傳統(tǒng)方法學,它采用結構化方法來完成

軟件開發(fā)的各項任務,并使用適當?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持

結構化方法的運用它包括結構化分析結構

c(StructuredAnalysis)s

化設計(StructuredDesign)和結構化程序設計(Structured

Programming)三部分組成。結構化方法的基本指導思想是自頂向下,

逐步求精,它的基本原則是抽象與分解。

軟件支持過程。如:工具、

CASERosePowerDesigner0

軟件管理過程。如:IS09000、CMM、軟件企業(yè)文化。

5

例如,要開發(fā)一個軟件系統(tǒng)(如圖書館信息系統(tǒng)),為了完成這

項任務,首先要選擇軟件開發(fā)模型,確定開發(fā)方法、準備開發(fā)工具、

設計開發(fā)環(huán)境和運行環(huán)境,然后進行需求分析、設計、編程、測試、

試運行、正式運行、驗收和交付,最后是系統(tǒng)維護或系統(tǒng)升級換代。

這樣就按照所選擇的開發(fā)模型,走完了軟件的一個生命周期,這一系

列的軟件開發(fā)過程和管理過程,就是軟件工程。

下列關于軟件工程的描述中正確的是0

A)軟件工程只是解決軟件項目的管理問題。

B)軟件工程主要解決軟件產品的生產率問題。

C)軟件工程的主要思想是強調在軟件開發(fā)過程中需要應用工程化

原則。

D)軟件工程只是解決軟件開發(fā)中的技術問題。

5.軟件工程的原則

軟件工程發(fā)展到現(xiàn)在,已經總結出若干基本原則,所有的軟件項

目都應遵循這些原則,以達到軟件工程的目標。軟件工程原則包括抽

象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證

性。具體描述如表3?2所示。

表3-2軟件工程原則

軟件工程原則原則具體描述

采用分層次抽象、“頂向卜二逐層細化的辦法控制軟件開發(fā)過程的

抽象

復雜性

6

將模塊設計成“黑箱實現(xiàn)的細。隱藏在模塊內部.不讓模塊的

信總隱蔽

使用者1'[接訪問這就是信息封裝,使用。實現(xiàn)分離的原則

模塊化模塊化石助產信息隱蔽和抽象.石助于我示狂雜的系統(tǒng)

翟求在一個物理模塊內集中邏軾上相互關聯(lián)的計算機資源,保證模

局部化塊之間具行松散的泗A關系,模塊內部具彳j較強的內聚.這仃助r

控制分解的融雜性

確定性軟件開發(fā)過程中所有概念的表達應是確定的、無歧義的、規(guī)他的

整個軟件系統(tǒng)的各個楨塊應使川一致的概念、符號和術語;程序內

一致性外部接口應保持-致;軟件和硬件、操作系統(tǒng)的接口應保持?致;

系統(tǒng)規(guī)格說明與系統(tǒng)行為應保持一致

軟件系統(tǒng)不上?失任何幣要成分,可以完全實現(xiàn)系統(tǒng)所要求的功能;

完備性為了保證系統(tǒng)的完備性.在軟件開發(fā)和運行過程中需要嚴格的技術

評審

開發(fā)大網(wǎng)的軟件系統(tǒng)需要對系統(tǒng)H頂向下、逐U分解系統(tǒng)分解時

可驗證性

應遵循系統(tǒng)易于檢作、測試、評審的原則,以確保系統(tǒng)的正確性

下面不屬于軟件設計原則的是()

A)抽象B)模塊化C)自底向上D)信息隱蔽

6.軟件過程

IS09000定義:軟件過程是把輸人轉化為輸出的一組彼此相關的資源

和活動。

軟件工程過程是為了獲得高質量軟件所需要完成的一系列任務的框

架,它規(guī)定了完成各項任務的工作步驟。

軟件工程過程所進行的基本活動主要包含4種,如表3-3所示。

表3-3軟件工程的基本活動

活動名稱含義

軟件規(guī)格說明規(guī)定軟件的功能及其運行時的限制

軟件開發(fā)產生滿足規(guī)格說明的軟件

軟件確認確認傕夠滿足用戶提出的必求

軟件演進為滿足客戶要求的變更,軟件必須在使用的過程中不斷演進

下面哪個不屬于軟件工程過程的4種基本活動()

A)軟件規(guī)格說明B)軟件開發(fā)

C)軟件演進D)軟件測試

7,軟件生命周期

7

軟件生命周期是指把軟件產品從提出、實現(xiàn)、使用、要/學習提示

維護到停止使用、退役的過程。也就是說,軟件產T魯器舞黑舞

各階段的主要任務

品從其概念提出開始,到該軟件產品不能使用為止

的整個時間段都屬于軟件生命周期。

軟件生命周期分為3個時期共8個階段。

①軟件定義期:包括問題定義、可行性研究和需求分析3個階段;

②軟件開發(fā)期:包括概要設計、詳細設計、實現(xiàn)和測試4個階段;

③運行維護期:即運行維護階段。

軟件生命周期各個階段的活動可以有重復,執(zhí)行時也可以有迭代,如

圖3-4所示。

圖3?4軟件生命周期

軟件生命周期是指()

A)軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B)軟件從需求分析、設計、實現(xiàn)到測試完成的過程

C)軟件的開發(fā)過程

D)軟件的運行維護過程

8

下列選項中不屬于軟件生命周期開發(fā)階段任務的是()

A)軟件測試B)概要設計C)軟件維護D)詳細設計

軟件生命周期可分為定義階段、開發(fā)階段和維護階段,詳細設計

屬于0

A)定義階段B)開發(fā)階段

C)維護階段D)上述3個階段

軟件生命周期各階段的主要任務

在圖3-4中的軟件生命周期各階段的主要任務是:

①問題定義。確定要求解決的問題是什么。

②可行性研究與計劃制定。決定該問題是否存在一個可行的解決辦

法,指定完成開發(fā)任務的實施計劃。

③需求分析。對待開發(fā)軟件提出的需求進行分析并給出詳細定義。

編寫軟件規(guī)格說明書及初步的用戶手冊,理交評審。

④軟件設計。通常又分為概要設計和詳細設計兩個階段,給出軟件

的結構、模塊的劃分、功能的分配以及處理流程。該階段提交評審

的文檔有概要設計說明書、詳細設計說明書和測試計劃初稿。

⑤軟件實現(xiàn)。在軟件設計的基礎上編寫程序。該階段完成的文檔有

用戶手冊、操作手冊等面向用戶的文檔,以及為下一步作準備而編

寫的單元測試計劃c

⑥軟件測試。在設計測試用例的基礎上,檢驗軟件的各個組成部

分。編寫測試分析報告。

⑦運行維護。將已交付的軟件投入運行,同時不斷地維護,進行必

9

要而且可行的擴充和刪改。

下列描述中正確的是()

A)軟件交付使用后還需要再進行維護

B)軟件工具交付使用就不需要再進行維護

C)軟件交付使用后其生命周期就結束

D)軟件維護是指修復程序中被破壞的指令

第2章需求分析

1.概述

軟件需求是指用戶對目標軟件系統(tǒng)在功能、行為、性能、設計

約束等方面的期望c需求分析的任務是發(fā)現(xiàn)需求、求精、建模和定

義需求的過程。需求分析將創(chuàng)建所需的數(shù)據(jù)模型、功能模型和控制

模型。

需求分析的過程是開發(fā)人員與用戶共同協(xié)商,明確系統(tǒng)的全部

功能、性能以及運行規(guī)格,并且使用軟件開發(fā)人員和用戶都能理解

的語言準確地表達出來,即完成需求規(guī)格說明的過程。

2.需求分析階段的工作

概括地說,需求分析階段的工作可以分為4個小“學”示

方面:需求獲取、需求分析、編寫需求規(guī)格說明書界匕T分析階履的,

和需求評審。

⑴需求獲取

了解用戶當前所處的情況,發(fā)現(xiàn)用戶所面臨的問題和對目標系

統(tǒng)的基本需求;接下來應該與用戶深入交流,對用戶的基本需求反復

10

細化逐步求精,以得出對目標系統(tǒng)的完整、準確和具體的需求。

(2)需求分析

對獲取的需求進行分析和綜合,最終給出系統(tǒng)的解決方案和目

標系統(tǒng)的邏輯模型C

⑶編寫需求規(guī)格說明書

需求規(guī)格說明書是需求分析的階段性成果,它可以為用戶、分

析人員和設計人員之間的交流提供方便,可以直接支持目標系統(tǒng)的

確認,又可以作為控制軟件開發(fā)進程的依據(jù)。

⑷需求評審

通常主要從一致性、完整性、現(xiàn)實性和有效性4個方面復審軟

件需求規(guī)格說明書C

下面不屬于軟件需求分析階段主要工作的是0

A)需求變更申請B)需求分析

C)需求評審D)需求獲取

3?需求分析方法

需求分析方法可以分為結構化分析方法和面向對象的分析方法

兩大類。

(1)結構化分析方法

主要包括:面向數(shù)據(jù)流的結構化分析(StructuredAnalysis,SA)方

法、面向數(shù)據(jù)結構的Jackson系統(tǒng)開發(fā)(JacksonSystem

DevelopmentMethod,JSD)方法和面向數(shù)據(jù)結構的結構化數(shù)據(jù)系統(tǒng)

開發(fā)(DataStructuredSystemDevelopmentMethod,DSSD)方法。

li

⑵面向對象的分析(Object-OrientedAnalysis,00A)方法面向對

象分析是面向對象軟件工程方法的第一個環(huán)節(jié),包括一套概念原

則、過程步驟、表示方法、提交文檔等規(guī)范要求。

4,結構化分析方法

DeMarco對面向數(shù)據(jù)流的結構化分析方法有如卜定義:

使用數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、結構化英語、判定表

和判定樹等工具,來建立一種新的、稱為結構化規(guī)格說明的目標文

檔。

SA方法的實質是著眼于數(shù)據(jù)流、自頂向下、對系統(tǒng)的功能進行

逐層分解、以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模

型。

數(shù)據(jù)流程圖(DFD圖)是()

A)軟件概要設計的工具B)軟件詳細設計的工具

C)結構化方法的需求分析工具D)面向對象方法的需求分析工具

在軟件開發(fā)中,需求分析階段可以使用的工具是()

A)N-S圖B)DFD圖C)PAD圖D)程序流程圖

數(shù)據(jù)流圖中帶有箭頭的線段表示的是()

A)控制流B)事件驅動C)模塊調用D)數(shù)據(jù)流

數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特

定的圖符構成。下面圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符

的是()

A)控制流B)加工C)數(shù)據(jù)存儲D)源和潭

12

數(shù)據(jù)字典(DD)所定義的對象都包含于()

A)數(shù)據(jù)流圖(DFD圖)B)程序流程圖

C)軟件結構圖D)方框圖

下列關于數(shù)據(jù)庫設計的敘述中,正確的是()

A)在需求分析階段建立數(shù)據(jù)字典

B)在概念設計階段建立數(shù)據(jù)字典

C)在邏輯設計階段建立數(shù)據(jù)字典

D)在物理設計階段建立數(shù)據(jù)字典

下面不能作為結構化方法軟件需求分析工具的是()

A)系統(tǒng)結構圖B)數(shù)據(jù)字典(DD)

C)數(shù)據(jù)流程圖(DFD圖)D)判定表

在軟件開發(fā)中,需求分析階段產生的主要文檔是()

A)軟件集成測試計劃B)軟件詳細設計說明書

C)用戶手冊D)軟件需求規(guī)格說明書

軟件需求規(guī)格說明書的作用不包括0

A)軟件驗收的依據(jù)

B)用戶與開發(fā)人員對軟件要做什么的共同理解

C)軟件設計的依據(jù)

D)軟件可行性研究的依據(jù)

第3章結構化設計方法

L軟件設計的基礎

在需求分析階段,使用數(shù)據(jù)流圖和數(shù)據(jù)字典等工具已經建立了

13

系統(tǒng)的邏輯模型,解決了“做什么”的問題。接下來的軟件設計階

段,是解決“怎么做”的問題。本節(jié)主要介紹軟件工程的軟件設計

階段。軟件設計可分為兩步:概要設計和詳細設計。

在軟件生命周期中,能準確確定軟件系統(tǒng)必須做什么和必須具備

哪些功能的階段是()

A)概要設計B)詳細設計

C)可行性分析D)需求分析

軟件設計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如

何完成預定的任務,也就是說,軟件設計是確定系統(tǒng)的物理模型。

軟件設計是開發(fā)階段最重要的步驟。從工程管理的角度來看可

分為兩步:概要設計和詳細設計。從技術觀點來看,軟件設計包括軟

件結構設計、數(shù)據(jù)設計、接口設計、過程沒計4個步驟,如表3-7

所示。

表3-7軟件設計的劃分

劃分名稱含義

將軟件需求轉化為軟件體系結構.確定系統(tǒng)及接【1、全局數(shù)據(jù)結構

糊耍設it

或數(shù)據(jù)庫模式

按工程管理角度則分

確迎每個模塊的實現(xiàn)算法和用部數(shù)據(jù)結構.用適當方法表示算法和

詳細設計

數(shù)據(jù)結構的細H

結構設計定義軟件系統(tǒng)各主饕部件之間的美系

數(shù)據(jù)沒什將分析時創(chuàng)建的模型轉化為數(shù)據(jù)結構的定義

按技術觀點劃分

接U設計描述軟件內部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信

過程設計把系統(tǒng)結構部件轉換成軟件的過程描述

從工程管理角度看,軟件設計一般分兩步完成,它們是()

A)概要設計與詳細設計B)數(shù)據(jù)設計與接口設計

C)軟件結構設計與數(shù)據(jù)設計D)過程設計與數(shù)據(jù)設計

14

2軟件設計的基本原理和原則

軟件設計過程中應該遵循的基本原理和原則如下所述。

(1)模塊化

模塊化把軟件劃分成獨立命名且可獨立訪問的模塊,每個模塊

完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指

定的功能滿足用戶的需求。

模塊化是為了把復雜的問題自頂向下逐層分解成許多容易解決

的小問題,原來的問題也就容易解決了。模塊化使程序結構清晰,

容易閱讀、理解、測試和調試。

在考慮模塊化的過程中,應該避免模決劃分的數(shù)目過多或者過

少。

(2)抽象

抽象是人類在認識復雜現(xiàn)象的過程中使用的最強有力的思維工

具。抽象就是抽出事物的本質特性,將相似的方面集中和概括起

來,而暫時不考慮它們的細節(jié),暫時忽略它們之間的差異。

(3)信息隱藏

應用模塊化原理時,自然會產生的一個問題是“為了得到最好

的一組模塊,應該怎樣分解軟件二

信息隱藏原理指出:設計和確定模塊時,應使得一個模塊內包含

的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問

的。

⑷模塊獨立性

15

模塊獨立性含義是每個模塊完成一個相對獨立的特定子功能,

并且和其他模塊之間的關系很簡單。

模塊獨立性的高低是設計好壞的關鍵,而設計又是決定軟件質

量的關鍵環(huán)節(jié)。模塊的獨立程度可以由兩個定性標準度量:內聚性和

耦合性。

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

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

一般來說,要求模塊之間的耦合盡可能弱,即模塊盡可能獨

立,且要求模塊的內聚程度盡可能高。內聚性和耦合性是一個問題

的兩個方面,耦合性程度弱的模塊,其內聚程度一定高。

軟件設計中模塊劃分應遵循的準則是()

A)低內聚低耦合B)高內聚低耦合

C)低內聚高耦合D)高內聚高耦合

耦合性和內聚性是對模塊獨立性度量的兩個標準,下列敘述中正

確的是()

A)提高耦合性降低內聚性有利于提高模塊的獨立性

B)降低耦合性提高內聚性有利于提高模塊的獨立性

C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度

D)內聚性是指模塊間互相連接的緊密程度

兩個或兩個以上模塊之間關聯(lián)的緊密程度稱為()

A)耦合度B)內聚度C)復雜度D)數(shù)據(jù)傳輸特性

在結構化設計中,模塊劃分的原則是()

16

A)各模塊應包括盡量多的功能

B)各模塊的規(guī)模應盡量大

C)各模塊之間的聯(lián)系應盡量緊密

D)模塊內具有高內聚度、模塊間具有低耦合度

第4章概要設計

L概要設計的任務

概要設計又稱總體設計,軟件概要設計的基本任務如下所述。

(1)設計軟件系統(tǒng)結構

為了實現(xiàn)目標系統(tǒng),先進行軟件結構設計,具體過程如圖3-6所

按功能劃分模塊

確定旬個模塊功能I

確定模塊調用關系

確定模塊之間接”

評估模塊結構質照

3-6軟件系統(tǒng)結構

設計過程

(2)數(shù)據(jù)結構及數(shù)據(jù)庫設計

數(shù)據(jù)設計是實現(xiàn)需求定義和規(guī)格說明中提出的數(shù)據(jù)對象的邏輯表

不。

⑶編寫概要設計文當

概要設計階段的文檔有概要設計說明書、數(shù)據(jù)庫設計說明書和集成

測試計劃等。

(4)概要設計文檔評審

在文檔編寫完成后,要對設計部分是否完整地實現(xiàn)了需求中規(guī)定的

17

功能、性能等要求,設計方案的可行性,關鍵的處理及內外部接口

定義的正確性、有效性,各部分之間的一致性等進行評審似免在以

后的設計中出現(xiàn)大的問題而返工。

綜上所述,概要設計的主要任務可以分為兩部分,如圖3-7所示。

設計軟件系統(tǒng)結構

(設計

[設計數(shù)據(jù)結構和數(shù)據(jù)庫

概要設計,

[編。概要設計文檔

【文檔

I評審

圖3-7概要設計的任務

2.結構圖

在結構化設計方法中,常用的結構設計工具是結構圖(Stucture

Chart,SC),也稱為程序結構圖。結構圖的基本圖符及含義如表3-

10所示。

表3-10結構圖基本圖符及含義

概念含義圖符

一個矩形代表?個模塊.矩形內注明模塊的名字或主?■■

模塊一般模塊

要功能

調用關系矩形之間的脩頭(或直線)表示模塊的利用關系-------調用關系

用帶注耗的箭頭表示模塊調用過程中來mi傳遞的信息

如果心中進一步標明傳遞的信息是數(shù)據(jù)信息還是控制---------A數(shù)據(jù)信息

信息

信息,則可用帶實心網(wǎng)的箭頭表示是控制信息.空心?--------?控制信息

圈表示數(shù)搟信息

根據(jù)結構化設計思想,結構圖構成的基本形LULML±J

Jt/\0

式有3種:順序形式、選擇形式和重復形

EEEE

式。⑶.(0

圖3-8結構圖的圖形表示

圖3-8(a)是最基本的調用形式—順序形

式。此外還有一些附加的符號,可以表示模塊的選擇調用或循環(huán)調

用。

圖3-8(b)表示當模塊M中某個判定為真時調用模塊A,為假時調用模

18

塊B。

圖3-8⑹表示模塊M循環(huán)調用模

塊A。結構圖有4種經常使用的

模塊類型:傳入模塊、傳出模塊、

變換模塊和協(xié)調模塊。其表示形

式如圖3-9所示,含義如表3-圖3-9結構圖4種模塊類型

11所不。

表3?11結構圖模塊類型及含義

協(xié)網(wǎng)模塊時所有嚇屬模塊進行協(xié)謝和管理

從下級模塊取得數(shù)據(jù),經處理再將K傳

傳入模塊

送紿上級快塊

從上級模塊取得數(shù)據(jù),進行特定的處理.

變換模塊

轉換成其他形式.再傳送給上級模塊

從上級模塊取得數(shù)據(jù).經處理再將此佐

傳出模塊

送給下屬模塊

軟件的結構是一種層次化的表示,它指出了軟件的各個模塊之間的

關系,如圖3-10所不。

圖3.10軟件結構

圖3-10的結構圖中涉及幾個術語,現(xiàn)簡述如表3-12所示。

*3-12結構圖術語

1???他MJG他怏塊的K!欣

從舊模塊被另一個慢快一州的模城

軻中位于葉子鋁點的模塊.也就是沒〃從M

堵點的模塊

Wtt表示控制的以數(shù)

寬度U大模塊數(shù)的小的打M的度

WA兩川個吩定校塊的懵塊個數(shù)

AM由一個模塊在接網(wǎng)用的其偷模塊收

19

對軟件系統(tǒng)總體結構圖描述正確的是()。

A、從屬模塊一定是原子模塊

B、扇入是一個模塊直接調用的其他模塊數(shù)

C、結構圖是描述軟件系統(tǒng)功能的

D、深度等于控制的層數(shù)

某系統(tǒng)總體結構如下圖所示該系統(tǒng)結構圖的寬度是()o

A、2B、3C、4Ds5

某系統(tǒng)總體結構如下圖所示,該系統(tǒng)結構圖的深度是()。

As1B、2C、3D、4

3.面向數(shù)據(jù)流的設計方法

在需求分析階段,用SA方法產生了數(shù)據(jù)流圖。面向數(shù)據(jù)流的結構化

設計(SD),能夠方便地將數(shù)據(jù)流圖DFD轉換成程序結構圖。DFD從

系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流的一連串連續(xù)加工形成了一

20

條信息流。下面首先介紹數(shù)據(jù)流圖的不同類型,然后介紹針對不同

的類型所作的處理C

⑴數(shù)據(jù)流圖的類型

數(shù)據(jù)流圖的信息流可分為兩種類型:變換流和事務流。相應地,數(shù)據(jù)

流圖有兩種典型的結構形式:變換型和事務型。

①變換型。信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部

形式,然后通過變換中心(也叫主加工),經加工處理以后再沿輸出

通路變換成外部形式離開軟件系統(tǒng)。當數(shù)據(jù)流圖具有這些特征時,

這種信息流就稱為變換流,這種數(shù)據(jù)流圖,稱為變換型數(shù)據(jù)流圖。

變換型數(shù)據(jù)流圖可以明顯地分成輸入、變疾中心、輸出3大部分,

如圖3-11所示。

②事務型。信息沿著輸入通路到達一個事務中心,事務中心根據(jù)輸

入信息(稱為事務)的類型在若干個處理序列(稱為活動流)中選擇

一個來執(zhí)行,這種信息流稱為事物流,這種數(shù)據(jù)流圖,稱為事務型

數(shù)據(jù)流圖。事務型數(shù)據(jù)流圖有明顯的事務中心,各活動流以事物中

心為起點呈輻射狀流出,如圖3-12所示。

21

4.面向數(shù)據(jù)流的結構化設計過程

步驟1確認數(shù)據(jù)流圖的類型(是事務型還是變換型)

步驟2說明數(shù)據(jù)流的邊界。

步驟3把數(shù)據(jù)流圖映射為結構圖。根據(jù)數(shù)據(jù)流圖的類型進行事務分

析或變換分析。

步驟4根據(jù)下面介紹的設計準則對產生的結構進行優(yōu)化。

5.結構化設計的準則

大量的實踐表明,以下的設計準則可以借鑒為設計的指導和對軟件

結構圖進行優(yōu)化的條件。

①提高模塊獨立性c模塊獨立性是結構設計好壞的最重要標準。設

計出軟件的初步結構以后,應該分析這個結構,通過模塊分解或合

并,力求降低耦合提高內聚。

②模塊規(guī)模應該適中。過大的模塊往往是因為分解不充分;模塊過

小,則開銷大于有效操作,而且模塊數(shù)目近多將使系統(tǒng)接口復雜。

③深度、寬度、扇出和扇入都應適當。深度表示軟件結構中控制的

層數(shù),如果層數(shù)過多則應該考慮是否有許多管理模塊過于簡單了,

要考慮能否適當合并。

如果寬度過大說明系統(tǒng)的控制過于集中。

扇出過大意味著模塊過分復雜,需要控制和協(xié)調過多的下級模塊扇

出過小時可以把下級模塊進一步分解成若干個子功能模塊,或者合

并到它的上級模塊中去。

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

22

是,不能犧牲模塊的獨立性單純追求高扇入。

大量實踐表明,設計得很好的軟件結構通常頂層扇出比較高,中層

扇出較少,底層模塊有高扇入。

④模塊的作用域應該在控制域之內。在一個設計得很好的系統(tǒng)中,

所有受判定影響的模塊應該都從屬于作出判定的那個模塊,最好局

限于作出判定的那個模塊本身及它的直屬下級模塊。

⑤降低模塊之間接口的復雜程度。應該仔細設計模塊接口,使得信

息傳遞簡單并且和模塊的功能一致。

⑥設計單入口單出口的模塊,不要使模塊間出現(xiàn)內容耦合。

⑦模塊功能應該可以預測。如果一個模塊可以當作一個黑盒,也就

是說,只要輸入的數(shù)據(jù)相同就產生同樣的輸出,這個模塊的功能就

是可以預測的。

第5章詳細設計

詳細設計的任務,是為軟件結構圖中的每一個模塊12北靠

確定實現(xiàn)算法和局部數(shù)據(jù)結構,用某種選定的表達工具表示算法和數(shù)

據(jù)結構的細節(jié)。

常用的過程設計工具如下所述。

?圖形工具:程序流程圖、N-S圖、PAD圖、HIPO.

表格工具:判定表。

,語言工具:PDL(偽碼)。

在軟件設計階段不使用()

A、DFD圖(數(shù)據(jù)流程圖)

23

B、PAD圖

C、程序流程圖

D、判定表

第6章軟件測試3^^學”家

軟件測試就是在軟件投入運行之前,盡可能多地”皿|

發(fā)現(xiàn)軟件中的錯誤c軟件測試是保證軟件質量、可靠性的關鍵步

驟。它是對軟件規(guī)格說明、設計和編碼的最后復審。通常,軟件測

試的工作量往往占軟件開發(fā)總工作量的4。%以上。

SA學習提爾

【熟記】軟件測試的目的

L軟件測試的目的

GrenfordJ.Myers給出了軟件測試的目的。

⑴測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。

⑵好的測試用例(testcase)很可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤。

⑶一次成功的測試是指發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤。

測試的目的是發(fā)現(xiàn)軟件中的錯誤,但是,暴露錯誤并不是軟件測試

的最終目的,測試的根本目的是盡可能多地發(fā)現(xiàn)并排除軟件中隱藏

的錯誤。

軟件測試的目的是()

A)評估軟件可靠性B)發(fā)現(xiàn)并改正程序中的錯誤

C)改正程序中的錯誤D)發(fā)現(xiàn)程序中的錯誤

下列對于軟件測試的描述中正確的是()

24

A)軟件測試的目的是證明程序是否正確

B)軟件測試的目的是使程序運行結果正確

C)軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤

D)軟件測試的目的是使程序符合結構化原則

2.軟件測試的準則

根據(jù)上述軟件測試的目的,為了能設計出有效的測試方案,以及好

的測試用例,軟件測試人員必須深入理解,并正確運用以下軟件測

試的基本準則。

⑴所有測試都應追溯到用戶需求。

⑵在測試之前制定測試計劃,并嚴格執(zhí)行。

(3)充分注意測試中的群集現(xiàn)象。

⑷避免由程序的編寫者測試自己的程序。

(5)不可能進行窮舉測試。

(6)妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為

維護提供方便。

下列描述中正確的是0

A)軟件測試的主要目的是發(fā)現(xiàn)程序中的錯誤

B)軟件測試的主要目的是確定程序中錯誤的位置

C)為了提高軟件測試的效率,最好由程序編制者自己來完成軟件

測試的工作

D)軟件測試是證明軟件沒有錯誤

25

3.軟件測試方法

軟件測試具有多種方法,根據(jù)軟件是否需要被執(zhí)行,可以分為靜態(tài)測

試和動態(tài)測試。如果按照功能劃分,可以分為白盒測試和黑盒測

試。

(1)靜態(tài)測試

包括代碼檢查、靜態(tài)結構分析、代碼質量度量等。

其中代碼檢查分為代碼審查、代碼走查、桌面檢查、靜態(tài)分析等具

體形式。

(2)動態(tài)測試

靜態(tài)測試不實際運行軟件,主要通過人工進行分析。動態(tài)測試就是

通常所說的上機測試,通過運行軟件來檢驗軟件中的動態(tài)行為和運

行結果的正確性。

動態(tài)測試的關鍵是設計高效、合理的測試用例。測試用例就是為測

試設計的數(shù)據(jù),由測試輸入數(shù)據(jù)和預期的輸出結果兩部分組成。測

試用例的設計方法一般分為兩類:黑盒測試方法和白盒測試方法。

Q)白盒測試

白盒測試是把程序看成裝在一只透明的白盒子里,測試者完全了解

程序的結構和處理過程。它根據(jù)程序的內部邏輯來設計測試用例,

檢查程序中的邏輯通路是否都按預定的要求正確地工作。

(2)黑盒測試

黑盒測試是把程序看成一只黑盒子,測試者完全不了解,或不考慮

程序的結構和處理過程。它根據(jù)規(guī)格說明書的功能來設計測試用

26

例,檢查程序的功能是否符合規(guī)格說明的要求。

4?白盒測試的測試用例設計

白盒測試又稱為結構測試或邏輯驅動測試。它允許測試人員利用程

序內部的邏輯結構及有關信息來設計或選擇測試用例,對程序所有

的邏輯路徑進行測試。白盒測試是在程序內部

進行,主要用于完成軟件內部操作的驗證。

白盒測試的主要技術有邏輯覆蓋測試、基本路徑測試等

邏輯覆蓋泛指一系列以程序內部的邏輯結構為基礎的測試用例設計

技術。程序中的邏輯表示主要有判斷、分支、條件3種表示方式。

基本路徑測試的思路和步驟是:根據(jù)軟件過程性描述中的控制流程

確定程序的環(huán)路復雜性度量,用此度量定義基本路徑集合,并由此

導出一組測試用例對每一條獨立執(zhí)行路徑進行測試。

?LA學習提示

【M3」JK1T■4的手■

技術

(3M]黑盒涌試的測試用

5.黑盒測試的測試用例設計則設計

黑盒測試方法又稱功能測試或數(shù)據(jù)驅動測試,著重測試軟件功能。白

盒測試在測試過程的早期階段進行,而黑盒測試主要用于軟件的確

認測試。

黑盒測試完全不考慮程序內部的邏輯結構和處理過程,黑盒測試是

在軟件接口處進行,檢查和驗證程序的功能是否符合需求規(guī)格說明

書的功能說明。

常用的黑盒測試方法和技術有:等價類劃分法、邊界值分析法、錯誤

推測法和因果圖等C

27

(1)等價類劃分法

等價類劃分是一種常用的黑盒測試方法,這種技術的方法是先把程

序的所有可能的輸入劃分成若干個等價類,然后根據(jù)等價類選取相

應的測試用例。每個等價類中各個輸入數(shù)據(jù)對發(fā)現(xiàn)程序中錯誤的幾

率兒乎是相同的。因此,從每個等價類中只取一組數(shù)據(jù)作為測試數(shù)

據(jù),這樣選取的測試數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯誤,

并且大大減少了需要的測試數(shù)據(jù)的數(shù)量。

(2)邊界值分析法

邊界值分析法是對各種輸入、輸出范圍的邊界情況設計測試用例的

方法。

大量的實踐表明,程序在處理邊界值時容易出錯,因此設計一些測

試用例,使程序運行在邊界情況附近,這樣揭露程序中錯誤的可能

性就更大。

選取的測試數(shù)據(jù)應該剛好等于、小于和大于邊界值。也就是說,按

照邊界值分析法,應該選取剛好等于、稍小于和稍大于等價類邊界

值的數(shù)據(jù)作為測試數(shù)據(jù),而不是選取每個等價類內的典型值或任意

值作為測試數(shù)據(jù)。

通常設計測試方案E寸總是把等價劃分和邊界值分析法結合使用。

(3)錯誤推測法

錯誤推測法是一種憑直覺和經驗推測某些可能存在的錯誤,從而針

對這些可能存在的錯誤設計測試用例的方法。這種方法沒有機械的

執(zhí)行過程,主要依靠直覺和經驗。

28

錯誤推測法針對性強,可以直接切入可能的錯誤,直接定位,是一

種非常實用、有效的方法,但是需要非常豐富的經驗。

下面屬于白盒測試方法的是()

A)等價類劃分法B)邏輯覆蓋

C)邊界值分析法D)錯誤推測法

在黑盒測試方法中,設計測試用例的主要根據(jù)是()

A)程序內部邏輯B)程序外部功能

C)程序數(shù)據(jù)結構D)程序流程圖

6,軟件測試的實施

軟件測試的實施過程主要有4個步驟:單元測試、集成測試、確認測

試(驗收測試)和系統(tǒng)測試。

(1)單元測試

單元測試也稱模塊測試,模塊是軟件設計的最小單位,單元測試是

對模塊進行正確性的檢驗,以期盡早發(fā)現(xiàn)各模塊內部可能存在的各

種錯誤。

通常單元測試在編碼階段進行,單元測試的依據(jù)除了源程序以外還

有詳細設計說明書c單元測試可以采用靜態(tài)測試或者動態(tài)測試。動

態(tài)測試通常以白盒測試法為主,測試其結構,以黑盒測試法為輔,測

試其功能。

單元測試是針對單個模

溫馨提示

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

評論

0/150

提交評論