软件工程中的概念
软件生命周期:在软件工程术语里,对软件生命周期的定义是“从设计软件产品开始到产品不能再使用时为止的时间周期。软件生存周期通常包括需求阶段、 设计阶段、实现阶段、测试阶段、安装和验收阶段、运行和维护阶段,有时还包括引退阶段”,也就是一个软件产品从开始到消亡的这段时间。
阶段:从上面的定义中,已经有了一个大阶段的定义了。典型的瀑布模型,我们就可以直接引用到这里定义的几大阶段。我们再看看RUP模型,它也按时间顺序划分为四大阶段:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。但我们在项目管理的时候,就又通常会用到小阶段的定义,例如在RUP的初始阶段中,为了便于项目监控我们会设置建模阶段、需求阶段、设计阶段等等。就是冰封伯爵说的不同的角度啦。
里程碑:在软件工程术语中对它的定义是“项目有关人员或管理人员负责的在预定时间将发生的事件,用来标志工作进度”。在RUP模型里,我们可以把一个大阶段定义为一个里程碑,迭代模型里我们也许会把一个迭代的完成做为一个里程碑,瀑布模型里可能会把编码和测试完成做为一个里程碑等等。里程碑用来识别标志性工作的完成情况,所以通常伴随着管理活动,例如需要收集过去的这段时间是否完成了预定的目标、该输出的产物是否已经完成、进度上是否存在偏差、管理上有什么问题、成本超支情况等等,同时还要评价对未来的工作是否有影响、计划需要变更吗、资源要调整不、有新的风险吗等等,回顾过去展望未来,承上启下。由于里程碑的跨度通常较长,所以在项目中有必要通过设置小的阶段来监控项目的进度,只不过里程碑的评价是由更多的共利益者参与、更正式一些,而阶段活动显得不那么正式一些而已。
基线:基线是项目进展过程中特定时机的产物,它是项目阶段工作的快照,是未来工作的基础,如果基线发生变化,则需经过评估。以往与开发人员交流时,他们会把基线与里程碑混淆,认为是一个东西。刚才我们说里程碑是一个时间点、伴随着管理活动,而基线的区别在于它生成的是一系列的文档(计划或需求或设计或产品文档)、代码、产品包。
OK,然后我们来举一个例子。在RUP的生命周期中,我们把每一个大阶段设置为一个里程碑,每个里程碑里又分别设置建模阶段、需求分析阶段、设计分析阶段、编码阶段、测试阶段、交付阶段等,然后我们可能会在需求评审通过后结束需求分析阶段的工作,并且生成了正式的需求文档,然后我们把这些文档设置为需求基线,所有的设计、编码、测试工作依据需求基线来进行,当需求基线发生变更时必须进行评估并通知到关系人。然后我们在交付阶段结束后完成里程碑的工作,进行一次里程碑评估。