随着用户需求的多样化,软件系统开始越来越复杂了,而复杂性带来的结果是软件开发管理越来越困难。然而,许多软件开发团队却没有适时地改变其管理模式。因此,越来越多的软件开发项目呈现出管理失控和混乱的迹象,软件开发的整个生命周期已经越来越成为人们关注的焦点。

为什么软件开发项目的管理是这么困难呢?原因在于许多软件开发团队没有选择合适的管理工具。一般来说,在软件开发过程中会有许多不确定的、经常变化的因素,如果在软件开发过程中缺乏合适的管理工具,这将会导致开发人员无法统一开发行为和思路。例如,在实现项目的各阶段和各种角色(架构师、项目经理、开发人员、测试人员等)的方法和思路并不一致,不但会对设计、质量、代码管理和部署产生负面影响,而且还会导致开发成本增加。

那么,我们应该怎样管理好软件开发的各种因素呢?像教科书上经常所说的一样,如果我们能够很好的管理软件生命周期每一个阶段的质量,也很好的管理了整个软件开发的整个过程。因此,如何大程度地管理好开发过程成为目前业界讨论的焦点。本文介绍了在软件开发过程中一种常用的管理工具:软件生命周期模式,以及其概念和选择方法。

什么是软件开发生命周期模式?

软件开发工作本身是需要一个周期来完成的,而在周期的内部则包含了很多因素。一个因素的不稳定,在周期推移的过程中都很可能会造成类似生物学领域的蝴蝶效应----非洲的一只蝴蝶扇动翅膀可能会造成美洲大陆的一场龙卷风。这说明每一个事情都可能会对其它的事情产生连锁反应。因此,任何软件开发项目都必须进行适当的组织和管理,然后才能按预期计划成功地执行项目。也说是说,规划良好的软件开发生命周期将能够实现在更短的开发周期内构建软件的愿景。

(1)什么是软件开发生命周期?

同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,这一般称为软件生命周期。软件开发生命周期(SDLC)是指软件开发的全部过程、活动和任务的结构框架。许多软件开发工具厂商都提出过各种软件生命周期方法论,它们有人将SDLC解释为一组步骤或者里程标(Milestone)。但无论是谁的解释,SDLC的一般步骤包括:确定问题、可行性分析与开发计划、收集需求、分析与设计、编码开发、测试、安装、维护。

生命周期法也称结构化系统开发方法,是目前国内外较流行的软件系统开发方法。尤其在开发复杂的大系统时,显示出无比的优越性。它的基本思想是:将软件工程学和系统工程的理论和方法引入到软件系统的开发中,按照用户至上的原则,采用结构化、模块化自顶向下对系统进行分析和设计。具体的说,是通过把整个软件生命周期划分为若干阶段,使得每个阶段有明确的任务,使规模大、结构复杂和管理复杂的软件开发变的容易控制和管理。它的优点是强调系统开发过程的整体性和全局性,强调在整体优化的前提下考虑具体的分析设计问题,即自顶向下的观点。它从时间角度把软件开发和维护分解为若干阶段,每个阶段有各自相对独立的任务和目标,从而降低了系统开发的复杂性,提高了可操作性。

(2)软件生命周期模式

对于不同的软件系统,可以采用不同的开发方法、以及运用不同的管理方法和手段。实际上,软件生命周期法在开始的时候只是一个概念。因此,在应用软件开发生命周期法时,许多开发团队会把这一个概念进行工具化,这一个工具化是软件开发生命周期模式。通过软件开发生命周期模式,我们能清晰、直观地看到软件开发的全过程。

在过去的10年中,软件生命周期模式及其许多变体获得了广泛的认可。在各种软件开发方法和过程改进模式中的技术革新也得到了承认,如Rational Unified Process(RUP)、Capability Maturity Model(CMM)、ISO 9000-3 等。典型的几种生命周期模式包括:瀑布模式、演化模式、螺旋模式、快速原型模式、喷泉模式和混合模式等。在这里只介绍其中常用的几种模式:

①瀑布模式:它首先是由Royce提出,该模式由于酷似瀑布闻名。在该模式中首先确定需求,然后拟定规格说明,在通过验证后方可进入计划阶段。因此,瀑布模式中至关重要的一点是只有当一个阶段的文档获得认可才可以进入下一个阶段。瀑布模式通过强制性规约来确保每个阶段都能很好的完成任务,但是实际上却往往难以办到。因为整个瀑布模式几乎都是以文档驱动的,这对于非专业的用户来说是难以阅读和理解的。虽然瀑布模式有很多很好的思想可以借鉴,但是在过程能力上有天生的缺陷。