开发一个软件,除去那些规模很小的项目以外,通常要由多个软件人员分工合作、共同完成;开发阶段之间的工作也应有很好的衔接;开发工作完成以后,软件成果要面向用户,在应用中接受用户的检验。所有这些活动都要求人们改变过去那种把软件当做个人才智产物的观点,抛弃那些只按自己工作习惯,不顾与周围其它人员配合关系的做法。

  在这一点上,软件开发与计算机硬件研制,甚至与高楼建设没有本质的差别。任何参加这些工程项目的人员,它们的才能只有在工程项目的总体要求和技术规范的约束下充分发挥和施展。

  许多计算机和软件科学家尝试,把其它工程领域中行之有效的工程学知识运用到软件开发工作中来。经过不断实践和总结,最后得出一个结论:按工程化的原则和方法组织软件开发工作是有效的,也是摆脱软件危机的一个主要出路。

  Fritz Bauer曾经为软件工程下了
定义:“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。”

  1983年IEEE给出的
定义为:"软件工程是开发、运行、维护和修复软件的系统方法",其中,"软件"的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。

  后来尽管又有一些人提出了许多更为完善的定义,但主要思想都是强调在软件开发过程中需要应用工程化原则的重要性。