
版 權 聲 明
軟體工程(第4版•修訂版)
authorized translation from the english language edition, entitled software engineering: theory and practice, fourth edition, 9780136061694 by shari lawrence pfleeger and joanne m. atlee, published by pearson education, inc., publishing as pearson higher education, copyright © 2010, 2006, 2001, 1998 by pearson education, inc.
all rights reserved. no part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from pearson education, inc.
chinese simplified language edition published by pearson education asia ltd. and posts & telecom press copyright © 2014.
本書中文簡體字版由pearson education asia ltd.授權人民郵電出版社獨家出版。未經出版者書面許可,不得以任何方式複制或抄襲本書内容。
本書封面貼有pearson education(培生教育出版集團)雷射防僞标簽,無标簽者不得銷售。
版權所有,侵權必究。
内容提要
本書是軟體工程領域的經典著作,國際上衆多名校均采用本書作為教材。全書共分為14章,分3個部分介紹主要内容。第一部分解釋為什麼軟體工程知識對實踐者和研究者同樣重要,還讨論了了解過程模型問題的必要性以及靈活方法和精細地進行項目計劃的必要性;第二部分論述開發和維護的主要步驟;第三部分主要講述軟體評估和改進。
本書适合作為計算機相關專業軟體工程課程的大學教材,也适用于介紹軟體工程的概念與實踐的研究所學生課程,期望進一步學習該領域相關知識的專業人員也可以閱讀本書。
前言
跨越研究與實踐之間的鴻溝
在1968年的北約會議上,首次使用了“軟體工程”這一術語。時至今日,軟體工程已經走過了很長的一段路,軟體本身也已經以各種形式融入了我們的生活。就算在10年前,估計也沒人會預料到軟體會有這麼大的影響力。是以,要懂得如何開發好的軟體以及如何評估軟體在日常生活中面臨的風險和機遇,堅實的軟體工程理論和實踐基礎是不可或缺的。本書展現了目前軟體工程領域實踐者陣營和研究者陣營之間互相融合的現狀:實踐者主要關注構造高品質産品完成某些功能,而研究者則努力尋找各種方法改進産品品質以及提高開發人員生産效率。edsgar dykstra不斷提醒我們:研究與實踐之間的緊張關系将檢驗我們對軟體工程的了解,并幫助我們改進思維方式、方法,進而最終改進我們的産品。
正是本着這種精神,我們對本書進行了增訂,為這種不斷的探究和改進構造一個基礎架構。尤其是,第4版納入了更廣泛的素材,來說明如何抽象出一個問題并對它建立模型,以及如何使用各種模型、設計原則、設計模式和設計政策,來産生适當的解決方案。軟體工程師絕不止像程式員那樣按照說明書來編寫程式,就像廚師不止是遵循菜單來烹饪。構造優秀的軟體是一門藝術,這展現在如何抽象出問題的要素并模組化,再使用這些抽象設計出解決方案。經常能聽到優秀開發人員談論“優雅的”解決方案,說明這樣的解決方案抓住了問題的核心,得到的軟體不僅能夠解決目前的問題,而且當問題随着時間演化時,軟體也能夠很容易地進行修改。這樣,學生就能夠學會融合研究與實踐、藝術與科學,構造出堅實的軟體。
科學總是以事實為基礎的。本書是為大學生軟體工程課程而設計的,注重軟體工程研究與實踐的實際效果層面,使學生能夠直接将所學知識應用于要解決的現實問題。書中所舉的例子針對的是經驗有限的學生,但是,這些例子清楚地闡明了大型軟體開發項目是如何從需求到計劃,再進而成為現實的過程。例子所描述的許多情形,讀者未來都很可能經曆:大型項目與小型項目、“靈活”方法與高度結構化方法、面向對象與面向過程的方法、實時處理與事務處理、開發情形與維護情形。
本書也适用于介紹軟體工程的概念與實踐的研究所學生課程,還适合于那些期望進一步學習該領域相關知識的專業人員。尤其是最後3章給出了一些引人思考的資料,旨在引起研究所學生對目前研究主題的興趣。
主要特色
下面是本書差別于其他書的主要特色。
其他軟體工程圖書将度量和模組化作為單獨的問題分開考慮,本書則将二者與更全面的軟體工程論述結合起來。也就是說,把度量和模組化看做是軟體工程政策不可分割的部分,而不作為一個單獨的分支。這樣,學生能夠學會如何抽象與模組化,以及如何在日常開發活動中進行定量評估和改進。他們可以利用他們的模型了解所要解決的問題的要素,了解可供選擇的其他解決方案;他們可以利用度量對個人、小組和項目的進度進行評估。
類似地,諸如複用、風險管理和品質工程之類的概念都揉合到在它們影響之下的軟體工程活動中,而不是作為單獨的問題來講述。
這一版介紹了靈活方法的使用,包括極限程式設計。它論述了給予開發人員更多自主權所帶來的利益和遭遇的風險,并将靈活方法與傳統的軟體開發方法進行了比較。
每一章都将相應的概念應用于兩個貫穿全書的例子:一個例子是典型的資訊系統,另一個是實時系統。兩個例子都基于實際的項目。資訊系統的例子描述了一個大型英國電視公司确定廣告時間價格的軟體。實時系統的例子是阿麗亞娜5型火箭的控制軟體,我們将考查該軟體見諸報端的一些問題,并探讨軟體工程技術如何能夠幫助找出并避免其中的問題。學生能夠随着兩個典型項目的進展,領會本書所描述的各種實踐方法如何融入到構造系統的技術之中。
每章結尾的結論都用三種形式表述:這一章的内容對開發團隊的意義,對單個開發人員的意義,以及對研究者的意義。學生可以很容易地複習每章的要點,并了解每一章與研究以及實踐的相關性。
本書有配套網站。該網站包含了各種文獻中的最新例子,以及真實項目中的實際工件(artifact)的例子。該網頁還提供了相關工具和方法廠商的網頁的連結。學生可以在這裡找到實際的需求文檔、設計方案、代碼、測試計劃等内容。那些想尋找更多、更深入資訊的學生,可以通過該網頁找到其他值得信賴的、容易了解的出版物及網站。這些網頁會定期更新,以及時補充書中的内容。它還包括一個工具,讀者可用來向作者和出版社提供回報。
學生學習指南可從pearson的銷售代表處獲得。
ppt及完整的習題答案手冊可以從本書配套網站的教師資源中心獲得。要獲得通路權限,請與pearson的銷售代表聯系。
本書從各種文獻中引用了大量案例研究和例子。書中以補充材料形式給出的很多隻有一頁左右篇幅的案例研究在網頁上都有較長的描述。據此,學生能夠了解本書中的理論概念是如何應用于現實情形的。
每章最後都列出了引人思考的、與軟體工程有關的法律和道德問題。學生可以根據軟體工程所處的社會和政治背景來了解軟體工程。與其他的學科一樣,軟體工程的結果會影響到人,必須據此來考慮軟體工程決策。
每章都強調過程化和面向對象的開發。另外,第6章專門解釋了面向對象開發過程的步驟。我們會讨論若幹設計原則,并用面向對象的例子展示如何結合這些原則來改善設計。
本書還有一個帶有注解的參考文獻清單,其中不少是軟體工程中開創性的論文。另外,本書的網頁有進一步的連結指向注釋的參考文獻和特定領域讨論組(諸如軟體可靠性、容錯性、計算機安全等)。
每章都會提到同一個學期項目,是開發一個住房抵押處理系統軟體,教師可以把這個學期項目稍加改動,作為課程作業。
每章的結尾都列出了本章概念的主要參考文獻,學生能夠借此進一步深入研究本章中讨論的特定工具和方法。
這一版還包含了強調計算機安全性的例子。尤其是,我們強調了設計時的安全性,而不是在編碼或測試的時候加入安全性。
本書的内容群組織結構
本書分為14章,分3部分介紹各章主要内容。第1部分力圖激發讀者學習軟體工程的興趣,解釋為什麼軟體工程知識對實踐者和研究者同樣重要。第1部分還讨論了解過程問題的必要性,确定開發人員具有多大程度“靈活性”的必要性和精細地進行項目計劃的必要性。第2部分論述開發和維護的主要步驟,這些步驟與構造軟體所使用的過程模型關系不大,都是先引出需求、對需求模組化、檢查需求,然後設計問題的解決方案,編寫和測試代碼,最後将軟體傳遞給客戶。第3部分主要講述軟體評估和改進,這一部分着眼于如何評價過程和産品的品質,以及如何改進品質。
第1章:軟體工程概述
這一章介紹軟體工程的發展曆程,以激發讀者的學習興趣,并簡要介紹在後面的章節中要研究的某些關鍵問題。尤其是,讨論wasserman用來幫助定義軟體工程的關鍵因素:抽象、分析與設計方法、表示法、子產品化與體系結構、軟體生命周期與過程、複用、度量、工具與內建環境,以及使用者界面與原型化。我們将讨論計算機科學和軟體工程的差異,解釋可能遇到的一些主要問題,并為本書的其餘部分奠定基礎。還探讨采用系統的方法構造軟體的必要性,并介紹每一章都會用到的兩個公共的例子。學期項目的背景也是在這裡介紹的。
第2章:過程和生命周期的模組化
這一章概要介紹不同類型的過程和生命周期模型,包括瀑布模型、V模型、螺旋模型和各種原型化模型。論述靈活方法的必要性,與傳統的軟體開發過程相比,在靈活方法中開發人員擁有許多自主權。還描述幾種模組化技術和工具,包括系統動态模組化以及其他常用方法。兩個公共的例子都用到了這裡介紹的一些模組化技術。
第3章:計劃和管理項目
在這一章,我們着眼于項目計劃和進度安排。介紹諸如活動、裡程碑、工作分解結構、活動圖、風險管理、成本以及成本估算等概念。用估算模型估算兩個公共例子的成本和進度。我們重點關注實際案例研究,包括f-16飛機和dec的alpha axp程式的軟體開發管理。
第4章:擷取需求
這一章強調在優秀的軟體工程中抽象和模組化的關鍵作用。尤其是,我們使用模型澄清需求中容易誤解和遺漏的細節,并使用模型與其他人員進行溝通。本章中探讨了多種不同的模組化範型;針對每一種範型,研究表示法執行個體;讨論什麼時候使用哪種範型,并對如何做出特定模組化和抽象決策給出建議。讨論了需求的不同來源和類型(功能性需求、品質需求與設計限制)。解釋如何編寫可測試的需求,并描述如何解決其中的沖突。其他讨論的主題還有需求引發、需求文檔、需求評審、需求品質、如何測量需求,并介紹了一個如何選擇規格說明方法的例子。本章最後将其中幾個方法應用于兩個公共的例子。
第5章:設計體系結構
在本書的第4版中,完全改寫了軟體體系結構這一章。在這一章的開始,論述了體系結構在軟體設計過程中以及在較大型的開發過程中的作用。我們詳細讨論了産生軟體體系結構的相關步驟,從模組化、分析、文檔化和評審,到最後産生軟體體系結構文檔;程式設計人員用軟體體系結構文檔來描述子產品和接口。我們讨論了如何對問題進行分解,以及如何使用不同的視圖來檢查問題的若幹方面,以便找到合适的解決方案。接着,我們集中讨論了如何使用一種或多種體系結構風格來模組化解決方案,包括管道—過濾器、對等網絡、客戶/伺服器、釋出—訂閱、資訊庫和分層體系結構。我們還讨論了如何組合體系結構風格并使用它們來達到品質目标,如可修改性、性能、安全性、可靠性、健壯性、易使用性。
一旦完成了初始的體系結構,就可以對其進行評估和改進。在這一章,我們說明了如何測量設計品質,以及如何使用評估技術在故障分析、安全性分析、權衡分析以及成本效益分析中選擇滿足客戶需求的體系結構。我們強調了把設計理念記入文檔、确認和驗證設計是否比對需求、建立滿足客戶産品需求的體系結構這三方面的重要性。在本章快結束的時候,我們詳細論述了如何建構一個産品線體系結構,以允許軟體提供者在一族相似的産品中複用設計。最後,讨論了資訊系統和實時系統這兩個例子的體系結構分析。
第6章:設計子產品
這一版中,第6章做了全面的修訂,讨論了如何從系統體系結構的描述轉向單個子產品設計的描述。本章從讨論設計過程開始,然後介紹6個關鍵的設計原則來指導我們由體系結構到子產品的細化設計:子產品化、接口、資訊隐藏、增量式開發、抽象和通用性。接着,進一步探讨面向對象的設計以及面向對象設計是如何支援這6個設計原則的。這一章使用統一模組化語言的各種表示法來說明如何表示子產品功能性和互動的多個側面,這樣,我們就能夠構造健壯的、可維護的設計。本章還論述了一組設計模式,其中每一個設計模式都具有明确的目的,并說明了如何使用它們來強化設計原理。接下來,本章讨論了一些全局的問題,如資料管理、異常處理、使用者界面和架構,我們從中可以了解到一緻而清晰地使用方法可以獲得更有效的設計。
本章詳細探讨面向對象度量,并将一些常用的面向對象度量方法應用于一個服務站的例子。我們可以從中看到,設計中發生變化後,度量中的值是如何變化的,這有助于我們決定如何配置設定資源和查找故障。最後,我們把面向對象的概念應用到資訊系統和實時系統的例子中。
第7章:編寫程式
本章論述代碼層的設計決策,以及實作一個設計以産生高品質代碼所涉及的問題。我們讨論各種标準和過程,并給出一些簡單的程式設計準則。提供了用多種語言編寫的例子,包括面向對象語言和過程語言。讨論了程式文檔和錯誤處理政策的必要性。最後,将一些概念應用于兩個公共的例子。
第8章:測試程式
這一章探讨一些測試程式方面的問題。我們把傳統測試方法和淨室方法區分開,并着眼于如何測試各種系統。給出軟體問題的定義和分類,讨論怎樣利用正交缺陷分類使資料彙集和分析更加有效。随後,解釋單元測試與內建測試之間的差別。在介紹幾種自動化測試工具和技術之後,解釋測試生命周期的必要性,以及如何将這些工具內建到生命周期中。最後,把這些概念應用于兩個公共的例子。
第9章:測試系統
這一章首先介紹系統測試的原理,包括測試包和資料的複用,并讨論精細地進行配置管理的必要性。介紹的概念包括功能測試、性能測試、驗收測試和安裝測試。讨論測試面向對象系統的特殊需要。描述幾種測試工具,并讨論測試小組成員的角色。然後,向讀者介紹軟體可靠性模組化,并讨論可靠性、可維護性和可用性問題。讀者将學會如何使用測試結果來評估傳遞的産品可能具有的特征。本章還介紹幾種測試文檔,最後描述兩個公共例子的測試政策。
第10章:傳遞系統
這一章讨論教育訓練和文檔的必要性,并給出資訊系統和實時系統例子中可能使用的幾個教育訓練和文檔的例子。
第11章:維護系統
這一章強調系統變化的結果。解釋在系統生命周期的過程中變化是如何發生的,以及系統設計、編碼、測試過程、文檔如何必須與這些變化保持一緻。讨論典型的維護問題,以及精細地進行配置管理的必要性。全面讨論使用度量預測可能的變化,并評估變化所産生的影響。還讨論在使遺留系統再生的大背景下的再工程和重組技術。最後,根據變化的可能性對兩個公共的例子進行評估。
第12章:評估産品、過程和資源
由于許多軟體工程的決策涉及合并和內建現有元件,這一章讨論評估過程和産品的方法。讨論經驗性評估的必要性,并給出若幹例子以說明如何使用度量建立品質和生産率的基線。我們着眼于幾個品質模型,如何評估系統的複用性,如何執行事後分析,以及如何了解資訊技術的投資回報。把這些概念應用于兩個公共的例子。
第13章:改進預測、産品、過程和資源
這一章建立在第11章的基礎之上,說明如何完成預測、産品、過程和資源改進。包含幾個深入的案例研究,以說明如何通過多種調查技術來了解和改進預測模型、審查技術及軟體工程的其他方面。本章最後給出一組指導原則,用于評估目前情形并識别改進的機會。
第14章:軟體工程的未來
在最後這一章,讨論軟體工程中的若幹懸而未決的難題。我們重新回顧wasserman的概念,來審視軟體工程這一學科的發展狀況。研究技術轉移和決策制定中的若幹問題,以确定在把重要的思想從研究應用于實踐方面,我們做得是否出色。最後,我們研究一些有争議的問題,比如給軟體工程師發放職業證書的問題,以及向更特定領域解決方案和方法發展的趨勢。
緻謝
由于朋友及家人所給予的技術上的支援和情感上的鼓勵,本書才得以完成。我們不可能列舉出所有在本書的編寫和修訂期間幫助過我們的人,若有遺漏,在此提前表示歉意。我們很感謝本書早期版本的讀者,他們詳細審讀了本書,提出了不少良好建議。我們已經盡力将所有這些建議融入這一版本。我們一如既往地感謝來自讀者的回報,不管是正面的還是負面的。
carolyn seaman(馬裡蘭大學巴爾的摩校區)是本書第1版非常傑出的審稿人。她提出許多方法使内容更簡潔明了,使得本書更緊湊、更易于了解。她還整理好大部分的練習解答,并幫助我們建立本書早期版本的網站。我要感謝她的友誼和幫助。yiqing liang和carla valle更新了該網站,并為第2版增加了重要的新資料;patsy ann zimmer(滑鐵盧大學)修訂了本書第3版的網站,特别是關于模組化表示法和靈活方法。
我們萬分感謝forrest shull(馬裡蘭大學法朗霍夫中心)以及roseanne tesoriero(華盛頓學院),他們編寫了本書最初的學習指導;感謝maria vieira nelson(巴西米納斯吉拉斯州天主教大學),他對第3版的解答手冊及學習指導進行了修訂;感謝eduardo s. barrenechea(滑鐵盧大學)對第4版中素材的更新。還要感謝hossein saiedian(堪薩斯大學)制作了第3版和第4版的powerpoint示範。我們要特别感謝guilherme travassos(裡約熱内盧聯邦大學),本書使用了他與pfleeger在馬裡蘭大學期間共同編寫的材料,而且他在以後的課程教學中,又對這些材料進行了大量擴充。
對我們有所幫助且頗有創見的本書所有4個版本的審稿人有:barbara kitchenham(英國基爾大學)、bernard woolfolk(朗訊公司)、ana regina cavalcanti da rocha(裡約熱内盧聯邦大學)、frances uku(加利福尼亞大學伯克利分校)、lee scott ehrhart(mitre公司)、laurie werth(得克薩斯大學)、vickie almstrum(得克薩斯大學)、lionel briand(挪威simula研究室)、steve thibaut(佛羅裡達大學)、lee wittenberg(紐澤西基恩學院)、philip johnson(夏威夷大學)、daniel berry(加拿大滑鐵盧大學)、nancy day(滑鐵盧大學)、jianwei niu(滑鐵盧大學)、chris gorringe(英國東英吉利大學)、ivan aaen(奧爾堡大學)、damla turget(中佛羅裡達大學)、laurie williams(北卡羅來納州立大學)、ernest sibert(錫拉丘茲大學)、allen holliday(加州大學,福樂頓市)、david rine(喬治梅森大學)、anthony sullivan(得克薩斯大學,達拉斯)、david chesney(密西根大學,安娜堡)、ye duan(密蘇裡大學)、rammohan k. ragade(肯塔基大學)以及prentice hall提供的一些不具名的評閱人。與下列人員的讨論使本書得到了許多改進和加強:greg hislop(德雷克賽爾大學)、john favaro(意大利intecs sistemi公司)、filippo lanubile(意大利巴裡大學)、john d’ambra(澳洲新南威爾士大學)、chuck howell(mitre公司)、tim vieregge(美國軍方計算機應急反應組)以及james robertson 和 suzanne robertson(英國大西洋系統行業協會)。
感謝toni holm以及alan apt,他們使本書第3版的創作顯得有趣并相對輕松;也感謝james robertson和suzanne robertson讓我們使用皮卡地裡例子,還要感謝norman fenton同意使用我們軟體度量一書中的資料;我們非常感謝tracy dunkelberger,她在我們編纂本書第4版的時候給予我們鼓勵,我們也感激她的耐心和專業精神;還要感謝jane bonnell和pavithra jayapaul的完美工作。
這裡,我們非常感謝一些出版商允許我們引用一些圖和例子。來自于complete systems analysis(robertson and robertson 1994)和mastering the requirements process(robertson and robertson 1999)的資料是從網站www.dorsethouse.com 上抽取的,得到了dorset house出版社的使用許可。練習1-1中的文章是在美聯社的許可下從《華盛頓郵報》中引用的。圖2-15及圖2-16是在john wiley & sons公司的許可下,從barghouti等人的著作(barghouti et al. 1995)中引用的。圖12-14和圖12-15是在john wiley & sons公司的許可下,從參考文獻(rout 1995)中引用的。
在電氣和電子工程師學會(ieee)的許可下,我們引用了第2、3、4、5、9、11、12和14章中标注有ieee版權的圖和表。類似地,第14章中标注有acm版權的三個表,是在計算機協會(acm)的許可下引用的。表2-1和圖2-11是在軟體生産力聯合技術發展中心的許可下,引用于參考文獻(lai 1991)。來自參考文獻(graham 1996a)的圖8-16、圖8-17是在dorothy r. graham的許可下引用的。在公衆利益科學中心(華盛頓特區西北部康涅狄格大街1875号)的許可下,圖12-11和表12-2改編自參考文獻(liebman 1994)。表8-2、表8-3、表8-5和表8-6是在mcgraw-hill公司的許可下引用的。來自于參考文獻(shaw and garlan 1996)、(card and glass 1990)、(grady 1997)以及(lee and tepfenhart 1997)的圖和例子是在prentice hall的許可下引用的。
經過norman fenton的許可,表9-3、表9-4、表9-6、表9-7、表13-1、表13-2、表13-3、表13-4,以及圖1-15、圖9-7、圖9-8、圖9-9、圖9-14、圖13-1、圖13-2、圖13-3、圖13-4、圖13-5、圖13-6和圖13-7(部分或全部)引用或改編于fenton和pfleeger的著作(fenton and pfleeger 1997)。在norman fenton的善意許可下,圖3-16、圖5-19和圖5-20引用或改編于norman fenton的課程注解。
我們特别感謝我們的雇主,蘭德公司以及滑鐵盧大學,他們分别給我們以鼓勵。1我們感謝朋友及家人的關心、支援和耐心,寫作本書占用了我們本應共度的時光。尤其是,shari lawrence pfleeger要感謝皇家服務站的經理manny lawrence,也感謝他的簿記員bea lawrence,不僅因為他們與她及她的學生在皇家系統規格說明上的合作,而且因為他們作為父母所給予shari的關愛和指導。jo atlee特别感謝她的父母,nancy和gary atlee,他們對她所做的或嘗試要做的任何事情都給予支援和鼓勵;也感謝她的同僚及學生,他們在本書的主要創作期間,愉快地承擔了許多的額外工作。我們最要特别感謝的是charles pfleeger和ken salem,他們是我們獲得賞識和持續不斷的支援、鼓勵和好心情的源泉。
shari lawrence pfleeger
joanne m. atlee
**請注意,本書并不是蘭德公司的産品,也未經蘭德的品質保證過程。本書的相關工作僅代表作者個人,并不代表我們所在的機構。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。**
目錄
<a href="https://yq.aliyun.com/articles/94917">第1章 軟體工程概述</a>
<a href="https://yq.aliyun.com/articles/94930">1.2 軟體工程取得了哪些進展</a>
<a href="https://yq.aliyun.com/articles/94936">1.3 什麼是好的軟體</a>
<a href="https://yq.aliyun.com/articles/94940">1.4 軟體工程涉及的人員</a>
<a href="https://yq.aliyun.com/articles/94950">1.6 工程的方法</a>
<a href="https://yq.aliyun.com/articles/94957">1.7 開發團隊的成員</a>
<a href="https://yq.aliyun.com/articles/94967">1.8 軟體工程發生了多大的變化</a>
<a href="https://yq.aliyun.com/articles/94975">1.9 資訊系統的例子</a>
<a href="https://yq.aliyun.com/articles/94977">1.10 實時系統的例子</a>
<a href="https://yq.aliyun.com/articles/94981">1.11 本章對單個開發人員的意義</a>
<a href="https://yq.aliyun.com/articles/94984">1.12 本章對開發團隊的意義</a>
<a href="https://yq.aliyun.com/articles/94987">1.13 本章對研究人員的意義</a>
<a href="https://yq.aliyun.com/articles/94993">1.14 學期項目</a>
<a href="https://yq.aliyun.com/articles/94998">1.15 主要參考文獻</a>
<a href="https://yq.aliyun.com/articles/95002">1.16 練習</a>
<a href="https://yq.aliyun.com/articles/95008">第2章 過程和生命周期的模組化</a>
<a href="https://yq.aliyun.com/articles/95008">2.1 過程的含義</a>
<a href="https://yq.aliyun.com/articles/95032">2.2 軟體過程模型</a>
<a href="https://yq.aliyun.com/articles/95050">2.3 過程模組化工具和技術</a>
<a href="https://yq.aliyun.com/articles/95058">2.4 實際的過程模組化</a>
<a href="https://yq.aliyun.com/articles/95066">2.5 資訊系統的例子</a>
<a href="https://yq.aliyun.com/articles/95069">2.6 實時系統的例子</a>
<a href="https://yq.aliyun.com/articles/95071">2.7 本章對單個開發人員的意義</a>
<a href="https://yq.aliyun.com/articles/95075">2.8 本章對開發團隊的意義</a>
<a href="https://yq.aliyun.com/articles/95082">2.9 本章對研究人員的意義</a>
<a href="https://yq.aliyun.com/articles/95094">2.10 學期項目</a>
<a href="https://yq.aliyun.com/articles/95098">2.11 主要參考文獻</a>
<a href="https://yq.aliyun.com/articles/95101">2.12 練習</a>
第3章 計劃和管理項目
第4章 擷取需求
第5章 設計體系結構
第6章 設計子產品
第7章 編寫程式
第8章 測試程式
第9章 測試系統
第10章 傳遞系統
第11章 維護系統
第12章 評估産品、過程和資源
第13章 改進預測、産品、過程和資源
第14章 軟體工程的未來
參考文獻注解
索引