软件工程面向对象和传统的方法

软件工程面向对象和传统的方法
作 者: 沙赫 邓迎春 韩松 徐天顺
出版社: 机械工业出版社
丛编项: 计算机科学丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 软件工程
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Stephen R.Schach,1972年获魏兹曼科学院物理常理科硕士学位,1973年获开普敦大学应用数学博士学位,目前是美国范德比尔特大学计算机科学和计算机工程副教授。他的研究兴趣主要集中在软件工程领域,特别是对软件维护与开源软件的实验分析有深入研究。他著有多部软件工程、面向对象软件工程、面向对象系统分析与设计方面的教材。

内容简介

本书对软件工程的面向对象和传统方法进行了严谨和全面的介绍,是软件工程领域的经典著作,被加州大学伯克利分校等180多所美国高校选作教材。本书介绍面向对象的软件开发方法,统一过程的理论和实践,还强调文档、维护、重用、可移植性、测试和CASE工具等软件工程基础的重要性,并着重扩充敏捷过程和开源软件方面的新内容。此外,采用全新的MSG基金案例研究,突出统一过程的更多方面。本书分两大部分:第一部分介绍基本的软件工程理论;第二部分讲述更实用的软件生命周期等一些关键的软件工程技术。作者采用以实例为基础的介绍方式,帮助学生和广大读者更好地理解和应用所学到的软件工程的相关知识。本书是高等院校软件工程课程的理想教材,对于专业软件开发人员,本书也是一个很好的参考。

图书目录

第一部分软件工程概述

第1章 软件工程的范畴

1.1历史方面

1.2经济方面

1.3维护性方面

1.3.1维护的传统和现代观点

1.3.2交付后维护的重要性

1.4需求、分析和设计方面

1.5小组编程方面

1.6为什么没有计划阶段

1.7为什么没有测试阶段

1.8为什么没有文档阶段

1.9面向对象范型

1.10正确看待面向对象范型

1.11术语

1.12道德问题

本章回顾

进一步阅读指导

习题

参考文献

第2章 软件生命周期模型

2.1理论上的软件开发

2.2Winburg小型实例研究

2.3Winburg小型实例研究心得

2.4野鸭拖拉机公司小型实例研究

2.5迭代和递增

2.6修订的Winburg小型实例研究

2.7迭代和递增的风险和其他方面

2.8迭代和递增的控制

2.9其他生命周期模型

2.9.1编码-修补生命周期模型

2.9.2瀑布生命周期模型

2.9.3快速原型开发生命周期模型

2.9.4开源生命周期模型

2.9.5敏捷过程

2.9.6同步-稳定生命周期模型

2.9.7螺旋生命周期模型

2.10生命周期模型的比较

本章回顾

进一步阅读指导

习题

参考文献

第3章 软件过程

3.1统一过程

3.2面向对象范型内的迭代和递增

3.3需求流

3.4分析流

3.5设计流

3.6实现流

3.7测试流

3.7.1需求制品

3.7.2分析制品

3.7.3设计制品

3.7.4实现制品

3.8交付后维护

3.9退役

3.10统一过程的各阶段

3.10.1开始阶段

3.10.2细化阶段

3.10.3构建阶段

3.10.4转换阶段

3.11一维与二维生命周期模型

3.12改进软件过程

3.13能力成熟度模型

3.14 软件过程改进方面的其他努力

3.15 软件过程改进的代价和收益

本章回顾

进一步阅读指导

习题

参考文献

第4章 软件小组

4.1小组组织

4.2民主小组方法

4.3传统的主程序员小组方法

4.3.1《纽约时报》项目

4.3.2传统的主程序员小组方法的不实用性

4.4主程序员小组和民主小组之外的编程小组

4.5同步-稳定小组

4.6敏捷过程小组

4.7开源编程小组

4.8人员能力成熟度模型

4.9选择合适的小组组织

本章回顾

进一步阅读指导

习题

参考文献

第5章 软件工程工具

5.1逐步求精法

5.2成本-效益分析法

5.3软件度量

5.4CASE

5.5CASE的分类

5.6CASE的范围

5.7软件版本

5.7.1修订版

5.7.2变种版

5.8配置控制

5.8.1交付后维护期间的配置控制

5.8.2基准

5.8.3产品开发过程中的配置控制

5.9建造工具

5.10使用CASE技术提高生产力

本章回顾

进一步阅读指导

习题

参考文献

第6章 测试

6.1质量问题

6.1.1软件质量保证

6.1.2管理独立

6.2非执行测试

6.2.1走查

6.2.2管理走查

6.2.3审查

6.2.4审查与走查的对比

6.2.5评审的优缺点

6.2.6审查的度量

6.3执行测试

6.4应该测试什么

6.4.1实用性

6.4.2可靠性

6.4.3健壮性

6.4.4性能

6.4.5正确性

6.5测试与正确性证明

6.5.1正确性证明的例子

6.5.2正确性证明小型实例研究

6.5.3正确性证明和软件工程

6.6谁应当完成执行测试

6.7测试什么时候停止

本章回顾

进一步阅读指导

习题

参考文献

第7章 从模块到对象

7.1什么是模块

7.2内聚

7.2.1偶然性内聚

7.2.2逻辑性内聚

7.2.3时间性内聚

7.2.4过程性内聚

7.2.5通信性内聚

7.2.6功能性内聚

7.2.7信息性内聚

7.2.8内聚示例

7.3耦合

7.3.1内容耦合

7.3.2共用耦合

7.3.3控制耦合

7.3.4印记耦合

7.3.5数据耦合

7.3.6耦合示例

7.3.7耦合的重要性

7.4数据封装

7.4.1数据封装和产品开发

7.4.2数据封装和产品维护

7.5抽象数据类型

7.6信息隐藏

7.7对象

7.8继承、多态和动态绑定

7.9面向对象范型

本章回顾

进一步阅读指导

习题

参考文献

第8章 可重用性和可移植性

8.1重用的概念

8.2重用的障碍

8.3重用实例研究

8.3.1Raytheon导弹系统部

8.3.2欧洲航天局

8.4对象和重用

8.5设计和实现期间的重用

8.5.1设计重用

8.5.2应用框架

8.5.3设计模式

8.5.4软件体系结构

8.5.5基于组件的软件工程

8.6重用和交付后维护

8.7可移植性

8.7.1硬件的不兼容性

8.7.2操作系统的不兼容性

8.7.3数值计算软件的不兼容性

8.7.4编译器的不兼容性

8.8为什么需要可移植性

8.9实现可移植性的技术

8.9.1可移植的系统软件

8.9.2可移植的应用软件

8.9.3可移植的数据

本章回顾

进一步阅读指导

习题

参考文献

第9章 计划和估算

9.1计划和软件过程

9.2周期和成本估算

9.2.1产品规模的度量

9.2.2成本估算技术

9.2.3中间COCOMO

9.2.4COCOMOII

9.2.5跟踪周期和成本估算

9.3软件项目管理计划的组成

9.4软件项目管理计划框架

9.5IEEE软件项目管理计划

9.6计划测试

9.7计划面向对象的项目

9.8培训需求

9.9文档标准

9.10用于计划和估算的CASE工具

9.11测试软件项目管理计划

本章回顾

进一步阅读指导

习题

参考文献

第二部分软件生命周期的各个工作流

第10章 需求

10.1确定客户需要什么

10.2需求流概述

10.3理解应用域

10.4业务模型

10.4.1访谈

10.4.2其他技术

10.4.3用例

10.5初始需求

10.6对应用领域的初始理解:MSG基金实例研究

10.7初始业务模型:MSG基金实例研究

10.8初始需求:MSG基金实例研究

10.9继续需求流:MSG基金实例研究

10.10修订需求:MSG基金实例研究

10.11测试流:MSG基金实例研究

10.12传统的需求阶段

10.13快速原型开发

10.14人的因素

10.15重用快速原型

10.16需求流的CASE工具

10.17需求流的度量

10.18需求流面临的挑战

本章回顾

进一步阅读指导

习题

参考文献

第11章 传统的分析

11.1规格说明文档

11.2非形式化规格说明

11.3结构化系统分析

11.4结构化系统分析:MSG基金实例研究

11.5其他半形式化技术

11.6建造实体-关系模型

11.7有穷状态机

11.8Petri网

11.9Z

11.9.1Z:电梯问题实例研究

11.9.2Z的分析

11.10其他的形式化技术

11.11传统分析技术的比较

11.12在传统分析阶段测试

11.13传统分析阶段的CASE工具

11.14传统分析阶段的度量

11.15软件项目管理计划:MSG基金实例研究

11.16传统分析阶段面临的挑战

本章回顾

进一步阅读指导

习题

参考文献

第12章 面向对象分析

12.1分析流

12.2抽取实体类

12.3面向对象分析:电梯问题实例研究

12.4功能建模:电梯问题实例研究

12.5实体类建模:电梯问题实例研究

12.5.1名词抽取

12.5.2CRC卡片

12.6动态建模:电梯问题实例研究

12.7测试流:面向对象分析

12.8抽取边界类和控制类

12.9初始功能模型:MSG基金实例研究

12.10初始类图:MSG基金实例研究

12.11初始动态模型:MSG基金实例研究

12.12修订实体类:MSG基金实例研究

12.13抽取边界类:MSG基金实例研究

12.14抽取控制类:MSG基金实例研究

12.15用例实现:MSG基金实例研究

12.15.1 Estimate Funds Avaibuble for Week用例

12.15.2 Manage an Asset用例

12.15.3 Update Estimated Annual Operating Expenses用例

12.15.4 Produce a Report用例

12.16类图递增:MSG基金实例研究

12.17测试流:MSG基金实例研究

12.18统一过程中的规格说明文档

12.19关于参与者和用例更详细的内容

12.20用于面向对象分析流的CASE工具

12.21面向对象分析流所面临的挑战

本章回顾

进一步阅读指导

习题

参考文献

第13章 设计

13.1设计和抽象

13.2面向操作设计

13.3数据流分析

13.3.1小型实例研究:字数统计

13.3.2数据流分析扩展

13.4事务分析

13.5面向数据设计

13.6面向对象设计

13.7面向对象设计:电梯问题实例研究

13.8面向对象设计:MSG基金实例研究

13.9设计流

13.10测试流:设计

13.11测试流:MSG基金实例研究

13.12详细设计的形式化技术

13.13实时设计技术

13.14设计的CASE工具

13.15设计的度量

13.16设计流面临的挑战

本章回顾

进一步阅读指导

习题

参考文献

第14章 实现

14.1编程语言的选择

14.2第四代语言

14.3良好的编程实践

14.3.1使用一致和有意义的变量名

14.3.2自文档代码的问题

14.3.3使用参数

14.3.4为增加可读性的代码编排

14.3.5嵌套的if语句

14.4编码标准

14.5代码重用

14.6集成

14.6.1自顶向下的集成

14.6.2自底向上的集成

14.6.3三明治集成

14.6.4面向对象产品的集成

14.6.5集成的管理

14.7实现流

14.8实现流:MSG基金实例研究

14.9测试流:实现

14.10测试用例选择

14.10.1规格说明测试与代码测试

14.10.2规格说明测试的可行性

14.10.3代码测试的可行性

14.11黑盒单元测试技术

14.11.1等价测试和边界值分析

14.11.2功能测试

14.12黑盒测试用例:MSG基金实例研究

14.13玻璃盒单元测试技术

14.13.1结构测试:语句、分支和路径覆盖

14.13.2复杂性度量

14.14代码走查和审查

14.15单元测试技术的比较

14.16净室

14.17测试对象时潜在的问题

14.18单元测试的管理方面

14.19何时该重写而不是调试代码制品

14.20集成测试

14.21产品测试

14.22验收测试

14.23测试流:MSG基金实例研究

14.24实现的CASE工具

14.24.1软件开发全过程的CASE工具

14.24.2集成化开发环境

14.24.3商业应用环境

14.24.4公共工具基础结构

14.24.5环境的潜在问题

14.25测试流的CASE工具

14.26实现流的度量

14.27实现流面临的挑战本章回顾

进一步阅读指导

习题

参考文献

第15章 交付后维护

15.1开发与维护

15.2为什么交付后维护是必要的

15.3对交付后维护程序员的要求是什么

15.4交付后维护小型实例研究

15.5交付后维护的管理

15.5.1缺陷报告

15.5.2批准对产品的修改

15.5.3确保可维护性

15.5.4迭代维护造成的问题

15.6面向对象软件的维护

15.7交付后维护技能与开发技能

15.8逆向工程

15.9交付后维护期间的测试

15.10交付后维护的CASE工具

15.11交付后维护的度量

15.12交付后维护:MSG基金实例研究

15.13交付后维护面临的挑战本章小结进一步阅读指导习题参考文献

第16章 UML的进一步讨论

16.1UML不是一种方法

16.2类图

16.2.1聚合

16.2.2多重性

16.2.3组合

16.2.4泛化

16.2.5关联

16.3注解

16.4用例图

16.5构造型

16.6交互图

16.7状态图

16.8活动图

16.9包

16.10组件图

16.11部署图

16.12UML图回顾

16.13UML和迭代

本章回顾

进一步阅读指导

习题

参考文献

附录

附录A学期项目:Osric的办公室用具和装饰

附录B软件工程资源

附录C需求流:MSG基金实例研究

附录D结构化系统分析:MSG基金实例研究

附录E分析流:MSG基金实例研究

附录F软件项目管理计划:MSG基金实例研究

附录G设计流:MSG基金实例研究

附录H实现流:MSG基金实例研究(C++版)

附录I实现流:MSG基金实例研究(Java版)

附录J测试流:MSG基金实例研究