系统开发方式众多,项目管理者只需决定何时采取何种开发模式即可。瀑布开发模式就是一种最常用的开发模型,因为这种开发方式不但简单直观而且大大便利了项目管理的运做。 瀑布开发模式可以令项目管理人员非常方便地把整个项目置于自己的掌握之下。瀑布开发模式限制了开发期间团队间的交互,评估起来相当方便,由于开发计划稳定而且几乎不会发生经常性的变化从而有效地简化了项目开发的管理工作。
瀑布开发模式瀑布开发也有一些缺点,但是,在你初履新职,刚刚接手管理一个新的团队,同时获得了一种支持瀑布开发模式的解决方案的情况下,这种开发模式可以令你很快进入角色把工作开展起来,从而为将来采用更高级的开发方式做好了准备。
瀑布开发过程在政府项目中特别受到欢迎,在这样的软件开发项目中,其规划阶段超出了大多数企业部署阶段的时间和力度。采用这种方式的其他用户包括那些理解比较全面和深入的软件项目,相关的解决方案对团队而言非常熟悉,或者只需要小小的改动。基本的分阶段措施瀑布开发也被称做系统开发生命期模式,简称SDLC(Systems Development Lifecycle Model),这是一种软件开发途径,它把项目分解为有限的阶段。每一个阶段都有序执行,并且依赖于先前已完成的阶段。在采用瀑布开发方法的情况下,开发工作的各个部分必须分别评估,而且通常由不同的开发队伍来实施。具体开发阶段的划分存在一定的争议,但各个阶段基本上取决于任务相对繁重的预先规划。以下就是瀑布开发过程的常见阶段划分:
问题评估—也就是概念形成阶段。明确现有解决方案所存在的问题同时收集相关信息。
计划解决方案—提出解决方案的详细说明,包括软件的优点和缺点以及试图解决的问题。确定开发时序,工作结构分解以及其他支持文档。最重要的是明确和分析软件需求。
设计系统架构—提案获得接受之后即可创建解决方案模式,包括工作流和数据流图、模块和功能层次已经其他由解决方案所需要的说明。在这一阶段通常总是伴随一个有力度的检查过程。
开发代码—用以上阶段创建的蓝图编写、调试和单元测试软件代码。接着,集成系统的代码和测试部分。最后测试整个系统。该阶段要到测试完全通过才能结束。
部署和使用系统—部署最终功能,同时向用户提供所需的培训和文档。
维护解决方案—在必要的时候指出和升级软件并且修补软件错误。
有时测试会成为单独的一个阶段,其中包括软件调试而不是在开发阶段进行代码调试。此外,获取软件需求也可能成为独立的阶段。无论采取怎么样的开发路线,以上过程都是一次实施的,同时还要整合到整个解决方案中来。瀑布方式的适用场合采用瀑布开发模式是需要一定条件和场合的,并不是所有的解决方案都能采用这种比较严格的开发方式获得成功。
采用瀑布开发方式的用户常见于新负责的项目经理因为这种方式对项目的估计非常方便。项目开发中涉及到的几乎一切都预先计划,从而便于确定预期的开发成本和开发时间。另一项好处是所有的需求都必须得到确认,在代码编写之前项目结束标准就能确定项目是否成功。这样就保证了项目开发的目的明确性。
由于项目开发工作分阶段实施,一次只有一个团队管理项目。从而简化了项目经理的工作,使得项目经理可以更深入地同每一位团员协作。这样的成员间交流对项目开发的最终成功自然大有裨益。瀑布开发的缺点瀑布开发方式的缺点也是明显的。如果期间的每一阶段没有得到坚决贯彻和实现,那么隐藏的问题最终会影响项目的成功。虽然瀑布管理方式对项目经理而言非常方便,但是对开发人员而言就可能显得太严酷了。因为测试过程在开发阶段之后实施,子系统测试所暴露的问题可能需要立即修改代码,这样就显著增加了计划架构的成本。
调试过程可能非常复杂,原因在于,开发人员在同一阶段通常还可以从事其他项目的开发工作,而所需要的软件修改可能会降低开发人员的生产率和工作质量。有时工作区还必须集中到一个地方来,从而威胁到解决方案的完整性。
另一可能的危险是你只有到解决方案启动的时候才能知道当初所预计的是否成功,所以余下用来改正问题的时间和空间都非常有限。而设计工作上的疏漏和缺陷可能会严重地影响解决方案的启动日期。
这种模式的另一问题在于,除了到阶段终止之时,其他时候几乎没有获取反馈的时间,还有,一旦开发工作开始启动那么修改的空间也就没有了。最后,假如系统测试表面功能或者性能没有达到要求也许到这个时候已经没有纠正问题的可能了。
在部署瀑布开发模式之前你必须仔细评估自己所处的环境和条件。如果客户希望在开发工作开始之后加入近来或者你要处理很多未知的问题,那么你或许最好采用一种更具重复性的开发过程。