| 作者 |
| 丛书名 |
| 出版社 |
| 原 Mcgraw-Hill |
| ISBN |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书以丰富的信息资源、广泛的角度深刻地论述了软件工程的方方面面,内容包括软件工程的相关语境、管理软件项目的方法、各种软件工程的方法论、面向对象的方法、客户/服务器软件工程、CASE等。本书内容新颖、见解独到,适合大学计算机专业高年级学生、研究生学习,也适合软件工程开发者、组织者、管理者参考。 |
| 目录 |
| 目 录 作者简介 译者简介 前言 第一部分 产品和过程 第1章 产品 1 1.1 软件的发展 褎 1.1 产业的观点 4 1.1.2 老化的软件工厂 4 1.1.3 软件的竞争 5 1.2 软件 5 1.2.1 软件特征 6 1.2.2 软件构件 8 1.2.3 软件应用 9 1.3 软件:地平线上的危机 10 1.4 软件神话 10 1.5 小结 12 参考文献 12 思考题 13 推荐阅读文献及其他信息源 13 第2章 过程 15 2.1 软件工程— 一种层次化技术 15 2.1.1 过程、方法和工具 15 2.1.2 软件工程的一般视图 16 2.2 软件过程 17 2.3 软件过程模型 19 2.4 线性顺序模型 20 2.5 原型模型 22 2.6 RAD模型 23 2.7 演化软件过程模型 25 2.7.1 增量模型 25 2.7.2 螺旋模型 27 2.7.3 构件组装模型 28 2.7.4 并发开发模型 29 2.8 形式化方法模型 31 2.9 第四代技术 31 2.10 过程技术 32 2.11 产品和过程 33 2.12 小结 33 参考文献 34 思考题 35 推荐阅读文献及其他信息源 35 第二部分 软件项目的管理 第3章 项目管理的概念 39 3.1 管理的范围 39 3.1.1 人员 40 3.1.2 问题 40 3.1.3 过程 40 3.2 人员 40 3.2.1 项目参与者 41 3.2.2 项目负责人 41 3.2.3 软件项目组 42 3.2.4 协调和通信问题 44 3.3 问题 46 3.3.1 软件范围 46 3.3.2 问题分解 46 3.4 过程 47 3.4.1 合并问题和过程 47 3.4.2 过程分解 48 3.5 项目 49 3.6 小结 49 参考文献 49 思考题 50 推荐阅读文献及其他信息源 51 第4章 软件过程和项目的度量 53 4.1 测度、度量和指标 53 4.2 过程和项目领域中的度量 54 4.2.1 过程度量和软件过程改进 54 4.2.2 项目度量 57 4.3 软件测量 58 4.3.1 面向规模的度量 58 4.3.2 面向功能的度量 59 4.3.3 扩展的功能点度量 61 4.4 调和不同的度量方法 63 4.5 软件质量度量 63 4.5.1 概述影响质量的因素 64 4.5.2 测量质量 64 4.5.3 缺陷排除效率 65 4.6 在软件过程中集成度量 66 4.7 小结 67 参考文献 67 思考题 68 推荐阅读文献及其他信息源 69 第5章 软件项目计划 71 5.1 对估算的观察 71 5.2 项目计划目标 72 5.3 软件范围 72 5.3.1 获取定义软件范围所需的信息 72 5.3.2 一个范围定义的例子 73 5.4 资源 75 5.4.1 人力资源 75 5.4.2 可复用软件资源 76 5.4.3 环境资源 76 5.5 软件项目估算 77 5.6 分解技术 77 5.6.1 软件规模估算 78 5.6.2 基于问题的估算 78 5.6.3 一个基于LOC估算的例子 79 5.6.4 一个基于FP估算的例子 80 5.6.5 基于过程的估算 81 5.6.6 一个基于过程估算的例子 82 5.7 经验估算模型 83 5.7.1 估算模型的结构 83 5.7.2 COCOMO模型 83 5.7.3 软件方程式 85 5.8 自行开发或购买的决策 86 5.8.1 创建决策树 87 5.8.2 外购 88 5.9 自动估算工具 88 5.10 小结 88 参考文献 89 思考题 89 推荐阅读文献及其他信息源 90 第6章 风险管理 92 6.1 被动和主动的风险策略 92 6.2 软件风险 92 6.3 识别风险 93 6.3.1 产品规模风险 94 6.3.2 商业影响风险 94 6.3.3 客户相关的风险 95 6.3.4 过程风险 95 6.3.5 技术风险 96 6.3.6 开发环境风险 97 6.3.7 与人员数目及经验相关的风险 97 6.3.8 风险因素和驱动因子 98 6.4 风险预测 98 6.4.1 建立风险表 98 6.4.2 评估风险影响 100 6.4.3 风险评估 100 6.5 风险缓解、监控和管理 101 6.6 安全性风险和危险 103 6.7 RMMM计划 103 6.8 小结 104 参考文献 104 思考题 104 推荐阅读文献及其他信息源 105 第7章 项目进度安排及跟踪 107 7.1 基本概念 107 7.1.1 关于“延迟”的评注 108 7.1.2 基本原则 109 7.2 人员和工作量之间的关系 110 7.2.1 一个例子 110 7.2.2 一个经验关系 111 7.2.3 工作量分布 111 7.3 为软件项目定义任务集合 111 7.3.1 严格度 112 7.3.2 定义适应性准则 113 7.3.3 计算任务集合选择因子的值 113 7.3.4 解释TSS值并选择任务集合 114 7.4 选择软件工程任务 115 7.5 主要任务的求精 115 7.6 定义任务网络 118 7.7 进度安排 118 7.7.1 时间表 119 7.7.2 跟踪进度 119 7.8 项目计划 122 7.9 小结 122 参考文献 123 思考题 123 推荐阅读文献及其他信息源 124 第8章 软件质量保证 125 8.1 质量概念 125 8.1.1 质量 126 8.1.2 质量控制 126 8.1.3 质量保证 127 8.1.4 质量的成本 127 8.2 质量运动 128 8.3 软件质量保证 129 8.3.1 背景 129 8.3.2 SQA活动 130 8.4 软件复审 130 8.4.1 软件缺陷对成本的影响 131 8.4.2 缺陷的放大和消除 131 8.5 正式技术复审 133 8.5.1 复审会议 133 8.5.2 复审报告和记录保存 134 8.5.3 复审指南 134 8.6 SQA的形式化方法 135 8.7 统计质量保证 136 8.8 软件可靠性 137 8.8.1 可靠性和可用性的度量 138 8.8.2 软件的安全和危险的分析 138 8.9 SQA计划 139 8.10 ISO9000质量标准 140 8.10.1 ISO对质量保证系统的方法 141 8.10.2 ISO9001 标准 141 8.11 小结 142 参考文献 142 思考题 143 推荐阅读文献及其他信息源 144 第9章 软件配置管理 147 9.1 软件配置管理 147 9.1.1 基线 148 9.1.2 软件配置项 149 9.2 SCM过程 150 9.3 软件配置中对象的标识 151 9.4 版本控制 153 9.5 变化控制 154 9.6 配置审计 157 9.7 状态报告 157 9.8 SCM标准 157 9.9 小结 158 参考文献 158 思考题 159 推荐阅读文献及其他信息源 159 第三部分 传统软件工程方法 第10章 系统工程 161 10.1 基于计算机的系统 161 10.2 系统工程层次结构 163 10.2.1 系统建模 164 10.2.2 信息工程:概述 165 10.2.3 产品工程:概述 167 10.3 信息工程 168 10.4 信息策略计划 168 10.4.1 企业建模 169 10.4.2 业务级数据建模 170 10.5 业务域分析 171 10.5.1 处理建模 172 10.5.2 信息流建模 173 10.6 产品工程 173 10.6.1 系统分析 176 10.6.2 说明客户需要 176 10.6.3 可行性研究 176 10.6.4 经济分析 177 10.6.5 技术分析 179 10.7 系统体系结构建模 180 10.8 系统建模和仿真 182 10.9 系统规约 183 10.10 小结 184 参考文献 185 思考题 185 推荐阅读文献及其他信息源 187 第11章 分析概念和原则 188 11.1 需求分析 188 11.2 通信技术 189 11.2.1 过程的启动 189 11.2.2 便利的应用规约技术 190 11.2.3 质量功能部署 192 11.3 分析原则 193 11.3.1 信息域 194 11.3.2 建模 195 11.3.3 划分 196 11.3.4 基本视图和实现视图 197 11.4 软件原型 198 11.4.1 选择原型方法 198 11.4.2 原型方法和工具 199 11.5 规约 199 11.5.1 规约原则 200 11.5.2 表示 200 11.5.3 软件需求规约 201 11.6 规约复审 202 11.7 小结 203 参考文献 203 思考题 204 推荐阅读文献及其他信息源 205 第12章 分析建模 206 12.1 简史 206 12.2 分析模型的元素 207 12.3 数据建模 208 12.3.1 数据对象、属性和关系 208 12.3.2 基数和形态 210 12.3.3 实体—关系图 211 12.4 功能建模和信息流 214 12.4.1 数据流图 214 12.4.2 针对实时系统的扩展 216 12.4.3 Ward和Mellor扩展 217 12.4.4 Hatley和Pirbhai扩展 219 12.5 行为建模 220 12.6 结构化分析的技巧 222 12.6.1 创建实体—关系图 223 12.6.2 创建数据流模型 225 12.6.3 创建控制流模型 227 12.6.4 控制规约 229 12.6.5 加工规约 230 12.7 数据字典 231 12.8 其他传统分析方法概述 233 12.8.1 数据结构化系统开发 233 12.8.2 Jackson系统开发 233 12.8.3 SADT 234 12.9 小结 234 参考文献 234 思考题 235 推荐阅读文献及其他信息源 236 第13章 设计概念和原则 238 13.1 软件设计和软件工程 238 13.2 设计过程 239 13.2.1 设计和软件质量 239 13.2.2 软件设计的演化 240 13.3 设计原则 240 13.4 设计概念 241 13.4.1 抽象 241 13.4.2 求精 242 13.4.3 模块化 242 13.4.4 软件体系结构 244 13.4.5 控制层次 245 13.4.6 结构划分 246 13.4.7 数据结构 247 13.4.8 软件过程 247 13.4.9 信息隐蔽 248 13.5 有效的模块设计 248 13.5.1 功能独立性 249 13.5.2 内聚 249 13.5.3 耦合 250 13.6 针对有效模块化的设计启发 251 13.7 设计模型 253 13.8 设计文档 253 13.9 小结 254 参考文献 254 思考题 256 推荐阅读文献及其他信息源 256 第14章 设计方法 258 14.1 数据设计 258 14.2 体系结构设计 259 14.2.1 贡献者 259 14.2.2 应用域 260 14.3 体系结构设计过程 260 14.3.1 变换流 260 14.3.2 事务流 261 14.4 变换映射 261 14.4.1 一个实例 261 14.4.2 设计步骤 262 14.5 事务映射 268 14.5.1 一个实例 268 14.5.2 设计步骤 268 14.6 设计的后处理 272 14.7 体系结构设计优化 272 14.8 接口设计 273 14.8.1 内部和外部接口设计 273 14.8.2 用户界面设计 273 14.9 人机界面设计 273 14.9.1 界面设计模型 274 14.9.2 任务分析和建模 275 14.9.3 设计问题 275 14.9.4 实现工具 277 14.9.5 设计评估 277 14.10 界面设计指南 279 14.10.1 一般交互 279 14.10.2 信息显示 280 14.10.3 数据输入 280 14.11 过程设计 281 14.11.1 结构化程序设计 281 14.11.2 图形设计符号 281 14.11.3 表格设计符号 284 14.11.4 程序设计语言 285 14.11.5 一个PDL实例 285 14.12 小结 288 参考文献 288 思考题 290 推荐阅读文献及其他信息源 292 第15章 实时系统的设计 294 15.1 系统考虑 294 15.2 实时系统 295 15.2.1 集成和性能问题 295 15.2.2 中断处理 296 15.2.3 实时数据库 297 15.2.4 实时操作系统 297 15.2.5 实时语言 298 15.2.6 任务同步和通信 298 15.3 实时系统的分析和仿真 299 15.3.1 实时系统分析的数学工具 299 15.3.2 仿真和建模技术 302 15.4 实时设计 306 15.5 小结 307 参考文献 307 思考题 309 推荐阅读文献及其他信息源 309 第16章 软件测试技术 311 16.1 软件测试基础 311 16.1.1 测试目标 311 16.1.2 测试原则 312 16.1.3 可测试性 312 16.2 测试用例设计 314 16.3 白盒测试 315 16.4 基本路径测试 315 16.4.1 流图符号 315 16.4.2 环形复杂性 318 16.4.3 导出测试用例 318 16.4.4 图矩阵 321 16.5 控制结构测试 322 16.5.1 条件测试 322 16.5.2 数据流测试 324 16.5.3 循环测试 325 16.6 黑盒测试 326 16.6.1 基于图的测试方法 326 16.6.2 等价划分 328 16.6.3 边界值分析 329 16.6.4 比较测试 330 16.7 针对专门环境和应用的测试 330 16.7.1 GUI测试 330 16.7.2 客户/服务器体系结构的测试 331 16.7.3 测试文档和帮助设施 331 16.7.4 实时系统测试 332 16.8 小结 333 参考文献 333 思考题 334 推荐阅读文献及其他信息源 335 第17章 软件测试策略 337 17.1 软件测试的策略途径 337 17.1.1 验证和确认 337 17.1.2 软件测试的组织 338 17.1.3 一种软件测试策略 339 17.1.4 测试完成的标准 340 17.2 策略问题 342 17.3 单元测试 342 17.3.1 单元测试考虑 342 17.3.2 单元测试规程 344 17.4 集成测试 345 17.4.1 自顶向下集成 346 17.4.2 自底向上集成 347 17.4.3 回归测试 348 17.4.4 关于集成测试的讨论 349 17.4.5 集成测试文档 349 17.5 确认测试 350 17.5.1 确认测试的标准 350 17.5.2 配置复审 351 17.5.3 Alpha和Beta测试 351 17.6 系统测试 351 17.6.1 恢复测试 352 17.6.2 安全测试 352 17.6.3 压力测试 352 17.6.4 性能测试 353 17.7 调试的技巧 353 17.7.1 调试过程 353 17.7.2 心理考虑 354 17.7.3 调试方法 354 17.8 小结 355 参考文献 356 思考题 357 推荐阅读文献及其他信息源 357 第18章 软件的技术度量 359 18.1 软件质量 359 18.1.1 McCall的质量因素 360 18.1.2 FURPS 362 18.1.3 到量化视图的变迁 362 18.2 软件技术度量框架 363 18.2.1 技术度量的挑战 363 18.2.2 测度原则 363 18.2.3 有效软件度量的属性 364 18.3 分析模型的度量 365 18.3.1 基于功能的度量 365 18.3.2 “撞击值”度量 366 18.3.3 规约质量的度量 368 18.4 设计模型的度量 369 18.4.1 高层设计度量 369 18.4.2 构件级设计度量 371 18.4.3 界面设计度量 373 18.5 源代码度量 374 18.6 对测试的度量 375 18.7 对维护的度量 376 18.8 小结 376 参考文献 377 思考题 378 推荐阅读文献及其他信息源 379 第四部分 面向对象的软件工程 第19章 面向对象的概念和原则 381 19.1 面向对象的范型 382 19.2 面向对象概念 383 19.2.1 类和对象 385 19.2.2 属性 386 19.2.3 操作、方法和服务 386 19.2.4 消息 386 19.2.5 封装、继承和多态 388 19.3 标识对象模型的元素 390 19.3.1 标识类和对象 390 19.3.2 表示属性 393 19.3.3 定义操作 394 19.3.4 完成对象定义 394 19.4 面向对象软件项目的管理 395 19.4.1 OO的公共过程框架 395 19.4.2 面向对象项目的度量和估算 396 19.4.3 一种OO估算和进度安排方法 397 19.4.4 面向对象项目的跟踪过程 398 19.5 小结 399 参考文献 399 思考题 400 推荐阅读文献及其他信息源 400 第20章 面向对象分析 402 20.1 面向对象的分析 402 20.1.1 传统方法和OO方法 402 20.1.2 OOA概述 403 20.2 领域分析 406 20.2.1 复用和领域分析 406 20.2.2 领域分析过程 406 20.3 OO分析模型的类属成分 408 20.4 OOA过程 409 20.4.1 使用实例 409 20.4.2 类—责任—协作者建模 410 20.4.3 定义结构和层次 414 20.4.4 定义主题和子系统 415 20.5 对象—关系模型 416 20.6 对象—行为模型 418 20.6.1 用使用实例标识事件 419 20.6.2 状态表示 419 20.7 小结 422 参考文献 422 思考题 423 推荐阅读文献及其他信息源 424 第21章 面向对象设计 426 21.1 面向对象系统的设计 426 21.1.1 传统方法和OO方法 427 21.1.2 设计问题 428 21.1.3 OOD概述 429 21.2 OO设计模型的类属成分 432 21.3 系统设计过程 433 21.3.1 划分分析模型 433 21.3.2 并发性和子系统分配 434 21.3.3 任务管理构件 434 21.3.4 数据管理构件 435 21.3.5 资源管理构件 435 21.3.6 人机界面构件 435 21.3.7 子系统间通信 436 21.4 对象设计过程 437 21.4.1 对象描述 437 21.4.2 设计算法和数据结构 438 21.4.3 程序构件和接口 439 21.5 设计模式 442 21.5.1 描述设计模式 442 21.5.2 在设计中使用设计模式 442 21.6 面向对象编程 443 21.7 小结 443 参考文献 443 思考题 444 推荐阅读文献及其他信息源 445 第22章 面向对象测试 447 22.1 扩大测试的视角 447 22.2 测试OOA和OOD模型 448 22.2.1 OOA和OOD模型的正确性 448 22.2.2 OOA和OOD模型的一致性 448 22.3 面向对象的测试策略 449 22.3.1 在OO语境中的单元测试 450 22.3.2 在OO语境中的集成测试 450 22.3.3 在OO语境中的有效性测试 450 22.4 OO软件的测试用例设计 450 22.4.1 OO概念的测试用例设计的含义 451 22.4.2 传统测试用例设计方法的可用性 451 22.4.3 基于故障的测试 451 22.4.4 OO编程对测试的影响 452 22.4.5 测试用例和类层次 453 22.4.6 基于场景的测试设计 453 22.4.7 测试表层结构和深层结构 454 22.5 在类级别上可用的测试方法 455 22.5.1 对OO类的随机测试 455 22.5.2 在类级别上的划分测试 455 22.6 类间测试用例设计 456 22.6.1 多个类测试 456 22.6.2 从行为模型导出的测试 457 22.7 小结 458 参考文献 458 思考题 459 推荐阅读文献及其他信息源 459 第23章 面向对象系统的技术度量 461 23.1 面向对象度量的目的 461 23.2 区别性的特征 461 23.2.1 局部化 461 23.2.2 封装 462 23.2.3 信息隐蔽 462 23.2.4 继承 462 23.2.5 抽象 462 23.3 对OO设计模型的度量 462 23.4 面向类的度量 463 23.4.1 CK度量套件 463 23.4.2 Lorenz和Kidd建议的度量 465 23.5 面向操作的度量 466 23.6 对面向对象测试的度量 466 23.7 对面向对象项目的度量 467 23.8 小结 467 参考文献 468 思考题 468 推荐阅读文献及其他信息源 469 第五部分 软件工程高级课题 第24章 形式化方法 471 24.1 基本概念 471 24.1.1 少量的形式化方法的不足 472 24.1.2 软件开发中的数学 473 24.1.3 形式化方法概念 473 24.2 数学预备知识 477 24.2.1 集合和构造性规约 477 24.2.2 集合运算符 478 24.2.3 逻辑运算符 480 24.2.4 序列 480 24.3 应用数学符号描述形式规约 481 24.4 形式化规约语言 482 24.5 用Z表示一个软件构件的例子 483 24.6 形式化方法的十条戒律 485 24.7 形式化方法—未来之路 486 24.8 小结 486 参考文献 487 思考题 487 推荐阅读文献及其他信息源 488 第25章 净室软件工程 490 25.1 净室方法 490 25.1.1 净室策略 490 25.1.2 什么使得净室独特? 492 25.2 功能规约 492 25.2.1 黑盒规约 493 25.2.2 状态盒规约 494 25.2.3 清晰盒规约 494 25.3 设计求精和验证的优点 495 25.3.1 设计求精和验证 495 25.3.2 设计验证的优点 498 25.4 净室测试 499 25.4.1 统计的使用测试 499 25.4.2 认证 500 25.5 小结 500 参考文献 501 思考题 502 推荐阅读文献及其他信息源 502 第26章 软件复用 505 26.1 管理问题 505 26.1.1 复用的障碍 505 26.1.2 硬件类比 506 26.1.3 建立复用途径的一些建议 507 26.2 复用过程 507 26.2.1 可复用的软件制品 508 26.2.2 一个过程模型 509 26.3 领域工程 509 26.3.1 领域分析过程 510 26.3.2 领域特征 511 26.3.3 结构建模和结构点 511 26.4 建造可复用构件 512 26.4.1 为了复用的分析和设计 512 26.4.2 构造方法 513 26.4.3 基于构件的开发 514 26.5 分类和检索构件 515 26.5.1 描述可复用构件 515 26.5.2 复用环境 517 26.6 软件复用经济学 517 26.6.1 对质量、生产率和成本的影响 517 26.6.2 使用结构点的成本分析 518 26.6.3 复用度量 519 26.7 小结 519 参考文献 520 思考题 521 推荐阅读文献及其他信息源 522 第27章 再工程 524 27.1 业务过程再工程 524 27.1.1 业务过程 524 27.1.2 业务过程再工程的原则 526 27.1.3 BPR模型 527 27.1.4 几句警告 528 27.2 软件再工程 528 27.2.1 软件维护 528 27.2.2 软件再工程过程模型 529 27.3 逆向工程 532 27.3.1 理解处理的逆向工程 533 27.3.2 理解数据的逆向工程 533 27.3.3 用户界面的逆向工程 534 27.4 重构 535 27.4.1 代码重构 535 27.4.2 数据重构 536 27.5 正向工程 536 27.5.1 向客户/服务器体系结构的 正向工程 537 27.5.2 向面向对象体系结构的正向工程 538 27.5.3 用户界面的正向工程 538 27.6 再工程经济学 539 27.7 小结 539 参考文献 540 思考题 541 推荐阅读文献及其他信息源 542 第28章 客户/服务器软件工程 543 28.1 客户/服务器系统的结构 543 28.1.1 C/S系统的软件构件 544 28.1.2 软件构件的分布 545 28.1.3 分布应用构件的指南 545 28.1.4 连接C/S软件构件 546 28.1.5 中间件和对象请求代理体系结构 546 28.2 对C/S系统的软件工程 547 28.3 分析建模问题 548 28.4 对C/S系统的设计 548 28.4.1 传统设计方法 548 28.4.2 数据库设计 549 28.4.3 某设计方法的概述 550 28.4.4 加工设计的迭代 551 28.5 测试问题 552 28.5.1 整体C/S测试策略 552 28.5.2 C/S测试策略 553 28.6 小结 554 参考文献 554 思考题 555 推荐阅读文献及其他信息源 555 第29章 计算机辅助软件工程 557 29.1 什么是CASE? 557 29.2 构造CASE的积木块 557 29.3 CASE工具分类 559 29.4 集成化CASE环境 562 29.5 集成体系结构 563 29.6 CASE中心库 563 29.6.1 在I-CASE中中心库的角色 564 29.6.2 特征和内容 564 29.7 小结 567 参考文献 567 思考题 568 推荐阅读文献及其他信息源 568 第30章 未来之路 570 30.1 软件的重要性—再论 570 30.2 变化的范围 571 30.3 人及他们建造系统的方式 572 30.4 “新”的软件过程 574 30.5 表示信息的新模式 574 30.6 技术作为推动力 576 30.7 结束语 577 参考文献 578 思考题 578 推荐阅读文献及其他信息源 578 |