软件工程一直以来都缺少一个统一的定义,不少学者、组织机构分别给出了本身承认的定义:
BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
FritzBauer:在NATO会议上给出的定义:创建并使用完善的工程化原则,以较经济的手段得到能在实际机器上有效运行的可靠软件的一系列方法。
《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提升质量、下降成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及肯定权衡,管理科学用于计划、资源、质量、成本等管理。
比较承认的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把通过时间考验而证实正确的管理技术和当前可以获得的最好的技术方法结合起来。
ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。
其它定义:1.运行时,可以提供所要求功能和性能的指令或计算机程序集合。2.程序可以满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操做和使用所要求的文档。以开发语言做为描述语言,能够认为:软件=程序+数据+文档。