软件工程实务
2007-8
浙江大学出版社
刘学俊
274
443000
软件工程是一门指导计算机软件开发和维护的工程学科,是一门新兴的边缘学科,是培养软件人才的核心课程。本书由具有20余年软件研发经验和工程管理经验的高级工程师和20余年高校教学经验的教师合作完成,本书所探讨的软件工程观念、方法、策略和规范都是朴实无华的,既遵循于高校教学规律,又较好地总结了实际工程项目的技术和方法,融合了多年工程经验与教育智慧。
上篇 软件工程实务
第1章 软件、软件工程及沟通艺术
1.1 软件
1.1.1 软件的概念
1.1.2 软件的特点
1.1.3 软件的分类
1.1.4 软件的发展
1.1.5 软件危机
1.2 软件工程概述
1.2.1 软件工程的概念
1.2.2 软件工程的研究内容
1.2.3 软件工程过程和软件生存周期
1.2.4 软件工程的目标及原则
1.2.5 软件工程的发展
1.3 软件开发模型
1.3.1 瀑布模型
1.3.2 原型模型
1.3.3 螺旋模型
1.3.4 喷泉模型
1.3.5 智能模型
1.4 CASE工具及环境
1.5 软件工程中的沟通理念
1.5.1 软件工程中沟通的重要性
1.5.2 软件工程中的沟通理念
思考与讨论
第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.3.1 项目计划
2.3.2 项目组织
2.3.3 评价与控制
2.4 项目、软件项目管理的主要内容
2.4.1 项目管理的主要内容
2.4.2 软件项目管理的主要内容
2.5 软件项目的度量与估算
2.5.1 面向软件规模的度量
2.5.2 面向软件功能的度量
2.5.3 软件质量度量
2.5.4 影响估算的因素
2.5.5 目标分解估算法
2.5.6 软件项目成本预算
2.6 项目风险的识别、分析及预防
2.6.1 风险识别
2.6.2 风险分析
2.6.3 风险预防
2.7 软件项目计划与组织
2.7.1 制定项目实施计划的基础和主要内容
2.7.2 实施计划的进度安排
2.7.3 软件项目组织与任务责任矩阵
思考与讨论
第3章 需求获取
3.1 系统界定与建立模型
3.1.1 系统与模型
3.1.2 系统模型建造举例
3.2 基于计算机的系统及其系统工程
3.2.1 基于计算机的系统
3.2.2 计算机系统工程
3.3 需求和需求的层次
3.3.1 什么是需求
3.3.2 需求的层次
3.3.3 需求获取的任务
3.4 需求获取的原则与方法
3.4.1 需求获取规范
3.4.2 需求获取的原则和方法
3.5 需求规格说明书
3.5.1 软件需求规格说明书
3.5.2 提出和验证初始需求
3.5.3 初始需求的汇编整理
3.5.4 需求的可跟踪性
3.5.5 确认SRS草案
3.5.6 需求规格说明书的复核与评审
3.5.7 平衡工作量
3.5.8 系统测试计划
3.5.9 修订和发布
3.6 需求获取阶段系统分析员责任和素质要求
思考与讨论
第4章 结构化分析与设计
4.1 软件结构化分析与设计方法
4.1.1 软件系统分析的目标
4.1.2 软件系统分析与设计活动的本质
4.1.3 软件系统基本结构模型
4.1.4 系统分析向结构设计过渡的工作任务
4.1.5 系统分析的分析过程和方法
4.1.6 软件设计阶段系统分析员的素质
4.2 软件设计基本规范
4.2.1 概要设计
4.2.2 模块化与模块设计
4.2.3 分析与设计模块的基本规范
4.3 软件设计规范的量化运用
4.4 表示软件结构的基本方法
4.4.1 系统概念设计
4.4.2 层次图和HIPo图
4.4.3 模块设计的精细设计方法
4.4.4 面向数据流的设计方法
思考与讨论
第5章 界面设计
5.1 界面设计的平面原则
5.2 软件操作过程设计原则
5.3 人机界面设计过程
思考与讨论
第6章 编码实现
6.1 编码概述
6.2 编码的标准
6.3 程序效率
6.4 程序设计语言的适用性
6.5 程序复杂性质量
思考与讨论
第7章 软件测试
7.1 软件测试的几个基本问题
7.1.1 什么是软件测试、测试工作的对象
7.1.2 项目组中的测试角色
7.1.3 Bug和Bug跟踪
7.1.4 软件测试工作的原则
7.1.5 测试用例的不可穷举性
7.2 软件测试的基本方法和工具
7.2.1 静态分析和动态分析
7.2.2 黑盒测试和白盒测试
7.2.3 覆盖测试
7.2.4 使用测试
7.2.5 手动测试和自动测试
7.2.6 软件测试工具
7.3 软件测试策略
7.3.1 单元测试
7.3.2 集成测试
7.3.3 确认测试
7.3.4 系统测试
7.4 软件测试实务
7.4.1 测试与开发的并行关系
7.4.2 测试计划
7.4.3 测试过程规格说明书
7.4.4 测试过程
7.4.5 测试总结
思考与讨论
第8章 软件过程改进
8.1 软件过程
8.1.1 什么是过程
8.1.2 过程成熟度
8.1.3 过程定义是否妨碍了创造力的发挥
8.2 有效的软件过程架构
8.2.1 过程架构
8.2.2 规范过程的重要性
8.2.3 过程文档的意义
8.2.4 建设有效的软件过程
8.3 软件能力成熟度模型简介
8.3.1 CMM中定义的软件开发团队角色与职责
8.3.2 CMM中能力成熟度的级别
8.3.3 CMM的内部结构——关键过程域
8.3.4 CMM的使用
思考与讨论
第9章 面向对象方法概述
9.1 什么是面向对象方法
9.2 结构化与面向对象的思想差异
9.3 面向对象方法的主要概念
9.3.1 对象
9.3.2 其他概念
9.4 面向对象建模
9.4.1 对象模型
9.4.2 动态模型
9.4.3 功能模型
9.4.4 三种模型之间的关系
9.5 OO方法的SRS、OOA、OOD概要
9.5.1 面向对象的需求获取
9.5.2 面向对象的分析与设计
思考与讨论
附录1 软件工程文档规范
附录2 匈牙利命名法
下篇 软件工程实验指导
实验一 体验软件工程的“隔板画”
实验二 需求获取
实验三 结构化设计
实验四 结构化设计和实现
实验五 软件测试及其评估
实验六 软件过程改进实验