软件系统往往体现一定的功能,这些功能要符合一定的使用目的。现实世界是在不断变化的,而且变化的速度是越来越快,唯一不变的就是“变化”的主题。这一现实也就直接影响到了实现实际功能的软件系统,体现在需求、技术实现手段、应用环境等多个方面,这些都直接影响到了软件系统自身的稳定性。
由于企业项目管理风险化以不断的预测到人们能力问题,有时根本难以明确未来的需求,只能是根据环境的变化而随时调整,因此直接导致了软件生命周期越来越短这一现实,特别是应用软件,直接与这种变化紧密相连。
软件生命周期已经缩短,特别是应用软件,随着新业务的市场窗口变窄的趋势,其自身的寿命周期也在缩短。快速投放市场已经成为软件系统的首要因素。另一方面,由于快速变化的外部环境给软件产品带来的风险,成本控制也成为软件工程项目管理的一个重要方面,通过对需求变化的项目管理风险的评估来重新认识软件寿命周期,以合理的项目管理成本完成软件开发,也已经成为对软件产品项目经理人的一个挑战。
在传统的软件工程方法中,主要使用瀑布式顺序开发方法,包括需求分析和定义、系统设计、实现和单元测试、系统集成测试、运行维护等多个阶段,这一方法的优点是全面、严谨,但最大的缺陷,就是过程一旦启动就难以适应变化。这一方法是基于一个重要的假设前提——能够提出明确的需求。
这种情况下,使用快速原型进行反复交流、细化需求,就成为一种更加有效的方法。一个软件的原型,主要是模拟重要的功能和界面,但是一般不考虑运行效率,也不考虑系统的健壮性,出错处理也考虑不多,它的目的只是为了实际描述概念中的结构,使用户能够检测与其概念的一致性和概念的可用性。
目前主要有两种快速原型方法:项目管理培训
·丢弃原型(Throw-awayprototyping)。其目标只是为了明确需求,使用最简单的开发方法,以最低的成本实现一个可工作的系统,该系统只关注功能,不考虑开发工具、性能、容错、未来实际运行环境等。通过反复与客户交流和修改原型,使原型的功能能够充分体现客户需求。在明确了需求之后,原型就会被丢弃。以后软件的开发将根据明确了的需求按照传统的工程化方法来开发。项目经理人。
·进化原型(Evolutionaryprototyping)。其目标就是与客户一起工作,从一个原始的需求的轮廓开始,逐步改进,最终发展成为符合实际需要的系统。采用这种方法,就需要考虑到软件未来的运行环境等有关要求,这就要求从一开始就要对需求有一个比较清晰的认识,不能有方向性的错误。项目经理人。
市场需求和新技术发展,最大的风险往往来自对需求的分析和技术实现手段的选择,通过原型化方法,首先以合理的成本细化需求、试验技术手段,把最主要的项目项目管理风险降到最低,从而在总体上降低软件开发的风险,加快软件产品的形成,降低软件开发的成本。
快速原型方法的过程,特别是进化的原型方法,与软件的版本升级有些类似。随着市场需求的变化,软件版本不断升级,每升级一次,就会增加新的功能,或者引入符合发展新趋势的技术手段。但是每一个版本都是产品化的,在产品质量方面都达到了相当的要求,这与软件原型是不同的,快速原型是一个由粗到细的过程,在最终形成产品之前,不论原型被修改了多少个版本,都还不能达到产品化的要求,不能对外发布。
使用快速原型方法的最大困难就是工程项目项目管理的问题,许多具有较强项目管理能力的企业对快速原型方法也感到畏惧,根本原因就是其不确定性所带来的风险。但是应该知道,快速原型的方法,正是为了针对主要风险,分解风险,尽早地、低成本地降低风险。否则,如果项目管理一味地强调软件开发必须以明确的需求为前提,采用传统的瀑布式开发方法,则会面临更大的市场风险,如果以不明确的需求采用传统的开发方法,软件开发本身也必然面临着灾难性的风险。因此,快速原型方法应该成为我们软件开发过程中降低风险的一种有效的方法。
许多企业在新的软件开发需求提出时,实际已经建立了自己的信息系统的基础架构,也已经开发了类似的软件系统,因此在新产品开发中应采用的技术手段方面,已经不存在问题,这时的风险主要存在于不明确的需求上,此时采用进化的原型方法,比丢弃的原型方法会更有效。为了加强对原型化方法的开发过程的项目管理,可以在整个原型化过程中把每一次对需求的细化看作是一次版本升级,在每一次升级过程中,细化了的需求是明确的(虽然还不一定是最终的),这就可以采用瀑布式开发项目管理方法,只是这一过程的周期会非常短,而且只要不是最终版本,成本就必须控制在最低。