软件工程
软件危机与软件工程的提出:
面对软件危机,1968年德国召开的一次NATO会议上首次签署声明"软件工程"这一说法,认为软件工程应当使用业已建立的工程学科的基本原理和范型。
背后驱使的观念是:软件设计、实现和维护应当与传统工程学科具有同等地位。
关于软件工程的一些定义:
建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 (Fritz Bauer,原文出自Software Engineering: A Report on a Conference Sponsored by the NATO Science Committee, NATO, 1969)
1993年IEEE更全面更具体的定义:"软件工程是:
①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;
②研究①中提到的途径。"
软件工程学科涉及到为高效率地构建满足客户需求的软件系统所需的理论、知识和实践的应用。(中国计算机科学与技术学科教程2002)
软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程的本质特征:
- 软件工程关注大型程序的构造;
- 软件工程的中心课题是控制复杂性;
- 软件经常变化;
- 开发软件的效率非常重要;
- 和谐地合作是开发软件的关键;
- 软件必须有效地支持它的用户;
- 软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的基本原理:
著名的软件工程专家B.W.Boehm于1983年提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开发效率的原理的最小集合:
1. 用分阶段的生命周期计划严格管理
把软件生命周期划分成若干阶段,并相应制定出切实可行的计划,严格按照计划对软件的开发与维护工作进行管理;
2. 坚持进行阶段评审
- 大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,编码错误仅占37%;
- 错误发现与改正得越晚,所需付出的代价也越高。
3. 实行严格的产品控制
- 当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。
- 所谓基准配置又称为基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。
- 基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。
4. 采用现代程序设计技术
实践表明,采用先进的技术既可提高软件开发和维护的效率,又可提高软件产品的质量。
5. 结果应能清楚地审查
为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。
6. 开发小组的成员应该少而精
开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。
7. 承认不断改进软件工程实践的必要性
不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验,评价新的软件技术的效果,指明必须着重开发的软件工具和应该优先研究的技术。
软件工程的基本内容
软件工程包括管理和技术两方面的内容。
管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。
软件工程方法学包含三个要素:方法、工具和过程。
方法:完成软件开发的各项任务的技术方法,回答"怎样做"的问题;
工具:软件工具为软件工程方法提供了自动或半自动的软件支撑环境; 如果这些工具能够集成起来,即一个工具产生的信息可被另一个工具使用时,称这样的支持软件开发的系统为CASE(计算机辅助软件工程)
过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤,将软件工程的方法和工具综合起来以达到合理、及时地进行软件开发的目的。
它定义了: 方法使用的顺序; 要求交付的文档资料; 为保证质量和适应变化所需要的管理; 软件开发各个阶段完成的里程碑。 目前使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。
软件工程与其他学科的关系:
软件工程应用计算机科学、数学和管理科学等原理,借鉴传统工程的原则、方法来创建软件,从而达到提高质量、降低成本的目的。
- 计算机科学和数学用于构造模型、分析算法;
- 工程科学用于制定规范、明确范型、评估成本、确定权衡;
- 管理科学用于进度、资源、质量、成本等的管理。