| 作者 |
| 丛书名 |
| 出版社 |
| 原 Mcgraw-Hill |
| ISBN |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书介绍经典的和面向对象的软件工程,强调理论、抽象和设计相结合,重视对软件工程学有指导作用的重要概念。本书分两部分,共14章及8个附录。第一部分包括第1~6章,向读者介绍软件工程的概念,给出了本书的框架。顺序讨论了软件工程的范围,软件过程及其问题、软件生命周期模型、逐步求精、CASE工具、测试原理,详细解释了类和对象,并且说明为什么面向对象的范型比结构化范型更成功。本书的第二部分包括第7~14章,详细介绍软件过程的各个阶段,如需求、规格说明、计划、设计、实现与集成、维护、最终退役。还包括用于开发和维护软件的工具和技术,并对各阶段中有关的CASE工具、度量和测试技术加以说明。各章末都附有大量的练习。 本书内容广泛新颖,深浅适宜,是大学计算机科学系高年级学生和研究生的较优秀的教科书,也是对从事软件开发的管理者、系统分析员、程序员具有指导作用和实用价值的著作。 |
| 目录 |
| 目 录 译者序 前言 第3版Classical and Object-Oriented Software Engineering序言 第一部分 软件过程 第1章 软件工程的范围 2 1.1 历史方面 3 1.2 经济方面 5 1.3 维护方面 5 1.4 规格说明和设计方面 8 1.5 群体编程方面 9 1.6 面向对象的范型 10 1.7 常用术语 13 本章回顾 15 进一步阅读 15 问题 16 第2章 软件过程及问题 17 2.1 客户、开发人员和用户 18 2.2 需求阶段 19 2.3 规格说明阶段 20 2.4 计划阶段 21 2.5 设计阶段 22 2.6 实现阶段 23 2.7 集成阶段 23 2.8 维护阶段 24 2.9 退役 24 2.10 软件产品中的问题:本质问题和非 本质问题 25 2.10.1 复杂性 26 2.10.2 一致性 27 2.10.3 可变性 27 2.10.4 不可见性 28 2.10.5 没有银弹吗 28 本章回顾 29 进一步阅读 29 问题 30 第3章 软件生命周期模型 31 3.1 边做边改模型 31 3.2 瀑布模型 32 3.3 快速原型模型 34 3.4 增量模型 36 3.5 螺旋模型 39 3.6 各种生命周期模型的比较 42 3.7 能力成熟度模型 43 3.8 ISO 9000 45 本章回顾 46 进一步阅读 46 问题 47 第4章 逐步求精、CASE和 其他商用工具 48 4.1 逐步求精 48 4.2 成本效益分析 52 4.3 计算机辅助软件工程CASE 53 4.4 CASE的范围 54 4.5 软件版本 57 4.5.1 修订版本 57 4.5.2 变体版本 58 4.6 配置控制 58 4.6.1 产品维护期间的配置控制 60 4.6.2 基线版本 60 4.6.3 产品开发期间的配置控制 61 4.7 构造工具 61 4.8 CASE技术提高了生产力 62 4.9 软件度量 62 本章回顾 63 进一步阅读 63 问题 64 第5章 测试原理 66 5.1 质量问题 66 5.1.1 软件质量保证 67 5.1.2 管理的独立性 67 5.2 基于非执行的测试 68 5.2.1 走查 68 5.2.2 走查的管理 68 5.2.3 审查 69 5.2.4 审查和走查的比较 70 5.2.5 审查的尺度 71 5.3 基于执行的测试 71 5.4 需要测试些什么 71 5.4.1 实用性 72 5.4.2 可靠性 72 5.4.3 健壮性 73 5.4.4 性能 73 5.4.5 正确性 73 5.5 测试与正确性证明的比较 74 5.5.1 正确性证明的举例 75 5.5.2 正确性证明的事例研究 77 5.5.3 正确性证明和软件工程 78 5.6 由谁来执行基于执行的测试 80 5.7 何时结束测试 81 本章回顾 81 进一步阅读 82 问题 82 第6章 对象 84 6.1 什么是模块 84 6.2 内聚性 87 6.2.1 偶然内聚性 87 6.2.2 逻辑内聚性 88 6.2.3 暂时内聚性 89 6.2.4 过程内聚性 89 6.2.5 通信内聚性 89 6.2.6 信息内聚性 89 6.2.7 功能内聚性 90 6.2.8 内聚性举例 90 6.3 耦合 91 6.3.1 内容耦合 91 6.3.2 共用耦合 92 6.3.3 控制耦合 93 6.3.4 特征耦合 93 6.3.5 数据耦合 94 6.3.6 耦合举例 95 6.4 数据封装 96 6.4.1 数据封装和产品开发 98 6.4.2 数据封装和产品维护 99 6.5 抽象数据类型 103 6.6 信息隐藏 104 6.7 对象的概念 106 6.8 多态性和动态联编 108 6.9 对象的内聚性和耦合 110 6.10 重用 110 6.11 重用实例研究 112 6.11.1 Raytheon 的导弹系统部 112 6.11.2 东芝软件工厂 113 6.11.3 NASA软件 113 6.11.4 GTE Data Services 114 6.11.5 HP公司 114 6.12 重用和维护 115 6.13 对象和生产率 116 本章回顾 117 进一步阅读 117 问题 118 第二部分 软件过程的各个阶段 第7章 需求阶段 122 7.1 需求分析技术 122 7.2 快速原型 123 7.3 人的因素 124 7.4 作为一种规格说明技术的快速原型 125 7.5 快速原型的重用 127 7.6 快速原型的其他用途 128 7.7 快速原型的管理意义 129 7.8 有关快速原型的经验 130 7.9 联合式应用设计 131 7.10 需求分析技术的比较 131 7.11 需求阶段的测试 131 7.12 需求阶段的CASE工具 132 7.13 需求阶段的度量 132 7.14 MSG实例研究:需求阶段 133 7.15 MSG实例研究:快速原型 134 本章回顾 135 进一步阅读 135 问题 135 第8章 规格说明阶段 137 8.1 规格说明文档 137 8.2 非形式化规格说明 138 8.3 结构化系统分析 139 8.4 其他的半形式化技术 145 8.5 实体关系模型 145 8.6 有穷状态机 147 8.7 Petri网 152 8.8 Z 156 8.8.1 电梯问题:Z 156 8.8.2 对Z的分析 158 8.9 其他的形式化技术 159 8.10 规格说明技术的比较 160 8.11 规格说明阶段的测试 160 8.12 规格说明阶段的CASE工具 160 8.13 规格说明阶段的度量 161 8.14 MSG实例研究:结构化系统分析 161 本章回顾 163 进一步阅读 163 问题 163 第9章 面向对象的分析阶段 166 9.1 面向对象范型与结构化范型的比较 166 9.2 面向对象的分析 167 9.3 电梯问题:面向对象的分析 168 9.3.1 类模型 168 9.3.2 动态建模 170 9.3.3 功能建模 172 9.4 面向对象的生命周期模型 174 9.5 面向对象分析阶段中的CASE工具 176 9.6 MSG实例研究:面向对象的分析 176 本章回顾 178 进一步阅读 178 问题 178 第10章 计划阶段 181 10.1 项目开发周期和开发成本估计 181 10.1.1 产品规模的度量 182 10.1.2 成本估计技术 185 10.1.3 中级COCOMO 186 10.1.4 跟踪开发周期和成本估计 188 10.2 软件项目管理计划的组成部分 189 10.3 软件项目管理计划的结构 190 10.4 IEEE软件项目管理计划 190 10.5 测试计划 193 10.6 面向对象项目的规划 194 10.7 培训需求 195 10.8 文档标准 195 10.9 计划阶段的CASE工具 195 10.10 计划阶段的测试 197 10.11 MSG实例研究:计划阶段 198 本章回顾 198 进一步阅读 198 问题 199 第11章 设计阶段 201 11.1 设计和抽象 201 11.2 面向行为的设计 202 11.3 数据流分析 202 11.3.1 数据流分析的例子 203 11.3.2 扩展 206 11.4 事务分析 207 11.5 面向数据的设计 208 11.6 Jackson系统开发 208 11.6.1 JSD概述 209 11.6.2 为什么要在本章介绍Jackson系统 开发 210 11.6.3 电梯问题:Jackson系统开发 210 11.6.4 JSD分析 216 11.7 Jackson、Warnier和Orr的技术 217 11.8 面向对象的设计 218 11.9 详细设计 221 11.10 面向行为的设计、面向数据的设计 和面向对象的设计之比较 221 11.11 与实时系统有关的困难 222 11.12 实时系统设计技术 223 11.13 设计阶段的测试 223 11.14 设计阶段的CASE工具 224 11.15 设计阶段的度量 224 11.16 MSG实例研究:面向对象的设计 225 本章回顾 228 进一步阅读 228 问题 228 第12章 实现阶段 230 12.1 编程语言的选择 230 12.2 第四代语言 232 12.3 结构化程序设计 234 12.3.1 结构化程序设计的历史 234 12.3.2 为什么goto语句是有害的 235 12.4 良好的编程习惯 237 12.5 编码标准 240 12.6 程序员组的组织 241 12.7 民主制程序员组方法 242 12.8 典型的主席制程序员组方法 243 12.8.1 New York Times项目 244 12.8.2 典型的主席制程序员组方法的 不切实际性 245 12.9 超越主席制程序员组和民主制 程序员组的方法 245 12.10 可移植性 247 12.10.1 硬件的不兼容性 248 12.10.2 操作系统的不兼容性 249 12.10.3 数值软件的不兼容性 249 12.10.4 编译器的不兼容性 250 12.11 为什么要支持可移植性 253 12.12 获得可移植性的技术 254 12.12.1 可移植的系统软件 254 12.12.2 可移植的应用软件 254 12.12.3 可移植的数据 255 12.13 模块重用 256 12.14 模块测试事例的选择 256 12.14.1 规格说明测试与代码测试的 比较 256 12.14.2 规格说明测试的可行性 257 12.14.3 代码测试的可行性 257 12.15 黑盒模块测试技术 258 12.15.1 等价测试和边界值分析 259 12.15.2 功能测试 260 12.16 玻璃盒模块测试技术 260 12.16.1 结构化测试:语句、分支、 路径覆盖 260 12.16.2 复杂性度量 262 12.17 代码走查和审查 263 12.18 模块测试技术的比较 263 12.19 Cleanroom 264 12.20 测试对象 264 12.21 模块测试的管理方面 266 12.22 测试分布式软件 268 12.23 实时软件的测试 269 12.24 实现阶段的CASE工具 270 12.25 MSG实例研究:黑盒测试事例 270 本章回顾 272 进一步阅读 272 问题 273 第13章 实现和集成阶段 275 13.1 实现和集成 275 13.1.1 自顶向下的实现和集成方法 276 13.1.2 自底而上的实现和集成方法 277 13.1.3 三明治式实现和集成方法 278 13.1.4 面向对象产品的实现和集成方法 278 13.1.5 实现和集成阶段的管理问题 279 13.2 实现和集成阶段的测试 279 13.3 用户图形界面的集成阶段测试 279 13.4 产品测试 280 13.5 验收测试 280 13.6 实现和集成阶段的CASE工具 281 13.7 整个软件过程的CASE工具 281 13.8 基于编程语言的环境 282 13.9 面向结构的环境 282 13.10 工具箱环境 282 13.11 集成环境 282 13.11.1 过程集成 283 13.11.2 工具集成 283 13.11.3 其他形式的集成 285 13.12 商业应用的开发环境 285 13.13 公用工具的基础结构 286 13.14 各类环境的比较 286 13.15 实现和集成阶段的度量 286 13.16 MSG实例研究:实现和集成阶段 287 本章回顾 287 进一步阅读 288 问题 288 第14章 维护阶段 290 14.1 为什么维护是必须的 290 14.2 维护人员需要什么 291 14.3 维护实例研究 292 14.4 维护管理 293 14.4.1 错误报告 293 14.4.2 授权产品更改 293 14.4.3 确保可维护性 294 14.4.4 反复维护的问题 294 14.5 面向对象的软件维护 295 14.6 开发技能与维护技能之比较 297 14.7 逆向工程 297 14.8 维护阶段的测试 298 14.9 维护阶段的CASE工具 298 14.10 维护阶段的度量 299 本章回顾 299 进一步阅读 299 问题 300 结束语—JAVA: 软件工程的实例研究 301 第三部分 附 录 附录A 艺术商人 Osbert Oglesby 307 附录B 软件工程资源 309 附录C MSG 实例研究:快速原型模型 311 附录D MSG 实例研究:结构化系统 分析 322 附录E MSG 实例研究:软件项目管理 计划 325 附录F MSG 实例研究:设计 329 附录G MSG 实例研究:黑箱测试用例 337 附录H MSG 实例研究:源代码 339 参考文献索引 376 |