描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302347149
内容简介
《软件工程:过程、方法及工具/21世纪高等学校规划教材》内容涵盖了软件工程的三要素: 方法、过程和工具。全书共分12章,主要讲述软件工程的基本概念、原理,常见的软件过程模型,经典的软件开发方法,用结构化方法进行分析、设计和实现,UML面向对象建模基础,用UML的面向对象方法进行分析、设计和实现,软件项目管理基础知识,常见的软件分析设计工具、测试工具、配置管理工具和项目管理工具。各章节均结合实例讲解,使读者易于理解和掌握。
本书内容全面,简明易懂,既可作为高等院校计算机专业及相关专业的教材或教学参考书,也可供软件工程师、软件项目管理者和应用软件开发人员阅读参考。
本书内容全面,简明易懂,既可作为高等院校计算机专业及相关专业的教材或教学参考书,也可供软件工程师、软件项目管理者和应用软件开发人员阅读参考。
目 录
第1章 软件工程
1.1 软件概述
1.1.1 软件发展历程
1.1.2 软件的定义
1.1.3 软件的特点
1.1.4 软件的分类
1.2 软件危机
1.2.1 软件危机的定义
1.2.2 产生软件危机的原因
1.2.3 软件危机的表现形式
1.2.4 解决软件危机的途径
1.3 软件工程概述
1.3.1 软件工程的定义
1.3.2 软件工程的目标
1.3.3 软件工程的研究内容
1.3.4 软件工程的基本原理
本章小结
本章习题
第2章 软件过程
2.1 软件生命周期与软件过程
2.1.1 软件生命周期
2.1.2 软件过程
2.2 瀑布模型
2.3 快速原型模型
2.4 增量模型
2.5 螺旋模型
2.6 喷泉模型
2.7 Rational 统一过程模型
2.8敏捷过程模型
2.9微软过程
本章小结
本章习题
第3章 软件方法
3.1 结构化方法
3.2 面向对象方法
3.2.1 面向对象方法的发展及要点
3.2.2 面向对象方法学的优点
3.2.3 面向对象方法学的不足
3.2.4 面向对象的基本概念
3.3 形式化方法
3.3.1 非形式化方法的缺点
3.3.2 软件开发过程中的数学
3.3.3 应用形式化方法的准则
3.4 敏捷方法
3.4.1 敏捷软件开发方法
3.4.2 软件技术的发展趋势
本章小结
本章习题
第4章 结构化分析
4.1 结构化分析概述
4.1.1 结构化分析思想
4.1.2 结构化分析过程
4.1.3 结构化模型的描述形式
4.2 数据流图
4.2.1 数据流图的基本成分
4.2.2 数据流图绘制方法
4.2.3 数据流图绘制实例
4.3 实体—关系图
4.4 数据字典
4.4.1 数据字典的定义与用途
4.4.2 内容及格式
4.4.3 数据字典的实现
本章小结
本章习题
第5章 结构化设计
5.1 结构化设计概述
5.1.1 结构化设计与结构化分析的关系
5.1.2 设计目标和原则
5.1.3 软件设计基本原理
5.2 模块独立
5.2.1 耦合
5.2.2 内聚
5.3 软件结构设计的启发规则
5.4 软件结构设计的图形工具
5.4.1 层次图和HIPO图
5.4.2 结构图
5.5 面向数据流设计方法
5.5.1 概念
5.5.2 变换分析
5.5.3 事务分析
5.5.4 设计优化
5.6 人机界面设计
5.6.1 人机界面设计问题
5.6.2 设计过程
5.6.3 人机界面设计指南
5.7 过程设计
5.8过程设计的工具
5.8.1 程序流程图
5.8.2 N?S图
5.8.3 PAD图
5.8.4 判定表
5.8.5 判定树
5.8.6 过程设计语言
本章小结
本章习题
第6章 结构化实现
6.1 程序设计语言
6.1.1 程序设计语言的分类
6.1.2 程序设计语言的特点
6.1.3 程序设计语言的选择
6.2 编码风格
6.2.1 源程序文档化
6.2.2 数据说明
6.2.3 语句构造
6.2.4 输入/输出
6.2.5 程序效率
6.3 软件测试基础
6.3.1 测试的必要性
6.3.2 测试的概念
6.3.3 测试的目的
6.3.4 测试的复杂性
6.3.5 测试的基本原则
6.3.6 测试的步骤
6.4 白盒测试技术
6.4.1 逻辑覆盖
6.4.2 路径测试
6.4.3 循环测试
6.5 黑盒测试技术
6.5.1 等价类划分
6.5.2 边界值分析
6.5.3 错误推测法
6.6 软件测试策略
6.6.1 单元测试
6.6.2 集成测试
6.6.3 系统测试
6.6.4 验收测试
6.7 软件调试
6.7.1 软件调试方法
6.7.2 常用调试策略
本章小结
本章习题
第7章 UML面向对象建模基础
7.1 UML简介
7.1.1 UML发展史
7.1.2 UML构成
7.1.3 UML视图
7.2 用例图
7.2.1 参与者
7.2.2 用例
7.2.3 用例间的关系
7.2.4 用例图范例
7.3 类图和对象图
7.3.1 类图
7.3.2 对象图
7.4 顺序图、协作图、状态图和活动图
7.4.1 顺序图
7.4.2 协作图
7.4.3 状态图
7.4.4 活动图
7.5 组件图和部署图
7.5.1 组件图
7.5.2 部署图
7.6 包图
本章小结
本章习题
第8章 面向对象分析
8.1 面向对象分析方法简介
8.2 面向对象分析过程
8.3 建立功能模型
8.3.1 发现参与者
8.3.2 确定用例
8.3.3 构造用例图
8.3.4 建立用例描述
8.4 识别分析类
8.4.1 识别边界类
8.4.2 识别控制类
8.4.3 识别实体类
8.5 建立动态模型
8.5.1 建立状态图
8.5.2 建立顺序图
8.6 建立对象模型
8.7 其他需求
8.8 评审分析模型
本章小结
本章习题
第9章 面向对象设计
9.1 面向对象设计的基本概念
9.1.1 面向对象设计方法简介
9.1.2 面向对象设计活动
9.1.3 面向对象设计准则
9.2 精化功能模型
9.2.1 将分析用例转换成设计用例
9.2.2 修改功能模型
9.3 定义体系结构
9.3.1 仓库及知识库体系结构
9.3.2 管道和过滤器体系结构
9.3.3 分层体系结构
9.3.4 客户服务器体系结构
9.3.5 浏览器服务器体系结构
9.3.6 分布式对象体系结构
9.3.7 网上购物系统体系结构
9.4 精化动态模型
9.5 精化对象模型
9.5.1 类设计
9.5.2 接口设计
9.5.3 属性、方法建模
9.6 定义存储策略
9.6.1 映射类
9.6.2 映射继承关系
9.6.3 关联和聚合映射
9.6.4 持久性框架
9.7 部署子系统
9.8 人机界面设计
9.8.1 面向对象的人机界面设计
9.8.2 Web界面设计启发规则
9.8.3 Web界面风格与布局
9.8.4 Web界面颜色搭配
9.9 评审设计模型
本章小结
本章习题
第10章 面向对象实现
10.1 面向对象程序设计语言
10.1.1 面向对象程序设计语言简介
10.1.2 面向对象程序设计语言的技术特点
10.1.3 面向对象程序设计语言的选择
10.2 面向对象程序设计风格
10.2.1 提高可重用性
10.2.2 提高可扩充性
10.2.3 提高健壮性
10.3 面向对象测试的基本概念
10.3.1 面向对象测试的问题
10.3.2 面向对象测试与传统测试的区别
10.3.3 面向对象测试的参考模型
10.4 面向对象测试的策略
10.4.1 面向对象分析测试
10.4.2 面向对象设计测试
10.4.3 面向对象编程测试
10.4.4 面向对象单元测试
10.4.5 面向对象集成测试
本章小结
本章习题
第11章 软件项目管理
11.1 软件项目管理概述
11.1.1 软件项目管理的范围
11.1.2 软件项目管理活动
11.2 软件项目成本管理
11.2.1 软件规模估算
11.2.2 软件成本估算
11.3 软件项目进度管理
11.3.1 Gantt图
11.3.2 工程网络图
11.3.3 PERT技术和CPM方法
11.4 软件项目组织管理
11.4.1 软件项目组织
11.4.2 软件人员组织
11.5 软件项目风险管理
11.5.1 风险识别
11.5.2 风险分析
11.5.3 风险规划
11.5.4 风险监控
11.6 软件项目质量管理
11.6.1 软件质量
11.6.2 软件质量保证措施
11.6.3 CMM软件能力成熟度模型
11.7 软件项目配置管理
11.7.1 基本概念
11.7.2 配置管理活动
本章小结
本章习题
第12章 软件工具
12.1 分析设计工具Rational Rose
12.1.1 Rational Rose 2003简介
12.1.2 UML各种图的建立
12.2 测试工具LoadRunner
12.2.1 LoadRunner 11.5 简介
12.2.2 LoadRunner 11.5 测试实例
12.3 配置管理工具VSS
12.3.1 VSS 2005简介
12.3.2 VSS管理实例
12.4 项目管理工具MS Project 2007
12.4.1 Microsoft Project 2007简介
12.4.2 Project管理实例
本章小结
本章习题
1.1 软件概述
1.1.1 软件发展历程
1.1.2 软件的定义
1.1.3 软件的特点
1.1.4 软件的分类
1.2 软件危机
1.2.1 软件危机的定义
1.2.2 产生软件危机的原因
1.2.3 软件危机的表现形式
1.2.4 解决软件危机的途径
1.3 软件工程概述
1.3.1 软件工程的定义
1.3.2 软件工程的目标
1.3.3 软件工程的研究内容
1.3.4 软件工程的基本原理
本章小结
本章习题
第2章 软件过程
2.1 软件生命周期与软件过程
2.1.1 软件生命周期
2.1.2 软件过程
2.2 瀑布模型
2.3 快速原型模型
2.4 增量模型
2.5 螺旋模型
2.6 喷泉模型
2.7 Rational 统一过程模型
2.8敏捷过程模型
2.9微软过程
本章小结
本章习题
第3章 软件方法
3.1 结构化方法
3.2 面向对象方法
3.2.1 面向对象方法的发展及要点
3.2.2 面向对象方法学的优点
3.2.3 面向对象方法学的不足
3.2.4 面向对象的基本概念
3.3 形式化方法
3.3.1 非形式化方法的缺点
3.3.2 软件开发过程中的数学
3.3.3 应用形式化方法的准则
3.4 敏捷方法
3.4.1 敏捷软件开发方法
3.4.2 软件技术的发展趋势
本章小结
本章习题
第4章 结构化分析
4.1 结构化分析概述
4.1.1 结构化分析思想
4.1.2 结构化分析过程
4.1.3 结构化模型的描述形式
4.2 数据流图
4.2.1 数据流图的基本成分
4.2.2 数据流图绘制方法
4.2.3 数据流图绘制实例
4.3 实体—关系图
4.4 数据字典
4.4.1 数据字典的定义与用途
4.4.2 内容及格式
4.4.3 数据字典的实现
本章小结
本章习题
第5章 结构化设计
5.1 结构化设计概述
5.1.1 结构化设计与结构化分析的关系
5.1.2 设计目标和原则
5.1.3 软件设计基本原理
5.2 模块独立
5.2.1 耦合
5.2.2 内聚
5.3 软件结构设计的启发规则
5.4 软件结构设计的图形工具
5.4.1 层次图和HIPO图
5.4.2 结构图
5.5 面向数据流设计方法
5.5.1 概念
5.5.2 变换分析
5.5.3 事务分析
5.5.4 设计优化
5.6 人机界面设计
5.6.1 人机界面设计问题
5.6.2 设计过程
5.6.3 人机界面设计指南
5.7 过程设计
5.8过程设计的工具
5.8.1 程序流程图
5.8.2 N?S图
5.8.3 PAD图
5.8.4 判定表
5.8.5 判定树
5.8.6 过程设计语言
本章小结
本章习题
第6章 结构化实现
6.1 程序设计语言
6.1.1 程序设计语言的分类
6.1.2 程序设计语言的特点
6.1.3 程序设计语言的选择
6.2 编码风格
6.2.1 源程序文档化
6.2.2 数据说明
6.2.3 语句构造
6.2.4 输入/输出
6.2.5 程序效率
6.3 软件测试基础
6.3.1 测试的必要性
6.3.2 测试的概念
6.3.3 测试的目的
6.3.4 测试的复杂性
6.3.5 测试的基本原则
6.3.6 测试的步骤
6.4 白盒测试技术
6.4.1 逻辑覆盖
6.4.2 路径测试
6.4.3 循环测试
6.5 黑盒测试技术
6.5.1 等价类划分
6.5.2 边界值分析
6.5.3 错误推测法
6.6 软件测试策略
6.6.1 单元测试
6.6.2 集成测试
6.6.3 系统测试
6.6.4 验收测试
6.7 软件调试
6.7.1 软件调试方法
6.7.2 常用调试策略
本章小结
本章习题
第7章 UML面向对象建模基础
7.1 UML简介
7.1.1 UML发展史
7.1.2 UML构成
7.1.3 UML视图
7.2 用例图
7.2.1 参与者
7.2.2 用例
7.2.3 用例间的关系
7.2.4 用例图范例
7.3 类图和对象图
7.3.1 类图
7.3.2 对象图
7.4 顺序图、协作图、状态图和活动图
7.4.1 顺序图
7.4.2 协作图
7.4.3 状态图
7.4.4 活动图
7.5 组件图和部署图
7.5.1 组件图
7.5.2 部署图
7.6 包图
本章小结
本章习题
第8章 面向对象分析
8.1 面向对象分析方法简介
8.2 面向对象分析过程
8.3 建立功能模型
8.3.1 发现参与者
8.3.2 确定用例
8.3.3 构造用例图
8.3.4 建立用例描述
8.4 识别分析类
8.4.1 识别边界类
8.4.2 识别控制类
8.4.3 识别实体类
8.5 建立动态模型
8.5.1 建立状态图
8.5.2 建立顺序图
8.6 建立对象模型
8.7 其他需求
8.8 评审分析模型
本章小结
本章习题
第9章 面向对象设计
9.1 面向对象设计的基本概念
9.1.1 面向对象设计方法简介
9.1.2 面向对象设计活动
9.1.3 面向对象设计准则
9.2 精化功能模型
9.2.1 将分析用例转换成设计用例
9.2.2 修改功能模型
9.3 定义体系结构
9.3.1 仓库及知识库体系结构
9.3.2 管道和过滤器体系结构
9.3.3 分层体系结构
9.3.4 客户服务器体系结构
9.3.5 浏览器服务器体系结构
9.3.6 分布式对象体系结构
9.3.7 网上购物系统体系结构
9.4 精化动态模型
9.5 精化对象模型
9.5.1 类设计
9.5.2 接口设计
9.5.3 属性、方法建模
9.6 定义存储策略
9.6.1 映射类
9.6.2 映射继承关系
9.6.3 关联和聚合映射
9.6.4 持久性框架
9.7 部署子系统
9.8 人机界面设计
9.8.1 面向对象的人机界面设计
9.8.2 Web界面设计启发规则
9.8.3 Web界面风格与布局
9.8.4 Web界面颜色搭配
9.9 评审设计模型
本章小结
本章习题
第10章 面向对象实现
10.1 面向对象程序设计语言
10.1.1 面向对象程序设计语言简介
10.1.2 面向对象程序设计语言的技术特点
10.1.3 面向对象程序设计语言的选择
10.2 面向对象程序设计风格
10.2.1 提高可重用性
10.2.2 提高可扩充性
10.2.3 提高健壮性
10.3 面向对象测试的基本概念
10.3.1 面向对象测试的问题
10.3.2 面向对象测试与传统测试的区别
10.3.3 面向对象测试的参考模型
10.4 面向对象测试的策略
10.4.1 面向对象分析测试
10.4.2 面向对象设计测试
10.4.3 面向对象编程测试
10.4.4 面向对象单元测试
10.4.5 面向对象集成测试
本章小结
本章习题
第11章 软件项目管理
11.1 软件项目管理概述
11.1.1 软件项目管理的范围
11.1.2 软件项目管理活动
11.2 软件项目成本管理
11.2.1 软件规模估算
11.2.2 软件成本估算
11.3 软件项目进度管理
11.3.1 Gantt图
11.3.2 工程网络图
11.3.3 PERT技术和CPM方法
11.4 软件项目组织管理
11.4.1 软件项目组织
11.4.2 软件人员组织
11.5 软件项目风险管理
11.5.1 风险识别
11.5.2 风险分析
11.5.3 风险规划
11.5.4 风险监控
11.6 软件项目质量管理
11.6.1 软件质量
11.6.2 软件质量保证措施
11.6.3 CMM软件能力成熟度模型
11.7 软件项目配置管理
11.7.1 基本概念
11.7.2 配置管理活动
本章小结
本章习题
第12章 软件工具
12.1 分析设计工具Rational Rose
12.1.1 Rational Rose 2003简介
12.1.2 UML各种图的建立
12.2 测试工具LoadRunner
12.2.1 LoadRunner 11.5 简介
12.2.2 LoadRunner 11.5 测试实例
12.3 配置管理工具VSS
12.3.1 VSS 2005简介
12.3.2 VSS管理实例
12.4 项目管理工具MS Project 2007
12.4.1 Microsoft Project 2007简介
12.4.2 Project管理实例
本章小结
本章习题
在线试读
1.用分阶段的生命周期计划严格管理
软件项目的开展,需要计划在前,实施在后。统计资料表明,有50%以上的项目失败是由于计划不全面而造成的。在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作,这意味着应该把软件生命周期划分为若干个阶段,并相应地制订出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。
2.坚持进行阶段评审,以确保软件产品质量
软件的质量保证工作须贯穿软件开发的各个阶段。实践表明,软件的大部分错误是在编程之前造成的。根据B.w.Bochm的统计,设计错误占软件错误的63〉6,编码错误仅占37%。软件中的错误发现与纠正越晚,所要付出的代价也越高。因此,在每个阶段都要进行严格的评审,尽早地发现软件中的错误,通过对软件质量实施过程监控,以确保软件在每个阶段都能够具有较高的质量。
3.实行严格的产品控制,以适应软件规格的变更
在软件开发过程中不应随意改变需求,因为改变一项需求需要付出较高的代价。但在软件开发过程中改变需求又是难免的,只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。基准配置是指经过阶段评审或软件配置的组成(各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制,是指一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的产品控制来进行,使得能够对软件的规格进行跟踪记录,使软件产品的各项配置成分保持一致,由此来适应软件的需求变更。
4.采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。采用先进的软件开发和维护技术,不仅能够提高软件开发和维护效率,而且可以提高软件产品的质量,降低开发成本,延长软件的使用寿命。20世纪60年代末提出的结构程序设计技术成为绝大多数人公认的先进的程序设计技术,以后又进一步发展出各种结构分析与结构设计技术。近年来,面向对象的技术已经在许多领域中迅速地取代了传统的结构化方法。
5.结果应能清楚地审查
软件产品与一般的物理产品不同,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,没有明显的生产过程,工作进展难以准确度量和控制,从而使得软件产品的开发过程比其他产品的开发过程更难以评价和管理。
……
软件项目的开展,需要计划在前,实施在后。统计资料表明,有50%以上的项目失败是由于计划不全面而造成的。在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作,这意味着应该把软件生命周期划分为若干个阶段,并相应地制订出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。
2.坚持进行阶段评审,以确保软件产品质量
软件的质量保证工作须贯穿软件开发的各个阶段。实践表明,软件的大部分错误是在编程之前造成的。根据B.w.Bochm的统计,设计错误占软件错误的63〉6,编码错误仅占37%。软件中的错误发现与纠正越晚,所要付出的代价也越高。因此,在每个阶段都要进行严格的评审,尽早地发现软件中的错误,通过对软件质量实施过程监控,以确保软件在每个阶段都能够具有较高的质量。
3.实行严格的产品控制,以适应软件规格的变更
在软件开发过程中不应随意改变需求,因为改变一项需求需要付出较高的代价。但在软件开发过程中改变需求又是难免的,只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。基准配置是指经过阶段评审或软件配置的组成(各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制,是指一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的产品控制来进行,使得能够对软件的规格进行跟踪记录,使软件产品的各项配置成分保持一致,由此来适应软件的需求变更。
4.采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。采用先进的软件开发和维护技术,不仅能够提高软件开发和维护效率,而且可以提高软件产品的质量,降低开发成本,延长软件的使用寿命。20世纪60年代末提出的结构程序设计技术成为绝大多数人公认的先进的程序设计技术,以后又进一步发展出各种结构分析与结构设计技术。近年来,面向对象的技术已经在许多领域中迅速地取代了传统的结构化方法。
5.结果应能清楚地审查
软件产品与一般的物理产品不同,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,没有明显的生产过程,工作进展难以准确度量和控制,从而使得软件产品的开发过程比其他产品的开发过程更难以评价和管理。
……
评论
还没有评论。