本书从一个完全B/S结构的集成业务、财务管理系统的软件实例出发,阐述软件工程的基本理论,介绍软件工程的基本概念。本书分为四篇共16章。第一篇软件工程基础及高级话题,包括第1章至第5章,介绍软件工程问题的提出、软件工程基础知识、软件开发统一过程RUP、统一建模语言UML基础、面向对象方法等;第二篇软件工程项目管理,包括第6章至第8章,介绍项目的组织与管理、项目的经济性度量模型、项目的质量控制与CMM等;第三篇软件工程开发过程,包括第9章至第14章,介绍需求工程、软件需求分析、总体设计、详细设计、程序设计语言和编码、软件测试等;第四篇项目的实施与维护,包括第15章和第16章,介绍软件项目实施、软件项目的维护与再工程。
本书特别适合软件工程类与非软件工程类教学和参考用书,并适合程序员向系统分析师和项目经理过渡的学习用书。本书需要有一定的计算机语言编写程序基础和计算机知识的人员学习和参考。
第一篇 软件工程基础及高级话题
第1章 软件工程问题的提出
1.1 引言
1.2 软件工程问题的提出
1.3 完全B/S结构集成业务
1.4 本书讲述的主要内容
第2章 软件工程基础知识
2.1 软件与软件危机
2.2 软件工程
2.3 软件生存期模型
2.4 软件质量因素
2.5 集成业务财务系统例题讨论
第3章 软件开发纺一过程RUP
3.1 统一过程RUP
3.2 RUP方法的软件开发模型
3.3 统一过程RUP开发
3.4 RUP的剪裁原理和剪裁过程
3.5 集成业务财务系统的开发过程
第4章 统一建模语言UML基础
4.1 UML简介
4.2 UML的历史
4.3 UML语言描述
4.4 UML概念域
4.5 集成业务财务系统的典型图例
第5章 面向对象方法
5.1 面向对象发展历史和动因
5.2 面向对象的建模方法
5.3 面向对象的建模
5.4 面向对象编程
5.5 面向对象的软件工程
5.6 面向对象的分析和面向对象的设计——OOA和OOD
5.7 管理问题
5.8 从集成业务财务系统来看面向对象编程的若干问题
第二篇 软件工程项目管理
第6章 项目的组织与管理
6.1 项目可行性分析
6.2 软件开发团队
6.3 软件计划进度安排
6.4 项目的开发规范
6.5 软件项目管理的成功原则
6.6 软件项目的配置管理
6.7 集成业务财务系统的组织和计划
第7章 项目的经济性度量模型
7.1 软件的度量
7.2 工作量估计
7.3 项目成本估算方法
7.4 集成业务财务系统的工作量和成本估计
第8章 项目的质量控制与CMM
8.1 项目开发方法对项目质量的保证
8.2 项目开发各阶段的质量保证
8.3 项目遇险的因素及其信号
8.4 朱兰的质量管理理论
8.5 软件能力成熟度模型CMM介绍
8.6 我的质量格言
第三篇 软件开发工程过程
第9章 需求工程
9.1 需求是什么
9.2 需求的标准和特点
9.3 需求的层次
9.4 需求风险
9.5 需求工程
9.6 需求调查的工程观点
9.7 需求调研步骤
9.8 需求调研方法
9.9 集成业务财务系统的需求层次
第10章 软件需求分析
10.1 需求类型和分析过程
10.2 需求分析的3个方面
10.3 需求分析方法中的一些概念
10.4 业务建模
10.5 需求分析建模过程
10.6 解决需求建模中的常见难题
10.7 需求分析的20条法则
10.8 集成业务财务系统的需求分析举例
第11章 总体设计
11.1 总体设计过程
11.2 软件体系结构
11.3 软件模块设计
11.4 数据结构和算法设计
11.5 系统交互设计
11.6 系统设计模式
11.7 集成业务财务系统的模块设计和数据结构设计示例
第12章 详细设计
12.1 详细设计的任务
12.2 详细设计的步骤
12.3 结构化程序设计
12.4 结构化详细设计工具
12.5 集成业务财务系统的详细设计范例
第13章 程序设计语言和编码
13.1 程序设计的若干问题
13.2 软件开发语言
13.3 程序员的修养
13.4 程序维护手册
13.5 程序编写规范
13.6 PHP编写动态页面举例
第14章 软件测试
14.1 软件测试概述
14.2 软件测试的基本方法
14.3 测试工作流程图
14.4 软件测试的组织与管理
14.5 软件测试自动化的一些具体做法
14.6 配置软件测试环境
14.7 测试用例的设计
14.8 测试的主要评测方法
14.9 集成业务财务系统的测试样例
第四篇 项目的实施与维护
第15章 软件项目实施
15.1 项目实施的失败教训
15.2 软件项目实施的思考
15.3 软件项目实施的步骤
15.4 项目实施后的评价
15.5 集成业务财务系统的项目实施案例
第16章 软件项目的维护与再工程
16.1 软件项目的维护
16.2 软件再工程
16.3 逆向工程
附录A ERP的主要功能模块简介
A.1 财务管理模块
A.2 生产控制管理模块
A.3 物流管理模块
A.4 人力资源管理模块
软件工程是一类工程。工程是将理论和知识应用于实践的科学。就软件工程而言,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学、工程科学和管理科学。计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理。
软件工程这一概念,主要是针对20世纪60年代“软件危机”而提出的。它首次出现在1968年NATO(北大西洋公约组织)会议上。自这一概念提出以来,围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言(例如PASCAL语言、Ada语言)、结构化方法等。并且围绕项目管理提出了费用估算、文档复审等方法和工具。综观20世纪60年代末至80年代初,其主要特征是,前期着重研究系统实现技术,后期开始强调开发管理和软件质量。
20世纪70年代初,自“软件工厂”这一概念提出以来,主要围绕软件过程以及软件复用,开展了有关软件生产技术和软件生产管理的研究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相关的面向对象方法,大力开展了计算机辅助软件工程的酬:究与实践。尤其是近几年来,针对软件复用及软件生产,软件构件技术、软件质量控制技术以及质量保证技术得到了广泛的应用。目前各个软件企业都十分重视资质认证,并想通过这些工作进行企业管理和技术的提升。
根据调查,中国的现状几乎和美国10多年前的情况……样,软件开发过程没有明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的—…‘些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的提高奠定有效的基础,只有通过建立全组织的过程改善,采用严格的软件工程方法和管理,并月。坚持不懈地付诸实践,才能取得全组织的软件过程能力的不断提高。
这一事实告诉我们,既重视软件技术的应用,又重视软件工程的支持和管理,并在实践中贯彻实施,才能高效地开发出高质量的软件。
软件朝着更大更复杂的系统发展的趋势,以及软件推向市场的时间是软件工程发展的主要推动因素。软件开发界需要一种受控的工作方式,它需要一个过程来集成软件开发的计:多方面,提供应如何对整个开发团队的开发活动进行组织的指导:综合指导单个开发人员和开发团队;规定开发成果是什么:提供监控和衡量一个项目中的产品和活动的标准。一个定义良好且管理良好的过程是区别成效卓著的项目和不成功项目之间的重要指标。这就是软件工程需要解决的问题。本书结合集成业务、财务管理系统实例和开发经验,把软件工程理论与开发实践相结合,阐述一种受控的软件开发工作方式,使理论的抽象性更容易理解,以指导我们未来的软件开发。
本书主要讲述软件开发的工程学原理,是把软件开发作为工程角度处理,团队开发模式来看待出发,全书以采用软件工程方法开发的完全B/S结构的集成业务财务管理系统为例,重点介绍了软件工程所涉及的主要内容:(1)软件工程基础及高级话题,主要讲述软件工程问题的提出,以及RUP,UML,OO方法;(2)软件项目管理,主要讲述项目的组织与管理、项目的经济性分析,项目的质量管理与CMM;(3)软件工程开发方法,讲述软件的需求调查、需求分析、概要设计、详细设计、程序编码和程序测试;(4)成功实施与软件维护,讲述软件项目成功实施的保障、软件项目的维护与再工程问题。在附录中还简单介绍了ERP的主要的功能模块。
本书从一个完全B/S结构的集成业务、财务管理系统的软件实例出发,从系统建模、项目告理,软件开发过程和软件项目实施与维护4个方面,阐述软件工程的基本理论,介绍软件工程的基本概念。本书的一大特点是全面介绍软件项目实施与维护的理论和方法,阐述结合客户实际情况是实现项目成功实施的保障,提出软件实施是软件工程最重要的部分之一;并重点强调软件开发的工程特性、团队开发模式。本书在写作过程中参考了一些有关的未曾公开发表的资料及文档,在此对它们的制作者表示感谢。
本书的写作分工如下:第1章至第5章的编写由王立峰负责,延伟东参与;第6章至第8章的编写由王立峰负责,章华参与:第9章至第12章的编写,由延伟东负责,王立峰参与:第13章至第16章的编写,由章华负责,王立峰参与。最后,全书由王立峰统稿。
本书特别适合软件工程类与非软件工程类教学和参考用书,并适合程序员向系统分析师和项目经理过渡的学习用书。本书需要有一定的计算机语言编写程序基础和计算机知识的人员学习和参考。
由于软件工程近几年发展迅速,作者水平有限,书中难免有不足和错误之处,恳请各位同仁和广大读者给予批评指正。