当前位置: 代码迷 >> 综合 >> 原型方法(prototyping) 需求不明确+建立原型
  详细解决方案

原型方法(prototyping) 需求不明确+建立原型

热度:53   发布时间:2023-12-14 15:31:06.0
由来:瀑布模型、V模型、W模型都将软件生命周期划分成独立串行的几个阶段
瀑布模型、V模型、W模型:需求明确 + 严格顺序执行局限性:前一个阶段没有完成便无法开始下一阶段的工作现实情况:然而完整而准确的需求规格说明是很难得到的原因:
在开发早期用户往往对系统只有一个模糊的想法,很难完全准确地表达对系统的全面要求
(早期难以准确表达) 
随着开发工作的推进,用户可能会产生新的要求
(进行中会产生新需求)
开发者有可能在设计与实现的过程中遇到一些没有预料到的实际困难,需要以改变需求来解脱困境 
(进行中会改变需求)
原型方法:指在获得一组基本需求后,通过快速分析构造出一个小型的软件系统原型,满足用户的基本要求。用户通过使用原型系统,提出修改意见,从而减少用户与开发人员对系统需求的误解,使需求尽可能准确。原型方法主要用于明确需求,但也可以用于软件开发的其他阶段。  
原型的三种作用类型:探索型:(废弃策略)(需求模糊+缺乏经验)
弄清用户对目标系统的要求,确定所期望的特性
探讨多种实现方案的可行性
主要针对需求模糊、用户和开发者对项目开发都缺乏经验的情况实验型;(废弃策略)(大项目实验)
用于大规模开发和实现之前,考核技术实现方案是否合适、分析和设计的规格说明是否可靠。进化型:(追加策略)(需求经常变动)
在构造系统的过程中能够适应需求的变化,通过不断地改进原型,逐步将原型进化成最终的系统。
它将原型方法的思想扩展到软件开发的全过程,适用于需求经常变动的软件项目。 
由于运用原型的目的和方式不同,在使用原型时可采取以下两种不同的策略:废弃策略 :
原型主要用于反馈和评价,据此设计出完整、准确、一致、可靠的最终系统。
系统构造完成后,原来的原型系统就被废弃不用。
探索型和实验型原型。追加策略 :
原型作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,最后发展成为最终系统。
进化型原型。
特点:1、从认知论的角度看,原型方法遵循了人们认识事物的规律,因而更容易为人们所普遍接受。这主要表现在:
人们对任何事物的认知都不可能一蹴而就、尽善尽美;
认识和学习的过程都是循序渐进的;
对于事物的描述,往往都是受环境的启发而不断完善的;
人们批评指责一个已有的事物,要比空洞地描述自己的设想容易得多,改进一些事物要比创造一些事物容易得多。2、原型方法将模拟的手段引入分析的初期阶段,沟通了人们的思想,缩短了用户和开发人员之间的距离。这主要表现在:
所有问题的讨论都是围绕某一个确定原型而进行的,彼此之间不存在误解和答非所问的可能性,为准确认识问题创造了条件;
有了原型才能启发人们对原来想不起来或不易准确描述的问题有一个比较确切的描述;
能够及早地暴露出系统实现后存在的一些问题,促使人们在系统实现之前就加以解决。
优点:原型方法有助于增进软件人员和用户对系统服务需求的理解;
原型方法提供了一种有力的学习手段; 
使用原型方法,可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果;
软件原型的最终版本,有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统。 
适用范围:对于一个大型系统,如果不经过系统分析得到系统的整体划分,而直接用原型来模拟是很困难的。
对于大量运算的、逻辑性较强的程序模块,原型方法很难构造出该模块的原型来供人评价。
对于原有应用的业务流程、信息流程混乱的情况,原型构造与使用有一定的困难。
对于一个批处理系统,由于大部分活动是内部处理的,因此应用原型方法会有一定的困难。
局限性:文档容易被忽略。 
建立原型的许多工作会被浪费掉。
项目难以规划和管理。 

 应用过程:

拓展:

支持原型构造的软件复用技术
所谓复用就是利用一些从早先软件开发过程中收集到的、对建立新系统有用的信息来构建新系统。 从复用的内容角度可以划分其类型为: 数据复用:
实现不同数据环境的移植模块复用:
COM/DCOM、JavaBean/EJB、CORBA结构复用:
领域内通用业务逻辑;实现MVC(Model-View-Control,模型-视图-控制器)体系结构的Struts框架、实现数据库访问逻辑复用的Hibernate框架等 设计复用:
MDA(Model Driven Architecture,模型驱动体系结构) 规格说明复用:规格说明可使用或者可参照使用 软件复用的两种实现机制:合成复用:
构件是基础,构件以抽象数据类型为理论基础,将功能实现细节与数据结构封装在构件内部,对外有着精心设计的接口,供外部使用者构造应用时调用。构件本身可以是对某一函数、过程、子程序、数据类型、算法等可复用软件成份的抽象,利用构件来构造软件系统,有较高的生产率和较短的开发周期。 生成复用:
利用可复用的模式(Patterns),通过生成程序产生一个新的应用程序或程序段。