《软件工程理论方法与实践》是2005年7月1日高等教育出版社出版的图书,作者是孙家广,刘强。本书是由作者结合多年软件开发实践和近年讲授软件工程课程的教学经验编写而成,强调理论与实践的有机结合。
本书为普通高等教育“十五”国家级规划教材。全书共ll章,第1章概括介绍软件工程的历史发展和基本原理,讨论IEEE和ACM最新提出的软件工程知识体系和软件工程职业道德规范:第2章讨论软件过程的基本思想和活动,介绍常见的软件过程模型和微软开发过程的实际案例;第3章讨论软件工程的管理技术,主要涉及人员管理、沟通管理、项目规划和风险管理等内容:第4章、第6章至第10章以面向对象技术为核心,全面、深入、系统地介绍软件开发各个阶段的任务、过程、方法和工具:第5章介绍软件工程中的形式化方法,包括时序逻辑、Z语言、Petri网等;第ll章介绍软件进化的概念和方法,包括软件进化的特性、软件维护活动、逆向工程与再工程等内容。
目录
- 前辅文
- 第1章 概述
- 1.1 软件
- 1.1.1 软件的特性
- 1.1.2 软件的发展
- 1.1.3 软件危机
- 1.2 软件工程
- 1.2.1 软件工程的概念
- 1.2.2 软件工程的三要素
- 1.2.3 软件质量的特性
- 1.2.4 软件工程方法
- 1.2.5 计算机辅助软件工程CASE
- 1.2.6 当前面临的主要挑战
- 1.3 软件工程知识体系(SWEBOK)
- 1.3.1 SWEBOK项目介绍
- 1.3.2 SWEBOK的组成
- 1.3.3 软件工程与其他相关学科的关系
- 1.4 软件工程职业道德规范
- 1.4.1 IEEE/ACM职业道德准则
- 1.4.2 软件工程人员的职业道德建设
- 习题
- 第2章 软件过程
- 2.1 软件过程的概念
- 2.1.1 任务思维与过程思维
- 2.1.2 软件过程的定义
- 2.1.3 软件过程的基本活动
- 2.1.4 软件过程的制品
- 2.2 软件过程模型
- 2.2.1 瀑布模型
- 2.2.2 快速原型模型
- 2.2.3 增量模型
- 2.2.4 螺旋模型
- 2.2.5 形式化方法模型
- 2.2.6 基于组件的开发模型
- 2.3 案例: 微软公司的软件开发过程
- 2.3.1 微软公司的开发管理原则
- 2.3.2 微软公司的软件过程模型
- 2.3.3 递进式的软件开发策略
- 习题
- 第3章 软件项目管理
- 3.1 软件项目管理概述
- 3.1.1 软件项目的特征
- 3.1.2 软件项目管理的“4P”
- 3.1.3 软件项目管理活动
- 3.2 人员组织与管理
- 3.2.1 软件项目组织
- 3.2.2 案例: 微软公司的软件开发组织
- 3.2.3 软件团队的建设
- 3.3 项目沟通管理
- 3.3.1 项目沟通复杂性
- 3.3.2 项目沟通方式
- 3.3.3 项目沟通活动
- 3.4 软件项目规划
- 3.4.1 软件规模估算
- 3.4.2 软件成本估算
- 3.4.3 软件项目计划
- 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 配置管理工具
- 习题
- 第4章 需求工程
- 4.1 软件需求
- 4.1.1 业务需求
- 4.1.2 用户需求
- 4.1.3 功能需求和非功能需求
- 4.1.4 系统需求
- 4.2 需求工程过程
- 4.2.1 需求获取
- 4.2.2 需求分析
- 4.2.3 需求规格说明
- 4.2.4 需求验证
- 4.2.5 需求管理
- 4.3 需求获取技术
- 4.3.1 面谈
- 4.3.2 需求专题讨论会
- 4.3.3 观察用户工作流程
- 4.3.4 原型化方法
- 4.3.5 基于用例的方法
- 4.4 案例: 小型图书资料管理系统
- 4.4.1 确定参与者
- 4.4.2 确定场景
- 4.4.3 确定用例
- 4.4.4 编写用例描述
- 习题
- 第5章 软件工程中的形式化方法
- 5.1 形式化方法基本概念
- 5.1.1 形式规约(Formal Specification)
- 5.1.2 形式证明与验证(Formal Verification and Validation)
- 5.1.3 程序求精(Program Refinement)
- 5.2 时态逻辑
- 5.2.1 一阶线性时态逻辑
- 5.2.2 计算树逻辑
- 5.3 模型检验
- 5.4 Z语言
- 5.4.1 概述
- 5.4.2 Z语言表示
- 5.4.3 Z语言实例
- 5.5 Petri网
- 5.5.1 基本定义
- 5.5.2 Petri网规格实例——信号灯
- 习题
- 第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.2.7 聚合
- 6.2.8 多态性
- 6.3 软件建模概念
- 6.3.1 系统、模型和视图
- 6.3.2 软件建模的重要性
- 6.4 统一建模语言UML
- 6.4.1 UML的发展历史
- 6.4.2 UML的概念模型
- 6.4.3 UML建模示例
- 6.4.4 UML应用
- 6.5 常用的UML图
- 6.5.1 用例图
- 6.5.2 类图
- 6.5.3 顺序图
- 6.5.4 状态图
- 习题
- 第7章 面向对象分析
- 7.1 分析的概念
- 7.1.1 分析类
- 7.1.2 分析活动
- 7.2 识别分析类
- 7.2.1 识别边界类
- 7.2.2 识别控制类
- 7.2.3 识别实体类
- 7.3 定义交互行为
- 7.4 建立分析类图
- 7.4.1 定义关系和属性
- 7.4.2 应用分析模式
- 7.5 评审分析模型
- 习题
- 第8章 面向对象设计
- 8.1 设计的概念
- 8.1.1 设计活动
- 8.1.2 设计原则
- 8.2 软件体系结构
- 8.2.1 仓库体系结构
- 8.2.2 分层体系结构
- 8.2.3 MVC体系结构
- 8.2.4 客户机/服务器体系结构
- 8.2.5 管道和过滤体系结构
- 8.2.6 案例:MiniLibraray系统体系结构
- 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.4.4 关系建模
- 8.4.5 详细设计评审
- 8.5 应用设计模式
- 8.5.1 Abstract Factory模式
- 8.5.2 Adaptor模式
- 8.5.3 Bridge模式
- 8.5.4 Facade模式
- 8.6 用户界面设计
- 8.6.1 用户界面设计原则
- 8.6.2 Web界面的设计
- 8.6.3 用户支持
- 8.7 设计文档
- 习题
- 第9章 软件实现
- 9.1 程序设计语言
- 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.4 软件代码审查
- 习题
- 第10章 软件测试
- 10.1 验证与确认
- 10.1.1 软件的错误
- 10.1.2 验证与确认
- 10.1.3 V&V的活动
- 10.2 软件测试基础
- 10.2.1 什么是软件测试
- 10.2.2 软件测试的基本原则
- 10.2.3 软件测试与软件开发各阶段的关系
- 10.2.4 测试文档
- 10.2.5 软件测试信息流
- 10.2.6 软件测试人员
- 10.3 软件测试策略
- 10.3.1 单元测试
- 10.3.2 集成测试
- 10.3.3 确认测试
- 10.3.4 系统测试
- 10.3.5 软件调试
- 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 GUI测试示例
- 10.6 软件测试工具
- 10.6.1 Junit
- 10.6.2 LoadRunner
- 习题
- 第11章 软件演化
- 11.1 软件演化的特性
- 11.2 软件维护
- 11.2.1 软件维护的概念
- 11.2.2 软件维护的特点
- 11.2.3 软件维护的过程
- 11.3 软件再工程
- 习题
- 参考文献