本书系统地介绍了软件工程的基本概念、原理、方法、技术、标准和软件项目管理的知识,全书共分为15章,以软件生命周期为主线,对软件工程的需求分析、概要设计、详细设计、代码设计、软件测试、软件项目管理和软件过程等方面的内容做了详尽的叙述,之后还对软件工程标准和软件文档的编写要点进行了讲解,突出了结构化方法和面向对象技术在软件开发中的运用,通过案例,讲解了软件建模的方法和过程。
本书内容与实际案例紧密结合,循序渐进,深入浅出,每一章都给出了大量习题,以便于学生复习和自学。除此之外,还配备了完整的电子课件
目录
- 第1章软件工程的基本概念
- 1.1软件的定义、特征和分类
- 1.1.1软件的定义
- 1.1.2软件的特征
- 1.1.3软件的分类
- 1.2软件的发展和软件危机
- 1.2.1软件的发展历程
- 1.2.2软件危机的表现、产生的原因和解决方法
- 1.3软件工程方法学
- 1.3.1软件工程的基本概念
- 1.3.2软件工程的要素
- 1.3.3软件工程的基本原理
- 1.3.4软件工程的基本目标
- 1.3.5软件工程的基本原则
- 1.3.6两种主要的软件工程方法
- 1.4软件的生命周期
- 1.4.1生命周期的种类
- 1.4.2生命周期的阶段划分
- 1.5软件过程的模型
- 1.5.1瀑布模型
- 1.5.2原型模型
- 1.5.3增量模型
- 1.5.4螺旋模型
- 1.5.5变换模型
- 1.5.6喷泉模型
- 1.5.7智能模型
- 1.5.8第4代技术模型
- 1.5.9基于构件的开发模型
- 1.6本章小结
- 习题1
- 第2章需求分析与需求设计
- 2.1可行性研究
- 2.1.1问题的定义
- 2.1.2可行性分析的内容
- 2.2需求分析的任务
- 2.3获取需求的方法
- 2.4需求分析的原理
- 2.4.1需求分析的原则
- 2.4.2需求分析的过程
- 2.5分析建模
- 2.5.1分析模型
- 2.5.2数据建模(ER图)
- 2.5.3功能建模(数据流图)
- 2.5.4行为建模(状态迁移图)
- 2.5.5数据字典
- 2.5.6加工说明的描述工具
- 2.6需求规格说明书
- 2.7需求验证
- 2.8本章小结
- 习题2
- 第3章软件设计
- 3.1软件设计的原理
- 3.1.1软件设计的过程
- 3.1.2软件设计的原则
- 3.1.3软件体系结构
- 3.1.4模块化设计的方法
- 3.2结构化设计方法
- 3.2.1系统结构图中的模块
- 3.2.2变换流与变换型系统结构
- 3.2.3事务流与事务型系统结构图
- 3.2.4变换分析与映射
- 3.2.5事务分析与映射
- 3.2.6软件体系结构优化的方法
- 3.2.7“黑箱”技术的使用
- 3.3数据设计
- 3.3.1数据设计的原则
- 3.3.2文件设计的过程
- 3.3.3数据库设计
- 3.3.4数据库设计的技巧
- 3.4详细设计
- 3.4.1详细设计的任务
- 3.4.2详细设计的原则
- 3.4.3过程设计
- 3.4.4界面设计
- 3.4.5在线帮助的信息设计
- 3.4.6提示信息的信息设计
- 3.5设计规格说明与设计评审
- 3.5.1软件设计规格说明书
- 3.5.2软件设计的评审
- 3.6本章小结
- 习题3
- 第4章面向对象方法学
- 4.1面向对象概述
- 4.1.1面向对象基本概念
- 4.1.2面向对象基本特征
- 4.2面向对象开发方法概述
- 4.2.1软件开发过程
- 4.2.2传统开发方法存在的问题
- 4.2.3面向对象开发方法的特点
- 4.2.4Booch方法
- 4.2.5Coda/Yourdon方法
- 4.2.6OMT方法
- 4.2.7OOSE方法
- 4.3统一建模语言UML
- 4.3.1UML概述
- 4.3.2UML内容
- 4.4本章小结
- 习题4
- 第5章面向对象分析
- 5.1面向对象分析概述
- 5.1.1面向对象分析模型
- 5.1.2面向对象分析过程
- 5.2需求陈述
- 5.3建立静态模型
- 5.3.1寻找类与对象
- 5.3.2确定关联
- 5.3.3确定属性
- 5.3.4识别主题
- 5.3.5识别结构
- 5.3.6定义服务
- 5.3.7完善对象模型
- 5.4建立动态模型
- 5.4.1准备脚本
- 5.4.2确定事件
- 5.4.3准备事件跟踪图
- 5.4.4构造状态机图
- 5.4.5完善动态模型
- 5.5建立功能模型
- 5.5.1确定基本系统模型图
- 5.5.2细化数据流图
- 5.5.3功能描述
- 5.6面向对象分析实例
- 5.7本章小结
- 习题5
- 第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.2.6全局资源管理
- 6.2.7控制流机制
- 6.2.8边界条件
- 6.2.9评审
- 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.5本章小结
- 习题6
- 第7章代码设计
- 7.1程序设计语言
- 7.1.1程序设计语言的基本成分
- 7.1.2程序设计语言的分类
- 7.1.3程序设计语言的选择
- 7.2程序设计风格
- 7.2.1源程序的文档化
- 7.2.2数据说明
- 7.2.3语句构造
- 7.2.4输入与输出
- 7.2.5编程规范
- 7.3结构化程序设计
- 7.3.1结构化程序设计的原理
- 7.3.2结构化编程
- 7.4面向对象程序设计
- 7.4.1面向对象语言的特点
- 7.4.2面向对象语言的选择
- 7.4.3面向对象程序设计风格
- 7.5程序效率
- 7.6程序复杂性度量
- 7.7本章小结
- 习题7
- 第8章软件测试
- 8.1软件测试基础
- 8.1.1什么是软件缺陷
- 8.1.2软件测试的原则
- 8.1.3软件测试过程模型
- 8.1.4软件测试的阶段
- 8.1.5软件测试的工作范畴
- 8.2软件测试基本技术
- 8.2.1黑盒测试和白盒测试
- 8.2.2静态测试和动态测试
- 8.2.3验证与确认
- 8.2.4自动化测试和随机测试
- 8.3黑盒测试法
- 8.3.1等价类划分法
- 8.3.2边界值分析法
- 8.3.3错误推测法
- 8.3.4因果图法
- 8.4白盒测试法
- 8.4.1逻辑覆盖法
- 8.4.2基本路径法
- 8.5软件测试计划
- 8.5.1测试策略
- 8.5.2制定测试计划
- 8.6测试用例设计
- 8.6.1什么是测试用例
- 8.6.2测试用例的书写标准
- 8.6.3测试用例设计的原则
- 8.7面向对象测试
- 8.7.1面向对象测试模型
- 8.7.2面向对象的单元测试
- 8.7.3面向对象的集成测试
- 8.8软件测试自动化
- 8.8.1自动化测试的基本概念
- 8.8.2测试工具的分类及选择
- 8.9本章小结
- 习题8
- 第9章成本估算与进度规划
- 9.1软件度量与软件生产率
- 9.1.1软件度量
- 9.1.2面向规模的度量
- 9.1.3面向功能的度量
- 9.1.4软件质量的度量
- 9.1.5影响软件生产率的因素
- 9.2软件项目估算与开发成本估算
- 9.2.1软件项目计划的目标
- 9.2.2软件的范围
- 9.2.3软件开发的资源
- 9.2.4软件项目估算
- 9.2.5估算之前的任务分解
- 9.2.6软件开发成本估算
- 9.3进度计划
- 9.3.1各阶段工作量的分配
- 9.3.2制定开发进度计划
- 9.3.3进度安排的方法
- 9.4本章小结
- 习题9
- 第10章团队建设与沟通管理
- 10.1团队建设的基本概念
- 10.2项目团队的组织
- 10.2.1项目的组织结构模式
- 10.2.2程序设计小组的组织形式
- 10.3团队成员的选择与基本要求
- 10.3.1项目开发各阶段对人员的需求
- 10.3.2配备人员的原则
- 10.3.3对项目经理的要求
- 10.3.4团队成员的招聘与选择
- 10.4团队的建设与管理
- 10.4.1项目成员的使用与培训
- 10.4.2对项目成员的激励
- 10.4.3软件项目的指导
- 10.4.4软件项目的检验
- 10.5团队的沟通管理
- 10.5.1沟通管理与沟通的原则
- 10.5.2沟通方式
- 10.5.3编制项目沟通计划
- 10.6本章小结
- 习题10
- 第11章风险管理和配置管理
- 11.1风险管理
- 11.1.1软件风险分类
- 11.1.2风险识别
- 11.1.3风险预测
- 11.1.4处理风险的策略
- 11.2质量保证
- 11.2.1软件质量
- 11.2.2软件质量保证措施
- 11.3配置管理
- 11.3.1软件配置管理的内容
- 11.3.2软件配置管理的基本目标
- 11.3.3软件配置管理角色职责
- 11.3.4软件配置管理过程描述
- 11.3.5软件配置管理的关键活动
- 11.4本章小结
- 习题11
- 第12章软件过程
- 12.1软件过程概述
- 12.2软件过程能力成熟度模型
- 12.2.1软件过程能力成熟度模型(SWCMM)的诞生
- 12.2.2软件过程能力成熟度模型(CMM)的组织与结构
- 12.2.3能力等级的特点和关键过程域
- 12.2.4实施CMM是软件企业发展的必然趋势
- 12.3软件过程的改进
- 12.3.1软件过程改进的5条原则
- 12.3.2软件过程改进的策略
- 12.3.3软件过程改进战略策划
- 12.3.4软件过程改进建议
- 12.3.5实施SPI的目的
- 12.3.6以项目形式管理SPI
- 12.4本章小结
- 习题12
- 第13章软件工程标准
- 13.1软件工程标准化
- 13.1.1软件工程标准的概念
- 13.1.2软件工程标准的制定与推行
- 13.1.3软件工程标准层次
- 13.2软件质量认证
- 13.2.1软件质量认证的产生背景
- 13.2.2软件质量认证的标准
- 13.2.3软件质量认证的作用
- 13.2.4ISO 9000标准的构成
- 13.3GB/T 8567—2006计算机软件文档编制规范
- 13.3.1使用范围
- 13.3.2文档过程
- 13.3.3文档编制要求
- 13.4本章小结
- 习题13
- 第14章软件文档
- 14.1软件文档的意义
- 14.2软件文档的作用
- 14.2.1管理依据
- 14.2.2任务之间联系的凭证
- 14.2.3质量保证
- 14.2.4培训与参考
- 14.2.5软件维护支持
- 14.2.6历史档案
- 14.3软件文档的分类
- 14.3.1开发文档
- 14.3.2产品文档
- 14.3.3管理文档
- 14.4软件文档的管理
- 14.4.1概述
- 14.4.2管理者的作用
- 14.4.3制定文档编制策略
- 14.5软件文档的编写技巧
- 14.5.1从技术角度进行文档的编写和评价
- 14.5.2明确文档编写人员的责任
- 14.5.3让编写人员对开发项目有准确的认识
- 14.5.4让开发和设计人员参与文档审阅工作
- 14.6文档编写的常用工具
- 14.7本章小结
- 习题14
- 第15章软件文档编写指南
- 15.1概述
- 15.2软件开发文档
- 15.2.1可行性分析(研究)报告
- 15.2.2软件需求规格说明
- 15.2.3概要设计书
- 15.2.4详细设计书
- 15.3软件管理文档
- 15.3.1项目开发计划
- 15.3.2软件测试计划
- 15.3.3测试报告
- 15.3.4开发进度月报
- 15.3.5项目开发总结报告
- 15.4软件用户文档
- 15.4.1用户手册
- 15.4.2操作手册
- 15.5本章小结
- 习题15
- 参考文献