第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.3软件工程
1.3.1什么是软件工程
1.3.2软件工程的基本原理
1.3.3软件工程的基本内容
1.4关于本书
习题
第2章软件生存周期
2.1软件工程过程
2.1.1什么是软件工程过程
2.1.2软件过程模型
2.1.3过程建造技术
2.2软件生存周期
2.2.1软件定义
2.2.2软件开发
2.2.3软件使用.维护和退役
2.3软件生存周期瀑布模型
2.4软件生存周期原型模型
2.5软件生存周期其他模型
2.5.1螺旋模型
2.5.2喷泉模型
2.5.3智能模型
习题
第3章软件分析
3.1系统分析
3.1.1系统分析的目标
3.1.2系统分析的过程
3.2可行性分析
3.2.1可行性研究的任务
3.2.2可行性研究的步骤
3.2.3系统流程图
3.2.4成本/效益分析
3.3软件开发计划
3.3.1软件开发计划的内容
3.3.2进度安排
3.4需求分析
3.4.1需求分析的任务
3.4.2需求分析的过程
3.4.3需求分析的原则
3.4.4需求分析的方法
3.4.5需求分析的工具
3.5结构化分析
3.5.1工作内容和任务
3.5.2数据流图
3.5.3数据字典
3.5.4加工逻辑描述工具
3.6面向对象分析
3.6.1面向对象方法的基本概念和基本特征
3.6.2面向对象分析的基本过程
3.6.3面向对象的模型
3.6.4目前流行的OOA方法概述
习题
第4章软件设计
4.1软件设计的任务
4.2总体设计
4.2.1软件总体设计的基本任务
4.2.2总体设计的过程
4.2.3总体设计的图形工具
4.3软件设计的基本原理
4.3.1模块化设计
4.3.2抽象化
4.3.3信息隐蔽
4.3.4模块独立性
4.3.5自顶向下逐步细化
4.3.6启发式规则
4.4软件设计方法
4.4.1软件设计方法概述
4.4.2数据结构设计
4.4.3用户界面设计
4.5详细设计
4.5.1详细设计的任务
4.5.2详细设计的工具
4.5.3面向数据结构的设计方法
4.6结构化设计
4.6.1SD方法概述
4.6.2数据流图的类型
4.6.3SD方法的步骤
4.6.4变换分析
4.6.5事务分析
4.6.6软件模块结构的改进和设计优化
4.7面向对象设计
4.7.1面向对象设计的方法
4.7.2面向对象设计的准则和启发规则
4.7.3Coad-Yourdon的面向对象方法
习题
第5章数据分析与设计
5.1数据需求分析
5.1.1什么是数据需求分析
5.1.2数据结构的基本概念
5.1.3数据需求分析的基本任务
5.2数据设计
5.2.1什么是数据设计
5.2.2数据设计的基本原则
5.3抽象数据类型
5.3.1什么是抽象数据类型
5.3.2抽象数据类型的定义与实现
5.3.3抽象数据类型的优点
5.4实体联系方法
5.4.1实体联系模型
5.4.2实体联系图
5.5数据库设计
5.5.1数据库系统的三级模式结构
5.5.2数据库设计的内容
5.5.3E-R模型向关系数据模型的转换
5.5.4标准范式与数据规范化
5.5.5面向对象的数据库技术
习题
第6章用户界面设计
6.1人机交互与用户界面
6.1.1什么是人机交互
6.1.2什么是用户界面
6.1.3用户界面管理系统
6.1.4人机交互与人机工程学
6.1.5人机交互的发展历史
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.4人机交互技术新进展
6.4.1交互设备新进展
6.4.2多通道用户界面
6.4.3虚拟现实技术
6.4.4听觉界面与可听化
6.4.5自适应和智能用户界面
6.4.6理想人机交互模式
习题
第7章软件实现
7.1程序设计语言
7.1.1程序设计语言的特性
7.1.2程序设计语言的分类
7.1.3程序设计语言的特点
7.1.4程序设计语言的选择
7.2程序设计方法
7.2.1程序设计方法简介
7.2.2程序设计和程序编码
7.2.3编码工具
7.3程序设计风格
7.3.1代码文档化
7.3.2数据说明
7.3.3语句构造
7.3.4输入/输出
7.3.5效率
7.4结构化程序设计
7.4.1结构化程序设计的原则
7.4.2结构化程序设计的方法
7.5面向对象程序设计
7.5.1面向对象编程概念
7.5.2面向对象语言的技术特点
7.5.3面向对象编程语言
习题
第8章软件测试
8.1软件测试过程
8.1.1什么是软件测试
8.1.2软件测试的目标
8.1.3软件测试的基本原则
8.1.4软件测试的过程
8.2软件测试的分类
8.2.1单元测试
8.2.2组装测试
8.2.3确认测试
8.2.4系统测试
8.2.5软件测试技术
8.3白盒测试
8.3.1逻辑覆盖
8.3.2测试设计实例
8.4黑盒测试
8.4.1等价类划分
8.4.2边界值分析
8.4.3错误推测
8.4.4综合策略
8.5软件调试
8.5.1调试方法
8.5.2调试策略
习题
第9章软件维护
9.1可维护性
9.1.1什么是可维护性
9.1.2影响可维护性的因素
9.1.3若干量化的测度
9.1.4保证可维护性的复审
9.2软件维护分类
9.2.1改正性维护
9.2.2适应性维护
9.2.3完善性维护
9.2.4预防性维护
9.3软件维护实施
9.3.1软件维护的步骤
9.3.2软件维护的组织
9.3.3维护文档与编写
9.4逆向工程与再工程
9.4.1恢复信息的级别
9.4.2恢复信息的方法
习题
第10章软件管理
10.1软件项目管理过程
10.1.1什么是软件项目管理
10.1.2启动一个项目
10.1.3制定项目计划
10.1.4计划的追踪和控制
10.1.5评审和评价计划的完成程度
10.1.6编写管理文档
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.4.5项目的追踪和控制
10.5软件项目的组织
10.5.1项目任务的划分
10.5.2软件项目组织的建立
10.5.3人员配备
10.5.4指导与检验
10.6软件质量保证
10.6.1什么是软件质量保证
10.6.2软件质量保证(SQA)活动
10.6.3质量保证与检验
10.6.4软件质量认证
习题
主要参考文献