快速原型模型(Rapid Prototype Model)
目录
|
原型是指模拟某种产品的原始模型,在其他产业中经常使用。软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性。
快速原型模型又称原型模型,它是增量模型的另一种形式;它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。例如,客户需要一个ATM机软件,可以先设计一个仅包含刷卡、密码检测、数据输入和账单打印的原型软件提供给客户,此时还不包括网络处理与数据库存取以及数据应急、故障处理等服务。快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
1、快速原型模型思想的产生
由于种种原因,在需求分析阶段得到完全、一致、准确、合理的需求说明是很困难的,在获得一组基本需求说明后,就快速地使其“实现”,通过原型反馈,加深对系统的理解,并满足用户基本要求,使用户在试用过程中受到启发,对需求说明进行补充和精确化,消除不协调的系统需求,逐步确定各种需求,从而获得合理、协调一致、无歧义的、完整的、现实可行的需求说明。又把快速原型思想用到软件开发的其他阶段,向软件开发的全过程扩展。即先用相对少的成本,较短的周期开发一个简单的、但可以运行的系统原型向用户演示或让用户试用,以便及早澄清并检验一些主要设计策略,在此基础上再开发实际的软件系统。
2、快速原型模型的原理
快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。
3、原型运用方式
由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
①抛弃策略是将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的。
②附加策略是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略。
采用何种形式、何种策略运用快速原型主要取决于软件项目的特点、人员素质、可供支持的原型开发工具和技术等,这需要根据实际情况的特点来决定。
根据原型的不同作用,有三类原型模型:
1、探索型原理
这种类型的原型是把原型用于开发的需求分析阶段,目的是要型清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发都对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。
2、实验型原型
这种原型主要用于设计阶段,考核;实现方案是否合适,能否实陋。对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性。
3、演化型原型
这种原型主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统。它将原型的思想扩展到软件开发的全过程。
1、快速分析
在分析人员与用户密切配合下,迅速确定系统的基本需求,根据原型所要体现的特征描述基本需求以满足开发原型的需要。
2、构造原型
在快速分析的基础上,根据基本需求说明尽快实现一个可行的系统。这里要求具有强有力的软件工具的支持,并忽略最终系统在某些细节上的要求,如安全性、坚固性、例外处理等等,主要考虑原型系统能够充分反映所要评价的特性,而暂时删除一切次要内容。
3、运行原型
这是发现问题、消除误解、开发者与用户充分协调的一个步骤。
4、评价原型
在运行的基础上,考核评价原型的特性,分析运行效果是否满足用户的愿望,纠正过去交互中的误解与分析中的错误,增添新的要求,并满足因环境变化或用户的新想法引起的系统要求变动,提出全面的修改意见。
5、修改
根据评价原型的活动结果进行修改。若原型未满足需求说明的要求,说明对需求说明存在不一致的理解或实现方案不够合理,则根据明确的要求迅速修改原型。
为了节省开发原型的费用,实现快速地分析,迅速构造出所需的原型,应采用一些特殊的有别于通常软件开发时使用的技术和工具。
1.构造原型的技术
(1)可执行的规格说明。
(2)基于脚本的设计。
(3)采用非常高级语言或专门语言。
(4)能重用软件。
2.构造原型的建议
(1)暂不考虑速度、空间等性能效率方面的要求。
(2)暂不考虑错误恢复和处理。
(3)可降低可靠性和软件质量标准。
(4)原型界面部分要设计得简单易学,最好能与最终系统的界面相容。
(5)根据不同的软件类型和应用领域,可使用不同风格的高级语言来构造原型。
3.原型的开发环境
除了上述的构造原型的技术和建议外,还应该有开发环境来辅助原型的开发。
(1)交互式系统。能快速响应使用者的要求。
(2)数据库管理系统。能够提供更多工具,可以定义、建立、查询、加工信息资源。
(3)通用输入/输出软件。容易使用的数据编辑,屏幕格式化软件等对原型设计和开发都有很大的帮助。
(4)重用代码库。可减少重复劳动。
不同的软件过程模型对软件开发过程有不同的理解和认识,支持不同的软件项目和开发组织。下表对比和分析了各个软件过程模型的特点及其适用的软件项目类型。
各种软件过程模型的特点
模型名称 | 技术特点 | 适用范围 |
---|---|---|
瀑布模型 | 简单,分阶段,阶段间存在因果关系,
各个阶段完成后都有评审,允许反馈,不支持 用户参与,要求预先确定需求 | 需求易于完善定义且不易变更的软件系统 |
快速原型模型 | 不要求需求预先完备定义,支持用户参与,
支持需求的渐进式完善和确认,能够适应用户需求的变化 | 需求复杂、难以确定、动态变化的软件系统 |
增量模型 | 软件产品是被增量式地一块块开发的,
允许开发活动并行和重叠 | 技术风险较大、用户需求较为稳定的软件系统 |
迭代模型 | 不要求一次性地开发出完整的软件系统,将软件
开发视为一个逐步获取用广需求、完善软件产品的过程 | 需求难以确定、不断变更的软件系统 |
螺旋模型 | 结合瀑布模型、快速原型模型和迭代模
型的思想,并引进了风险分析活动 | 需求难以获取和确定、软件开发风险较大的软件系统 |
RUP | 可改造、扩展和剪裁:可以对它进行设计、
开发、维护和发布;强调迭代开发 | 复杂和需求难以获取和确定的软件系统;
软件开发项目组拥有丰富的软件开发和管理经验 |