技术开发 频道

通过类比介绍IBM RUP的要点

    开发迭代

    创新性的创造工作,无论是制作电影画面还是软件,在完成最终产品的过程中都需要在同一工件上反复的尝试。

    使用瀑布式开发策略时(如图1所示),项目周期是顺序的,它将项目中潜在问题的发现时间推迟到项目完成和测试之时。所有隐藏在需求、设计和编写代码过程中的问题在项目结束时突然的显现出来,的确是很棘手的。而开发迭代允许项目小步进行或增长,逐渐完成整个系统。

    如图2所示,RUP中的每一次迭代都要经过这些规程。(RUP中的规程可以被描述为相关的活动、工件或生成的可交付工件。)每一次的迭代都像是一个小的“瀑布”,发现需求中新的部分,提供改正错误的机会并且再次处理上一次迭代的结果。随着不断的迭代,越来越接近最终的产品。

    图2.RUP的迭代开发流程

     


    你可能会认为电影制作是一个直进的过程,首先写剧本,然后解决如何将文字表现为动作,拍摄电影并剪辑,最后观看效果。这可能是一个传统的瀑布式方法。但正如这种瀑布式方法在编写软件时是失败的一样,在电影制作时这种方法也会失败。幸运的是(对于常看电影的人来说),电影不是这样拍成的。

    电影拍摄的过程是更加迭代性的。演员的工作从剧本开始,由这种交互开始修改。例如,轰动一时的 指环王,它的剧本基于J.R.R. Tolkien的名著,几乎每天都在和演员的交互后进行修改。导演Peter Jackson把这一创新性的过程描述为控制下的混沌。在电影结束之前,剧本被修改了很多次。每一次修改(或迭代)都产生了一个更多的(也是更好的)版本,更加接近最终的版本。

    管理项目需求

    当进行任何种类的产品开发时另一项基本的任务是保证它符合用户的需要。最终的目标是减小建构系统的不必要风险——也就是说,不符合用户需求的。这可能是一个棘手的任务,由于有时候用户对开发中的产品仅仅有一个模糊的想法,而需求并不是同等重要或简单的,而且,所有这些参数(和其他的)必然会随时间而变化。这样,一个初始设定好的需求集似乎并不是很好,但一种主动的需求管理策略可以迭代的改进当前的需求,满足用户需要。

    RUP在软件的开发周期内进行需求管理。这意味着项目需求会被反复和逐渐的确定,证明,评估和改进。功能性的需求用使用用例的术语来描述。软件系统中非常重要的非功能性的需求,也应该被确定和管理。这些需求是不是通过用例来描述的,但他们通常是对系统有很大影响的系统特性,包括系统可用性,可靠性,系统性能和可支持性。

    当电影制作人工作时,他们必须考虑迎合观众的需要。他们需要电影激发起什么样的感情?何种体验是观众想要的?他们希望这个故事在哪里上映?电影剧本经过多次迭代,逐渐调整直到导演看来符合这些功能性的需求。

    如果软件的功能需求已经在电影上有了对应部分,那么电影有非功能需求吗?答案(并不令人惊讶的)是有的。也许(出于商业上的原因)电影必须能被18岁以下的儿童观看并且不长于120分钟。尽管这些需求并不直接与故事情节相关,它们还是对最终的结果有着潜在的影响——正如计算机系统上必须有非功能性软件需求一样。同样的,这些需求必须在电影制作的过程中确定和提出。

    使用基于组件的体系架构

    组件是一个具有清晰功能的可替换的软件模块。RUP鼓励使用组件来组合成一个系统。基于组件的开发有以下的优点:它使软件在本系统和其他系统中的重新使用上更加方便,它在系统设计中提供了方便的抽象概念,并且它允许高效的并行开发。此外,精心设计的基于组件的架构使得系统更加容易升级和维护。

    在电影中最显而易见的是场景。一部电影一般由具有连贯情节的许多场景组成,这些场景实现导演的想法。每一个场景都是可替换的,意味着可以替换、修改,甚至删除这个场景而不影响到整个电影(如果导演需要的话)。

    不使用基于组件的架构的原则来开发一个很大的计算机应用程序,像现在仍然有的作法那样,就如同仅仅拍摄一次就完成整个电影一样。这就是2002年Aleksandr Sokurov 的电影《俄罗斯方舟》的拍摄手法——整个电影(2小时16分)是一个连续的拍摄过程。由于即便是拍摄一段十分钟的连续场景都是非常困难的,Sokurov的成就的确是很了不起的。回到软件领域内,RUP基于组件的架构使软件开发者不再像英雄一样要完成不可能的需求。

    电影和软件组件中另一个并不明显的对应例子来源于 Pixar 近期的成功之作。在制作电脑动画冒险片 Finding Nemo过程中,制作者面临的一个挑战是创造逼真的海浪和潮水。(Finding Nemo 这个故事或多或少的发生在海底世界中。)问题不仅在于准确的模拟海水的运动,更在于捕捉光线的反射,水珠的飞舞,不同类型海水的颜色,等等。在电脑动画中,从来没有人能够做到这种程度。

    在项目开始时,设计部门开始对海水的模型作实验。他们进行了广泛的研究,咨询了海洋学专家,勾画了草图和画面,最重要的是,基于他们在这个问题上不断增长的知识创建了原始模型。原始模型经过导演挑剔的目光,这些繁重工作的最后结果是一个设计模板,它涵盖了对电影中各种可能的海水的模拟。这个模板是这部电影架构中的基本组件,其他的组件(模板)解决了不同的问题,比如鱼和植物的运动模式。

    在软件开发领域,设计模板告诉设计者怎样处理最重要的问题。没有一个坚实的架构,或设计模板,就不会有项目大幅度的前进。设计者没法满足需求,直到解决了这些问题。

0
相关文章