什么是软件工程?
软件工程一直以来都缺乏一个统一的定义。
IEEE给出的定义是:软件工程是:1.将系统化的、严格约束的、可质量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究。
比较认可的一种定义是:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
什么是软件开发方法(或软件开发过程)?
软件开发方法找不到统一的定义,但是我们说极限编程(ExtremeProgramming,简称XP)、水晶(Crystal)方法、动态系统开发方法(DSDM)、Scrum、基于体系结构的软件开发、自适应软件开发(ASD)都是一种软件开发方法。这些方法都涉及了整个软件生命周期,都有相应的原则和方法论。
所以可以将软件开发方法定义为:一套应用于整个软件生命周期的方法论,它对软件生命周期(三个阶段:软件定义、软件开发、软件运行与维护)的活动作出了具体的描述和表示。软件开发方法应该是软件工程的一个产物或者说是软件工程的具体方法的集合。
什么是软件开发模型?
软件开发模型是软件开发实际过程的抽象与概括,它包括构成软件过程的各种活动,是对软件开发过程各阶段之间关系的一个描述、约束和表示。软件开发模型为软件开发过程提供原则和方法,为软件工程管理提供里程碑和进度表。
我们常见的软件开发基本模型有:瀑布模型(传统瀑布模