本书是一本系统而全面地介绍软件工程及其相关技术理论的专著,以理论和实践相结合的方式,主要讲述了软件工程基础知识,软件行业发展,软件开发相关技术和工具(项目管理、CMM、ISO9000等),软件开发全过程管理等。本书由8章组成,主要内容包括:概述、软件开发相关知识、软件开发组织、项目计划和项目工具、可行性分析与需求分析、系统设计、编码、测试与改错、软件维护等。
第1章概述
1.1软件开发的历史与软件危机
1.1.1个体手工方式时期
1.1.2软件作坊时期
1.1.3程序设计时期
1.1.4软件危机实例
1.1.5软件危机
1.1.6软件危机的医治
1.2软件工程概述
1.2.1软件工程学科
1.2.2软件生命周期
1.3软件工程学发展现状
1.3.1新的软件开发模式
1.3.2计算机辅助软件工程CASE
1.3.3软件自动生成器
1.3.4软件工程与人工智能
1.4软件工程的目标与常用模型
1.4.1软件工程的目标
1.4.2软件工程的基本模型
1.5软件开发的基本策略
1.5.1抽象与模型方法
1.5.2懒汉方法——复用
1.5.3模块化方法——分解
1.5.4聪明方法——平衡
1.6软件工程基本观念
1.6.1一些不正确的观念
1.6.2一些有争议不正确的观念
1.6.3软件项目常见错误
1.7软件行业概况
1.7.1政府管理者
1.7.2行业管理者
1.7.3中国软件产业现状
1.7.4相关信息
第2章软件开发相关知识
2.1项目管理
2.1.1项目管理概述
2.1.2项目阶段和项目生命周期
2.1.3项目属性与目标
2.1.4项目管理知识体系
2.1.5项目管理软件介绍
2.1.6软件项目管理
2.1.7项目管理实施案例
2.1.81T公司项目管理规范
2.2CMM
2.2.1CMM概述
2.2.2CMM体系结构
2.2.3初始级(等级1)
2.2.4可重复级(等级2)
2.2.5定义级(等级3)
2.2.6管理级(等级4)
2.2.7优化级(等级5)
2.2.8CMM改进与实施
2.2.9CMM实施案例
2.31S09000
2.3.11SO9000概述
2.3.21SO9000软件相关规则
2.3.3软件行业推行ISO9000的典型步骤与注意事项—
2.3.4CMM和IS09000对比
2.3.51S09000范例
2.4印度软件开发概况
2.4.1软件企业的组织结构
2.4.2项目组结构
2.4.3项目计划
2.4.4印度软件项目管理
第3章软件开发组织及人力资源管理
3.1软件开发组织
3.1.1软件开发组织模型
3.1.2软件开发团队策略
3.1.3软件开发人员的组织与分工
3.1.4范例:J2EE项目中开发团队的组建
3.2程序员
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.5.5项目实施与维护阶段
第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.3项目计划方法
4.3.1甘特图(GanttChart)
4.3.2网络计划方法
4.3.3活动排序的工具和方法
4.3.4工作分解结构(WBS)
4.3.5责任矩阵
4.3.6工期压缩方法——时间/成本平衡法
第5章可行性分析
5.1可行性分析定义
5.2可行性分析的要素
5.2.1经济
5.2.2技术
5.2.3社会环境
5.3可行性研究步骤
5.4可行性分析范例
5.4.1某航空机票预订系统可行性分析报告
5.4.2XXX虚拟主机管理系统可行性分析
第6章需求分析
6.1需求分析基础
6.1.1需求分析概念
6.1.2需求工程难点分析
6.1.3需求风险
6.2需求分析原则
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.5需求分析过程
6.5.1需求类型
6.5.2需求获取与表达
6.5.3需求评审
6.5.4需求确认与变更
6.5.5需求跟踪
6.5.6需求验证
6.6需求分析规范
6.7需求分析案例
6.7.1需求分析示例1——销售系统
6.7.2需求分析示例2——校园学籍管理系统
第7章系统设计
7.1系统设计概述
7.1.1系统设计概念与重要性
7.1.2系统设计的任务与策略
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.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.2.5软件测试过程
8.2.6软件测试规范
8.3改错
8.3.1改错步骤
8.3.2调试方法
8.3.3Bug跟踪与管理
第9章软件维护
9.1软件维护常识
9.1.1维护类型
9.1.2维护比重
9.2软件维护的代价及其影响因素
9.2.1软件维护成本
9.2.2软件维护影响因素
9.2.3软件维护工作量
9.2.4软件维护的策略
9.3软件维护流程
9.4软件维护档案
9.4.1软件维护相关报告
9.4.2软件维护记录
9.5维护评价与总结
9.6提高可维护性的方法
9.7逆向工程和再生工程
9.7.1逆向工程
9.7.2再生工程
第10章软件项目开发实例
10.1系统结构
10.2数据库建立
10.3系统功能设计
参考文献
软件是新技术革命的核心部分,软件产业已成为一个具有独立形态的包含高附加值的优势产业,而软件工程正是软件产业健康发展的关键技术之一。
软件工程经过30多年的发展,已成为一门成熟的专业学科。软件工程的目标就是提高软件的质量和生产率,最终达到工业化生产。像传统工业一样,软件开发也需要众多的相关技术支持,因此项目管理、质量管理、CMM等与软件工程的结合越来越紧密。本书汇集了近年来国内外在软件工程开发和管理领域的主流技术和实用工具,结合大量实例讨论了软件开发的流程建设和各种相关技术方法,它有助于科研学术研究与公司企业实际应用的结合。将理论实例化、将应用规范化、将资源最优化是本书编写的目的。
全书由刘志峰主编,共分10章。第1章介绍了软件危机、软件工程学现状、软件开发模型和策略、软件行业概况等内容,由刘志峰博士、联想电脑公司张琦撰写;第2章介绍了软件开发相关知识,包括项目管理、CMM、IS09000等,由王蕾博士撰写;第3章介绍了软件开发人力资源管理,并提供了软件系统集成公司组织范例,由刘志峰博士、吴喜文副教授、王建华副教授撰写;第4章介绍了项目计划管理方法、软件规模估算方法和分析工具,由刘志峰博士、李富平副教授、彭映辉讲师撰写;第5章介绍了可行性分析模型、方法、步骤,并提供了两个实际案例,由杨文通教授、王哲讲师撰写;第6章介绍了需求分析方法、过程、原则及相应案例,由杨文通教授、王蕾博士撰写;第7章介绍了系统设计和软件配置管理,第8章介绍了软件的编码、测试与改错部分,并提供了使用表格和执行规范,第9章介绍了软件维护常识、维护评价与再生工程等,第10章以某销售系统软件为例,介绍了按照软件工程体系进行开发的过程,帮助读者实际体验软件工程管理技术的规范;第7、8、9、10章由刘志峰博士撰写。
北京工业大学刘志峰博士负责全书的统稿。
东北大学丁津原教授于百忙之中审阅了本书并提出宝贵的修改意见和建议,在此特别感谢。
由于编者水平和时间限制,疏漏和不准确之处在所难免,敬请读者批评指正。
刘志峰
2004年7月于北京