出版時間:2009-5 出版社:竇萬峰、 等 機械工業(yè)出版社 (2009-05出版) 作者:竇萬峰 頁數(shù):287
前言
軟件工程概念自1968年提出以來,經過了近四十年的發(fā)展,為軟件行業(yè)從業(yè)人員從事軟件開發(fā)和維護提供了理論指導和基本原則,促進了軟件產品和軟件行業(yè)的快速發(fā)展,也促進了軟件工程自身的理論體系的完善和發(fā)展。軟件工程涉及軟件分析、設計、實現(xiàn)和維護等軟件生命全過程,包含了一系列原理、方法和實踐,指導人們進行正確的軟件開發(fā)。軟件工程強調從工程化的原理出發(fā),按照標準化規(guī)程和軟件工程實踐來開發(fā)和管理項目,并進行過程改進,促進軟件企業(yè)向標準化和成熟化發(fā)展。軟件工程領域包括三個重要方面:軟件開發(fā)、軟件項目管理、過程改進。軟件工程是一個理論與實踐相結合的學科,更注重通過實踐來理解理論和原理與方法。為此,本書結合作者多年從事軟件工程教學和項目開發(fā)的經驗,通過5個項目實例,從不同的角度和范型循序漸進介紹軟件開發(fā)過程中所涉及的原理、方法與技術。全書分為五個部分:第一部分:軟件工程概述。共4章內容,初步介紹軟件工程的基本概念,涉及的主要內容,軟件過程生命周期及其模型,以及本教材的案例與要求。第二部分:軟件分析。在這一部分共安排了3章內容,主要介紹軟件分析與建模的原理和方法,包括結構化分析和面向對象分析的原理和方法。本部分分別介紹了分析的基本過程、非形式化的分析方法和獲取需求的策略;介紹了結構化分析建模技術,包括面向數(shù)據(jù)流的分析技術和面向數(shù)據(jù)的分析技術;介紹了面向對象分析建模技術,包括用例建模、對象建模等,介紹如何用UMI.語言表示面向對象模型。本部分用案例進一步深化分析的思想和原理及過程。第三部分:軟件設計。在這一部分共安排4章內容,主要介紹軟件設計原理和方法,包括結構化設計和面向對象設計技術。介紹設計的基本概念、原理和過程;介紹面向數(shù)據(jù)流的設計方法和面向數(shù)據(jù)結構的設計方法;介紹面向對象的設計方法,包括設計模型、精化設計、動態(tài)設計;介紹詳細設計和界面設計等。本部分通過案例深入理解設計方法和過程。第四部分:軟件測試與維護。在這一部分安排兩章內容,主要介紹軟件測試原理與技術、維護策略與方法。介紹測試過程、測試基本技術、測試用例設計;介紹軟件維護類型、可維護性和結構化維護過程。
內容概要
軟件工程學將計算機科學理論與現(xiàn)代工程方法論相結合,著重研究軟件過程模型、分析與設計方法、軟件工程開發(fā)與管理技術和工具,是指導軟件生產和管理的一門新興的、綜合性的應用科學?!盾浖こ谭椒ㄅc實踐》分別從傳統(tǒng)的結構化開發(fā)范型和面向對象開發(fā)范型兩個方面,把軟件工程的概念和理論知識融入到實踐當中,通過豐富的案例分析與設計,更深入地理解軟件開發(fā)中各個階段的技術、方法和管理過程。《軟件工程方法與實踐》包括軟件工程與過程、軟件需求分析與建模、軟件設計、軟件測試與維護和軟件工程管理五個部分,共16章,深入介紹了軟件開發(fā)“工程化”思想。 《軟件工程方法與實踐》適合作為高等院校軟件工程課程的教材,即適用于計算機專業(yè)的學生,也適用于其他非計算機專業(yè)從事軟件開發(fā)與應用及管理的專業(yè)學生和技術人員學習的教材?!盾浖こ谭椒ㄅc實踐》還可以成為從事軟件開發(fā)人員必備的參考書?! 盾浖こ谭椒ㄅc實踐》將軟件工程原理和實踐分析相結合,以案例項目為主線貫穿全書,介紹了軟件工程涉及的概念。原理和方法,按照軟件工程階段要求建立系統(tǒng)模型,包括分析。設計、測試、管理等。在每個階段安排能夠體現(xiàn)該階段原理和思想的案例,全面介紹軟件工程的要點,使學生能夠深入理解軟件工程的原理。方法和技術并充分認識開發(fā)過程和迭代工作的重要性,同時進一步了解企業(yè)軟件工程運用的規(guī)范和要求,為日后工作中出色完成項目任務和迭代任務打下堅實的基礎?! 盾浖こ谭椒ㄅc實踐》特點 ·堅持基本理論適度,強調工程實踐和應用環(huán)節(jié),把軟件工程的概念和理論知識融入實踐之中?! ひ浴卑咐睘轵寗樱詫嵺`教學為基礎,提供5個典型案例支持,不同的案例介紹和分析層次充分體現(xiàn)技術的適用性和方法的實用性。 ·注重教學資源的配套,為任課教師配有電子教案?! づ涮捉滩摹盾浖こ虒嶒灲坛獭罚龑W生學習軟件生命周期各階段所用到的CASE工具,包括軟件文檔標準與規(guī)范。軟件分析與設計、軟件測試和軟件項目管理四個部分,共設計了15個實驗,培養(yǎng)學生實踐創(chuàng)新能力和專業(yè)技能。
書籍目錄
前言 教學建議第一部分 軟件工程與過程第1章 概述21.1 軟件工程的基本概念21.1.1 軟件的角色和特性21.1.2 軟件演化31.1.3 軟件神化和危機41.1.4 軟件危機的解決途徑41.2 工程化思想51.2.1 工程化所涉及的范圍51.2.2 工程化管理思想51.3 軟件工程兩大范型51.4 軟件工程思想與基本原理61.4.1 軟件工程基本原理71.4.2 軟件工程思想71.5 軟件工程活動91.5.1 軟件開發(fā)活動91.5.2 軟件項目管理活動91.5.3 軟件過程改進活動101.6 小結10習題10第2章 軟件過程112.1 軟件過程概述112.1.1 過程方法與工具112.1.2 軟件過程框架122.1.3 軟件過程模型122.2 軟件生命周期122.3 能力成熟度模型集成132.4 敏捷過程162.4.1 什么是敏捷過程172.4.2 極限編程182.4.3 自適應軟件開發(fā)202.4.4 動態(tài)系統(tǒng)開發(fā)212.4.5 特征驅動開發(fā)212.5 軟件工程實踐222.5.1 概念222.5.2 溝通實踐232.5.3 計劃實踐232.6 小結24習題24第3章 軟件過程模型253.1 瀑布模型253.2 增量模型263.2.1 增量構造模型273.2.2 演化提交模型273.3 螺旋模型273.4 協(xié)同開發(fā)模型283.5 面向對象過程模型293.5.1 面向對象概念293.5.2 統(tǒng)一過程模型303.5.3 組件集成模型333.6 面向方面的軟件開發(fā)343.7 小結36習題36第4章 案例研究374.1 案例研究中涵蓋的內容374.2 案例1:出卷系統(tǒng)374.3 案例2:短信系統(tǒng)374.4 案例3:POS機系統(tǒng)384.5 案例4:ATM機系統(tǒng)384.6 案例5:圖書館系統(tǒng)384.7 小結38習題38第二部分 軟件需求分析與建模第5章 軟件需求分析過程405.1 什么是軟件需求405.1.1 功能需求405.1.2 非功能需求405.1.3 領域需求415.2 需求分析過程435.2.1 初步溝通435.2.2 導出需求435.2.3 分析和精化445.2.4 可行性研究445.2.5 協(xié)商與溝通445.2.6 規(guī)格說明445.2.7 需求驗證465.2.8 需求變更管理465.3 啟動分析過程465.3.1 確認利益相關者465.3.2 識別視點475.3.3 協(xié)同工作475.3.4 首次提問475.4 非形式化需求分析技術475.4.1 會談475.4.2 調查表495.4.3 場景分析495.5 案例分析495.5.1 出卷系統(tǒng)495.5.2 POS機系統(tǒng)505.5.3 圖書館系統(tǒng)505.5.4 短信系統(tǒng)515.5.5 ATM機系統(tǒng)515.6 小結51習題52第6章 結構化分析建模536.1 分析模型概述536.1.1 分析模型元素536.1.2 分析模式546.1.3 目標與原理546.2 結構化需求分析546.2.1 結構化分析方法556.2.2 結構化分析模型556.3 面向數(shù)據(jù)的建模方法566.3.1 實體566.3.2 屬性566.3.3 關系576.3.4 基數(shù)576.3.5 案例分析576.4 面向數(shù)據(jù)流的建模586.4.1 數(shù)據(jù)流圖586.4.2 數(shù)據(jù)字典606.4.3 狀態(tài)轉換圖616.4.4 加工邏輯的描述616.5 案例分析646.5.1 出卷系統(tǒng)646.5.2 圖書館系統(tǒng)666.5.3 POS機系統(tǒng)686.5.4 短信系統(tǒng)696.6 小結71習題71第7章 面向對象分析737.1 面向對象建模737.1.1 面向對象模型737.1.2 統(tǒng)一建模語言(UML)757.2 用例建模767.2.1 編寫用例767.2.2 開發(fā)活動圖817.2.3 泳道圖827.3 建立領域模型827.3.1 識別分析類837.3.2 用例實現(xiàn)分析847.3.3 關聯(lián)與依賴867.3.4 識別屬性和操作867.4 行為建模877.4.1 系統(tǒng)順序圖877.4.2 操作契約887.4.3 順序圖與協(xié)作圖897.4.4 狀態(tài)圖907.5 案例分析907.5.1 POS機系統(tǒng)917.5.2 ATM機系統(tǒng)927.5.3 短信系統(tǒng)967.6 小結98習題98第三部分 軟件設計與建模第8章 軟件設計1008.1 軟件設計概述1008.1.1 軟件設計過程和設計質量1008.1.2 概要設計說明書1018.1.3 詳細設計說明書1028.2 軟件模塊化設計1038.2.1 軟件模塊化1038.2.2 抽象1048.2.3 體系結構1048.2.4 信息隱蔽1048.2.5 模塊獨立性1058.2.6 逐步求精1068.2.7 重構1068.3 軟件結構1068.3.1 軟件結構圖1068.3.2 模塊化設計的優(yōu)化1078.4 軟件系統(tǒng)結構模型1088.4.1 系統(tǒng)構成模型1088.4.2 系統(tǒng)控制模型1108.5 體系結構模式1118.6 小結111習題111第9章 結構化設計方法..1 139.1 結構化設計方法概述1139.1.1 概要設計1139.1.2 詳細設計1139.2 數(shù)據(jù)流類型1149.2.1 變換型數(shù)據(jù)流1149.2.2 事務型數(shù)據(jù)流1149.2.3 混合型數(shù)據(jù)流1149.3 數(shù)據(jù)流設計方法1159.3.1 數(shù)據(jù)流映射步驟1159.3.2 變換流設計1159.3.3 事務流設計1169.3.4 綜合分層的數(shù)據(jù)流設計1179.4 面向數(shù)據(jù)的設計1189.4.1 Jackson圖1189.4.2 JSD方法設計步驟1189.4.3 JSD舉例分析1199.5 結構化程序設計方法1219.5.1 基本概念1219.5.2 結構化程序設計工具1229.6 案例分析1269.6.1 出卷系統(tǒng)1269.6.2 圖書館系統(tǒng)1299.7 小結131習題131第10章 面向對象設計13410.1 面向對象設計過程13410.1.1 系統(tǒng)模型描述13410.1.2 邏輯架構和包圖13410.1.3 對象識別13510.1.4 設計模型13510.1.5 對象接口描述13710.2 構件級設計13710.2.1 構件類13710.2.2 構件級設計步驟13810.2.3 基于類的構件設計原則13910.3 設計模式14010.3.1 設計模式概述14010.3.2 基于職責的設計14010.4 面向對象詳細設計14410.4.1 領域模型精化14410.4.2 邏輯架構精化14710.4.3 包設計14910.4.4 精化的交互圖15010.4.5 精化的類圖15210.4.6 持久性設計15410.4.7 部署圖與構件圖15610.5 案例分析15710.5.1 POS機系統(tǒng)15710.5.2 短信系統(tǒng)15810.5.3 ATM機系統(tǒng)15910.6 小結163習題164第11章 軟件實現(xiàn)16511.1 編碼語言16511.1.1 編碼語言的分類16511.1.2 編碼語言特性16511.1.3 面向對象語言的特點16611.1.4 編碼語言的選擇16711.2 編碼風格16811.2.1 編碼的基本原則16811.2.2 面向對象編碼原則16911.3 人機界面設計17111.3.1 人機界面分析和設計17111.3.2 人機界面設計步驟17311.3.3 人機界面設計指南17411.4 案例分析17511.4.1 POS機系統(tǒng)17511.4.2 短信系統(tǒng)17711.4.3 出卷系統(tǒng)19111.5 小結194習題194第四部分 軟件測試與維護第12章 軟件測試19612.1 軟件測試的任務19612.1.1 驗證與確認19612.1.2 軟件測試的組織形式19712.1.3 軟件測試的目的與原則19712.1.4 完成標準19912.2 軟件測試過程模型20012.2.1 V模型20012.2.2 W模型20012.2.3 H模型20112.3 軟件測試策略20112.3.1 單元測試20212.3.2 集成測試20412.3.3 確認測試20512.3.4 系統(tǒng)測試20512.4 測試用例設計20512.4.1 測試用例設計的目的20512.4.2 測試用例設計的方法和描述20612.4.3 測試用例設計的重要性和影響因素20612.4.4 編寫測試用例時的注意事項20612.5 黑盒技術20712.5.1 等價類劃分法20712.5.2 邊界值分析法20812.5.3 錯誤推測法20912.5.4 因果圖法20912.6 白盒技術21112.6.1 邏輯覆蓋法21212.6.2 基本路徑測試法21412.6.3 循環(huán)測試法21812.7 集成測試技術21912.7.1 集成策略21912.7.2 接口測試22112.8 自動測試工具22112.9 調試22212.9.1 調試過程22212.9.2 調試策略22312.1 0案例分析22412.1 1小結229習題230第13章 軟件維護23113.1 軟件維護概述23113.1.1 軟件維護的任務23113.1.2 軟件維護的特點23113.1.3 軟件可維護性23213.2 軟件維護類型23213.2.1 糾錯性維護23213.2.2 完善性維護23313.2.3 適應性維護23313.2.4 預防性維護23313.3 軟件維護技術與過程23313.3.1 面向維護的技術23413.3.2 維護支援技術23413.3.3 軟件維護過程23413.4 非結構化維護和結構化維護23613.5 提高可維護性23613.6 面向對象的軟件維護23813.7 小結238習題238第五部分 軟件工程管理第14章 軟件項目管理24014.1 項目管理概述24014.2 軟件項目管理范圍24114.2.1 人員24114.2.2 項目和過程24214.2.3 軟件度量24314.2.4 軟件項目管理計劃文檔24414.3 軟件團隊組織范式24614.3.1 民主分權式24614.3.2 控制集權式24714.3.3 控制分權式24814.3.4 敏捷團隊24814.4 項目組織原則24914.5 軟件過程管理24914.5.1 軟件過程度量24914.5.2 軟件過程改進25014.5.3 項目度量25114.6 風險管理25114.6.1 風險識別25214.6.2 風險預測25214.6.3 風險管理25214.7 軟件配置管理25314.7.1 SCM基本概念25314.7.2 SCM過程25414.7.3 SCM中心存儲庫25514.8 小結256習題256第15章 軟件項目估算25715.1 概述25715.1.1 項目計劃與范圍25715.1.2 項目資源25715.2 軟件規(guī)模度量25815.2.1 面向規(guī)模的度量25815.2.2 面向對象的度量26015.3 軟件成本估算的分解技術26015.3.1 基于問題分解的估算26015.3.2 基于過程分解的估算26215.4 經驗估算模型26315.4.1 專家類比推斷26315.4.2 由底向上估算方法26315.4.3 構造性成本模型26415.5 成本估算管理26615.6 案例分析26615.6.1 短信系統(tǒng)26615.6.2 POS機系統(tǒng)26715.7 小結268習題269第16章 軟件項目計劃與管理27016.1 軟件質量管理27016.1.1 質量概念27016.1.2 軟件質量保證27116.1.3 軟件質量度量27216.1.4 軟件復審27516.1.5 軟件質量認證標準27616.2 項目計劃27816.2.1 項目進度安排27816.2.2 進度安排方法27916.2.3 項目進度的跟蹤管理28116.3 軟件項目管理工具28116.4 小結286習題287參考文獻2 88
章節(jié)摘錄
插圖:第1章 概述軟件工程(Software Engineering,SE)的概念是在20世紀60年代末期提出的。這一概念的提出,目的是倡導以工程的原理、原則和方法進行軟件開發(fā),用來解決當時出現(xiàn)的“軟件危機”。B.W.Boehm為軟件工程下的定義為:“運用現(xiàn)代科學技術知識來設計并構造計算機程序及為開發(fā)、運行和維護這些程序所必需的相關文件資料?!盕ritz Bauer為軟件工程下的定義為:“軟件工程是為了經濟地獲得能夠在實際機器上有效運行的可靠軟件而建立和使用的一系列完善的工程化原則?!?983年IEEE(國際電氣與電子工程師協(xié)會)提出了IEEE軟件工程標準術語,將軟件工程定義為:“開發(fā)、運行、維護和修復軟件的系統(tǒng)方法”。其中,“軟件”的定義為:“計算機程序、方法、規(guī)則、相關的文件資料以及在計算機上運行時所必需的數(shù)據(jù)?!北M管軟件工程的具體定義不盡相同,且又有一些學者提出了更完善的定義,但其主要思想都是在強調在軟件開發(fā)的過程中應用工程化思想的重要性。軟件工程的目標是:根據(jù)需求分析確定可行性后,在給定的時間內開發(fā)出具有可修改性、有效性、可靠性、可維護性、可重用性、可適應性、可移植性、開銷合宜并滿足用戶需要的軟件產品。1.1 軟件工程的基本概念軟件工程的主旨是以工程化的思想進行軟件開發(fā),以生產高質量和高效率的軟件,也就是說,軟件工程研究的基礎就是軟件。那么,軟件是怎么定義的?又有哪些特性?
編輯推薦
《軟件工程方法與實踐》:分別從結構化開發(fā)范型和面向對象開發(fā)范型角度循序漸進介紹軟件開發(fā)過程相關的原理、方法和技術。理論知識和案例分析相結合,以5個典型案例項目貫穿全書。
圖書封面
評論、評分、閱讀與下載