版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掌握醫(yī)患關(guān)系的技巧
- 安全評級工作指南講解
- 質(zhì)管部安全管理培訓(xùn)課件
- 骨科醫(yī)師質(zhì)控年終總結(jié)
- 婦產(chǎn)科質(zhì)控護(hù)士年終總結(jié)
- 人工智能數(shù)據(jù)驅(qū)動
- 肥厚性心肌病的生活管理
- 《機(jī)電一體化系統(tǒng)設(shè)計(jì)》課件-任務(wù)2 MCD傳感器的應(yīng)用
- 《工業(yè)控制網(wǎng)絡(luò)與組態(tài)技術(shù)》課件-1.2.1現(xiàn)場總線概述
- 小數(shù)的意義 四年級數(shù)學(xué)下冊北師大版
- 自我介紹禮儀課件
- 衛(wèi)生院孕優(yōu)知識培訓(xùn)課件
- 2025-2030工業(yè)窯爐煙氣多污染物協(xié)同控制技術(shù)
- 培訓(xùn)機(jī)構(gòu)臺賬
- 電商預(yù)算表格財(cái)務(wù)模板全年計(jì)劃表格-做賬實(shí)操
- 泵車日常管理辦法
- 骨科術(shù)后疼痛評估與護(hù)理查房
- 輸液泵的使用培訓(xùn)課件
- 中醫(yī)針灸治療婦科疾病
- 25年自來水考試試題大題及答案
- 腫瘤科一科一品十佳案例
評論
0/150
提交評論