《軟件工程實(shí)例教程》以培養(yǎng)應(yīng)用型軟件人才為目標(biāo),全面系統(tǒng)地闡述了軟件工程的基本概念、原理和典型方法。全書突出4個(gè)特點(diǎn):第一,從始至終貫穿案例教學(xué)的思想,提高讀者的學(xué)習(xí)興趣;第二,內(nèi)容新穎實(shí)用,介紹廠軟件模式、xml、代碼重構(gòu)等內(nèi)容在軟件工程中的應(yīng)用;第三,可操作性強(qiáng),讀者可參照書中給出的模板和案例,構(gòu)建自己的應(yīng)用;第四,通過對反面案例的點(diǎn)評(píng),幫助讀者深刻地領(lǐng)會(huì)軟件工程的原理和規(guī)范,促使讀者在實(shí)際工程中自覺應(yīng)用軟件下程的方法,自覺遵守軟件工程規(guī)范。
《軟件工程實(shí)例教程》適合作為高等院!败浖こ獭闭n程的教材或參考書,書中給出了大量的表格和模板,可作為軟件公司的培訓(xùn)教材使用,對具有一定實(shí)踐經(jīng)驗(yàn)的軟件工程人員也有很好的參考價(jià)值。
本書歷經(jīng)兩年多的時(shí)間,今天終于完成了。
軟件工程方面的教材已經(jīng)非常多了,本書以培養(yǎng)應(yīng)用型軟件人才為目標(biāo),突出4個(gè)特點(diǎn): 第一,突出案例教學(xué),從始至終貫穿了生活實(shí)例和軟件項(xiàng)目的案例,幫助讀者理解軟件工程的內(nèi)容、掌握軟件工程的方法,靈活應(yīng)用到實(shí)際的軟件工程項(xiàng)目之中。第二,內(nèi)容新穎實(shí)用,軟件工程本身強(qiáng)調(diào)不斷改進(jìn)和完善過程,因此本書充實(shí)了軟件模式、可擴(kuò)展標(biāo)記語言、代碼重構(gòu)等內(nèi)容,并介紹了這些內(nèi)容在軟件工程中的應(yīng)用。第三,可操作性強(qiáng),在介紹分析和設(shè)計(jì)方法時(shí),給出了詳細(xì)的步驟,使初學(xué)者可以參照具體的步驟,盡快掌握并應(yīng)用書中介紹的方法。第四,不僅告訴讀者應(yīng)該怎么做才是好的,還告訴了讀者什么是不好的,為什么不好,以幫助讀者深刻地領(lǐng)會(huì)軟件工程的原理和規(guī)范,促使讀者在實(shí)際工程中自覺應(yīng)用軟件工程方法,自覺遵守軟件工程規(guī)范。
“軟件工程”任重而道遠(yuǎn),我們應(yīng)該從兩個(gè)方面理解“軟件工程”: 一方面是把“軟件項(xiàng)目”或“軟件產(chǎn)品”的開發(fā)和維護(hù)工作當(dāng)成一個(gè)工程去做,也就是說,作為一個(gè)“軟件工程”的建設(shè)者和管理者,我們應(yīng)該強(qiáng)調(diào)規(guī)劃、設(shè)計(jì)、實(shí)施和驗(yàn)收過程的規(guī)范化和文檔化;另一方面把“軟件工程”作為一門學(xué)科,深入研究這門學(xué)科存在的問題,找出解決問題的方法,設(shè)計(jì)解決問題的過程,發(fā)明解決問題的工具。
本書共分為14章,第1章介紹軟件工程概述,從軟件危機(jī)的現(xiàn)象入手,介紹經(jīng)典案例,并且進(jìn)行詳細(xì)的點(diǎn)評(píng),由此引起讀者對軟件危機(jī)的重視,對軟件工程的渴望。接著介紹軟件的特點(diǎn),講述軟件工程的基本原理、研究的主要內(nèi)容,以及軟件工程的發(fā)展歷史。為了讓讀者對軟件工程學(xué)科有一個(gè)完整的認(rèn)識(shí),第1章還介紹了軟件工程學(xué)科的知識(shí)體系,最后介紹了軟件工程師的職業(yè)素質(zhì)和從業(yè)要注意的十大問題。第2章介紹軟件過程,結(jié)合生活事例講述了軟件過程的基本概念和主要活動(dòng),介紹了幾個(gè)主要軟件過程模型的特點(diǎn)。第3章介紹軟件工程管理,通過剖析一個(gè)項(xiàng)目經(jīng)理的工作案例,介紹了軟件項(xiàng)目管理的主要內(nèi)容和方法,特別強(qiáng)調(diào)了人員管理、項(xiàng)目計(jì)劃、配置管理和質(zhì)量管理的內(nèi)容,通過有趣的小故事把枯燥的質(zhì)量管理內(nèi)容變得鮮活一些,使讀者感悟到軟件質(zhì)量是軟件工程的基本保證。第4章介紹需求工程,特別強(qiáng)調(diào)需求在軟件工程中的重要地位,\軟\件\工\程\實(shí)\例\教\程\ /前 言/ 介紹了需求的類別、高質(zhì)量需求的特征,分析了影響需求的因素,闡述了需求獲取的方法,最后重點(diǎn)介紹了應(yīng)對需求變更的方法。第5~6章介紹傳統(tǒng)的結(jié)構(gòu)化分析和設(shè)計(jì)方法及步驟,結(jié)構(gòu)化方法中常用的數(shù)據(jù)流程圖、實(shí)體關(guān)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典和軟件結(jié)構(gòu)圖、判定表等技術(shù)在許多實(shí)際項(xiàng)目中仍然在使用,即使是在面向?qū)ο蠓椒ㄖ,某些局部也還是要用到結(jié)構(gòu)化的技術(shù),因此,本書還是把結(jié)構(gòu)化方法作為一個(gè)主要內(nèi)容進(jìn)行了詳細(xì)的講述。第7~9章全面介紹了面向?qū)ο蠡A(chǔ)、面向?qū)ο蠼<夹g(shù)、面向?qū)ο蠓治龊驮O(shè)計(jì)方法。根據(jù)以往在教學(xué)中遇到的問題,以一個(gè)例子作為引導(dǎo),剖析結(jié)構(gòu)化方法存在的問題,并且以相同的案例分別用結(jié)構(gòu)化方法和面向?qū)ο蠓椒ㄟM(jìn)行分析和設(shè)計(jì),使初學(xué)者能夠體會(huì)兩種方法的特點(diǎn)。書中把面向?qū)ο蠓治龊驮O(shè)計(jì)的過程分解為可操作的步驟,使初學(xué)者可以仿照書中的案例和步驟,快速掌握面向?qū)ο蠓治龊驮O(shè)計(jì)方法,解決實(shí)際的軟件工程問題。
第10章軟件界面設(shè)計(jì),介紹了軟件界面設(shè)計(jì)的原則、要素和設(shè)計(jì)規(guī)范。結(jié)合實(shí)際項(xiàng)目的用戶界面進(jìn)行了設(shè)計(jì)點(diǎn)評(píng),指出界面設(shè)計(jì)存在的問題,用這些反面案例幫助讀者加深理解界面設(shè)計(jì)的原則。
第11至第13章分別介紹軟件編碼、軟件測試和軟件維護(hù)。在軟件編碼一章重點(diǎn)介紹了軟件編碼規(guī)范和良好的編程風(fēng)格,簡要介紹了通過軟件重構(gòu)手段保持軟件結(jié)構(gòu)清晰、簡潔和規(guī)范的方法。軟件測試一章的篇幅較大,因?yàn)槲覀儼l(fā)現(xiàn)軟件測試環(huán)節(jié)在實(shí)際工程中越來越受到重視,并且很多計(jì)算機(jī)專業(yè)的畢業(yè)生走出校門后的第一份工作或多或少都與測試相關(guān),因此,我們在講述測試概念和方法的基礎(chǔ)上,更加強(qiáng)調(diào)測試計(jì)劃、測試策略和測試過程的實(shí)用化。軟件維護(hù)通常對在校本科學(xué)生來說確實(shí)體會(huì)不到它的重要性,但是對實(shí)際的系統(tǒng)運(yùn)維部門來說又非常需要軟件維護(hù)的相關(guān)資料,針對這些問題,第13章軟件維護(hù),以理論與實(shí)踐相結(jié)合的方針,在介紹維護(hù)理論的基礎(chǔ)上,介紹了軟件維護(hù)的內(nèi)容、流程和實(shí)用的報(bào)表模板,便于系統(tǒng)運(yùn)維人員參考和使用。
第14章介紹如何編寫軟件文檔,分析了目前軟件文檔編寫和管理中存在的具體問題,詳細(xì)介紹了主要軟件文檔的作用和內(nèi)容,講述了如何寫好軟件文檔的具體方法,最后給出了一些軟件文檔模板,供讀者寫作時(shí)參考。
本人自1985年在北京航空航天大學(xué)計(jì)算機(jī)系讀碩士研究生期間開始學(xué)習(xí)軟件工程。1988至1993年在大學(xué)從事軟件工程教學(xué),這期間對軟件工程的理解還只是停留在書本上,基本上是照本宣科。幸運(yùn)的是1994年至2001年在軟件公司里主持參與了國內(nèi)多個(gè)大型軟件項(xiàng)目的設(shè)計(jì)和開發(fā),特別是與IBM、Motorola等知名的軟件公司合作,經(jīng)歷了由理論-實(shí)踐-再體會(huì)理論-再次回到實(shí)踐中檢驗(yàn)-總結(jié)提高理論的過程,對軟件工程有了比較深刻的理解。
本書的第5、6和10章由方英蘭老師編寫,第14章由段建勇老師編寫,其余章節(jié)由吳潔明老師編寫。在編寫過程中參與了教育部“高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)核心課程內(nèi)容實(shí)施方案研究”項(xiàng)目中的“軟件工程課程研究”組的工作,該項(xiàng)目的負(fù)責(zé)人是北京工業(yè)大學(xué)的蔣宗禮教授,還有清華大學(xué)的劉強(qiáng)教授、浙江大學(xué)的陳越教授。大家一起交流軟件工程教學(xué)和實(shí)踐的經(jīng)驗(yàn),討論存在的問題和困惑。該項(xiàng)目組根據(jù)科學(xué)型、工程型和應(yīng)用型計(jì)算機(jī)專業(yè)人才的培養(yǎng)目標(biāo),給出了“軟件工程課程內(nèi)容實(shí)施方案”。本書的內(nèi)容組織基本上符合該實(shí)施方案的要求。
在此非常感謝上述各位教授,他們給予我許多的靈感。另外歷運(yùn)偉、李鵬、高振安、朱銀濤、許士賓等研究生也參與了書稿的錄入和文字檢查工作。在此對所有幫助本書出版作出貢獻(xiàn)的朋友和家人表示感謝!
由于時(shí)間關(guān)系和篇幅的限制,特別是本人水平有限,書中一定存在許多問題和不足,真誠地希望讀者能夠提出寶貴的意見和建議,幫助我們逐步完善本書的內(nèi)容。清華大學(xué)出版社網(wǎng)站(www.tup.com.cn)提供本書的PPT課件、文檔模板電子版、課程實(shí)驗(yàn)指導(dǎo)資料。
吳潔明2010年6月于北京
第1章 軟件工程概述
1.1 軟件危機(jī)
1.2 軟件工程
1.3 軟件工程學(xué)科知識(shí)體系
1.4 軟件工程師職業(yè)道德
練習(xí)1
第2章 軟件過程
2.1 軟件過程的概念
2.2 幾個(gè)典型的軟件過程模型
2.3 迭代與遞增
2.4 rup軟件開發(fā)過程
2.5 敏捷開發(fā)
練習(xí)2
第3章 軟件工程管理
3.1 人員組織與管理
3.2 軟件規(guī)模與成本估算
3.3 軟件開發(fā)計(jì)劃與控制
3.4 軟件配置管理
3.5 軟件質(zhì)量管理
練習(xí)3
第4章 需求工程
4.1 需求工程的概念
4.2 確定系統(tǒng)目標(biāo)和范圍
4.3 需求獲取方法
4.4 需求分析的任務(wù)
4.5 需求分析的原則
4.6 定義軟件的質(zhì)量屬性
4.7 需求優(yōu)先級(jí)
4.8 需求驗(yàn)證技術(shù)
4.9 需求管理
練習(xí)4
第5章 結(jié)構(gòu)化需求分析
5.1 結(jié)構(gòu)化分析的主要技術(shù)
5.2 結(jié)構(gòu)化分析方法的實(shí)現(xiàn)步驟
5.3 編寫需求規(guī)格說明書
5.4 結(jié)構(gòu)化分析案例
練習(xí)5
第6章 結(jié)構(gòu)化軟件設(shè)計(jì)
6.1 軟件設(shè)計(jì)的概念
6.2 軟件設(shè)汁原則和影響設(shè)計(jì)的因素
6.3 結(jié)構(gòu)化設(shè)計(jì)方法
6.4 小型圖書館圖書信息管理系統(tǒng)軟件結(jié)構(gòu)設(shè)計(jì)
6.5 優(yōu)化軟件結(jié)構(gòu)
6.6 數(shù)據(jù)設(shè)計(jì)
6.7 詳細(xì)設(shè)計(jì)
6.8 設(shè)計(jì)復(fù)查
練習(xí)6
第7章 面向?qū)ο蠡A(chǔ)
7.1 從一個(gè)例子看結(jié)構(gòu)化方法的問題
7.2 面向?qū)ο蟮母拍?nbsp;
7.3 面向?qū)ο箝_發(fā)的方法簡介
7.4 uml語言
7.5 用例圖
7.6 活動(dòng)圖
7.7 狀態(tài)圖
7.8 交互圖
7.9 類圖
7.10 配置圖
7.11 組件圖
練習(xí)7
第8章 面向?qū)ο蠓治?nbsp;
8.1 面向?qū)ο蠓治龈攀?nbsp;
8.2 建立用例模型
8.3 建立對象模型
8.4 構(gòu)造動(dòng)態(tài)模型
8.5 評(píng)審分析模型
8.6 面向?qū)ο蟮男枨蠓治鲆?guī)格說明書
練習(xí)8
第9章 面向?qū)ο笤O(shè)計(jì)
9.1 面向?qū)ο蟮脑O(shè)計(jì)概念
9.2 面向?qū)ο蟮脑O(shè)計(jì)原則--類設(shè)計(jì)原則
9.3 xml在軟件設(shè)計(jì)中的應(yīng)用
9.4 基于uml的面向?qū)ο笤O(shè)計(jì)過程
9.5 面向?qū)ο笤O(shè)計(jì)規(guī)格說明書
練習(xí)9
第10章 用戶界面設(shè)計(jì)
10.1 界面設(shè)計(jì)原則
10.2 界面設(shè)計(jì)
10.3 用戶界面評(píng)價(jià)
10.4 用戶界面設(shè)計(jì)案例分析
練習(xí)10
第11章 軟件編碼
11.1 程序設(shè)計(jì)語言
11.2 良好的編程實(shí)踐
11.3 軟件編碼規(guī)范
11.4 代碼重構(gòu)
練習(xí)11
第12章 軟件測試
12.1 軟件測試基本概念
12.2 軟件測試過程
12.3 軟件測試計(jì)劃
12.4 測試用例設(shè)計(jì)和測試執(zhí)行
12.5 單元測試
12.6 集成測試
12.7 系統(tǒng)測試
12.8 驗(yàn)收測試
12.9 界面測試
12.10 面向?qū)ο蟮臏y試
12.11 軟件測試工具
練習(xí)12
第13章 軟件交付與維護(hù)
13.1 軟件維護(hù)概念
13.2 維護(hù)過程
13.3 提高軟件的可維護(hù)性
練習(xí)13
第14章 如何編寫軟件開發(fā)文檔
14.1 軟件文檔的作用和要求
14.2 軟件文檔的種類和提供時(shí)機(jī)
14.3 軟件文檔的編寫步驟
14.4 如何寫好軟件文檔
14.5 文檔管理
14.6 軟件工程標(biāo)準(zhǔn)
14.7 幾個(gè)常用軟件文檔的模板
練習(xí)14
參考文獻(xiàn)