作者 |
罗杰 S.普莱斯曼,布鲁斯 R. 马克西姆 理查德 F. 施密特 |
丛书名 |
计算机科学丛书 |
出版社 |
机械工业出版社 |
ISBN |
9782107091439 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8082134 - 软件工程:实践者的研究方法(原书第9版)--------------------------- 本书的各个版本一直都是软件专业人士熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。此外,本书在给出传统的、对学科发展具有深刻影响的方法时,又适当地介绍了当前正在发展的、具有生命力的新技术。 ---------------------------4970609 - 软件工程:架构驱动的软件开发--------------------------- 本书比较全面地介绍软件工程学科,展示软件工程原则与基于系统工程的软件实践,阐明与软件工程所用的严格方法相关的实践活动、原则、任务和工件。本书共分三部分:第一部分讨论在软件工程体系下的软件开发框架和项目构建;第二部分通过6项技术惯例传达一种理念——利用计算技术,应用科学原则以及激活设计软件产品结构的灵活性;第三部分讨论软件工程团队在软件开发项目中扮演的角色,以便建立和控制软件产品架构。 本书适合作为高等院校软件工程及相关课程的教材,也可作为软件开发人员和软件技术人员的参 考书。 |
目录 |
[套装书具体书目] 4970609 - 软件工程:架构驱动的软件开发 - 9787111533146 - 机械工业出版社 - 定价 69 8082134 - 软件工程:实践者的研究方法(原书第9版) - 9787111683940 - 机械工业出版社 - 定价 149 ---------------------------8082134 - 软件工程:实践者的研究方法(原书第9版)--------------------------- 出版者的话 译者序 前言 作者简介 第1章 软件与软件工程 1 1.1 软件的本质 3 1.1.1 定义软件 4 1.1.2 软件应用领域 5 1.1.3 遗留软件 6 1.2 定义软件工程学科 6 1.3 软件过程 7 1.3.1 过程框架 7 1.3.2 普适性活动 8 1.3.3 过程的适应性调整 9 1.4 软件工程实践 9 1.4.1 实践的精髓 9 1.4.2 通用原则 10 1.5 这一切是如何开始的 12 1.6 小结 13 习题与思考题 13 第一部分 软件过程 第2章 过程模型 16 2.1 通用过程模型 16 2.2 定义框架活动 18 2.3 明确任务集 19 2.4 过程评估与改进 19 2.5 惯用过程模型 20 2.5.1 瀑布模型 20 2.5.2 原型开发过程模型 21 2.5.3 演化过程模型 23 2.5.4 统一过程模型25 2.6 产品和过程 26 2.7 小结 27 习题与思考题 28 第3章 敏捷和敏捷过程 29 3.1 什么是敏捷 30 3.2 敏捷及变更成本 30 3.3 什么是敏捷过程 31 3.3.1 敏捷原则 31 3.3.2 敏捷开发战略 32 3.4 Scrum 32 3.4.1 Scrum团队和制品 34 3.4.2 冲刺规划会议 34 3.4.3 每日Scrum会议 34 3.4.4 冲刺评审会议 35 3.4.5 冲刺回顾 35 3.5 其他敏捷框架 35 3.5.1 XP框架 36 3.5.2 看板法 37 3.5.3 DevOps 38 3.6 小结 39 习题与思考题 40 第4章 推荐的过程模型 41 4.1 需求定义 44 4.2 初步体系结构设计 44 4.3 资源估算 45 4.4 首次原型构建 46 4.5 原型评价 48 4.6 继续与否的决策 49 4.7 原型演化 50 4.7.1 新原型范围 51 4.7.2 构建新原型 51 4.7.3 测试新原型 51 4.8 原型发布 52 4.9 维护发布软件 52 4.10 小结 54 习题与思考题 55 第5章 软件工程的人员方面 56 5.1 软件工程师的特质 56 5.2 软件工程心理学 57 5.3 软件团队 58 5.4 团队结构 59 5.5 社交媒体的影响 60 5.6 全球化团队 60 5.7 小结 61 习题与思考题 61 第二部分 建模 第6章 指导实践的原则 64 6.1 核心原则 65 6.1.1 指导过程的原则 65 6.1.2 指导实践的原则 66 6.2 指导每个框架活动的原则 67 6.2.1 沟通原则 67 6.2.2 策划原则 69 6.2.3 建模原则 71 6.2.4 构建原则 72 6.2.5 部署原则 75 6.3 小结 76 习题与思考题 77 第7章 理解需求 78 7.1 需求工程 79 7.1.1 起始 79 7.1.2 获取 79 7.1.3 细化 80 7.1.4 协商 80 7.1.5 规格说明 80 7.1.6 确认 81 7.1.7 需求管理 81 7.2 建立根基 82 7.2.1 确认利益相关者 82 7.2.2 识别多重观点 82 7.2.3 协作 82 7.2.4 首次提问 83 7.2.5 非功能需求 84 7.2.6 可追溯性 84 7.3 获取需求 84 7.3.1 协作收集需求 84 7.3.2 使用场景 87 7.3.3 获取工作产品 88 7.4 开发用例 88 7.5 构建分析模型 91 7.5.1 分析模型的元素 92 7.5.2 分析模式 93 7.6 协商需求 94 7.7 需求监控 95 7.8 确认需求 95 7.9 小结 95 习题与思考题 96 第8章 需求建模——一种推荐的方法 97 8.1 需求分析 98 8.1.1 总体目标和原理 98 8.1.2 分析的经验原则 99 8.1.3 需求建模原则 99 8.2 基于场景建模 100 8.2.1 参与者和用户概要文件 100 8.2.2 创建用例 100 8.2.3 编写用例 103 8.3 基于类建模 105 8.3.1 识别分析类 105 8.3.2 定义属性和操作 107 8.3.3 UML类模型 108 8.3.4 类–职责–协作者建模 110 8.4 功能建模 112 8.4.1 过程视图 112 8.4.2 UML顺序图 113 8.5 行为建模 114 8.5.1 识别用例事件 114 8.5.2 UML状态图 115 8.5.3 UML活动图 116 8.6 小结 118 习题与思考题 119 第9章 设计概念 120 9.1 软件工程中的设计 121 9.2 设计过程 123 9.2.1 软件质量指导原则和属性 123 9.2.2 软件设计的演化 124 9.3 设计概念 125 9.3.1 抽象 125 9.3.2 体系结构 126 9.3.3 模式 126 9.3.4 关注点分离 127 9.3.5 模块化 127 9.3.6 信息隐蔽 128 9.3.7 功能独立 128 9.3.8 逐步求精 129 9.3.9 重构 129 9.3.10 设计类 130 9.4 设计模型 132 9.4.1 设计建模原则 133 9.4.2 数据设计元素 134 9.4.3 体系结构设计元素 134 9.4.4 接口设计元素 134 9.4.5 构件级设计元素 136 9.4.6 部署级设计元素 136 9.5 小结 137 习题与思考题 138 第10章 体系结构设计——一种推荐的方法 139 10.1 软件体系结构 140 10.1.1 什么是体系结构 140 10.1.2 体系结构的重要性 140 10.1.3 体系结构描述 141 10.1.4 体系结构决策 141 10.2 敏捷性和体系结构 142 10.3 体系结构风格 143 10.3.1 体系结构风格的简单分类 144 10.3.2 体系结构模式 147 10.3.3 组织和求精 148 10.4 体系结构考虑要素 148 10.5 体系结构决策 149 10.6 体系结构设计 150 10.6.1 系统在上下文中的表示 150 10.6.2 定义体系结构原型 151 10.6.3 将体系结构细化为构件 152 10.6.4 描述系统实例 153 10.7 评估候选的体系结构设计 153 10.7.1 体系结构评审 155 10.7.2 基于模式的体系结构评审 155 10.7.3 体系结构的一致性检查 156 10.8 小结 156 习题与思考题 157 第11章 构件级设计 158 11.1 什么是构件 158 11.1.1 面向对象的观点 159 11.1.2 传统的观点 159 11.1.3 过程相关的观点 161 11.2 设计基于类的构件 162 11.2.1 基本设计原则 162 11.2.2 构件级设计指导方针 165 11.2.3 内聚性 165 11.2.4 耦合 167 11.3 实施构件级设计 168 11.4 专用的构件级设计 173 11.4.1 WebApp的构件级设计 173 11.4.2 移动App的构件级设计 173 11.4.3 设计传统构件 174 11.4.4 基于构件的开发 174 11.5 构件重构 176 11.6 小结 176 习题与思考题 177 第12章 用户体验设计 178 12.1 用户体验设计元素 179 12.1.1 信息体系结构 179 12.1.2 用户交互设计 180 12.1.3 可用性工程 180 12.1.4 可视化设计 181 12.2 黄金规则 181 12.2.1 把控制权交给用户 182 12.2.2 减轻用户的记忆负担 182 12.2.3 保持界面一致 183 12.3 用户界面的分析和设计 184 12.3.1 用户界面分析和设计模型 184 12.3.2 过程 185 12.4 用户体验分析 186 12.4.1 用户研究 186 12.4.2 用户建模 187 12.4.3 任务分析 189 12.4.4 工作环境分析 190 12.5 用户体验设计 190 12.6 用户界面设计 191 12.6.1 应用界面设计步骤 191 12.6.2 用户界面设计模式 193 12.7 设计评估 193 12.7.1 原型审查 194 12.7.2 用户测试 195 12.8 可用性和可访问性 195 12.8.1 可用性准则 196 12.8.2 可访问性准则 198 12.9 传统软件UX和移动性 199 12.10 小结 199 习题与思考题 200 第13章 移动设计 201 13.1 挑战 202 13.1.1 开发因素 202 13.1.2 技术因素 202 13.2 移动开发生命周期 204 13.2.1 用户界面设计 205 13.2.2 经验教训 206 13.3 移动体系结构 208 13.4 环境感知App 208 13.5 Web设计金字塔 209 13.5.1 WebApp界面设计 209 13.5.2 美学设计 210 13.5.3 内容设计 211 13.5.4 体系结构设计 211 13.5.5 导航设计 212 13.6 构件级设计 214 13.7 移动性与设计质量 214 13.8 移动设计的最佳实践 216 13.9 小结 217 习题与思考题 218 第14章 基于模式的设计 219 14.1 设计模式 220 14.1.1 模式的种类 220 14.1.2 框架 222 14.1.3 描述模式 222 14.1.4 机器学习和模式发现 223 14.2 基于模式的软件设计 223 14.2.1 不同环境下基于模式的设计 223 14.2.2 用模式思考 224 14.2.3 设计任务 225 14.2.4 建立模式组织表 226 14.2.5 常见设计错误 226 14.3 体系结构模式 227 14.4 构件级设计模式 227 14.5 反模式 229 14.6 用户界面设计模式 230 14.7 移动设计模式 231 14.8 小结 232 习题与思考题 232 第三部分 质量与安全 第15章 质量概念 234 15.1 什么是质量 234 15.2 软件质量 235 15.2.1 质量因素 236 15.2.2 定性质量评估 237 15.2.3 定量质量评估 237 15.3 软件质量困境 238 15.3.1 “足够好”的软件 238 15.3.2 质量的成本 239 15.3.3 风险 241 15.3.4 疏忽和责任 242 15.3.5 质量和安全 242 15.3.6 管理活动的影响 242 15.4 实现软件质量 243 15.4.1 软件工程方法 243 15.4.2 项目管理技术 243 15.4.3 机器学习和缺陷预测 243 15.4.4 质量控制 244 15.4.5 质量保证 244 15.5 小结 244 习题与思考题 244 第16章 评审—一种推荐的方法 246 16.1 软件缺陷对成本的影响 247 16.2 缺陷的放大和消除 247 16.3 评审度量及其应用 248 16.4 不同形式评审的标准 250 16.5 非正式评审 250 16.6 正式技术评审 251 16.6.1 评审会议 252 16.6.2 评审报告和记录保存 252 16.6.3 评审指导原则 253 16.7 产品完成后评估 254 16.8 敏捷评审 254 16.9 小结 255 习题与思考题 255 第17章 软件质量保证 257 17.1 背景问题 258 17.2 软件质量保证的要素 258 17.3 软件质量保证的过程和产品特征 259 17.4 软件质量保证的任务、目标和度量 260 17.4.1 软件质量保证的任务 260 17.4.2 目标、属性和度量 261 17.5 软件质量保证的形式化方法 262 17.6 统计软件质量保证 263 17.6.1 一个普通的例子 263 17.6.2 软件工程的六西格玛 264 17.7 软件可靠性 265 17.7.1 可靠性和可用性的测量 265 17.7.2 使用人工智能对可靠性进行建模 266 17.7.3 软件安全 267 17.8 ISO 9000质量标准 267 17.9 软件质量保证计划 268 17.10 小结 269 习题与思考题 269 第18章 软件安全性工程 270 18.1 软件安全性工程的重要性 270 18.2 安全生命周期模型 271 18.3 安全开发生命周期活动 272 18.4 安全需求工程 273 18.4.1 SQUARE 273 18.4.2 SQUARE过程 273 18.5 误用例、滥用例及攻击方式 275 18.6 安全性风险分析 276 18.7 威胁建模、优先级排序和缓解 277 18.8 攻击面 278 18.9 安全编码 278 18.10 测量 279 18.11 安全过程改进和成熟度模型 280 18.12 小结 281 习题与思考题 281 第19章 软件测试—构件级 282 19.1 软件测试的策略性方法 282 19.1.1 验证与确认 283 19.1.2 软件测试组织 283 19.1.3 宏观 284 19.1.4 测试完成的标准 286 19.2 规划和记录保存 286 19.2.1 “脚手架”的作用 287 19.2.2 高效测试 288 19.3 测试用例设计 288 19.3.1 需求和用例 290 19.3.2 可追溯性 290 19.4 白盒测试 290 19.4.1 基本路径测试 290 19.4.2 控制结构测试 293 19.5 黑盒测试 293 19.5.1 接口测试 294 19.5.2 等价类划分 294 19.5.3 边界值分析 295 19.6 面向对象测试 295 19.6.1 类测试 295 19.6.2 行为测试 297 19.7 小结 298 习题与思考题 298 第20章 软件测试—集成级 299 20.1 软件测试基础 300 20.1.1 黑盒测试 300 20.1.2 白盒测试 300 20.2 集成测试 301 20.2.1 自顶向下集成 301 20.2.2 自底向上集成 302 20.2.3 持续集成 303 20.2.4 集成测试工作产品 304 20.3 人工智能与回归测试 304 20.4 面向对象环境中的集成测试 305 20.4.1 基于故障的测试用例设计 306 20.4.2 基于场景的测试用例设计 307 20.5 确认测试 308 20.6 测试模式 309 20.7 小结 309 习题与思考题 310 第21章 软件测试—专门的移动性测试 311 21.1 移动测试准则 311 21.2 测试策略 312 21.3 用户体验测试相关问题 313 21.3.1 手势测试 313 21.3.2 虚拟键盘输入 314 21.3.3 语音输入和识别 314 21.3.4 警报和异常条件 315 21.4 Web应用测试 315 21.5 Web测试策略 316 21.5.1 内容测试 317 21.5.2 界面测试 318 21.5.3 导航测试 318 21.6 国际化 319 21.7 安全性测试 319 21.8 性能测试 320 21.9 实时测试 322 21.10 测试AI系统 323 21.10.1 静态测试和动态测试 323 21.10.2 基于模型的测试 324 21.11 测试虚拟环境 324 21.11.1 可用性测试 325 21.11.2 可访问性测试 326 21.11.3 可玩性测试 327 21.12 测试文档和帮助设施 327 21.13 小结 328 习题与思考题 329 第22章 软件配置管理 330 22.1 软件配置管理概述 331 22.1.1 SCM场景 331 22.1.2 配置管理系统的元素 332 22.1.3 基线 333 22.1.4 软件配置项 334 22.1.5 依赖性和变更管理 334 22.2 SCM中心存储库 335 22.2.1 一般特征和内容 335 22.2.2 SCM特征 336 22.3 版本控制系统 336 22.4 持续集成 337 22.5 变更管理过程 337 22.5.1 变更控制 338 22.5.2 影响管理 340 22.5.3 配置审核 341 22.5.4 状态报告 341 22.6 移动性和敏捷变更管理 341 22.6.1 变更控制 342 22.6.2 内容管理 343 22.6.3 集成和发布 344 22.6.4 版本控制 345 22.6.5 审核和报告 345 22.7 小结 346 习题与思考题 346 第23章 软件度量和分析 347 23.1 软件测量 348 23.1.1 测度、度量和指标 348 23.1.2 有效软件度量的属性 348 23.2 软件分析 348 23.3 产品指标 349 23.3.1 需求模型的度量 350 23.3.2 常规软件的设计度量 352 23.3.3 面向对象软件的设计度量 353 23.3.4 用户界面的设计度量 355 23.3.5 源代码的度量 357 23.4 测试的度量 357 23.5 维护的度量 358 23.6 过程和项目度量 359 23.7 软件测量 361 23.8 软件质量的度量 363 23.9 制定软件度量大纲 365 23.10 小结 367 习题与思考题 368 第四部分 软件项目管理 第24章 项目管理概念 370 24.1 管理涉及的范围 371 24.1.1 人员 371 24.1.2 产品 371 24.1.3 过程 371 24.1.4 项目 372 24.2 人员 372 24.2.1 利益相关者 372 24.2.2 团队负责人 372 24.2.3 软件团队 373 24.2.4 协调和沟通问题 374 24.3 产品 375 24.3.1 软件范围 375 24.3.2 问题分解 376 24.4 过程 376 24.4.1 合并产品和过程 376 24.4.2 过程分解 377 24.5 项目 378 24.6 W5HH原则 379 24.7 关键实践 379 24.8 小结 379 习题与思考题 380 第25章 制定可行的软件计划 381 25.1 对估算的看法 382 25.2 项目计划过程 383 25.3 软件范围和可行性 383 25.4 资源 384 25.4.1 人力资源 384 25.4.2 可复用软件资源 384 25.4.3 环境资源 385 25.5 数据分析和软件项目估算 385 25.6 分解和估算技术 386 25.6.1 软件规模估算 386 25.6.2 基于问题的估算 387 25.6.3 基于LOC估算的实例 387 25.6.4 基于FP估算的实例 388 25.6.5 基于过程估算的实例 389 25.6.6 基于用例点估算的实例 390 25.6.7 调和不同的估算方法 392 25.6.8 敏捷开发的估算 392 25.7 项目进度安排 393 25.7.1 基本原则 394 25.7.2 人员与工作量之间的关系 394 25.8 定义项目任务集 396 25.8.1 任务集举例 396 25.8.2 主要任务的细化 397 25.9 定义任务网络 397 25.10 进度安排 398 25.10.1 时序图 398 25.10.2 跟踪进度 399 25.11 小结401 习题与思考题 401 第26章 风险管理 403 26.1 被动风险策略和主动风险策略 404 26.2 软件风险 404 26.3 风险识别 405 26.3.1 评估整体项目风险 406 26.3.2 风险因素和驱动因子 407 26.4 风险预测 407 26.4.1 建立风险表 407 26.4.2 评估风险影响 409 26.5 风险细化 410 26.6 风险缓解、监测和管理 411 26.7 RMMM计划 413 26.8 小结 414 习题与思考题 414 第27章 软件支持策略 416 27.1 软件支持 417 27.2 软件维护 418 27.2.1 维护类型 419 27.2.2 维护任务 419 27.2.3 逆向工程 420 27.3 主动软件支持 422 27.3.1 软件分析的使用 422 27.3.2 社交媒体的作用 423 27.3.3 支持成本 423 27.4 重构 424 27.4.1 数据重构 424 27.4.2 代码重构 425 27.4.3 体系结构重构 425 27.5 软件演化 425 27.5.1 库存分析 426 27.5.2 文档重构 427 27.5.3 逆向工程 427 27.5.4 代码重构 427 27.5.5 数据重构 427 27.5.6 正向工程 427 27.6 小结 428 习题与思考题 428 第五部分 高级课题 第28章 软件过程改进 430 28.1 什么是SPI 431 28.1.1 SPI的方法 431 28.1.2 成熟度模型 432 28.1.3 SPI适合每个人吗 432 28.2 SPI过程 432 28.2.1 评估和差异分析 433 28.2.2 教育和培训 434 28.2.3 选择和合理性判定 434 28.2.4 设置/迁移 434 28.2.5 评价 435 28.2.6 SPI的风险管理 435 28.3 CMMI 436 28.4 其他SPI框架 438 28.4.1 SPICE 438 28.4.2 TickIT Plus 439 28.5 SPI的投资回报率 439 28.6 SPI趋势 439 28.7 小结 440 习题与思考题 440 第29章 软件工程新趋势 442 29.1 技术演变 443 29.2 作为一门学科的软件工程 444 29.3 观察软件工程的发展趋势 444 29.4 识别“软趋势” 445 29.4.1 管理复杂性 446 29.4.2 开放世界软件 447 29.4.3 意外需求 447 29.4.4 人才技能结合 448 29.4.5 软件构造块 448 29.4.6 对“价值”认识的转变 449 29.4.7 开源 449 29.5 技术方向 449 29.5.1 过程趋势 449 29.5.2 巨大的挑战 450 29.5.3 协同开发 451 29.5.4 需求工程 451 29.5.5 模型驱动的软件开发 452 29.5.6 基于搜索的软件工程 452 29.5.7 测试驱动的开发 453 29.6 相关工具的趋势 454 29.7 小结 455 习题与思考题 455 第30章 结束语 456 30.1 再论软件的重要性 457 30.2 人员及其构造系统的方式 457 30.3 知识发现 458 30.4 愿景 459 30.5 软件工程师的责任 460 30.6 写在最后 461 索引 462 在线资源 附录1 UML 简介 附录2 面向软件工程师的数据科学 参考文献 ---------------------------4970609 - 软件工程:架构驱动的软件开发--------------------------- 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 |