UML軟件建模項(xiàng)目化教程_第1頁
UML軟件建模項(xiàng)目化教程_第2頁
UML軟件建模項(xiàng)目化教程_第3頁
UML軟件建模項(xiàng)目化教程_第4頁
UML軟件建模項(xiàng)目化教程_第5頁
已閱讀5頁,還剩307頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)閱讀全文

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

文檔簡介

“十三五”應(yīng)用技術(shù)型人才培養(yǎng)規(guī)劃教材省“十二五”普通高

等教育規(guī)劃教材

普通高等院校計(jì)算機(jī)基礎(chǔ)教育規(guī)劃教材·精品系列

UML軟件建模

項(xiàng)目化教程

劉中勝主編

葉麗珠龔芳海佘學(xué)文副主編

內(nèi)容簡介

UML軟件建模是軟件系統(tǒng)分析和設(shè)計(jì)過程的重要內(nèi)容,本書分析了UML建模技術(shù)崗位的

實(shí)際需求,應(yīng)用主流的建模工具軟件,以經(jīng)典的項(xiàng)目案例為載體,詳細(xì)介紹了UML建模基礎(chǔ)知

識和實(shí)踐技能。本書的UML軟件建模工具軟件采用的是EnterpriseArchitect(V12)中文版。按

照“項(xiàng)目導(dǎo)向、任務(wù)驅(qū)動”的教學(xué)方法,以“eshop購物商城系統(tǒng)”和“高校圖書管理系統(tǒng)”兩

個(gè)項(xiàng)目案例貫穿整個(gè)教程。

本書通俗易懂,強(qiáng)化學(xué)習(xí)者能力的培養(yǎng),將知識理解能力、技能實(shí)踐能力有機(jī)結(jié)合,具有較

高的實(shí)用價(jià)值。本書適合作為應(yīng)用型本科、高職高專院校軟件工程及UML建模的教材,也可作

為廣大軟件設(shè)計(jì)人員學(xué)習(xí)或參考書籍。本書免費(fèi)提供教學(xué)課件及相關(guān)教學(xué)資源。

圖書在版編目(CIP)數(shù)據(jù)

UML軟件建模項(xiàng)目化教程/劉中勝主編.—北京:

中國鐵道出版社,2018.7(2019.6重印)

“十三五”應(yīng)用技術(shù)型人才培養(yǎng)規(guī)劃教材

ISBN978-7-113-24567-2

Ⅰ.①U…Ⅱ.①劉…Ⅲ.①面向?qū)ο笳Z言-程序

設(shè)計(jì)-高等學(xué)校-教材Ⅳ.①TP312.8

中國版本圖書館CIP數(shù)據(jù)核字(2018)第118757號

書名:UML軟件建模項(xiàng)目化教程

作者:劉中勝主編

策劃:韓從付讀者熱線:(010)63550836

責(zé)任編輯:陸慧萍李學(xué)敏

封面設(shè)計(jì):劉穎

責(zé)任校對:張玉華

責(zé)任印制:郭向偉

出版發(fā)行:中國鐵道出版社有限公司(100054,北京市西城區(qū)右安門西街8號)

網(wǎng)址:/51eds/

印刷:北京銘成印刷有限公司

版次:2018年7月第1版2019年6月第3次印刷

開本:787mm×1092mm1/16印張:19.25字?jǐn)?shù):465千

書號:ISBN978-7-113-224567-2

定價(jià):52.00元

版權(quán)所有侵權(quán)必究

凡購買鐵道版圖書,如有印制質(zhì)量問題,請與本社教材圖書營銷部聯(lián)系調(diào)換。電話:(010)63550836

打擊盜版舉報(bào)電話:(010)51873659

前言

PREFACE

UML(UnifiedModelingLanguage,統(tǒng)一建模語言)是軟件界第一個(gè)統(tǒng)一的可視化建模語言,

已經(jīng)成為國際軟件界廣泛承認(rèn)的標(biāo)準(zhǔn),其應(yīng)用領(lǐng)域非常廣泛。通過UML創(chuàng)建軟件系統(tǒng)靜態(tài)結(jié)構(gòu)

和動態(tài)行為等多種結(jié)構(gòu)模型是軟件系統(tǒng)分析和設(shè)計(jì)的重要內(nèi)容,這也在很大程度上提高了軟件開

發(fā)的效率和質(zhì)量。

本書是編者在總結(jié)了多年的軟件項(xiàng)目實(shí)踐經(jīng)驗(yàn)和多年的教學(xué)經(jīng)驗(yàn)的基礎(chǔ)上編寫的,既考慮了

UML軟件建模在實(shí)踐項(xiàng)目中知識和技能的需求,又結(jié)合了應(yīng)用型本科和高職高專的教學(xué)實(shí)際需

求。因此,通過本書的學(xué)習(xí),讀者可以快速、全面地掌握適合真實(shí)軟件項(xiàng)目的UML建模知識和

技能。

本書應(yīng)用主流的UML建模工具軟件EnterpriseArchitect(V12)中文版,以“eshop購物商

城系統(tǒng)”和“高校圖書管理系統(tǒng)”兩個(gè)案例貫穿整個(gè)教程。從真實(shí)軟件項(xiàng)目的需求分析和設(shè)計(jì)過

程出發(fā),基于“項(xiàng)目導(dǎo)向、任務(wù)驅(qū)動”的教學(xué)思想,圍繞這幾個(gè)方面的專業(yè)知識和實(shí)踐技能做了

詳細(xì)的介紹:軟件工程基礎(chǔ)知識,面向?qū)ο蠓椒ㄅc軟件建模,UML基礎(chǔ)知識,用例建模,靜態(tài)

建模,數(shù)據(jù)庫建模,動態(tài)建模,物理建模,雙向工程等。

本書具有如下創(chuàng)新之處:

(1)認(rèn)真進(jìn)行軟件需求分析以及設(shè)計(jì)崗位需求和就業(yè)現(xiàn)狀分析,全面規(guī)劃、合理安排教材內(nèi)

容。打破傳統(tǒng)的“以教師為中心、以某位任課教師的知識結(jié)構(gòu)為中心”的教學(xué)觀念,而以“企業(yè)

需求為核心、以市場需求為導(dǎo)向”。

(2)仔細(xì)分析應(yīng)用型本科和高職高專學(xué)生的學(xué)習(xí)特點(diǎn),以“學(xué)得懂、用得上”為目標(biāo),篩選

并重構(gòu)UML建模技術(shù)中符合應(yīng)用型本科和高職高專學(xué)生學(xué)習(xí)的內(nèi)容,把復(fù)雜的、難學(xué)懂的,且

企業(yè)崗位中極少涉及的相關(guān)內(nèi)容剔除,保留學(xué)生能學(xué)懂且在企業(yè)崗位中很實(shí)用的知識和技能等關(guān)

鍵內(nèi)容。

(3)基于“項(xiàng)目導(dǎo)向、任務(wù)驅(qū)動”的教學(xué)方法組織教材內(nèi)容,整個(gè)教材分為十個(gè)項(xiàng)目,每個(gè)

項(xiàng)目又根據(jù)項(xiàng)目實(shí)際需求分解為多個(gè)任務(wù)來實(shí)現(xiàn)。

(4)符合項(xiàng)目化教學(xué)思路。每個(gè)項(xiàng)目根據(jù)“項(xiàng)目指導(dǎo)→項(xiàng)目分析→各任務(wù)的描述與實(shí)現(xiàn)→項(xiàng)

目回顧→拓展訓(xùn)練”的項(xiàng)目化教學(xué)思路來完成每個(gè)項(xiàng)目的內(nèi)容。

(5)理論知識和實(shí)踐技能相結(jié)合。每個(gè)項(xiàng)目、每個(gè)任務(wù)對涉及的技術(shù)理論做恰到好處的介紹,

以“能理解、必須掌握、夠用”為原則組織理論內(nèi)容。實(shí)踐操作技能是應(yīng)用型本科和高職高專學(xué)

生學(xué)習(xí)的關(guān)鍵,因此,各項(xiàng)目從提高知識和技能兩個(gè)目標(biāo)能力出發(fā),詳細(xì)介紹相關(guān)內(nèi)容。

(6)充分考慮教學(xué)實(shí)施需求。每個(gè)項(xiàng)目在項(xiàng)目指導(dǎo)中包含項(xiàng)目分解、知識目標(biāo)、技能目標(biāo)、

項(xiàng)目導(dǎo)航。同時(shí),在項(xiàng)目綜述中提供了教學(xué)實(shí)施計(jì)劃和進(jìn)度安排,以供教學(xué)參考。

(7)充分考慮了不同層次和不同興趣的學(xué)生。每個(gè)項(xiàng)目設(shè)計(jì)有拓展訓(xùn)練,包括理論知識訓(xùn)練

和實(shí)踐技能訓(xùn)練。

(8)提供配套的教學(xué)資源。本書提供配套的教學(xué)課件和拓展訓(xùn)練參考答案,網(wǎng)絡(luò)下載地址為:

2UML軟件建模項(xiàng)目化教程

/51eds/。

本書由劉中勝任主編,葉麗珠、龔芳海、佘學(xué)文任副主編,由劉中勝負(fù)責(zé)統(tǒng)稿、定稿。其中,

項(xiàng)目一、項(xiàng)目二、項(xiàng)目四、項(xiàng)目五和項(xiàng)目七由劉中勝編寫,項(xiàng)目三、項(xiàng)目六、項(xiàng)目八和項(xiàng)目九由

葉麗珠編寫,項(xiàng)目十由龔芳海、佘學(xué)文編寫。

本書在編寫過程中得到了單位領(lǐng)導(dǎo)、同事和學(xué)生們的熱情幫助和支持,在此向他們表示感謝。

由于時(shí)間倉促和水平有限,書中難免存在疏漏和不足之處,敬請廣大讀者和專家批評指正。

編者

2018年3月

項(xiàng)目案例說明

本教程以基于項(xiàng)目任務(wù)的項(xiàng)目化教學(xué)方式來講解UML軟件建模的基本知識和操作技能。貫

穿本教程的項(xiàng)目案例有兩個(gè):教學(xué)案例以“eshop購物商城”為主,拓展訓(xùn)練案例以“高校圖書

管理系統(tǒng)”為主。對于拓展訓(xùn)練項(xiàng)目,各位教師在教授過程中可要求學(xué)生參照所在學(xué)校的高校圖

書管理系統(tǒng)進(jìn)行各項(xiàng)目的拓展訓(xùn)練,充分發(fā)揮學(xué)生自主學(xué)習(xí)的能力。

本教程軟件建模軟件使用目前軟件企業(yè)所采用的主流建模軟件,其中,正文教學(xué)內(nèi)容的UML

建模采用EnterpriseArchitect(簡稱EA,本書采用EAV12.0版本)建模軟件進(jìn)行介紹。拓展訓(xùn)

練建議采用Visio或RationalSoftwareArchitect建模軟件來完成,學(xué)生可以參照EA軟件的操作思

路自學(xué)Visio或RationalSoftwareArchitect等建模軟件的實(shí)踐操作技能,對于比較復(fù)雜的操作部

分,教師可適當(dāng)進(jìn)行指導(dǎo)。

【教學(xué)案例——eshop購物商城介紹】

網(wǎng)絡(luò)購物已經(jīng)成為人們的重要生活方式,購物商城的電子商務(wù)系統(tǒng)是信息系統(tǒng)重要的、非常

普及的應(yīng)用領(lǐng)域。因此,購物商城是軟件企業(yè)遇到的很常見的開發(fā)項(xiàng)目,具有普遍性和代表性。

eshop購物商城系統(tǒng)要求能夠?qū)崿F(xiàn)前臺購物的功能和后臺管理的功能。其前臺購物子系統(tǒng)的主要

功能包括商品查詢、商品展臺、購物車、會員設(shè)置、支付、訂單查詢和商城公告等,其功能結(jié)構(gòu)

圖如圖1所示。

圖1eshop購物商城前臺購物子系統(tǒng)功能結(jié)構(gòu)圖

后臺管理子系統(tǒng)的主要功能包括商品類別管理、商品管理、會員管理、訂單管理、員工賬戶

管理、公告管理等,其功能結(jié)構(gòu)圖如圖2所示。

2UML軟件建模項(xiàng)目化教程

圖2eshop購物商城后臺管理子系統(tǒng)功能結(jié)構(gòu)圖

【拓展訓(xùn)練案例——高校圖書管理系統(tǒng)介紹】

高校圖書管理系統(tǒng)是學(xué)生接觸較多,較為熟悉的信息管理系統(tǒng),學(xué)生對圖書管理系統(tǒng)有較深

的使用體驗(yàn),有利于學(xué)生自主地進(jìn)行軟件建模的拓展訓(xùn)練。學(xué)生以所在學(xué)校的圖書管理系統(tǒng)實(shí)現(xiàn)

的功能為基礎(chǔ),進(jìn)行UML軟件建模的拓展訓(xùn)練。也可以參照圖3所示的圖書管理系統(tǒng)實(shí)現(xiàn)的主

要功能為基礎(chǔ)進(jìn)行UML軟件建模的拓展訓(xùn)練。

圖3高校圖書管理系統(tǒng)功能結(jié)構(gòu)圖

【項(xiàng)目實(shí)施軟件環(huán)境】

項(xiàng)目實(shí)施軟件環(huán)境主要包括操作系統(tǒng)平臺和建模工具軟件。在進(jìn)行數(shù)據(jù)庫建模時(shí)采用MS

SQLServer數(shù)據(jù)庫平臺,在進(jìn)行雙向工程時(shí)采用Java開發(fā)環(huán)境。具體軟件環(huán)境如下:

操作系統(tǒng)平臺:Windows7。

建模工具軟件:EnterpriseArchitect、PowerDesigner、Visio、RationalSoftwareArchitect。

Java開發(fā)平臺:MyEclipse、JDK1.6。

數(shù)據(jù)庫平臺:MSSQLServer2008。

【項(xiàng)目實(shí)施計(jì)劃】

UML軟件建模課程通常安排16周或18周,每周4課時(shí),總計(jì)為64課時(shí)或72課時(shí)。根據(jù)

項(xiàng)目案例說明3

這樣的課時(shí)安排,本項(xiàng)目教程的教學(xué)實(shí)施的主要內(nèi)容包括軟件工程概述、面向?qū)ο蠹夹g(shù)、UML

基礎(chǔ)知識、UML建模技術(shù),以及綜合項(xiàng)目實(shí)訓(xùn)等。下面給出64課時(shí)的實(shí)施計(jì)劃建議,根據(jù)學(xué)生

情況和學(xué)校教學(xué)安排等實(shí)際情況,各位教師可以做出適當(dāng)調(diào)整。

項(xiàng)目項(xiàng)目標(biāo)題建議課時(shí)項(xiàng)目項(xiàng)目標(biāo)題建議課時(shí)

項(xiàng)目一認(rèn)識軟件工程4項(xiàng)目六數(shù)據(jù)庫建模4

項(xiàng)目二面向?qū)ο蠓椒ㄅc軟件建模6項(xiàng)目七動態(tài)建模14

項(xiàng)目三認(rèn)識UML6項(xiàng)目八物理建模4

項(xiàng)目四用例建模6項(xiàng)目九雙向工程4

項(xiàng)目五靜態(tài)建模8項(xiàng)目十綜合項(xiàng)目實(shí)訓(xùn)8

目錄

CONTENTS

項(xiàng)目一認(rèn)識軟件工程1

【任務(wù)1-1】認(rèn)識軟件與軟件工程2

【任務(wù)1-2】認(rèn)識軟件生命周期7

【任務(wù)1-3】認(rèn)識軟件過程模型9

【項(xiàng)目回顧】15

【拓展訓(xùn)練】16

項(xiàng)目二面向?qū)ο蠓椒ㄅc軟件建模17

【任務(wù)2-1】認(rèn)識面向?qū)ο蠓椒?8

【任務(wù)2-2】了解面向?qū)ο蠡靖拍钆c特征21

【任務(wù)2-3】軟件建模28

【項(xiàng)目回顧】34

【拓展訓(xùn)練】35

項(xiàng)目三認(rèn)識UML37

【任務(wù)3-1】了解UML結(jié)構(gòu)38

【任務(wù)3-2】了解UML視圖和圖43

【任務(wù)3-3】UML建模工具49

【項(xiàng)目回顧】55

【拓展訓(xùn)練】56

項(xiàng)目四用例建模57

【任務(wù)4-1】了解用例圖的基礎(chǔ)知識58

【任務(wù)4-2】繪制用例圖66

【項(xiàng)目回顧】85

【拓展訓(xùn)練】86

項(xiàng)目五靜態(tài)建模87

【任務(wù)5-1】了解類圖的基礎(chǔ)知識88

【任務(wù)5-2】繪制類圖99

【任務(wù)5-3】了解對象圖的基礎(chǔ)知識115

【任務(wù)5-4】繪制對象圖118

【項(xiàng)目回顧】129

【拓展訓(xùn)練】130

2UML軟件建模項(xiàng)目化教程

項(xiàng)目六數(shù)據(jù)庫建模131

【任務(wù)6-1】配置PowerDesigner安裝與使用環(huán)境132

【任務(wù)6-2】熟悉PowerDesigner建模過程146

【任務(wù)6-3】創(chuàng)建概念數(shù)據(jù)模型153

【任務(wù)6-4】創(chuàng)建物理數(shù)據(jù)模型158

【項(xiàng)目回顧】162

【拓展訓(xùn)練】162

項(xiàng)目七動態(tài)建模164

【任務(wù)7-1】了解狀態(tài)圖的基礎(chǔ)知識165

【任務(wù)7-2】繪制狀態(tài)圖173

【任務(wù)7-3】了解活動圖的基礎(chǔ)知識190

【任務(wù)7-4】繪制活動圖195

【任務(wù)7-5】了解順序圖的基礎(chǔ)知識207

【任務(wù)7-6】繪制順序圖211

【任務(wù)7-7】了解通信圖的基礎(chǔ)知識220

【任務(wù)7-8】繪制通信圖222

【項(xiàng)目回顧】227

【拓展訓(xùn)練】228

項(xiàng)目八物理建模229

【任務(wù)8-1】了解組件圖的基礎(chǔ)知識230

【任務(wù)8-2】繪制組件圖233

【任務(wù)8-3】了解部署圖的基礎(chǔ)知識239

【任務(wù)8-4】繪制部署圖241

【項(xiàng)目回顧】247

【拓展訓(xùn)練】248

項(xiàng)目九應(yīng)用雙向工程249

【任務(wù)9-1】應(yīng)用正向工程250

【任務(wù)9-2】應(yīng)用逆向工程267

【項(xiàng)目回顧】274

【拓展訓(xùn)練】274

項(xiàng)目十綜合項(xiàng)目實(shí)訓(xùn)276

【任務(wù)10-1】項(xiàng)目簡介277

【任務(wù)10-2】實(shí)訓(xùn)演練282

【任務(wù)10-3】實(shí)訓(xùn)拓展291

【項(xiàng)目回顧】297

【拓展訓(xùn)練】297

參考文獻(xiàn)298

項(xiàng)目一

認(rèn)識軟件工程

自從世界上第一臺計(jì)算機(jī)出現(xiàn)以后,軟件經(jīng)過幾十年的飛速發(fā)展,為各行各業(yè)的信息化實(shí)

現(xiàn)提供了強(qiáng)勁的技術(shù)保障。隨著社會各行業(yè)應(yīng)用需求的不斷增長,導(dǎo)致軟件系統(tǒng)的需求越來越

復(fù)雜,規(guī)模越來越龐大,開發(fā)難度越來越大,因而,開發(fā)成本也越高,質(zhì)量也難以保證,項(xiàng)目

成功率低。軟件在開發(fā)和維護(hù)過程中遇到一系列嚴(yán)重問題,從而產(chǎn)生“軟件危機(jī)”。為了解決

“軟件危機(jī)”的問題,或者盡量減少“軟件危機(jī)”帶來的負(fù)面影響,人們開始使用工程的方法對

軟件開發(fā)過程進(jìn)行管理,逐步形成了“軟件工程”的知識領(lǐng)域。

本項(xiàng)目將介紹軟件和軟件工程的基本概念、軟件生命周期和軟件過程模型等方面的基礎(chǔ)知

識,是進(jìn)行UML軟件建模前所必須掌握的基礎(chǔ)知識。

項(xiàng)目指導(dǎo)

任務(wù)1-1:認(rèn)識軟件與軟件工程

項(xiàng)目分解任務(wù)1-2:認(rèn)識軟件生命周期

任務(wù)1-3:認(rèn)識軟件過程模型

(1)理解軟件、軟件工程、軟件生命周期的概念

(2)了解軟件的特點(diǎn),掌握軟件的分類

(3)了解軟件危機(jī)的產(chǎn)生及表現(xiàn)

知識目標(biāo)

(4)掌握傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)各自的特點(diǎn)

(5)理解瀑布模型、V模型、快速原型模型、增量模型、螺旋模型和噴泉模型等經(jīng)典軟

件過程模型的基本思想、特點(diǎn)和優(yōu)缺點(diǎn)

(1)能夠區(qū)別軟件和硬件,并描述二者的關(guān)聯(lián)和各自的特點(diǎn)

(2)能夠列舉當(dāng)今市場主流的軟件產(chǎn)品和硬件產(chǎn)品,并且分別對這些軟硬件產(chǎn)品進(jìn)行分類

技能目標(biāo)

(3)能夠以某真實(shí)軟件項(xiàng)目為例,描述其生命周期及各個(gè)階段的主要任務(wù)工作和成果

(4)能夠以某真實(shí)軟件項(xiàng)目為例,分析其開發(fā)過程中所采用的過程模型

【項(xiàng)目指導(dǎo)】——【項(xiàng)目分析】——【任務(wù)1-1】——【任務(wù)1-2】——【任務(wù)1-3】——

項(xiàng)目導(dǎo)航

【項(xiàng)目回顧】——【拓展訓(xùn)練】

項(xiàng)目分析

人們對軟件和軟件工程的認(rèn)識,無論是概念,還是實(shí)現(xiàn)的方法、工具、技術(shù)和管理,都在

2UML軟件建模項(xiàng)目化教程

不斷地發(fā)展,對軟件的理解越來越透徹,對軟件的應(yīng)用越來越廣泛,并且不斷地創(chuàng)新和發(fā)展。

本項(xiàng)目將詳細(xì)介紹軟件的概念和分類、軟件危機(jī)、軟件工程的概念、軟件生命周期和過程模型

等各方面的內(nèi)容。

本項(xiàng)目分為3個(gè)任務(wù)來實(shí)現(xiàn)不同的目標(biāo),具體的任務(wù)分解如下:

任務(wù)1-1:認(rèn)識軟件與軟件工程。了解軟件的概念、軟件的分類、軟件危機(jī)、軟件工程的概

念、軟件工程方法學(xué)等相關(guān)內(nèi)容。

任務(wù)1-2:認(rèn)識軟件生命周期。了解軟件生命周期的劃分和各個(gè)階段的主要工作等相關(guān)內(nèi)容。

任務(wù)1-3:認(rèn)識軟件過程模型。理解瀑布模型、V模型、快速原型模型、增量模型、螺旋模

型和噴泉模型等主要軟件過程模型。

【任務(wù)1-1】認(rèn)識軟件與軟件工程

隨著計(jì)算機(jī)技術(shù)、信息技術(shù)的發(fā)展,軟件的概念、軟件項(xiàng)目開發(fā)的方法、工具、技術(shù)和管

理都在不斷地發(fā)展而逐步完善、成熟和創(chuàng)新。隨著軟件危機(jī)的出現(xiàn),使用工程學(xué)的方法來實(shí)現(xiàn)

和管理軟件開發(fā)項(xiàng)目已成必然,因而形成了“軟件工程”知識領(lǐng)域。

軟件已經(jīng)滲透到了社會的各個(gè)領(lǐng)域。對軟件及軟件工程的概念、相關(guān)知識的理解與應(yīng)用是

軟件技術(shù)或計(jì)算機(jī)技術(shù)相關(guān)專業(yè)的人員必須了解和掌握的。

本任務(wù)需要學(xué)習(xí)如下內(nèi)容。

軟件的概念。

軟件的分類。

軟件危機(jī)的產(chǎn)生。

軟件工程的概念。

軟件工程方法學(xué)。

1.軟件的概念

軟件經(jīng)過幾十年的發(fā)展,到現(xiàn)在,已經(jīng)在當(dāng)今的信息產(chǎn)業(yè)中占絕對的主導(dǎo)地位,扮演著重

要的、多重的角色。什么是軟件呢?對軟件定義的理解是隨著計(jì)算機(jī)技術(shù)、信息技術(shù)的發(fā)展而

逐步變化、完善和成熟的。人們對軟件的概念理解可以分為四個(gè)階段。

第一階段,20世紀(jì)50年代到60年代。人們通過編寫越來越多的程序讓計(jì)算機(jī)硬件運(yùn)行起

來,達(dá)到相應(yīng)的應(yīng)用目的。在當(dāng)時(shí),人們認(rèn)為軟件就是程序,即“軟件=程序”。而程序就是一

系列指令序列的集合,這些指令序列集合能被計(jì)算機(jī)硬件識別、存儲、理解和執(zhí)行。

第二階段,20世紀(jì)60年代到70年代。隨著對計(jì)算機(jī)系統(tǒng)的需求逐漸變多且復(fù)雜,程序的

規(guī)模逐漸增大,編寫的周期也逐漸變長,一個(gè)程序的編寫團(tuán)隊(duì)人員數(shù)量也比較多,編寫過程中

產(chǎn)生的中間成果也較多。因此,人們開始認(rèn)識到在程序編寫過程中,開發(fā)文檔的作用不容忽視,

開始提出將程序分析、設(shè)計(jì)、實(shí)現(xiàn)、測試和維護(hù)等文檔歸于軟件中來。這時(shí),形成了軟件就是

程序和相關(guān)的開發(fā)文檔的概念,即“軟件=程序+文檔”。

第三個(gè)階段,20世紀(jì)70年代以后至20世紀(jì)末。軟件需求變得更復(fù)雜,軟件規(guī)模也變得

項(xiàng)目一認(rèn)識軟件工程3

更加龐大,數(shù)據(jù)是程序執(zhí)行的基礎(chǔ)和對象,數(shù)據(jù)量也不斷增大,程序在運(yùn)行過程中需要存儲、訪

問和處理數(shù)據(jù)的需求已經(jīng)相當(dāng)重要了,對數(shù)據(jù)這些方面的需求也是衡量軟件效率和質(zhì)量的重要依

據(jù)。因此,人們又給軟件的定義加上了數(shù)據(jù),即“軟件=程序+文檔+數(shù)據(jù)”。1983年IEEE為軟件

下的定義是:計(jì)算機(jī)程序、方法、規(guī)則和相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行所必需的數(shù)據(jù)。

第四階段,當(dāng)今21世紀(jì)。隨著互聯(lián)網(wǎng)技術(shù)、云計(jì)算和大數(shù)據(jù)技術(shù)的廣泛應(yīng)用,更多不同的

軟件部署在互聯(lián)網(wǎng)上,各種應(yīng)用可以通過互聯(lián)網(wǎng)提供。這樣軟件作為一種服務(wù),通過“按需分

配”“付費(fèi)使用”的模式提供應(yīng)用服務(wù)。因此,軟件作為一種服務(wù),正被人們廣泛接受,即“軟

件=程序+文檔+數(shù)據(jù)+服務(wù)”。

軟件與硬件是計(jì)算機(jī)系統(tǒng)中相互依存的兩個(gè)重要組成部分,也都是產(chǎn)品。但軟件有自身的

一些特點(diǎn),軟件的特點(diǎn)比較多,主要表現(xiàn)在如下幾個(gè)方面。

①軟件不具備明顯的物理特性。軟件是一種邏輯實(shí)體,在物理上并不是一種有形產(chǎn)品。

其特性是抽象的,有別于現(xiàn)實(shí)世界中具體物理實(shí)體,不具備外觀、重量、顏色等物理特性。

②軟件對計(jì)算機(jī)系統(tǒng)有一定的依賴性。軟件的開發(fā)和運(yùn)行通常會受到計(jì)算機(jī)系統(tǒng)的限制,

如CPU的處理能力、計(jì)算機(jī)系統(tǒng)的總體結(jié)構(gòu)、計(jì)算機(jī)系統(tǒng)的內(nèi)存和外存、計(jì)算機(jī)的顯示設(shè)備等

各種硬件設(shè)備的限制。

③軟件是被開發(fā)或設(shè)計(jì)出來的。軟件不是一種有形的物理產(chǎn)品,一般有形的物理產(chǎn)品是被

制造出來的,如通過磨具、機(jī)器等設(shè)備制造出來。軟件是軟件開發(fā)人員的智力勞動成果,通過

手工編寫程序代碼開發(fā)出來的,軟件產(chǎn)品是軟件開發(fā)人員智力結(jié)果的一種載體。

④軟件在使用過程中,沒有磨損和老化問題。一般情況下,有形的物理硬件產(chǎn)品在使用

過程中不斷有磨損和老化現(xiàn)象。物理硬件產(chǎn)品在使用初期,是磨合期,物理磨損通常是比較嚴(yán)

重的,但經(jīng)過一段時(shí)間的磨合后,將進(jìn)入相當(dāng)穩(wěn)定的時(shí)期,隨著時(shí)間的流逝,硬件的磨損將再

次趨于嚴(yán)重,這個(gè)時(shí)候,硬件的使用壽命實(shí)際上即將結(jié)束。硬件因磨損導(dǎo)致的失效率與時(shí)間關(guān)

系如圖1-1所示。

軟件不是一種有形的物理產(chǎn)品,不存在磨損和老化問題。但也會因程序錯(cuò)誤而失效。在軟

件運(yùn)行初期,未知的錯(cuò)誤使程序的失效率比較高,當(dāng)修正這些錯(cuò)誤后而未引入新錯(cuò)誤后,軟件

運(yùn)行穩(wěn)定。但在運(yùn)行一段時(shí)間后,又可能會引入新的錯(cuò)誤后而產(chǎn)生失效,這時(shí)又需要修正錯(cuò)誤

使軟件運(yùn)行穩(wěn)定,經(jīng)過多次修改,形成了鋸齒形的失效率曲線。軟件因錯(cuò)誤導(dǎo)致的失效率與時(shí)

間的關(guān)系如圖1-2所示。

圖1-1硬件失效率曲線圖1-2軟件失效率曲線

4UML軟件建模項(xiàng)目化教程

⑤軟件開發(fā)過程中,具有復(fù)雜性和不確定性?,F(xiàn)代軟件需求越來越復(fù)雜多樣,并且需求變

化比較頻繁,規(guī)模也更大,開發(fā)過程更長且復(fù)雜,涉及技術(shù)和學(xué)科更多,無論從管理方面還是

技術(shù)方面,涉及的因素相當(dāng)多,遇到的風(fēng)險(xiǎn)也多,這就導(dǎo)致軟件開發(fā)是個(gè)復(fù)雜的過程,具有復(fù)

雜性、多樣性和不確定性等特征。

2.軟件的分類

軟件在各行各業(yè)應(yīng)用非常普及,軟件數(shù)量和規(guī)模都相當(dāng)驚人。對軟件進(jìn)行分類沒有一個(gè)統(tǒng)

一的、嚴(yán)格的標(biāo)準(zhǔn),但根據(jù)市場主流的常用軟件產(chǎn)品的應(yīng)用情況,可從不同的角度對軟件進(jìn)行

適當(dāng)?shù)姆诸?。常用軟件的分類情況如表1-1所示。

表1-1常用軟件分類情況表

序號分類依據(jù)類別描述

計(jì)算機(jī)系統(tǒng)不可缺少的組成部分,能使計(jì)算機(jī)各個(gè)部件、其他軟件協(xié)調(diào)工作,

系統(tǒng)軟件

如操作系統(tǒng)(Windows、Linux)、驅(qū)動程序、通信處理程序等

1按功能分類支撐軟件用于開發(fā)軟件的工具性軟件,如各種開發(fā)軟件包(jdk)和專用工具軟件等

在某一領(lǐng)域中,為解決某特定目的服務(wù)而開發(fā)的一類軟件,如電子商務(wù)系統(tǒng)、

應(yīng)用軟件

電子政務(wù)系統(tǒng)、企業(yè)管理信息系統(tǒng)等

商業(yè)軟件版權(quán)受法律保護(hù),經(jīng)授權(quán)才能使用,并且需付費(fèi)購買的軟件

2按版權(quán)分類共享軟件與商業(yè)軟件類似,但可以“先試用再付費(fèi)”,其獲取途徑主要是通過Internet

自由軟件無須支付任何費(fèi)用即可得到并使用的軟件,獲取途徑類似于共享軟件

由軟件開發(fā)機(jī)構(gòu)開發(fā)出來直接提供給市場,為大多數(shù)用戶服務(wù)的軟件,具有

通用軟件

通用性,如Office、Photoshop等

3按服務(wù)對象分類

受某特定用戶的委托,在合同的約束下開發(fā)出來的軟件,如為某個(gè)企業(yè)開發(fā)

定制軟件

購物商城系統(tǒng)、為某個(gè)政府機(jī)構(gòu)開發(fā)電子政務(wù)系統(tǒng)

3.軟件危機(jī)

軟件危機(jī)出現(xiàn)于20世紀(jì)60年代末,在1968年在德國Garmisch軟件工程大會上第一次提

出“軟件危機(jī)”術(shù)語。EdsgerDijkstra在1972年ACM圖靈獎演講中解釋:“軟件危機(jī)的主要原

因是與之前相比,機(jī)器能力已經(jīng)增強(qiáng)了幾個(gè)數(shù)量級!直截了當(dāng)?shù)卣f:只要沒有機(jī)器能力的變化,

編程是一點(diǎn)問題都沒有;當(dāng)用一些很差的計(jì)算機(jī)時(shí),編程是一個(gè)小問題,現(xiàn)在有龐大的計(jì)算機(jī),

編程也成為一個(gè)同樣大的問題?!?/p>

軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)與維護(hù)過程中所遇到的一系列嚴(yán)重問題。這些問題可能

導(dǎo)致軟件不能正常運(yùn)行,或運(yùn)行效率嚴(yán)重下降,運(yùn)行效果無法滿足實(shí)際需求。實(shí)際上,絕大多

數(shù)軟件都不同程度地受這些問題的影響。概括性地說,軟件危機(jī)體現(xiàn)在兩個(gè)方面:一是如何開

發(fā)軟件,以滿足對軟件日益增長的需求;二是如何維護(hù)軟件,以使已經(jīng)開發(fā)出來的軟件能提供

高質(zhì)量的服務(wù)。

軟件開發(fā)周期長、成本高、質(zhì)量差、維護(hù)困難,這些都是軟件危機(jī)的體現(xiàn),軟件危機(jī)與硬

件和軟件開發(fā)過程的復(fù)雜性是分不開的。具體地說,軟件危機(jī)主要表現(xiàn)在如下幾個(gè)方面。

①對軟件開發(fā)的進(jìn)度和成本估算不準(zhǔn),難以預(yù)測,難以控制。在進(jìn)度方面,拖延很嚴(yán)重,

實(shí)際進(jìn)度比預(yù)期計(jì)劃進(jìn)度拖延幾個(gè)月甚至幾年的現(xiàn)象經(jīng)常出現(xiàn)。在成本方面,超支很嚴(yán)重,實(shí)

際花費(fèi)的成本往往比預(yù)算的成本超出很多,甚至有可能超出一個(gè)數(shù)量級別。而為了趕進(jìn)度或節(jié)

項(xiàng)目一認(rèn)識軟件工程5

約成本,采取的一些措施往往損害了軟件產(chǎn)品的質(zhì)量。

②用戶對軟件產(chǎn)品的需求難以滿足。客戶對軟件需求無法明確且經(jīng)常變化,開發(fā)人員無法

與用戶進(jìn)行充分的交流,導(dǎo)致開發(fā)人員很難真正掌握客戶的確切需求,在這樣的情況下進(jìn)行“閉

門造車”式的軟件開發(fā),必將導(dǎo)致開發(fā)出來的產(chǎn)品與客戶實(shí)際需求不相符合。

③軟件產(chǎn)品的質(zhì)量無法保證。由于軟件開發(fā)過程中的技術(shù)缺陷或管理不科學(xué)等原因,往往

無法達(dá)到軟件的可靠性和質(zhì)量保證要求,導(dǎo)致軟件產(chǎn)品發(fā)生質(zhì)量問題。

④軟件產(chǎn)品難以維護(hù)。軟件維護(hù)是在軟件開發(fā)完成后的艱巨又復(fù)雜的工作,并且花費(fèi)代價(jià)

也很高。由于在開發(fā)過程中的技術(shù)原因、管理原因,或者對軟件問題的認(rèn)識錯(cuò)誤,導(dǎo)致軟件問

題在運(yùn)行維護(hù)過程中無法修正,或者修正代價(jià)特別高。

⑤軟件產(chǎn)品缺乏適當(dāng)?shù)奈臋n。軟件不僅僅是指程序,還應(yīng)包括一套完整的相關(guān)文檔。無論

是開發(fā)過程中,還是維護(hù)過程中,這套文檔資料是至關(guān)重要、必不可少的。如果缺乏必要的文

檔資料,必然給軟件開發(fā)和維護(hù)帶來許多嚴(yán)重的困難和問題。

⑥軟件開發(fā)生產(chǎn)率跟不上計(jì)算機(jī)應(yīng)用的發(fā)展趨勢。軟件開發(fā)的效率跟不上硬件的發(fā)展速

度,也跟不上用戶對計(jì)算機(jī)應(yīng)用需求的增長,必將無法及時(shí)交付合適的軟件,導(dǎo)致軟件最終滿

足不了社會發(fā)展需求的高速增長。

軟件在開發(fā)和維護(hù)過程為什么會出現(xiàn)那么多嚴(yán)重問題而導(dǎo)致產(chǎn)生“軟件危機(jī)”呢?原因是

多方面的,但總的來說,可以歸結(jié)為客觀和主觀兩方面的原因。在客觀方面是由于軟件本身的

特點(diǎn)而導(dǎo)致的,在主觀方面是在軟件開發(fā)和維護(hù)過程中所采用的方法不正確是一個(gè)重要原因。

軟件是一種邏輯實(shí)體,不同于物理實(shí)體,不具備外觀形狀、質(zhì)量等物理特性,是一種無明

顯“可見性”的邏輯產(chǎn)品,在開發(fā)過程中遇到的影響因素和問題是無法完全掌控的,因而,在

開發(fā)過程中很難預(yù)見將來在運(yùn)行時(shí)會出現(xiàn)什么問題。一般情況下,軟件開發(fā)過程是復(fù)雜的,由

許多人一起合作完成,他們的技術(shù)、經(jīng)驗(yàn)和方法都不同,更容易產(chǎn)生疏漏和錯(cuò)誤。

軟件最終是解決用戶的需求問題,但在開發(fā)過程中,用戶和開發(fā)人員就軟件的需求往往不

能達(dá)成百分之百的共識,用戶無法描述其真正的全部需求,尤其是在開發(fā)初期,開發(fā)人員無法

準(zhǔn)確地、完整地理解用戶的實(shí)際需求。同時(shí),在開發(fā)過程不斷變更需求,必將導(dǎo)致軟件系統(tǒng)的

不穩(wěn)定性和不可靠性,這些將帶來很多問題隱患。

在軟件開發(fā)和維護(hù)過程中,缺乏科學(xué)的方法、技術(shù)和工具,過程管理混亂,以及“輕需求、

重編程”“輕維護(hù)、重開發(fā)”“輕文檔、重代碼”等錯(cuò)誤的觀念,嚴(yán)重降低了軟件質(zhì)量、可靠性

和穩(wěn)定性,大大提高了“軟件危機(jī)”的發(fā)生率。

隨著軟件危機(jī)的不斷出現(xiàn),以及軟件規(guī)模越來越大,人們認(rèn)識到過程管理混亂、文檔繁雜

而無規(guī)范、開發(fā)方式作坊化無法保證軟件的質(zhì)量,無法避免軟件危機(jī)的出現(xiàn)。因此,人們開始

探索用“工程化”的思想來指導(dǎo)軟件開發(fā),即在軟件開發(fā)、管理、維護(hù)和更新過程中,使用軟

件工程的概念、原理、技術(shù)和方法,從技術(shù)方面和管理方面采取相應(yīng)的措施,解決軟件開發(fā)過

程中的混亂和困難,力求從根本上解決軟件危機(jī)。逐漸形成了一個(gè)新的領(lǐng)域——“軟件工程”。

4.軟件工程的概念

“軟件工程”的首次提出,是于1968年北大西洋公約組織(NATO)在聯(lián)邦德國召開的一次

會議上。主要思想是“把軟件當(dāng)成一種工業(yè)產(chǎn)品”,要求采用工程化的原理與方法對軟件進(jìn)行計(jì)

劃、開發(fā)和維護(hù),以實(shí)現(xiàn)生產(chǎn)高質(zhì)量、低成本的軟件產(chǎn)品的目標(biāo)。

6UML軟件建模項(xiàng)目化教程

1983年,IEEE給軟件工程的定義是:“軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方

法?!避浖こ淌茄芯堪严到y(tǒng)化、規(guī)范化、可度量的工程化途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)的

過程。

軟件工程涉及軟件開發(fā)技術(shù)和軟件工程管理兩個(gè)方面。2004年,IEEE發(fā)布的《軟件工程知

識體系指南》(SWEBOK)中將軟件工程知識體系劃分為10個(gè)知識領(lǐng)域。

軟件需求(softwarerequirements)。

軟件設(shè)計(jì)(softwaredesign)。

軟件構(gòu)建(softwareconstruction)。

軟件測試(softwaretesting)。

軟件維護(hù)(softwaremaintenance)。

軟件配置管理(softwareconfigurationmanagement)。

軟件工程管理(softwareengineeringmanagement)。

軟件工程過程(softwareengineeringprocess)。

軟件工程工具和方法(softwareengineeringtoolsandmethods)。

軟件質(zhì)量(softwarequality)。

概括地說,軟件工程就是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。采用工程化的概念、原

理、技術(shù)和方法來開發(fā)和維護(hù)軟件,把科學(xué)的、正確的、已經(jīng)驗(yàn)證的管理技術(shù)與當(dāng)前最好的開

發(fā)技術(shù)和方法結(jié)合起來,降低開發(fā)成本,縮短開發(fā)周期,提高軟件質(zhì)量,從而避免軟件危機(jī)。

5.軟件工程方法學(xué)

軟件工程方法學(xué)是指在軟件生命周期全過程中使用的一套完整的工具、技術(shù)和方法。以關(guān)

注軟件質(zhì)量為目標(biāo),由方法、工具和過程3個(gè)要素構(gòu)成。其中,方法為軟件開發(fā)中完成各種任

務(wù)提供“如何做”的技術(shù)和方法,涉及項(xiàng)目成本估算、軟件需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)和

軟件維護(hù)等各個(gè)方面。工具為軟件工程方法提供自動或半自動的軟件支撐環(huán)境。過程將軟件工

程的方法和工具綜合起來,以達(dá)到合理地、及時(shí)地進(jìn)行軟件開發(fā)的目的,為開發(fā)出高質(zhì)量的軟

件提供了一系列的需要完成的任務(wù)框架和工作步驟。

目前,使用最廣泛的軟件工程方法學(xué)主要有傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。

(1)傳統(tǒng)方法學(xué)

傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化法。在完成軟件分析、設(shè)計(jì)和實(shí)現(xiàn)的各項(xiàng)任務(wù)

時(shí)采用結(jié)構(gòu)化技術(shù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境支持結(jié)構(gòu)化技術(shù)的運(yùn)用。這種方法

學(xué)將軟件生命周期的全過程依次劃分多個(gè)階段,每個(gè)階段都有相對獨(dú)立的任務(wù),然后順序地完

成每個(gè)階段的任務(wù)。各個(gè)階段有嚴(yán)格的先后次序,前一個(gè)階段的工作完成和工作成果是后一個(gè)

階段的前提和基礎(chǔ),每個(gè)階段的開始和結(jié)束都有嚴(yán)格的標(biāo)準(zhǔn)。每個(gè)階段都有標(biāo)志性的工作完成

或標(biāo)志性的成果產(chǎn)生,每個(gè)階段的開發(fā)成果必須經(jīng)過嚴(yán)格的檢查和評審,評審?fù)ㄟ^,該階段的

工作才算結(jié)束,然后進(jìn)入下一個(gè)階段的開發(fā)工作,如果評審沒有通過,則須返工,返工后再進(jìn)

行檢查和評審,直到評審?fù)ㄟ^。這樣每個(gè)階段都有高質(zhì)量的工作成果,尤其是具有規(guī)范的文檔

資料,提高了軟件開發(fā)的成功率,保證了軟件的質(zhì)量,提高了軟件的可維護(hù)性。

傳統(tǒng)方法學(xué)的明顯特點(diǎn)是自頂向下、逐步求精,有嚴(yán)格的階段性評審。這種方法具有操作

簡單、降低軟件開發(fā)的復(fù)雜度、保證了軟件質(zhì)量等優(yōu)點(diǎn)。但也有缺點(diǎn),在開發(fā)前期,就需要了

解詳細(xì)的、明確的用戶需求,這往往是不現(xiàn)實(shí)的,也難于適應(yīng)需求變化頻繁的系統(tǒng),因此,不

項(xiàng)目一認(rèn)識軟件工程7

太適合前期需求不明確、需求變化頻繁的軟件項(xiàng)目。

(2)面向?qū)ο蠓椒▽W(xué)

當(dāng)軟件規(guī)模龐大、需求復(fù)雜且變化頻繁的時(shí)候,采用傳統(tǒng)方法學(xué)進(jìn)行軟件開發(fā)不是一個(gè)很

好的選擇,這時(shí)選擇面向?qū)ο蠓椒▽W(xué)可以達(dá)到理想的效果。面向?qū)ο蠓椒▽W(xué)引入了類和對象的

概念,盡量模擬人類的思維習(xí)慣,把人類認(rèn)識世界、解決問題的方法和過程應(yīng)用到軟件工程領(lǐng)

域。對象是融合了數(shù)據(jù)及在數(shù)據(jù)上操作行為的一個(gè)軟件構(gòu)件,面向?qū)ο蟪绦蚴怯刹煌膶ο髽?gòu)

成,對象是程序的構(gòu)成元素,對象和對象之間通過消息進(jìn)行通信。具有相同數(shù)據(jù)和相同操作的

一組相似對象抽象成一個(gè)類。同時(shí),通過父類和子類的繼承關(guān)系,使若干個(gè)相關(guān)的類形成一個(gè)

層次結(jié)構(gòu)的系統(tǒng)。

面向?qū)ο蠓椒▽W(xué)在軟件的分析、設(shè)計(jì)和實(shí)現(xiàn)等過程中都采用面向?qū)ο蠹夹g(shù),其明顯的特點(diǎn)

是以對象作為基本的構(gòu)成要素,利用抽象、分類、繼承、聚合、封裝等人類常用思維習(xí)慣分析

和設(shè)計(jì)系統(tǒng)。使用面向?qū)ο蠓椒ㄩ_發(fā)軟件的過程是一個(gè)多次反復(fù)迭代的演化過程。通過概念上

和表示方法上的一致性,保證了開發(fā)過程中各項(xiàng)任務(wù)的平滑的過渡和實(shí)現(xiàn)。降低了軟件開發(fā)的

復(fù)雜度,提高了軟件的可理解性和可維護(hù)性,并且更容易地實(shí)現(xiàn)了軟件的重用,降低了軟件開

發(fā)成本。

列舉當(dāng)今市場上主流的系統(tǒng)軟件產(chǎn)品,并對這些軟件產(chǎn)品做簡單介紹。

列舉幾個(gè)軟件危機(jī)的現(xiàn)象,并分析產(chǎn)生這些危機(jī)的主要原因。

【任務(wù)1-2】認(rèn)識軟件生命周期

軟件如同現(xiàn)實(shí)世界的客觀物體一樣,具有生命周期,軟件的生命周期就是從軟件提出到軟

件廢棄的全過程。軟件生命周期是軟件工程中的一個(gè)重要概念。一個(gè)軟件的生命周期可劃分為

多個(gè)相互區(qū)別又相互聯(lián)系的不同階段,每個(gè)階段都有各自相對獨(dú)立的任務(wù),每個(gè)階段的相關(guān)開

發(fā)人員各有自己的職責(zé)范圍,分工協(xié)作,保證軟件開發(fā)各項(xiàng)任務(wù)順利完成。

軟件生命周期一般由軟件定義、軟件開發(fā)和軟件運(yùn)行維護(hù)3個(gè)時(shí)期組成。每個(gè)時(shí)期又可以

進(jìn)一步劃分成若干階段。本任務(wù)將描述軟件生命周期各個(gè)階段的劃分以及主要任務(wù)。

軟件定義時(shí)期。

軟件開發(fā)時(shí)期。

軟件運(yùn)行維護(hù)時(shí)期。

1.軟件定義時(shí)期

軟件定義時(shí)期是完成軟件規(guī)劃和需求分析的階段。其主要任務(wù)是:確定軟件系統(tǒng)“要解決

什么”,確定軟件工程必須達(dá)到的總目標(biāo);從技術(shù)方面、資源方面和管理方面進(jìn)行可行性研究;

分析并確定軟件用戶的實(shí)際需求。軟件定義時(shí)期可以進(jìn)一步劃分為問題定義、可行性研究和需

8UML軟件建模項(xiàng)目化教程

求分析等階段。

(1)問題定義

通過對用戶的前期調(diào)研,確定系統(tǒng)要解決的問題、目標(biāo)和規(guī)模,形成用戶的初步需求報(bào)告。

該階段主要解決軟件系統(tǒng)“是什么”或“要解決什么”的問題。

(2)可行性研究

根據(jù)用戶確定的初步需求報(bào)告,結(jié)合現(xiàn)實(shí)項(xiàng)目條件,從技術(shù)、財(cái)務(wù)、組織、經(jīng)濟(jì)、社會、

風(fēng)險(xiǎn)等方面進(jìn)行可行性以及投資必要性等方面的分析,形成可行性分析報(bào)告。根據(jù)軟件工程項(xiàng)

目的實(shí)際情況,可以分步進(jìn)行初步可行性分析和詳細(xì)可行性分析。在這個(gè)階段除了形成可行性

分析報(bào)告外,如果可行性分析報(bào)告通過了確認(rèn),還可以制定項(xiàng)目計(jì)劃任務(wù)書。該階段主要解決

軟件系統(tǒng)“可行嗎”的問題。

(3)需求分析

軟件需求是用戶對軟件系統(tǒng)在功能、性能、約束等方面的期望。需求分析階段主要完成軟

件系統(tǒng)的功能性需求分析、非功能性需求分析(如可用性、性能、可靠性等)、設(shè)計(jì)約束條件分

析(如操作系統(tǒng)的要求、數(shù)據(jù)庫平臺的要求等)。最后形成軟件需求規(guī)格說明書。該階段主要解

決軟件系統(tǒng)的“做什么”“做得怎么樣”的問題。

2.軟件開發(fā)時(shí)期

軟件開發(fā)時(shí)期的主要任務(wù)是完成軟件設(shè)計(jì)、軟件實(shí)現(xiàn)(編程)和軟件測試的工作。可以進(jìn)

一步劃分為概要設(shè)計(jì)(總體設(shè)計(jì)、架構(gòu)設(shè)計(jì))、詳細(xì)設(shè)計(jì)、編碼和單元測試、綜合測試等階段。

(1)概要設(shè)計(jì)

概要設(shè)計(jì)又可稱為總體設(shè)計(jì)(架構(gòu)設(shè)計(jì))。該階段的主要任務(wù):根據(jù)軟件需求規(guī)格說明書,

對軟件系統(tǒng)進(jìn)行總體功能結(jié)構(gòu)的設(shè)計(jì);定義各功能模塊的接口;實(shí)現(xiàn)數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)和

邏輯結(jié)構(gòu)設(shè)計(jì);定義軟件系統(tǒng)的邊界,并描述系統(tǒng)設(shè)計(jì)的約束;最后形成各種相關(guān)概要設(shè)計(jì)文

檔。該階段主要解決“如何做”的問題。

(2)詳細(xì)設(shè)計(jì)

概要設(shè)計(jì)階段對軟件系統(tǒng)的功能模塊以抽象概括性方式進(jìn)行了設(shè)計(jì)。而詳細(xì)設(shè)計(jì)階段則是

對各功能模塊的具體實(shí)現(xiàn)細(xì)節(jié)進(jìn)行詳細(xì)地設(shè)計(jì),所以也稱為模塊設(shè)計(jì),它確定了實(shí)現(xiàn)功能模塊

所需的具體算法和數(shù)據(jù)結(jié)構(gòu)。最后形成各模塊的詳細(xì)設(shè)計(jì)規(guī)格說明書。該階段主要解決“具體

如何做”的問題。

(3)編碼和單元測試

編碼是將設(shè)計(jì)轉(zhuǎn)化為程序代碼的過程。根據(jù)功能模塊的詳細(xì)設(shè)計(jì)規(guī)格說明書,選擇合適的

軟件開發(fā)語言完成代碼的編寫。同時(shí),對已經(jīng)編碼完的模塊或單元進(jìn)行測試,以驗(yàn)證模塊功能

及接口與詳細(xì)規(guī)格說明書的一致性。該階段的成果包括程序代碼和單元測試文檔。

(4)綜合測試

綜合測試階段通過各種類型的測試檢查已經(jīng)開發(fā)的軟件是否符合用戶需求和設(shè)計(jì)需求。找

出相應(yīng)的錯(cuò)誤并進(jìn)行修復(fù)改正,確定軟件的質(zhì)量,并通過用戶的驗(yàn)收,以保證軟件的順利交付。

綜合測試主要包括集成測試和驗(yàn)收測試。該階段的成果主要包括測試文檔和修改文檔。該階段

主要解決“可用嗎”的問題。

項(xiàng)目一認(rèn)識軟件工程9

3.軟件運(yùn)行維護(hù)時(shí)期

在軟件交付并部署完成后,進(jìn)入運(yùn)行維護(hù)階段,為了提高軟件的運(yùn)行效益及環(huán)境適應(yīng)性,

延長軟件的使用壽命,需要在軟件運(yùn)行期間進(jìn)行合理的維護(hù)。這些維護(hù)工作可以歸結(jié)為改正性

維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)4大類。該階段的主要成果包括軟件運(yùn)行記錄和

軟件維護(hù)記錄等文檔資料。該階段主要解決軟件運(yùn)行“如何支持”“能否持續(xù)”的問題。

描述一個(gè)具體的軟件開發(fā)項(xiàng)目,其開發(fā)過程劃分為哪幾個(gè)階段,簡述各個(gè)階段的主要任務(wù)

和成果。

【任務(wù)1-3】認(rèn)識軟件過程模型

前面介紹了軟件生命周期各個(gè)階段的劃分以及主要任務(wù),但在實(shí)際項(xiàng)目場合,各個(gè)階段的

開發(fā)活動并不是完全的簡單線性關(guān)系,這些開發(fā)階段之間的關(guān)系可能是順序執(zhí)行的線性關(guān)系、

也可能是帶有反饋的迭代關(guān)系,還有可能具有漸進(jìn)、增量、變換等特點(diǎn)。也就是說,軟件生命

周期的整個(gè)過程具有不同類型的過程模型,在開發(fā)過程中可以充分利用各種模型的優(yōu)點(diǎn),順利

地完成軟件過程中的各項(xiàng)活動任務(wù)。軟件過程模型是一種開發(fā)策略,它為軟件工程的各個(gè)階段

需要完成的任務(wù),以及各個(gè)階段之間的關(guān)系提供了一套實(shí)施的范型,是軟件開發(fā)全過程、活動

和任務(wù)的結(jié)構(gòu)框架,概括性地、簡潔地描述了軟件工程中各項(xiàng)活動的實(shí)際情況。

一個(gè)具體的軟件開發(fā)項(xiàng)目,尤其是規(guī)模大的項(xiàng)目,其軟件過程具有周期長、任務(wù)多、人員

多、關(guān)系復(fù)雜等特點(diǎn),要想順利完成開發(fā)過程中的各項(xiàng)任務(wù),選擇一個(gè)合適的軟件過程模型是

很關(guān)鍵的。軟件過程模型比較多,本任務(wù)將介紹如下經(jīng)典的過程模型。

瀑布模型。

V模型。

快速原型模型。

增量模型。

螺旋模型。

噴泉模型。

1.瀑布模型

瀑布模型也稱生命周期模型,是使用最廣泛、最經(jīng)典的一種軟件過程模型。最早是于1970

年由W.Royce提出的。瀑布模型依據(jù)軟件生命周期的劃分,將軟件開發(fā)的過程劃分為軟件計(jì)劃、

需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測試和運(yùn)行維護(hù)6個(gè)階段。明確了每個(gè)階段的任務(wù),規(guī)

定了它們自上而下、相互銜接的固定次序,以線性順序執(zhí)行各項(xiàng)任務(wù),如同奔流不息、逐步拾

級而下的瀑布,因而形象地被稱為“瀑布模型”,如圖1-3所示。

10UML軟件建模項(xiàng)目化教程

圖1-3瀑布模型

瀑布模型要求每個(gè)階段結(jié)束時(shí)進(jìn)行評審,評審?fù)ㄟ^了才算本階段結(jié)束,然后才能進(jìn)行下一

個(gè)階段,如果評審沒有通過,則需返工修改,返工修改后再進(jìn)行評審,直至評審?fù)ㄟ^,再進(jìn)行

下一個(gè)階段。每個(gè)階段都會產(chǎn)生規(guī)范的標(biāo)志性成果。

瀑布模型具有如下幾個(gè)特點(diǎn)。

①嚴(yán)格的順序性和依賴性。瀑布模型的各個(gè)階段間是線性關(guān)系,具有嚴(yán)格的順序性和依賴

性,在前一個(gè)階段的任務(wù)完成之后,才能開始后一個(gè)階段的任務(wù)。前一個(gè)階段的輸出是后一階

段的輸入。只有在前一階段的輸出經(jīng)過評審?fù)ㄟ^后,才能作為后一階段的輸入并開始后一階段

的工作。概括地說,就是先執(zhí)行前一階段的任務(wù),后執(zhí)行后一階段的任務(wù),一個(gè)階段接著一個(gè)

階段,后面階段的開始依賴前一個(gè)階段的正確輸出。

②規(guī)范的文檔化。文檔不僅是軟件的重要組成部分,也是各個(gè)開發(fā)時(shí)期相關(guān)人員進(jìn)行溝通

的媒介,更是運(yùn)行維護(hù)時(shí)期進(jìn)行維護(hù)的重要依據(jù),對軟件質(zhì)量起著相當(dāng)重要的保證作用。瀑布

模型嚴(yán)格規(guī)定了每個(gè)階段必須提交的文檔,文檔必須符合規(guī)范并且需通過評審,以便盡早發(fā)現(xiàn)

問題,改正錯(cuò)誤。

瀑布模型的優(yōu)點(diǎn)是:可要求開發(fā)人員采用規(guī)范的方法,嚴(yán)格提交規(guī)范的文檔,每個(gè)階段有

很好的評審,這些有利于軟件過程的管理和控制,保證軟件的質(zhì)量。

瀑布模型的缺點(diǎn)是:要求在軟件開發(fā)初期就完全確定軟件的所有用戶需求,這是很難做到

的,甚至是不可能的,同時(shí)開發(fā)周期也比較長,這些將帶來較大的風(fēng)險(xiǎn)。適用于需求明確或需

求變更比較少的項(xiàng)目。

2.V模型

在瀑布模型中,測試是在軟件過程的后期,常常作為亡羊補(bǔ)牢的事后行為,不重視測試工

項(xiàng)目一認(rèn)識軟件工程11

作。有統(tǒng)計(jì)數(shù)據(jù)證明,一個(gè)項(xiàng)目的測試工作耗費(fèi)的時(shí)間很長,通常耗費(fèi)50%以上的項(xiàng)目時(shí)間,

可見測試是軟件開發(fā)的重要工作。因此,慢慢就有了重視測試的V模型。V模型其實(shí)是瀑布模

型的一種變種,它清晰地體現(xiàn)了測試活動與分析和設(shè)計(jì)活動相聯(lián)系的情況,如圖1-4所示。

圖1-4V模型

在V模型中,左邊下降的是開發(fā)過程各階段,與此對應(yīng)的是右邊上升的測試過程各個(gè)階段,值

得注意的是,在不同的組織或項(xiàng)目中,對測試階段的命名可能會有所區(qū)別。從圖1-4可知,V模型

非常明確地標(biāo)明了軟件測試的不同測試階段,以及這些測試階段和開發(fā)過程中各階段的對應(yīng)關(guān)系。

①單元測試主要針對程序編碼過程中可能存在的各種錯(cuò)誤,例如用戶輸入驗(yàn)證過程中的邊

界值錯(cuò)誤。

②集成測試主要針對詳細(xì)設(shè)計(jì)中可能存在的問題,尤其是檢查各單元與其他程序之間的接

口中可能存在的各種錯(cuò)誤。

③系統(tǒng)測試主要針對概要設(shè)計(jì)。檢查系統(tǒng)的整體運(yùn)行效果和效率是否達(dá)到了概要設(shè)計(jì)的要求。

④驗(yàn)收測試主要針對需求分析。由業(yè)務(wù)專家和用戶進(jìn)行,確認(rèn)軟件產(chǎn)品是否真正符合用戶

的業(yè)務(wù)需求,所有需求是否都已經(jīng)實(shí)現(xiàn)。

瀑布模型關(guān)注的主要是文檔和制品,而V模型則更關(guān)注的是活動和正確性。V模型適合對

系統(tǒng)性能要求很嚴(yán)格的軟件項(xiàng)目。V模型具有如下幾個(gè)特點(diǎn)。

①簡單易用,開發(fā)步驟和測試步驟明確。

②明確了測試過程與開發(fā)過程的對應(yīng)關(guān)系。

③強(qiáng)調(diào)了測試的重要性,增強(qiáng)了軟件全過程的質(zhì)量意識。

④對開發(fā)過程和測試過程中的迭代和重做活動并沒有真實(shí)反映。

3.快速原型模型

正確的需求定義是軟件系統(tǒng)成功的關(guān)鍵,但許多用戶在開始時(shí)并不能準(zhǔn)確地描述其詳細(xì)需

求。然而,當(dāng)用戶需求不明確,或者用戶無法表達(dá)自己的真實(shí)需求時(shí),最好的辦法是能有一個(gè)

軟件模型,讓用戶有個(gè)直觀的感性認(rèn)識,或者在試用體驗(yàn)過程中不斷提出需求,完善需求,最

后確定用戶詳細(xì)的真實(shí)需求??焖僭湍P途褪沁@樣的,在用戶詳細(xì)需求不是很明確的情況下,

12UML軟件建模項(xiàng)目化教程

根據(jù)用戶初步提出的需求,首先快速構(gòu)建一個(gè)能反映用戶主要需求的軟件原型,然后讓客戶試

用體驗(yàn)并對原型及時(shí)進(jìn)行評價(jià),提出完善的需求建議,進(jìn)一步細(xì)化需補(bǔ)充的需求,再根據(jù)用戶

提出的需求立即修改,如此反復(fù)進(jìn)行,直到得到用戶確定的全部軟件需求定義,然后完成軟件

的設(shè)計(jì)、實(shí)現(xiàn)和測試,最后交付使用,如圖1-5所示。

圖1-5快速原型模型

快速原型模型的關(guān)鍵是盡可能快速地構(gòu)建出軟件的原型系統(tǒng),以加速軟件開發(fā)速度,節(jié)約

軟件開發(fā)成本。原型的主要用途是為了獲取用戶的真正詳細(xì)的需求,一旦全部需求確定,原型

可以被拋棄。因此,原型系統(tǒng)的內(nèi)部結(jié)構(gòu)并不是很重要,重要的是,必須在快速構(gòu)建原型之后

根據(jù)用戶意見迅速地確定系統(tǒng)實(shí)際需求。

快速原型模型的一個(gè)明顯的優(yōu)點(diǎn)是可減少不明確需求所帶來的開發(fā)風(fēng)險(xiǎn)。適合中小型規(guī)模

或生命周期比較短的軟件項(xiàng)目??焖僭湍P途哂腥缦聨讉€(gè)特點(diǎn)。

①軟件開發(fā)過程基本上是線性的順序開發(fā)。

②原型建立以后的階段之間不帶反饋環(huán)。

③通過迭代的過程快速建立與用戶需求一致的原型。

④減少開發(fā)活動的盲目性和需求不確定。

⑤開發(fā)的系統(tǒng)能較好地滿足用戶需求,修改較小。

4.增量模型

軟件產(chǎn)品在構(gòu)建過程中并不是一次就能完成全部構(gòu)件而形成一個(gè)完整的產(chǎn)品,而是“一步

一步”地以遞增的方式,逐步形成一個(gè)完整的產(chǎn)品,因此,增量模型也稱為漸增模型。在增量

模型中,把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測試。每個(gè)構(gòu)件由多個(gè)相互

作用的模塊構(gòu)成,并且能夠完成特定的功能。

在瀑布模型和快速原型模型中,目標(biāo)都是一次就把一個(gè)滿足全部需求的完整產(chǎn)品交付給用戶。

增量模型則相反,整個(gè)軟件產(chǎn)品被分解成多個(gè)增量構(gòu)件,開發(fā)人員一個(gè)接一個(gè)構(gòu)件地、逐步分批

次地開發(fā)并提交,每次提交的是一個(gè)滿足用戶需求的一個(gè)子集的可運(yùn)行產(chǎn)品。直到最后一次得到

滿足全部需求的完整產(chǎn)品。增量模型在軟件開發(fā)過程中,以一系列的增量方式來逐步進(jìn)行的,根

據(jù)項(xiàng)目實(shí)際情況可以分為部分增量和全部增量。全部增量方式的開發(fā)風(fēng)險(xiǎn)大于部分增量方式。

(1)部分增量。

部分增量即在軟件開發(fā)過程中的部分階段采用增量方式,如圖1-6所示,在需求分析和概

要設(shè)計(jì)階段采用整體開發(fā)方式,而在詳細(xì)設(shè)計(jì)、編碼、集成和測試階段采用增量方式。先對部

分功能(核心功能)進(jìn)行詳細(xì)設(shè)計(jì)、構(gòu)件編碼、構(gòu)件集成和測試,然后,提交給用戶,用戶進(jìn)

行試用體驗(yàn),提出意見,及早發(fā)現(xiàn)并解決問題。再對另一部分功能也按詳細(xì)設(shè)計(jì)、構(gòu)件編碼、

項(xiàng)目一認(rèn)識軟件工程13

構(gòu)件集成、測試和提交的步驟進(jìn)行。如此不斷逐步進(jìn)行,直到所有功能全部完成。

圖1-6部分增量模型

(2)全部增量。

全部增量即在軟件開發(fā)過程中的全部階段都采用增量方式,如圖1-7所示,先對部分功能

(核心功能)進(jìn)行需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、構(gòu)件編碼、構(gòu)件集成和測試,然后,

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論