
1.1 软件工程简介
软件工程以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及研究如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。本节将主要介绍软件工程的发展过程及相关概念。
1.1.1 软件工程的发展过程
从20世纪60年代中期开始,软件行业进入了一个大发展时期。软件开始作为一种产品被使用,同时也产生了许多软件公司。然而,随着软件规模的扩大,复杂性的增加,功能的增强,使用早期的自由软件开发方式来开发高质量的软件变得越来越困难。在软件开发的过程中,经常会出现不能按时完成任务、产品质量得不到保证、工作效率低下和开发经费严重超支等情况,失败的软件项目比比皆是。这一系列问题导致了“软件危机”的产生。
软件危机的出现及其日益严重的趋势,充分暴露了软件产业在早期发展过程中存在的各种各样的问题。可以说,人们对软件产品认识的不足以及对软件开发的内在规律的理解偏差是软件危机出现的根本原因。为了解决软件危机,人们逐渐认识了软件的特性以及软件产品开发的内在规律,并尝试用工程化的思想去指导软件开发,于是软件工程诞生了。
1968年,在北大西洋公约组织举行的一次学术会议上,该组织的科学委员们在开会讨论软件的可靠性与软件危机的问题时,首次提出了“软件工程”的概念,并将其定义为“为了经济地获得可靠的和能在实际机器上高效运行的软件,而建立和使用的健全的工程原则”。这个定义肯定了工程化的思想在软件工程中的重要性,但是并没有提到软件产品的特殊性。
经过四十多年的发展,软件工程已经成为一门独立的学科,人们对软件工程也逐渐有了更全面、更科学的认识。在现代,软件工程是指应用计算机科学技术、数学和管理学的原理,运用工程学的理论、方法和技术,研究和指导软件开发和演化的一门交叉学科。它强调按照软件产品的特殊性质,采用工程化的思想来指导软件开发,在高效的软件生产和科学的项目管理的基础上得到高质量的软件产品。
相对于其他学科而言,软件工程是一门比较年轻的学科,它的思想体系和理论基础还有待进一步修整和完善。软件工程学包括的内容有软件工程原理、软件工程过程、软件工程方法、软件工程模型、软件工程管理、软件工程度量、软件工程环境和软件工程应用等。
1.1.2 软件工程的目标和原则
一般来说,软件工程的目标主要包括以下几点。
• 使软件开发的成本能够控制在预计的合理范围内。
• 使软件产品的各项功能和性能能够满足用户需求。
• 提高软件产品的质量。
• 提高软件产品的可靠性。
• 使生产出来的软件产品易于移植、维护、升级和使用。
• 使软件产品的开发周期能够控制在预计的合理时间范围内。
为了达到上述目标,软件工程设计、工程支持以及工程管理在软件开发过程中必须遵循一些基本原则。著名软件工程专家鲍伊姆(B.W.Boehm)综合有关意见并总结了多年来软件开发的经验,提出了软件工程的7条基本原则。
• 用分阶段的生命周期计划进行严格的管理。
• 坚持进行阶段评审。
• 实行严格的产品控制。
• 采用现代程序设计技术。
• 软件工程结果应能清楚地审查。
• 开发小组的人员应该少而精。
• 承认不断改进软件工程实践性的必要性。