zjxbjh 2010-02-28
原型法在现在的软件开发过程中被广泛使用。首先,我们要明确的是,任何一种方法或工具都是为我们开发、生产过程服务的,这一点必须清楚,我们不能成为方法或工具的奴隶,只要我们认为这个方法论或工具对我们的过程有用,就可以大胆使用,否则就是教条主义了。
当今天比较流行的软件开发方法论,比如RUP,敏捷开发,Iconix等都是以项目开发早期降低风险为目标,不论你所开发的是项目型软件,还是产品型的软件,原型法在开发过程中都有举足轻重的作用。可以说,在整个软件开发生命周期中,原型法都将贯穿需求分析、概要设计、详细设计全,甚至实现的全过程中。
原型法是一种非常实用的方法,从技术面上划分,可以分为界面原型以及架构(技术方案)验证原型,下面我将结合近期开发的voa英语复读网过程对这两种原型技术进行阐述。
界面原型法,是使用原型工具根据客户需求及软件分析设计人员的理解,将头脑中的界面快速反映到介质上,以方便沟通交流,达到尽早需求验证的目的,尽早明确一些不确定性的因素,笔者在工作中对界面原型法其进行了一些尝试,和大家交流一下。
一、 采集回来的用户需求经过简单整理后,召集公司开发组中有经验的人员一起讨论定义需求,并在白板上画出原型草图,这时的原型可能比较粗糙,仅包含主要的核心界面元素及页面见的跳转流程,在大家对界面达成一致后,用数码相机拍照下来,整理到一个文档中,为后期可重用界面原型提供依据。本过程中的工具为笔,白板,照像机,产生的原型仅后后期页面实现人员参考。
二、 基于敏捷开发过程中,客户代表就在现场,此时,可以在纸上用笔直接绘制界面草图与客户沟通,如有理解上的偏差,现场立即修改达成一致,当然,也可以在可迭代中的产品上直接修改;此过程的原型工具为笔、纸,可以把理解偏差快速反馈到项目中,以尽早修改。
三、 客户不在现场,产生基于计算机图形格式文件的原型。这种方式主要采用快速原型工具,依据对需求的理解迅速实现可抛弃原型。在此阶段原型工具很多,笔者就用过几种和大家交流一下:
1、 MS office办公套件:word、execel、powerpoint这三个软件都可以做出较美观的界面原型,缺点是不熟悉微软办公套件的人生产效率将很低,特别是项目中原型页面较多的情况下,该工具不适用。
2、 Viso,这也是微软的一个界面原型产品,但更偏向于做桌面应用界面展现。
3、 flash, flex,这类工具做界面原型的速度很快,且非常直观,如果你的后期实现用的就是这些语言,那么,产生的界面原型还是可重用的界面原型呢。
4、 webpagemaker,是一个web界面设计的原型工具,可以非常迅速地做出可交互原型,可导出html代码,但页面元素全部都采用有div+css定位,可读性差,可几乎没有维护性,因此不可在后期项目中重用该原型,所以,webpagemaker就该是一个web应用开发的快速可抛弃原型开发工具。
5、 guiDesigner,该工具是一个通用原型工具,无论是做web型应用还是桌面型应用,都比较适用,且该工具还可用连接线标出界面间的流程关系,并可以全屏演示。个人不太喜欢这个工具,因为做出的原型缺少个性,且不能安装在中文目录下。
6、 DreamWaver,一个非常优秀的网页原型与开发工具,在web项目的开发中,我一般都会用这个来工具来实现照像机拍下来的白板上的原型与客户交流用,如果通过用户的确认,该原型将直接应用到后期的项目中(可直接改成jsp或freemark、velocity等页面)。
7、 Balsamiq Mockups,外国人用flex air写的一个桌面型快速原型工具,特点是设计原型非常快,无论是桌面应用、手机应用、还是桌面应用,都比较适合,界面效果非常好(就像手工绘制的一样),修改也非常容易,但该软件是需要注册(注册费还比较贵哦),否则不能保存设计的成果。还有一点,该工具每个页面文件都是做为单独的文件存放的,因此,跨文件的页面交互也不能实现。
Voa英语复读网,就用Balsamiq Mockups进行了原型的设计,在与运营部讨论的过程中,现场快速对原型进行修改,以满足运营目标,同时也利于后期开发人员的实现,下面附网站图片一张,最终完成的产品,大家可以通过www.fudu365.com,看看最终实现的效果与最初原型有多大区别。(下面附一张在线复读机的原型设计了界面)。
总的来说,用上面的一些工具做出来的原型,可以到客户现场进行现场演示,也可以通过email或im工具发给客户以确认需求,还是比较理想的。再次强调一下界面原型法实现要点:页面上的主要界面元素,页面界面元素以及页面间的交互关系。界面原型法是验证需求的重要手段,有的人也把它叫做需求测试。
原型法可用于对技术实现方案及架构可行性进行验证,这种原型对架构设计和技术选择、技术风险的控制有非常重要的作用,有的人也把它称为纵向原型法。我在开发voa英语复读网的早期,就搭建了对英文文章抓取的htmlparse进行技术验证,用flex通过socket通讯实时的一个简单的聊天原型,以及播放器中lrc文件的延迟复读功能的关键技术实现,我们用这些原型来证明了技术的可行性、框架的合理性,降低了风险。后期的开发可以参照早期原型重新进行更详细的设计,或直接在早期原型上演进完成后续开发,因此,这种架构验证原型是可重用的。
原型法是帮助软件开发设计人员提早发现设计各个阶段的缺陷,在早期解决一些需求上的bug,架构上的不可实现因素,大幅降低软件开发的风险和开发的成本。降低风险也是各种开发方法论追求的目标,也导致了原型法的广泛使用。