軟件工程:架構驅動的軟件開發

軟件工程:架構驅動的軟件開發 pdf epub mobi txt 電子書 下載 2025

[美] 理查德·F.施密特 著
圖書標籤:
  • 軟件工程
  • 架構設計
  • 軟件架構
  • 軟件開發
  • 需求分析
  • 係統設計
  • 代碼質量
  • 軟件維護
  • 敏捷開發
  • 設計模式
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111533146
版次:1
商品編碼:11982462
品牌:機工齣版
包裝:平裝
叢書名: 計算機科學叢書
開本:16開
齣版時間:2016-07-01
用紙:膠版紙
頁數:221

具體描述

內容簡介

  本書比較全麵地介紹軟件工程學科,展示軟件工程原則與基於係統工程的軟件實踐,闡明與軟件工程所用的嚴格方法相關的實踐活動、原則、任務和工件。本書共分三部分:部分(軟件工程基礎)討論在軟件工程體係下的軟件開發框架和項目構建;第二部分(軟件工程實踐)通過六項技術慣例傳達一種理念——利用計算技術,應用科學原則以及激活設計軟件産品結構的靈活性;第三部分(軟件工程應用的階段)討論軟件工程團隊在軟件開發項目中承擔的角色,以便建立和控製軟件産品架構。本書適閤作為高等院校軟件工程及相關課程的教材,也可作為軟件開發人員和軟件技術人員的參考書。

目錄

Software Engineering: Architecture-Driven Software Development
齣版者的話
譯者序
作者序
前言
第一部分 軟件工程基礎
第1章 軟件工程簡介 5
1.1 明確軟件需求 6
1.2 軟件架構 7
1.3 集成産品和過程開發 8
1.4 集成産品團隊 8
1.5 工作分解結構 10
1.6 軟件分解結構 10
1.7 規約樹和文檔樹 11
1.8 集成總體方案和進度安排 11
1.9 評審與審核 12
1.10 配置管理和變更控製 13
1.11 權衡分析 15
1.12 風險管理 16
1.13 建模與仿真 16
第2章 通用軟件開發框架 19
2.1 軟件分解結構 19
2.2 軟件開發過程 21
2.2.1 需求定義階段 22
2.2.2 概要架構定義階段 22
2.2.3 關鍵架構定義階段 23
2.2.4 軟件單元編碼和測試階段 24
2.2.5 軟件組件的集成和測試階段 24
2.2.6 産品測試階段 24
2.2.7 驗收測試階段 25
2.3 總結 26
第3章 軟件架構 27
3.1 涉眾需求的關係和依賴性 29
3.2 軟件需求基綫的關係和依賴性 30
3.3 計算環境的關係和依賴性 30
3.4 測試和評估的關係及依賴性 30
3.5 功能架構的關係和依賴性 31
3.6 物理架構的關係和依賴性 31
3.7 開發後的過程的關係和依賴性 32
3.8 軟件架構的動機 32
第4章 理解軟件項目環境 35
4.1 集成産品團隊 38
4.2 軟件架構 39
4.3 復雜性控製機製 40
4.3.1 工作分解結構 40
4.3.2 産品分解結構 41
4.3.3 規約樹 42
4.3.4 文檔樹 42
4.3.5 軟件産品基綫 42
4.3.6 需求可追蹤性準則 42
4.3.7 權衡分析 43
4.3.8 軟件復雜性度量 44
4.4 軟件術語注冊錶 46
4.5 軟件集成策略 47
4.6 項目和技術方案 47
4.6.1 技術組織規劃 48
4.6.2 項目規劃 48
第5章 軟件集成産品和過程開發 50
5.1 IPPD在軟件中的應用 51
5.1.1 客戶至上 52
5.1.2 産品和進程的並行開發 53
5.1.3 早期的和連續的生命周期規劃 54
5.1.4 最大化承包商獨特方法的優化和使用靈活性 54
5.1.5 鼓勵魯棒設計,提高過程能力? 55
5.1.6 事件驅動進度 55
5.1.7 多部門團隊協作 55
5.1.8 授權 55
5.1.9 無縫管理工具 56
5.1.10 風險的主動識彆和管理 56
5.2 軟件工程和開發 56
第6章 軟件設計阻礙 58
6.1 作為原材料的軟件 59
6.2 軟件技術的變革 61
6.2.1 軟件開發方法和標準 63
6.2.2 敏捷宣言 66
6.3 架構驅動的軟件開發 67
第二部分 軟件工程實踐
第7章 理解軟件需求 76
7.1 第1步:徵求渉眾需求與期望 78
7.2 第2步:需求分析與規約 79
7.2.1 平衡和化解渉眾需求的衝突 80
7.2.2 維護項目的範圍 81
7.2.3 有經驗的軟件人員的參與 82
7.3 第3步:任務定義與安排 82
7.4 第4步:資源的確定、估算和分配 83
7.5 第5步:建立組織工作包 83
7.6 第6步:技術規劃 83
7.7 第7步:項目規劃 83
7.8 探索渉眾的需求 84
第8章 軟件需求分析實踐 86
8.1 項目分析任務 86
8.1.1 分析項目目的和目標 86
8.1.2 確定開發成功標準 87
8.1.3 徵求渉眾需求和期望 88
8.1.4 對渉眾需求按優先級排序 89
8.2 業務分析任務 89
8.2.1 確定業務概念 89
8.2.2 確定業務場景 89
8.2.3 確定計算環境特徵 90
8.2.4 確定外部接口 91
8.3 産品分析任務 91
8.3.1 確定業務模式 91
8.3.2 確定功能行為 91
8.3.3 確定資源利用率需求 93
8.3.4 確定數據處理條件邏輯 93
8.3.5 確定數據持久性需求 93
8.3.6 確定數據安全性需求 93
8.3.7 確定數據存儲事務 93
8.3.8 確定性能度量 94
8.4 維護分析任務 94
8.4.1 確定開發後的過程業務概念 94
8.4.2 確定開發後的過程業務場景 94
8.4.3 確定開發後的過程特徵 94
8.4.4 確定架構的指導方針和原則 95
8.5 項目評估任務 95
8.5.1 評估需求敏感性 95
8.5.2 確定軟件測試策略 96
8.5.3 評估已提議的變更 96
8.5.4 評估項目可行性 97
8.6 建立需求基綫 97
第9章 軟件需求管理 98
9.1 接受變更 98
9.1.1 時間是一種寶貴資源 98
9.1.2 變更影響分析 99
9.1.3 調整項目裏程碑 101
9.2 明確需求 102
9.3 需求分解和分配 103
9.3.1 功能分析 104
9.3.2 性能分配 104
9.3.3 結構化單元綜閤 104
9.3.4 結構化組件綜閤 105
9.4 需求可追蹤性 105
9.4.1 變更控製 105
9.4.2 配置審核 106
第10章 製定功能架構 107
10.1 功能架構的動機 107
10.2 功能架構本體論 108
10.2.1 功能組件 109
10.2.2 功能單元 109
10.2.3 數據項 109
10.2.4 功能接口 109
10.2.5 外部接口 109
10.2.6 控製結構 110
10.2.7 資源 110
10.2.8 數據存儲 110
10.3 構想功能架構 110
10.4 記錄功能架構 112
10.4.1 功能層次 112
10.4.2 行為模型 112
10.4.3 功能時限 113
10.4.4 資源利用率概述 113
10.4.5 功能規約 113
10.4.6 需求分配錶 114
第11章 功能分析與分配實踐 115
11.1 評估功能復雜性 115
11.2 行為分析 117
11.2.1 識彆功能場景 117
11.2.2 識彆功能序列 118
11.2.3 識彆數據流 118
11.2.4 識彆控製行為 119
11.2.5 識彆數據處理過程 119
11.2.6 識彆資源先決條件 120
11.2.7 識彆失效條件 120
11.2.8 識彆係統監控過程 121
11.2.9 識彆數據保留能力需求 122
11.2.10 識彆數據安全過程 122
11.2.11 識彆數據持久性與保留功能 122
11.3 性能分配 122
11.3.1 分配性能預算 123
11.3.2 分配資源預算 123
11.4 架構評估 123
11.4.1 評估需求滿足 124
11.4.2 評估軟件性能 124
11.4.3 評估架構復雜性 124
11.4.4 評估優化機會 124
11.5 建立功能架構 124
第12章 物理架構配置 125
12.1 結構設計解決方案 126
12.1.1 定義結構單元 127
12.1.2 準備結構單元規約 128
12.1.3 建立軟件集成策略 129
12.1.4 指定工程組套 129
12.1.5 準備軟件技術數據包 129
12.2 結構設計考量 130
12.2.1 結構設計指導原則 130
12.2.2 使用建模與仿真 132
12.2.3 行為分析 132
12.2.4 結構權衡分析 133
12.2.5 軟件産品性能評估 134
12.2.6 軟件原型 136
第13章 軟件設計綜閤實踐 138
13.1 設計概念化 139
13.1.1 建立軟件架構設計指導原則 140
13.1.2 識彆抽象結構組件 141
13.1.3 識彆抽象用戶接口機製 141
13.2 設計解決方案 142
13.2.1 識彆基本結構元素 142
13.2.2 識彆集成組件 143
13.2.3 評估軟件重用機會 143
13.3 設計相關性 144
13.3.1 建立性能基準 144
13.3.2 識彆結構設計缺點 145
13.3.3 評估架構候選方案 146
13.3.4 評估軟件實現挑戰 146
13.3.5 評估軟件維護挑戰 146
13.3.6 評估架構完整性 147
13.4 設計錶現 147
13.4.1 建立結構設計配置 147
13.4.2 說明結構配置元素 148
13.4.3 識彆工程組套 148
13.5 準備軟件技術數據包 148
第14章 軟件分析實踐 150
14.1 定義權衡研究 151
14.1.1 建立權衡研究領域 151
14.1.2 確定候選方案 152
14.1.3 建立成功標準 152
14.2 建立權衡研究環境 153
14.2.1 匯集實驗機製 153
14.2.2 匯集數據收集和分析機製 153
14.2.3 建立權衡研究過程 154
14.3 執行分析 154
14.3.1 評估需求候選方案 155
14.3.2 評估功能候選方案 155
14.3.3 評估結構候選方案 155
14.4 評估項目影響 156
14.4.1 評估開發影響 156
14.4.2 評估項目影響 156
14.4.3 確定項目執行策略 156
14.5 評估權衡研究結果 156
14.5.1 為架構候選方案排序 157
14.5.2 確定優先行動路徑 157
14.5.3 將權衡研究的決策文檔化 157
14.5.4 優化執行策略 158
第15章 軟件驗證和確認實踐 159
15.1 定義V&V;策略 160
15.1.1 建立V&V;範圍 160
15.1.2 建立V&V;方法 162
15.1.3 建立V&V;過程 162
15.2 驗證軟件架構 163
15.2.1 驗證需求基綫 163
15.2.2 驗證功能架構 163
15.2.3 驗證物理架構 163
15.2.4 驗證軟件實現 163
15.3 確認物理架構 163
15.3.1 確認結構配置 163
15.3.2 確認集成軟件配置 163
15.4 記錄V&V;結果 164
第16章 軟件控製實踐 165
16.1 配置管理 166
16.1.1 識彆架構元素 166
16.1.2 維護架構狀態 166
16.2 處理工程變更包 167
16.2.1 記錄工程變更請求和提議 167
16.2.2 準備變更評估包 167
16.3 變更評估 168
16.3.1 評估變更技術優點 168
16.3.2 評估架構影響 169
16.3.3 評估技術工作包影響 169
16.3.4 評估技術方案影響 169
16.4 變更同化 170
16.4.1 發布變更通知包 170
16.4.2 審核架構變更進展 170
16.4.3 評估項目現狀 170
16.5 軟件庫控製 170
16.5.1 維護工程工件庫 171
16.5.2 維護變更曆史庫 171
16.5.3 維護技術風險庫 171
第三部分 軟件工程應用的階段
第17章 軟件需求定義 176
17.1 軟件需求定義的産品 176
17.2 軟件工程集成産品團隊(軟件需求定義階段) 178
17.3 軟件實現(軟件需求定義階段) 180
17.4 計算環境準備(軟件需求定義階段) 180
17.5 開發後的過程實現(軟件需求定義階段) 180
17.6 軟件測試和評估(軟件需求定義階段) 181
17.7 評審、裏程碑和基綫(軟件需求定義階段) 182
第18章 軟件架構定義 184
18.1 概要架構定義 185
18.1.1 概要架構定義的産品 185
18.1.2 軟件工程集成産品團隊(概要架構定義階段) 186
18.1.3 軟件實現(概要架構定義階段) 187
18.1.4 計算環境準備(概要架構定義階段) 187
18.1.5 開發後的過程準備(概要架構定義階段) 187
18.1.6 軟件測試和評估(概要架構定義階段) 188
18.1.7 評審與裏程碑(概要架構定義階段) 189
18.2 詳細架構定義 189
18.2.1 詳細架構定義的産品 190
18.2.2 軟件工程集成産品團隊(詳細架構定義階段) 191
18.2.3 軟件實現(詳細架構定義階段) 192
18.2.4 計算環境準備(詳細架構定義階段) 192
18.2.5 開發後的過程準備(詳細架構定義階段) 192
18.2.6 軟件測試和評估(詳細架構定義階段) 193
18.2.7 評審與裏程碑(詳細架構定義階段) 193
18.2.8 建立分配基綫 194
第19章 軟件實現 195
19.1 軟件實現的産品 196
19.2 軟件工程任務(軟件實現階段) 197
19.3 軟件實現任務(軟件實現階段) 197
19.4 計算環境任務(軟件實現階段) 199
19.5 開發後的過程任務(軟件實現階段) 199
19.6 軟件測試和評估任務(軟件實現階段) 199
19.7 評審與裏程碑(軟件實現階段) 200
第20章 軟件驗收測試 202
20.1 軟件驗收測試的産品 203
20.2 軟件工程(軟件驗收測試階段) 203
20.3 軟件實現組織(軟件驗收測試階段) 204
20.4 計算環境實現組織(軟件驗收測試階段) 204
20.5 開發後的過程組織(軟件驗收測試階段) 204
20.6 軟件測試和評估(軟件驗收測試階段) 205
20.7 評審與裏程碑(軟件驗收測試階段) 205
20.8 建立軟件産品基綫 206
索引 207

前言/序言

  Software Engineering: Architecture-Driven Software Development本書旨在比較全麵地介紹軟件工程學科,展示軟件工程原則與基於係統工程的軟件實踐。本書詳細地解釋瞭基本的軟件工程體係理念,即強調使用嚴格規範的方法來設計軟件産品。為達到此目的,部分討論瞭在軟件工程體係下的軟件開發框架和項目構建。第二部分展示瞭6項技術慣例,它們傳達瞭這樣一種理念:利用計算技術,應用科學原則以及激活設計軟件産品架構(即設計)的靈活性。第三部分討論瞭軟件工程團隊在軟件開發項目中扮演的角色,以便建立和控製軟件産品架構。典型軟件開發項目的每個階段都會討論的重點是軟件工程團隊如何與其他技術和項目相關的團體協作來影響架構設計和軟件産品實現。這幾部分闡明瞭與軟件工程所用的嚴格方法相關的實踐、原則、任務和工件。
  本書的基礎概念基於係統工程實踐來達到錶1確定的目標。這些目標通過應用一係列來源於係統工程學科中50多年來成功應用於開發復雜係統的原則和實踐來實現。它強調完整軟件架構的建立,這使得産品的每個元素都要明確,以便製造、組裝、集成和測試。將這些實踐應用到軟件工程領域,為解決錶1中列齣的那些挑戰提供瞭基礎。
  錶1 軟件工程挑戰與目標軟件工程挑戰 目標在編碼之前必須先做設計 在提高成本效率和進度準確性前弄清楚正在構建什麼 減少産品在設計細節和精度上的復雜性 成本管理、進度安排和風險控製交付軟件技術數據包 完整的設計圖錶和軟件實現(構建)的說明文檔分配設計配置元素間的需求 軟件組件和單元間的需求分解與分配 需求可追蹤性集成産品和過程開發(IPPD) 産品維護性能的並行設計與開發 生命周期成本控製準備軟件集成策略 架構設計活動中計劃的軟件組件集成開發 高效的軟件實現規劃控製軟件復雜性 降低軟件維護/支持成本 高效、用戶友好的交互使變更同化 涉眾/用戶滿意度 産品競爭力權衡分析 成本管理和進度控製 設計優化 産品演變/增量發布的穩定性 項目成功率的增強預先計劃的産品提升 將某些功能延遲發布來保證産品按時交付軟件分析與設計的當前實踐基於計算機編程語言和這些語言處理數據使用的邏輯概念。這驅動瞭諸如麵嚮對象設計的軟件設計方法,它並不是用來處理先進軟件産品的復雜性的。通過適應係統工程實踐,本書建立瞭嚴格的軟件工程原則和實踐,從而提供瞭一種全麵的方法來設計軟件産品。這些軟件工程實踐必須清晰說明以保證它們對軟件開發的重要性和適用性是確定的。將這些實踐應用於一個軟件開發過程演練中,以便可以控製、修正和管理貫穿整個軟件開發項目上下文的軟件架構。本書的內容與軟件工程知識體係(SWEBOK)的主要過程領域(如錶2所示)相對應。與SWEBOK的對應說明瞭本書中的主題是如何根據SWEBOK中主題進行安排和關聯的。然而,SWEBOK是基於現在的軟件開發實踐,嚴格從技術上來講,它並不包括係統工程實踐。
  錶2 SWEBOK關鍵過程領域關鍵過程領域 本書範圍關鍵過程領域 本書範圍軟件需求知識領域 部分:第3章 第二部分:第7章、第9章 第三部分:第17章軟件設計知識領域 部分:第3章、第6章 第二部分:第10~14章 第三部分:第18章軟件構造知識領域 第三部分:第19章軟件測試知識領域 第三部分:第19章、第20章軟件維護知識領域 部分:第5章 第三部分:第17~20章軟件配置管理知識領域 第二部分:第9章、第16章 第三部分:第20章,提到配置審核(FCA/PCA)軟件工程管理知識領域 部分:第4章 第二部分:第9章、第16章(提到項目和技術規劃,提到工作包) 第三部分,提到項目和技術方案,提到工作包軟件工程過程知識領域 第二部分 第三部分軟件工程方法知識領域 第二部分:第13章(提到軟件設計綜閤實踐麵嚮對象的方法)、第14章(提到建模和原型)軟件質量知識領域 第三部分,在測試和評估子部分確定軟件質量保證任務本書內容接下來會簡要介紹書中各章的內容。這三部分將本書內容分成三個連貫的主題,希望讀者能增加他們對原則(部分)、實踐(第二部分)以及軟件工程的應用(第三部分)的認識和理解。通過將係統工程實踐應用到軟件工程領域,本書旨在提供一種創新的、規範的、技術上具有挑戰性的方法來開發軟件産品。
  部分:軟件工程基礎這一部分討論的是軟件工程相關的基本原則以及這些原則在軟件開發場景中的執行。這些基本的原則、實踐和理論用於將軟件工程建立成一個專業學科。通過討論軟件産品特點和軟件開發策略來強調軟件開發項目麵對的挑戰。作為一個組織實體,軟件工程彌補瞭存在於技術專傢和項目管理專傢之間的外觀和感覺上的顯著不同。因此,這一部分陳述瞭軟件工程實踐與項目管理責任和其他軟件開發角色的集成。
  第1章概述瞭軟件工程概念、原則和實踐,它是解決設計、開發復雜軟件産品麵臨的挑戰所必需的。通過調查軟件工程實踐和工具來確定它們與項目管理機製的關係。
  第2章討論瞭那些描述軟件産品如何定義、設計和實現的軟件開發活動的進度。本章通過一係列被項目裏程碑和評審分離的連續開發階段,來追蹤典型的軟件開發工作,還陳述瞭軟件技術與項目管理控製領域的關係。
  第3章確定瞭軟件架構的組成,包括以下幾個方麵:軟件産品、計算環境和那些能滿足産品維護的開發後的過程。它涉及架構設計錶示、模型和文檔對技術和項目相關機製和必要性,以保證軟件開發工程對在預算內按期交付是必不可少的。需要討論建立軟件需求規格的技術,功能和物理架構要與軟件開發階段一緻。本章討論瞭軟件産品架構如何為軟件實現(編程設計、編碼、集成和測試)提供結構化基礎以及産品生命周期支持。
  第4章使讀者瞭解那些導緻軟件開發變得復雜並且難以理解的軟件産品特徵。它解決瞭軟件産品復雜性挑戰,並且將這些與那些已被證明有利於成功完成軟件開發工作的項目構建和實踐相關聯。其中的真知灼見將幫助減少項目的障礙、變動、作廢和失敗。
  第5章提齣瞭IPPD理論和它對於項目範圍的影響以及開發後過程的考慮。它試圖證明需要嚴密構思和結構化的軟件架構來確保可以延長産品的使用壽命,這是由於在開發過程中軟件工程關注瞭生命周期問題。同時檢查軟件開發後過程的工程可以發現,早期的架構決策可以影響生命周期和擁有成本。
  第6章檢查瞭導緻“設計”實踐變得非常規並且更加難以理解的軟件底層特點。作為挑戰傳統工程審查的設計和構建材料,討論軟件特徵。本章提齣瞭管理軟件産品設計的軟件工程原則。後,本章介紹瞭軟件設計歧義來計劃一項允許對軟件産品進行設計的決議。
  第二部分:軟件工程實踐這部分確定瞭6個有助於專業化軟件工程的實踐: 1)軟件需求分析, 2)功能分析與分配, 3)軟件設計綜閤, 4)軟件分析, 5)軟件驗證和確認, 6)軟件控製。每個實踐都由一定數量的任務來錶示,每個軟件工程的專業人員都應該理解。這些實踐建立瞭一套清晰的任務,集中於設計和細化軟件産品架構。
  第7章提齣瞭一種方法來開發源自涉眾需求和期望,以及有助於決定軟件開發工作範圍的軟件需求規約。軟件規約驅使軟件架構的定義,但不應該推斷齣任何架構設計方案。軟件需求作為派生軟件功能和物理架構的起點。架構設計是由錶示功能架構和配置物理架而完成的。架構中的每個元素都必須能在軟件規約中指定和追蹤。要檢查軟件需求、軟件工程任務,以及項目和技術計劃之間的關係。
  第8章確定瞭必須選擇性地應用特定任務來建立軟件産品和開發後的過程規約。這種實踐涉及軟件架構中低級功能和結構元素之間性能限額的分配。這種實踐從徵求涉眾需求和期望的工作開始,以建立軟件産品需求基綫結束。
  第9章討論瞭以積極主動的方式控製軟件架構的重要性,這有利於對已提議的變更進行評估。通過考慮軟件需求管理工具和實踐以使軟件工程團隊可以實際考核變更對軟件架構的影響和項目資源的自由度來適應一項期望的變更。意圖是使開發團隊有能力機智地迴應得到授權的變更,並且在不擾亂項目範圍、計劃和成功結束的進度情況下將改進融閤到軟件架構。
  第10章討論瞭功能架構的本質以及它如何將明確的需求分解為連續的功能元素。每個功能元素在不斷改進的方法中是明確的,這些改進會在識彆齣未完成的功能並且保證它們能實現時告終。功能架構提供瞭有邏輯性的、連貫的軟件産品行為錶示法,以迴應那些計算環境內齣現的刺激、事件和狀況。
  第11章確定瞭為確保得到完整、一緻和可追蹤的功能架構而必須考慮的具體任務。通過分析理解業務和軟件産品行為,方式包括檢查、分解、分類和指定那些來源於需求規約的功能。在功能間分配性能需求來確立低級功能元素有效性和性能的度量標準。
  第12章描述瞭安排和確定軟件産品物理架構的目的和策略。該物理架構確定瞭軟件單元設計、編碼和測試的基本構建快。製定軟件集成策略來確定産品結構並規定軟件單元和組件如何增量地組閤、集成和測試,進而形成完整的軟件産品。
  第13章確定瞭必須考慮的特定任務,以確保生成完整、一緻並且可追蹤的物理架構。為瞭從純粹的産品功能錶示嚮物理架構過渡,設計綜閤是一個經過驗證的係統工程實踐。它涉及 “製造或者購買”的權衡,這對應於軟件“實現或再利用”決策。
  第14章確定瞭必須執行的特定任務,進行設計備選方案的權衡分析和風險評估。進行架構設計決策必須在抑製應用復雜性和軟件生命周期成本上有足夠的洞察力。與進行權衡分析和風險評估相關的任務可以為理解架構設計決策的本質提供基礎,並且對軟件開發工作産生影響。
  第15章確定瞭必須執行的特定任務,以確保軟件架構元素保持一緻,並且與授權的變更提議和請求一緻。必須執行驗證任務以確保軟件實現、測試和評估工作與軟件架構規約以及設計文檔是同步的。
  第16章確定瞭選擇性應用的特定任務,以確保軟件産品架構反映瞭當前設計思想並包含授權的變更提議、請求和設計決策。需求追蹤必須嵌入到軟件架構中去,並且與文檔關聯,這樣技術團隊纔能迅速並且有效地響應變更控製委員會的決策。此外,將授權的變更提議和請求反映在項目和技術計劃、進度、預算以及工作包描述中是十分必要的。
  第三部分:軟件工程應用階段這部分討論瞭在軟件開發項目中,分配給技術組織的角色和職責。強調技術組織在軟件工程集成産品團隊(IPT)中的參與。
  第17章確定瞭由軟件工程IPT生成的軟件需求規約的方式。將參與的組織代錶的貢獻確定為軟件産品的需求,並且建立瞭開發後的過程。
  第18章確定瞭在概要和詳細架構階段定義的軟件功能和物理架構的方式。這些階段關注IPPD方法來促進軟件實現、測試和開發後的過程必要的基礎設施的建立,以推動項目目標的實現。
  第19章確定瞭軟件實現組織要執行的任務,以編程方式來設計、編碼和測試軟件單元,並且進行軟件集成和測試。在這個階段同時實現開發後的過程,來支持驗收測試和部署準備評審。
  第20章確定瞭在軟件産品驗收測試過程中軟件測試和評估組織要執行的任務。參與的組織代錶的職責在於監督驗收測試、應對測試失敗,並且迴應由驗收測試導緻的軟件問題報告。此外,開發後的過程必須有資格確認它們已經做好準備來支持軟件産品發布、培訓和維護業務。

軟件開發的基石:從藍圖到現實的藝術 在瞬息萬變的數字時代,軟件已成為我們生活、工作和交流的核心。從支撐全球經濟運轉的企業級係統,到觸及個人生活的移動應用,軟件的強大力量無處不在。然而,軟件的開發並非易事,它是一門融閤瞭科學的嚴謹性、藝術的創造性以及工程的係統性的復雜學科。本書將帶您深入探索軟件開發的精髓,揭示從最初的概念萌芽到最終交付可運行産品的完整旅程,並特彆強調驅動整個過程的關鍵力量——架構。 第一部分:理解軟件開發的本質與挑戰 我們首先將從軟件開發的宏觀視角齣發,理解其存在的意義、目標以及伴隨而來的諸多挑戰。 什麼是軟件? 軟件不僅僅是代碼的堆砌,它是解決問題、滿足需求、實現功能的邏輯指令集閤。我們將探討軟件的多種形態,包括係統軟件、應用軟件、嵌入式軟件等,以及它們在不同領域的應用。 為何要開發軟件? 軟件的齣現是為瞭自動化重復性任務、提升效率、擴展人類能力、創造新的可能性,以及改善生活品質。我們將深入分析軟件開發背後的商業驅動力、技術革新以及社會需求。 軟件開發麵臨的挑戰: 軟件項目常常麵臨需求變更頻繁、技術日新月異、團隊協作復雜、質量保障睏難、時間與成本壓力等嚴峻挑戰。我們將剖析這些挑戰的根源,並為應對它們奠定思想基礎。 軟件工程的重要性: 麵對這些挑戰,科學、係統化的軟件工程方法應運而生。它旨在通過一係列原則、方法、工具和實踐,來提高軟件開發的成功率,降低風險,保證質量,並實現高效的團隊協作。我們將強調軟件工程作為一門學科的價值所在。 第二部分:軟件架構:軟件的靈魂與骨架 在軟件開發的長河中,軟件架構扮演著至關重要的角色,它決定瞭軟件係統的宏觀結構、組件之間的關係以及係統的整體行為。沒有良好的架構,再精妙的代碼也可能淪為難以維護的“意大利麵條”。 架構的定義與範疇: 我們將詳細闡述軟件架構的定義,理解它不僅僅是簡單的模塊劃分,而是關於係統的高層設計決策,包括組件、連接件、約束和原則。架構關注的是係統的“什麼”和“為什麼”,而非“如何”實現。 架構的重要性與價值: 良好的軟件架構能夠: 支持非功能性需求: 如可維護性、可伸縮性、性能、安全性、可靠性等。這些需求往往決定瞭軟件的生死存亡。 促進團隊協作: 清晰的架構能夠為團隊成員提供共同的理解和工作方嚮,減少溝通障礙。 降低變更成本: 良好的架構設計能夠隔離變更的影響範圍,使後續的修改和升級更加容易。 提升可理解性與可重用性: 易於理解的架構能夠加快新成員的學習麯綫,而模塊化的設計則便於組件的重用。 實現業務目標: 架構需要與業務需求緊密對齊,確保軟件能夠有效地支持業務的發展。 架構的關鍵視角: 我們將從不同的視角審視軟件架構,包括: 邏輯視圖: 關注係統的功能性組成,即軟件的功能是如何劃分和組織的。 進程視圖: 關注係統的運行時行為,即組件如何交互和通信,以及並發和同步問題。 物理視圖(部署視圖): 關注軟件如何部署到物理硬件上,即係統如何在網絡和服務器環境中運行。 開發視圖(模塊視圖): 關注軟件的靜態結構,即代碼如何組織成模塊和包。 場景視圖(用例視圖): 關注係統如何響應特定的用戶請求或係統事件。 架構模式與風格: 軟件架構並非憑空捏造,而是建立在成熟的模式和風格之上。我們將介紹多種經典的架構模式,例如: 分層架構: 將係統劃分為不同的邏輯層,如錶示層、業務邏輯層、數據訪問層等。 客戶端-服務器架構: 經典的分布式係統架構,將任務分解為客戶端和服務端的職責。 模型-視圖-控製器 (MVC): 一種常用於構建用戶界麵的架構模式,將數據、用戶界麵和邏輯進行分離。 微服務架構: 將大型應用程序分解為一組小型的、獨立部署的服務。 事件驅動架構: 係統組件通過生成和響應事件來進行通信。 管道-過濾器架構: 數據流經一係列獨立的、可組閤的處理步驟。 我們還將探討不同架構風格的特點、適用場景以及權衡取捨。 第三部分:架構驅動的軟件開發過程 理解瞭架構的重要性,我們便需要將其融入軟件開發的整個生命周期,實現架構驅動的開發。這並非將架構視為開發過程中的一個獨立階段,而是貫穿始終的指導原則。 架構設計: 需求分析與架構約束: 架構設計始於對業務需求和非功能性需求的深入理解。我們將探討如何識彆關鍵的需求,並將其轉化為架構決策的約束。 架構風格和模式的選擇: 根據項目特點和需求,選擇最閤適的架構風格和模式。 組件設計與職責劃分: 將係統分解為清晰定義的組件,並明確每個組件的職責。 接口定義與通信機製: 設計組件之間的接口,並選擇閤適的通信協議和方式。 質量屬性的權衡: 在設計過程中,需要平衡不同的質量屬性,例如性能與可伸縮性,安全與易用性等。 架構文檔化: 清晰、準確地記錄架構設計,為團隊成員提供參考。 架構演進與變更管理: 架構的動態性: 軟件係統並非一成不變,架構也需要隨著業務發展和技術進步而演進。 識彆架構債務: 隨著時間的推移,項目可能會積纍“架構債務”,即為瞭快速交付而做齣的妥協。我們將學習如何識彆和管理這些債務。 重構與現代化: 在適當的時機對架構進行重構或現代化改造,以適應新的需求和技術。 架構與開發實踐的融閤: 架構評審: 定期進行架構評審,確保設計符閤預期,並及時發現潛在問題。 架構驗證: 通過原型、模擬或測試等方式,驗證架構設計的有效性。 架構與編碼的對齊: 開發人員在編碼過程中需要遵循架構設計,確保代碼結構與架構保持一緻。 架構與測試的結閤: 測試用例的設計應考慮架構的組件和接口,以驗證係統的結構和功能。 持續集成/持續交付 (CI/CD) 與架構: CI/CD 流程可以幫助自動化構建、測試和部署,並能夠通過自動化測試來驗證架構的健康度。 架構與項目管理: 架構在項目計劃中的作用: 架構決策會影響項目的範圍、時間錶和資源分配。 風險管理與架構: 識彆與架構相關的風險,並製定相應的應對策略。 團隊溝通與架構: 確保團隊成員對架構有清晰的理解,並鼓勵開放的溝通。 第四部分:支撐架構驅動的軟件工程實踐 除瞭核心的架構設計,許多其他的軟件工程實踐也為架構驅動的軟件開發提供瞭強有力的支撐。 需求工程: 深入的需求理解是構建正確架構的基礎。我們將探討用戶故事、用例、質量屬性等需求錶達方式。 設計模式與原則: 設計模式提供瞭解決常見設計問題的可復用解決方案,而設計原則(如 SOLID 原則)則提供瞭編寫高質量、可維護代碼的指導。 重構: 持續的重構是保持代碼質量和架構健康的重要手段。 測試驅動開發 (TDD) 與行為驅動開發 (BDD): 這些開發方法能夠幫助我們更早地發現問題,並確保代碼符閤設計預期。 版本控製係統: 如 Git,是團隊協作和代碼管理的基礎,也為架構演進提供瞭保障。 敏捷開發方法: Scrum、Kanban 等敏捷方法論能夠支持快速迭代和持續交付,並允許架構在實踐中逐步完善。 DevOps 文化: DevOps 強調開發與運維的緊密協作,有助於提高軟件交付的速度和質量,並能夠促進架構在生産環境中的快速反饋和迭代。 結論:構建未來軟件的藍圖 軟件開發是一項充滿挑戰但又極富創造性的事業。架構作為軟件的靈魂,賦予瞭軟件生命、結構和方嚮。本書旨在為您提供一個全麵的視角,讓您理解軟件架構在整個軟件開發生命周期中的核心作用,並掌握如何運用架構驅動的開發理念,構建齣健壯、可維護、可伸縮且能夠持續滿足業務需求的軟件係統。通過深入理解和實踐本書所探討的理念和方法,您將能夠更好地駕馭軟件開發的復雜性,設計和構建齣真正有價值的軟件産品,為數字世界的持續發展貢獻力量。

用戶評價

評分

這本《軟件工程:架構驅動的軟件開發》確實是一本讓我眼前一亮的書。在我剛開始接觸軟件開發的時候,總是陷於代碼的細節,感覺開發過程就像在泥沼裏摸索,效率低下不說,最後産齣的東西也常常是韆瘡百孔。接觸瞭這本書後,我纔意識到,原來在“寫代碼”之前,還有那麼重要的一個環節——架構。這本書並非隻是空泛地談論“架構好”,而是非常具體地闡述瞭如何將架構思想融入到軟件開發的整個生命周期。從需求分析的早期階段,就強調要從架構的視角去理解和定義問題,而不僅僅是收集功能列錶。這一點對我觸動很大,因為很多時候,項目失敗的根源並非技術難題,而是最初對係統整體的理解齣現瞭偏差。它還深入探討瞭不同架構風格的優劣勢,以及在何種場景下選擇何種架構能夠最大化地發揮其效用。書中大量的案例分析,讓我能夠直觀地理解抽象的架構概念如何落地,如何解決實際開發中的痛點。比如,它詳細講解瞭微服務架構在應對大規模、高並發場景時的優勢,以及如何通過事件驅動的方式來解耦係統,從而提高係統的可伸縮性和容錯性。我尤其喜歡其中關於“架構決策記錄”的部分,這讓我意識到,重要的架構選擇並非一成不變,而是需要記錄下背後的原因、權衡和替代方案,以便日後迴顧和演進。讀完這本書,我感覺自己的思維方式得到瞭極大的提升,看待軟件項目不再是零散的功能堆砌,而是將其視為一個有機的整體,每一個決策都圍繞著整體的健壯性、可維護性和可擴展性進行。

評分

這本書《軟件工程:架構驅動的軟件開發》的確是一本能夠改變開發者思維模式的佳作。在我過去的開發經曆中,我常常陷入“寫完就好”的思維誤區,對於係統的長期可維護性、可擴展性等問題考慮不足。這本書則用一種全新的視角,將“架構”置於軟件開發的核心位置,讓我深刻認識到,一個好的架構不僅僅是提高開發效率的工具,更是保證軟件生命周期內持續健康發展的基石。它不僅僅停留在概念層麵,而是提供瞭非常具體的方法論和實踐指導。例如,書中對於如何進行架構評估,如何選擇閤適的架構風格,以及如何在敏捷開發流程中融入架構設計,都給齣瞭非常實用的建議。我尤其欣賞它對“領域驅動設計(DDD)”的闡述,這讓我理解瞭如何將業務領域的核心概念映射到軟件架構中,從而構建齣與業務高度契閤的係統。書中對於“技術選型”的討論,也讓我明白,技術並不是越多越好,而是需要根據業務需求和團隊能力,做齣最適閤的決策,並且要充分考慮技術的演進趨勢。另外,關於“可觀測性”和“可靠性”在架構設計中的重要性,也得到瞭充分的強調,這讓我意識到,一個優秀的係統不僅要能跑,更要能被理解、被監控、並且能夠抵禦各種潛在的故障。總而言之,這本書讓我看到瞭軟件工程的深度和廣度,從宏觀的係統設計到微觀的決策權衡,都給予瞭我極大的啓發,也讓我對未來的軟件開發工作充滿瞭信心。

評分

作為一名在傳統開發模式下摸爬滾打多年的工程師,坦白說,我一開始對“架構驅動”這個概念是有些抵觸的。總覺得這像是給本來就緊張的項目周期又增加瞭一層繁瑣的流程。但當我真正翻開《軟件工程:架構驅動的軟件開發》這本書時,我不得不承認,我的想法有些片麵瞭。這本書並沒有像一些理論書籍那樣,講一些玄而又玄的概念,而是以一種非常務實的態度,將架構的重要性貫穿於軟件開發的全過程。它不僅僅是告訴你“要做好架構”,更重要的是告訴你“如何做好架構”。書中對不同類型架構模式的深入剖析,比如單體、SOA、微服務,以及更細緻的CQRS、事件溯源等,都配以詳實的圖示和深入淺齣的解釋,讓我能夠清晰地理解它們各自的適用場景和潛在挑戰。我特彆欣賞它強調“以架構師視角思考問題”這一點,這促使我在麵對需求時,會跳齣功能本身,去思考它對整個係統的影響,例如它是否會影響係統的可伸縮性、安全性、或者未來的擴展性。書中對“架構權衡”的討論也極其深刻,它明確指齣,沒有銀彈,每一個架構選擇都意味著對某些方麵的犧牲,而理解和管理這些權衡,恰恰是架構工作的核心。它甚至還觸及瞭“架構債務”的概念,這讓我意識到,短期內為瞭快速交付而犧牲的架構質量,最終會以更高的成本償還。這本書讓我對軟件開發的本質有瞭更深的理解,從被動地實現需求,轉變為主動地設計和塑造係統,這無疑是職業生涯中一次重要的飛躍。

評分

從一個初學者的角度來看,《軟件工程:架構驅動的軟件開發》就像是我打開瞭新世界的大門。我之前寫代碼,總是感覺像是在黑暗中摸索,寫齣來的東西穩定性差,bug多,而且很難維護。這本書就像一盞明燈,指引我看到瞭軟件開發的更宏觀的景象。它讓我明白,寫代碼隻是整個軟件工程流程中的一小部分,更重要的是在開始寫代碼之前,有一個清晰的藍圖,也就是架構。書中非常細緻地介紹瞭如何在項目初期就確立係統的基本骨架,並且如何根據需求的變化來演進這個骨架,而不是讓係統變得雜亂無章。它不像其他一些教程那樣,隻關注技術細節,而是從整個軟件生命周期的角度,去講解如何將架構設計融入其中。我印象特彆深刻的是書中關於“設計模式”和“架構模式”的區彆與聯係的講解,這讓我理解瞭如何將通用的解決方案應用到具體的架構設計中。而且,書中並沒有迴避架構設計中的難點和挑戰,比如如何處理分布式係統中的一緻性問題,如何進行有效的API設計,以及如何保證係統的安全性等。它通過大量的實際案例,讓我看到瞭那些成功的軟件産品背後,是如何經過精心的架構設計的。讀完這本書,我感覺自己對軟件開發有瞭更係統的認識,不再是零散的知識點堆砌,而是能夠將各個環節有機地聯係起來,形成一個完整的知識體係。這對於我未來在軟件開發領域的發展,打下瞭堅實的基礎。

評分

坦白說,一開始我對《軟件工程:架構驅動的軟件開發》這本書的標題有些好奇,因為“架構驅動”這個詞聽起來似乎有些過於強調某種特定的方法論。但當我真正閱讀進去之後,我纔發現,這本書的價值遠遠超齣瞭我的預期。它並沒有給我灌輸某種僵化的“架構必須如何”的理念,而是以一種非常開放和包容的姿態,引導我去思考“為什麼需要架構”以及“如何通過架構來更好地解決問題”。書中對“架構決策”的探討尤其讓我印象深刻,它強調瞭每一個重大的架構決策都應該有其閤理的依據,並且需要記錄和溝通,而不僅僅是開發人員的個人喜好。它還詳細闡述瞭不同架構模式之間的演進關係,例如從單體到微服務的遷移過程,以及在遷移過程中可能遇到的挑戰和應對策略。我非常喜歡書中對“係統演進”的論述,它讓我明白,軟件架構並非一成不變,而是一個需要持續迭代和優化的過程,而“架構驅動”正是確保這種演進過程能夠有序、高效地進行的關鍵。書中也強調瞭“溝通”在架構實踐中的重要性,例如如何有效地嚮團隊成員解釋架構設計,如何獲取反饋並做齣調整。這種將技術實踐與軟技能相結閤的視角,讓這本書更具實踐指導意義。它讓我認識到,優秀的軟件開發不僅僅是寫齣能運行的代碼,更是要構建齣一個能夠持續發展、應對變化的生命係統。

評分

東西不錯,而且送貨快,很好!

評分

內容不錯。。。。。。

評分

正版書,值得擁有,內容很不錯!

評分

正版書,值得擁有,內容很不錯!

評分

正版,很好!

評分

書保護的很好,多讀書為瞭拓寬知識麵

評分

內容不錯。。。。。。

評分

書不錯可以的,618買的

評分

內容不錯。。。。。。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有