標籤:isp aik 資料類型 bsp res post 參考文獻 耦合 崩潰
:網盤下載
編輯精選編輯本書反映了作者10多年來構造系統以及教授軟體工程課程的體會。我們發現,學生常常孤立地學習程式設計技術和軟體工程技術,常常選擇小的問題作為研究執行個體。所帶來的結果是,學生們能夠有效地解決定義明確的問題,但當他們第一次真正面對複雜而真實的開發項目時,常常會感到束手無策。真實的開發過程需要很多不同的技術和工具,要求開發人員之間進行合作。針對這一情況,現今的軟體工程本科課程體系中通常包括一門軟體工程專案管理的課程,講授組織成一個開發項目所必需的知識。[1] 圖書簡介編輯
工具:UML、Java和設計模式
編寫本書時,在我們的頭腦中一直有一個課程項目。這個項目除了可以作為課程設計的項目之外,還可以在其他場合使用,例如用作短期集訓或者短期研發的項目等。我們使用了真實系統中的執行個體,並檢驗UML、基於Java的技術、設計模式、設計原理、組態管理以及品質控制等現代技術之間的互動。此外,我們討論了與專案管理相關的問題,這些問題與上述技術及其對複雜性和變化的影響相關。前言編輯十多年以前,我就瞭解到由卡耐基·梅隆大學(CMU)的Bernd Bruegge講授的一門軟體工程課程。在很多其他大學的軟體工程課程上,通常的做法是,在一個學期中,將3~4個學生分在一個小組中,並給每一個小組指派幾個小問題或項目,其中每一個小問題或項目的研究周期不超過一個月。在這些小項目中,有一個能力較強的主程式員,通常通過該主程式員的強力帶動而推動整個小組的工作,以完成這些小項目。在這樣的背景之下,通常學生沒有必要學習溝通技能,沒有必要使用建模工具,也沒必要處理實際問題中所存在的歧義性。在這種環境下培養的學生並沒有學會怎樣去處理開發實際項目時將遇到的各種複雜性問題。在Bruegge教授的課程中,全班同學在整個學期中都在完成同一個項目:為匹茲堡市開發一個面向查詢的導航系統。學生們得在上一個學期學生所開發出的互動系統的基礎上,完成進一步的開發。客戶是市規劃部門的經理和領域權威。在該項目中,地理資料和汽車調度資料存在不精確、格式不相容的情況,在學年結束時,學生們完成了一個超過27 000行代碼的系統,該系統最終被客戶接受。這一結果與許多其他院校教學中使用的軟體工程小項目相比,有多麼大的不同啊!CMU的學生通過學習該課程,理解到了處理現實世界複雜性和雜亂性所需要的策略、組織和工具。學生們通過在執行個體中實踐來學習軟體工程課程,這是學會任何技藝的必由之路。本書反映的是將軟體開發作為一門工程學科的實用哲學。作者採用一種觀點——一種使用UML物件導向的方法,這使得軟體工程的許多方面能夠為學生所瞭解到。這些內容包括完成實際項目所需要的建模技術、人與人之間的溝通技巧。除此之外,還包含了如何管理變化的章節內容,這是每一個實際項目中均會出現的話題,但這一內容在其他的軟體工程書籍中又常常被忽略掉。閱讀本書將會使讀者對軟體工程的豐富範疇及其複雜性有深刻的理解。目錄編輯目 錄譯者的話 I前言 III序言 V致謝 XI第1部分 開 始第1章 軟體工程導論 31.1 導言:軟體工程的失誤 31.2 什麼是軟體工程 51.2.1 建模 61.2.2 問題求解 71.2.3 知識擷取 81.2.4 基本原理 81.3 軟體工程概念 91.3.1 參與者與角色 91.3.2 系統與模型 101.3.3 工作產品 111.3.4 活動、任務與資源 111.3.5 功能性需求與非功能性需求 121.3.6 記號、方法和方法學 121.4 軟體工程開發活動 131.4.1 需求萃取 131.4.2 分析 141.4.3 系統設計 161.4.4 對象設計 161.4.5 實現 161.4.6 測試 171.5 管理軟體開發 171.5.1 溝通 171.5.2 基本原理管理 181.5.3 軟體組態管理 181.5.4 專案管理 181.5.5 軟體生命週期 191.5.6 總結 191.6 競技場執行個體分析 191.7 推薦讀物 201.8 練習 21第2章 使用UML進行建模 222.1 導言 222.2 UML綜述 232.2.1 使用案例圖 232.2.2 類圖 242.2.3 互動圖 252.2.4 狀態機器 252.2.5 活動圖表 262.3 建模活動中的概念 272.3.1 系統、模型和視點 272.3.2 資料類型、抽象資料類型和執行個體 292.3.3 類、抽象類別和對象 292.3.4 事件類別、事件和訊息 312.3.5 物件導向建模過程 312.3.6 約簡表達和原型構造 332.4 UML的深入透視 342.4.1 使用案例圖 342.4.2 類圖 392.4.3 互動圖 472.4.4 狀態機器 492.4.5 活動圖表 512.4.6 圖的組織 532.4.7 圖的擴充 552.5 推薦讀物 562.6 練習 56第3章 項目組織和溝通 583.1 引言:一個有關火箭的例子 583.2 項目綜述 593.3 專案管理概念 623.3.1 專案管理 623.3.2 角色 653.3.3 任務和工作產品 673.3.4 進度表 683.4 項目溝通中的概念 693.4.1 計劃內溝通 693.4.2 計劃外的溝通 743.4.3 溝通機制 773.5 有組織的活動 833.5.1 加入一個項目團隊 833.5.2 使用溝通基礎設施 843.5.3 參加項目團隊情況通氣會議 843.5.4 組織客戶和項目總結 863.6 推薦讀物 873.7 練習 87第2部分 複雜性處理第4章 需求萃取 914.1 引言:可用性執行個體 914.2 對需求萃取的總的看法 924.3 需求萃取概念 944.3.1 功能需求 944.3.2 非功能性需求 944.3.3 完全性、一致性、清晰性和正確性 954.3.4 現實性、確認和可追蹤性 964.3.5 綠地工程、再工程和介面工程 974.4 需求萃取活動 974.4.1 標識參與者(Actor) 984.4.2 標識情境 994.4.3 標識用例 1014.4.4 求精用例 1034.4.5 標識參與者和用例之間的關係 1054.4.6 標識初始的分析對象 1084.4.7 標識非功能性需求 1104.5 需求萃取管理 1114.5.1 與客戶協商規格說明:聯合應用設計 1124.5.2 追蹤性維護 1134.5.3 需求萃取的編檔 1144.6 ARENA執行個體研究 1154.6.1 初始問題陳述 1154.6.2 標識參與者和情境 1174.6.3 標識用例 1204.6.4 求精用例與標識關係 1224.6.5 標識非功能性需求 1264.6.6 應接受的教訓 1264.7 推薦讀物 1274.8 練習 128第5章 分析 1305.1 導言:光幻影 1305.2 分析概述 1315.3 分析的概念 1325.3.1 物件模型和動態模型分析 1325.3.2 實體、邊界和控制對象 1325.3.3 泛化和特化 1345.4 分析活動:從用例到對象 1345.4.1 標識實體物件 1355.4.2 標識邊界對象 1375.4.3 標識控制對象 1385.4.4 使用順序圖將用例映射成對象 1395.4.5 使用CRC卡建模對象之間的互動 1425.4.6 標識關聯 1435.4.7 標識聚集 1455.4.8 識別屬性 1465.4.9 建模單一對象的狀態相關的行為 1475.4.10 建模對象之間的繼承關係 1485.4.11 分析模型評審 1485.4.12 分析小結 1495.5 分析管理 1505.5.1 分析文檔化 1515.5.2 分配責任 1515.5.3 對分析的溝通 1525.5.4 分析模型的迭代 1535.5.5 客戶發出的結束資訊 1545.6 ARENA案例研究 1565.6.1 標識實體物件 1565.6.2 標識邊界對象 1595.6.3 標識控制對象 1605.6.4 建模對象之間的互動 1615.6.5 評價和加固分析模型 1635.6.6 應該吸取的教訓 1655.7 推薦讀物 1665.8 練習 166第6章 系統設計:分解系統 1686.1 導言:一個地板規劃的例子 1686.2 系統設計概述 1706.3 系統設計概念 1716.3.1 子系統與類 1716.3.2 服務與子系統介面 1726.3.3 耦合與內聚 1736.3.4 分層與劃分 1766.3.5 體繫結構風格 1786.4 系統設計活動:從對象到子系統 1846.4.1 出發點:線路規劃系統的分析模型 1846.4.2 標識設計目標 1866.4.3 標識子系統 1886.5 推薦讀物 1906.6 練習 190第7章 系統設計:選擇設計目標 1927.1 介紹:一個冗餘系統的例子 1927.2 系統設計活動概述 1937.3 概念:UML部署圖 1957.4 系統設計活動:選擇設計目標 1967.4.1 將子系統映射到處理器和構件上 1967.4.2 標識並儲存持久性資料 1977.4.3 提供存取控制 2007.4.4 設計全域控制流程 2057.4.5 識別服務 2077.4.6 標識邊界條件 2087.4.7 評審系統設計 2107.5 管理系統設計 2127.5.1 系統設計編檔 2127.5.2 責任分配 2137.5.3 系統設計交流 2147.5.4 系統設計迭代 2157.6 ARENA案例研究 2167.6.1 標識設計目標 2167.6.2 標識子系統 2177.6.3 將子系統映射到處理器和構件 2187.6.4 標識並儲存持久性資料 2207.6.5 提供存取控制 2207.6.6 設計全域控制流程 2217.6.7 識別服務 2227.6.8 標識邊界條件 2247.6.9 課程小結 2267.7 推薦讀物 2267.8 練習 227第8章 對象設計:複用模式解決方案 2288.1 導言:挫折 2288.2 對象設計總論 2308.3 複用的概念:解對象、繼承和設計模式 2328.3.1 應用對象和解對象 2328.3.2 定義繼承和實現繼承 2338.3.3 授權 2358.3.4 Liskov替換準則 2358.3.5 設計模式中的授權和繼承 2368.4 複用活動:選擇設計模式和構件 2388.4.1 使用Bridge模式封裝資料存放區 2398.4.2 通過Adapter模式封裝遺留構件 2408.4.3 用Strategy模式封裝上下文 2428.4.4 使用Abstract Factory模式封裝平台 2448.4.5 使用Command模式封裝控制流程 2458.4.6 用Composite設計模式封裝層次 2468.4.7 選擇設計模式的啟發學習法準則 2488.4.8 標識和調整應用程式框架 2488.5 管理複用 2528.5.1 文檔編輯複用 2538.5.2 分配責任 2548.6 ARENA案例分析 2548.6.1 使用Abstract Factory設計模式 2558.6.2 使用Command設計模式 2568.6.3 使用Observer設計模式 2578.6.4 課程回顧 2578.7 推薦讀物 2588.8 習題 258第9章 對象設計:說明介面 2609.1 導言:一個鐵路的例子 2609.2 介面規格說明概述 2619.3 介面規格說明概念 2629.3.1 類實現者、類擴充者和類使用者 2639.3.2 類型、簽名和可見度 2649.3.3 契約:不變式、前置條件和後置條件 2659.3.4 對象約束語言 2669.3.5 OCL集合:集合、袋以及序列 2699.3.6 OCL量詞:全稱量詞forAll和存在量詞exists 2729.4 介面規格說明活動 2729.4.1 標識遺漏的屬性和操作 2739.4.2 說明類型、簽名和可見度 2749.4.3 說明前置條件和後置條件 2759.4.4 說明不變式 2779.4.5 繼承契約 2789.5 對象設計管理 2809.5.1 對象設計編檔 2809.5.2 分配責任 2859.5.3 在需求分析中使用契約 2859.6 ARENA案例分析 2869.6.1 標識在系列賽風格TournamentStyle和回合Round中遺漏的操作 2869.6.2 定義說明系列賽風格TournamentStyle和回合Round中的契約 2889.6.3 定義說明淘汰賽風格KnockOutStyle和淘汰回合KnockOutRound??????契約 2909.6.4 課程回顧 2919.7 推薦讀物 2919.8 練習 292第10章 將模型映射到代碼 29410.1 導言:一個關於書的例子 29410.2 映射的概述 29510.3 映射的概念 29610.3.1 模型轉換 29610.3.2 重構 29710.3.3 正向工程 29910.3.4 逆向工程 30010.3.5 轉換原則 30010.4 映射活動 30110.4.1 最佳化對象設計模型 30110.4.2 將關聯映射到集合 30410.4.3 將契約映射到異常 30810.4.4 將物件模型映射到持久儲存模式 31210.5 管理實現 31710.5.1 編檔過程轉換 31710.5.2 指派職責 31810.6 ARENA案例研究 31810.6.1 競技場系統ARENA中的統計類Statistics 31910.6.2 將關聯映射到集合 32010.6.3 將契約映射到異常 32210.6.4 將物件模型映射到資料庫模式 32310.6.5 課程回顧 32410.7 推薦讀物 32410.8 練習 325第11章 測試 32711.1 導言:測試太空梭 32711.2 測試概述 32911.3 測試概念 33211.3.1 故障、錯誤狀態和失效 33311.3.2 測試案例 33511.3.3 測試樁和測試驅動 33711.3.4 更正 33711.4 測試活動 33811.4.1 構件檢查 33811.4.2 可用性測試 33911.4.3 單元測試 34011.4.4 整合測試 34811.4.5 系統測試 35211.5 管理測試 35611.5.1 制定測試計劃 35611.5.2 編寫測試文檔 35711.5.3 分配職責 35911.5.4 迴歸測試 36011.5.5 使測試自動化 36111.5.6 基於模型的測試 36211.6 推薦讀物 36411.7 練習 365第3部分 變更管理第12章 基本原理管理 36912.1 引言:將火腿切成薄片 36912.2 基本原理概述 37012.3 基本原理概念 37212.3.1 集中式的交通控制 37312.3.2 定義問題:問題 37412.3.3 探索問題空間:提議 37512.3.4 評價求解空間:標準和討論 37612.3.5 使求解空間崩潰:解決方案 37712.3.6 執行解決方案:活動項 37812.3.7 基於問題的模型和系統執行個體 37912.4 基本原理的活動:從問題到決策 38212.4.1 CTC系統設計 38212.4.2 在會議中擷取基本原理 38312.4.3 非同步擷取基本原理 38912.4.4 當討論變更的時擷取的基本原理 39112.4.5 重新構造基本原理 39312.5 管理基本原理 39512.5.1 將基本原理文檔化 39512.5.2 分配任務 39612.5.3 關於基本原理交流的啟發學習法規則 39712.5.4 問題模型和協商 39712.5.5 衝突解決方案策略 39912.6 推薦讀物 40012.7 練習 400第13章 組態管理 40213.1 引言:一個飛機的執行個體 40213.2 組態管理的概要 40413.3 組態管理的概念 40513.3.1 配置項和CM聚集 40613.3.2 版本和配置 40613.3.3 變化請求 40713.3.4 升級和發布 40713.3.5 倉庫和工作空間 40713.3.6 版本標識方案 40813.3.7 變化和變化集 40913.3.8 組態管理工具 41013.4 組態管理活動 41113.4.1 配置項和CM聚集標識 41313.4.2 升級管理 41413.4.3 發布版本管理 41513.4.4 分支管理 41713.4.5 不同版本管理 41913.4.6 變更管理 42113.5 對組態管理的管理 42213.5.1 組態管理的文檔化 42213.5.2 分配組態管理責任 42313.5.3 計劃組態管理活動 42413.5.4 持續整合:測試活動和改進管理 42413.6 推薦讀物 42613.7 練習 426第14章 專案管理 42814.1 介紹:STS-51L發射決定 42814.2 專案管理概述 43014.3 專案管理概念 43414.3.1 任務和活動 43414.3.2 工作產品、工作包和角色 43514.3.3 分工結構圖 43614.3.4 任務模型 43614.3.5 技能矩陣 43714.3.6 組織 43814.3.7 可視組織圖 44014.3.8 組織圖譜 44014.3.9 軟體專案管理計劃 44114.4 專案管理活動 44314.4.1 計劃項目 44414.4.2 組織項目 44814.4.3 控制項目 45114.4.4 終結項目 45514.5 Agile專案管理活動 45614.5.1 專案計劃:建立產品和衝刺後備 45714.5.2 組織項目 45714.5.3 控制項目:每一天的衝刺和滅火表(burn down charts) 45814.5.4 終止項目:對於衝刺的評論 45914.6 推薦讀物 46014.7 練習 460第15章 軟體生命週期 46215.1 導言:玻利尼西亞航行 46215.2 IEEE 1074:開發軟體生命週期過程的標準 46515.2.1 過程與活動 46515.2.2 軟體生命週期建模 46715.2.3 專案管理 46715.2.4 前期開發 46815.2.5 開發過程 46815.2.6 後期開發 46915.2.7 整體過程(交叉開發過程) 47015.3 評價軟體生命週期模型的成熟度等級 47115.4 生命週期模型 47215.4.1 以順序活動為中心的模型 47315.4.2 以迭代活動為中心的模型 47515.4.3 以實體為中心的模型 47915.5 推薦讀物 48115.6 練習 481第16章 方法學:綜合考慮各種因素 48316.1 導言:首次攀登喬戈裡峰(K2峰) 48316.2 項目環境 48616.3 方法學問題 48816.3.1 需要做多少個計劃 48816.3.2 需要在多大程度上考慮複用 48916.3.3 需要建多少種模型 48916.3.4 過程包含多少步驟 49016.3.5 需要多大程度上的控制和監控 49116.3.6 什麼時候重定義項目目標 49216.4 方法學領域 49216.4.1 Royce方法學 49316.4.2 極限編程(XP) 49616.4.3 Rugby方法學 50016.5 案例學習 50516.5.1 XP項目:ATRACT 50616.5.2 局部主客戶:FRIEND 50816.5.3 分布式項目:JAMES 51316.5.4 案例學習總結 51816.6 推薦讀物 52116.7 練習 521第4部分 附 錄附錄A 設計模式 525A.1 Abstract Factory:封裝平台 525A.2 Adapter:對遺留代碼的封裝 526A.3 Bridge:允許選擇性實現 527A.4 Command:封裝控制流程 527A.5 Composite:表示遞迴的階層 528A.6 Facade:封裝子系統 529A.7 Observer:將實體從視圖中分離出來 529A.8 Proxy:封裝開銷大的對象 530A.9 Strategy:封裝演算法 531A.10 選擇設計模式的啟發學習法準則 532附錄B 術語表 533附錄C 參考文獻 557
:網盤下載
物件導向軟體工程:使用UML、模式與 Java(第3版)pdf