项目生命周期

每个软件开发项目都是不同的,在抽象后,一个软件交付的生命周期主要包含有五部分。

01

识别阶段

业务部门决定策略目标,并识别需要做的计划任务,以便完成策略目标。

如果没有做业务分析:

1)就不可能知道项目如何算成功。

2)需求收集就很难做,同时也无法客观地排列需求优先级。

在开始需求收集之前,准备好利益干系人列表,其中最重要的是各业务模块的主要负责人,包括运维、销售、市场和技术支持人员,以及开发和测试团队等。

02

启动阶段

“启动阶段”是对开始写产品代码前这段时间最简单的描述。一般来说,此时会对需求进行收集和分析,并对项目的范围和计划进行初步规划。

软件项目要想成功,就要对这个阶段进行细心的规划和执行。

输出的交付物有:

1)商务分析报告,包括该项目的价值评估;

2)概括性的功能与非功能需求列表(包括容量要求、可用性要求、服务连续性要求和安全性要求),需求的详细程度足以估算工作量和做项目计划即可;

3)发布计划,其中包括工作时间安排表和与项目相关的成本。通常会评估需求的相对大小,所需的编码工作量,以及每个需求相关的风险和所需人力资源计划。

4)测试策略;

5)发布策略;

6)架构评估报告,决定使用什么样的平台和框架;

7)风险和问题列表;

8)开发生命周期的描述;

9)执行上述内容的计划描述;

以上交付物应包括足以启动项目的细节以及最多几个月后需交付的目标,合理的最长周期是三到六个月(倾向于三个月的期限)。

根据对项目的估计收益、预计成本和已预期的风险等因素,给出该项目是否需要继续进行的明确决定。

该阶段中最重要的部分(也是决定项目成功概率的部分)是让所有项目干系人在一起面对面工作,包括开发人员、客户、运营人员和管理层。所有人对需要解决的问题域,以及解决问题的方法有一个共同的理解。

注意,在这个阶段所做的每个决定都是基于推测的,将来会发生变化。以上产出物都是基于当时所能获得的一小部分信息作出的最合理猜想。在这个阶段,由于所能掌握的信息很少,所以花过多精力是错误的。随着项目的进展,其中很多内容需要提炼或重新定义。

在项目的这个阶段进行非常详尽的计划、估算和设计都是在浪费时间和金钱,具有广泛基础的决策是在此阶段唯一的一种持久决定。

03

初始阶段

这个阶段一般需要 1 到 2 周的时间。

典型活动有:

1)确保团队(分析师、经理和开发人员)可以得到开发所需的所有硬件;

2)确保基本的基础设施都准备好了,比如办公场地、电脑、网络等;

3)创建电子邮件账号,为大家指派访问各类资源的权限;

4)建立一个基本的持续集成环境;

5)在角色、职责、工作时间和会议时间上达成一致;

6)为第一周做准备工作,并在目标(不是指“最后期限”)上达成一致;

7)创建一个简单的测试环境和测试数据;

8)稍微更详细地研究一下预定的系统设计:在这一阶段探究它的可行性是真正的目标;

9)做一些调研,识别和缓解任何分析、开发和测试风险;

10)开发用户故事或需求的待办列表(Backlog);

11)创建项目结构,使用最简单的用户故事,包括一个构件脚本和一些测试,从而验证持续集成环境可以正常工作;

安排足够的时间从容地完成这些工作是至关重要的。

该阶段中最重要的是准备好基本的项目基础设施,不应该被看成是一个真正的开发迭代,并拿一个真实的需求(简单就好)让整个基础设施运行起来。

04

开发与发布阶段

推荐以迭代增量式过程进行软件的开发与发布。

迭代过程的最基本要求:

1)软件应该一直处于可工作状态,因为每次签入代码时,都是运行自动化测试套件,包括单元测试、组件测试以及端到端的验收测试;

2)每个迭代都能将软件部署到一个类生产环境中,并向用户演示(这样可以确保整个过程不但是迭代式的,而且是增量式的);

3)迭代长度不超过 2 周;

迭代开发过程的关键在于划分优先级和并行化。

使用迭代过程的理由有如下几个:

1)按业务价值来排功能优先级,那么,远在项目结束之前,软件就已经生效了;

2)可以从客户或者出资人那里得到关于软件的反馈,比如什么需求被满足了,什么需求还需要澄清或修改;

3)只有客户签收后,需求才真正算完成了,定期给客户做软件演示是跟踪进度唯一的可靠方式;

4)保持软件随时可工作,这会让团队更有纪律性,以避免集成阶段时间太长,破坏原有功能的重构或失去焦点及方向感;

5)强调每次迭代结束后都能得到可部署到生产环境的代码。

05

运营阶段

一般来说,第一次发布不可能成为最后一次发布。接下来会发生什么,很大程度取决于项目本身。

开发和发布过程可能会一直全速持续下去,也可能团队规模会减小。如果该项目原来是一个试验型项目,可能会发生相反的情况,团队规模会变大。

在很多方面,迭代和敏捷过程中,项目的运营阶段与常规开发阶段没有什么不同。

大多数项目不会止步于首次发布,而会开发新的功能。

有些项目还会有一系列的维护性发布,可能是修复那些在发布前未能预料到的问题,可能是对软件进行修改以满足新发现的用户需求,还可能是滚动开发计划的一部分。

该阶段中最重要的是识别新特性、排定优先级、分析、开发、测试和发布的工作,与项目的常规开发阶段没有什么不同。

你可能感兴趣的:(项目生命周期)