我注意到了各种原型制作方法,并且在Internet上找到了几种定义,但是我想确认一下我学到了什么。
我知道一次性原型是从规范的概述中开发出来的,交付并修改了各种原型,直到客户对其功能满意为止。
另一方面,演化原型是根据最终用户收集的基本要求构建的。最初的原型将提供给用户并进行评估。根据反馈修改原型,直到客户满意为止。
它是否正确?有没有更好的抛弃式和进化原型的定义?
我注意到了各种原型制作方法,并且在Internet上找到了几种定义,但是我想确认一下我学到了什么。
我知道一次性原型是从规范的概述中开发出来的,交付并修改了各种原型,直到客户对其功能满意为止。
另一方面,演化原型是根据最终用户收集的基本要求构建的。最初的原型将提供给用户并进行评估。根据反馈修改原型,直到客户满意为止。
它是否正确?有没有更好的抛弃式和进化原型的定义?
Answers:
当您不完全了解系统的某些方面时,将使用两种原型方法。但是,关键区别在于您使用的生命周期方法。使用进化原型,您通常会了解系统的某些方面,而对其他方面则不确定。在一次性原型制作中,您通常缺乏在构建可投入生产的系统之前需要完成的理解。
请注意,有很多种类的一次性原型制作,并且都不限于整个系统。例如,使用用户界面的纸或白板草图可被认为是一次性原型。是的,您可能要经过几次迭代并放弃以前的设计,但是您也不会在系统中使用最终的原型(对于一个人而言,这在物理上是不可能的)。
如果您对一般软件工程主题和SE的广度感兴趣,我强烈建议您阅读我引用的Sommerville书。这对于涵盖话题的范围确实非常有用。如果您对过程模型和方法以及如何将其应用于各种项目更感兴趣,我会推荐McConnell的书-它有一整章专门介绍演化原型,另一章专门介绍一次性原型。
我也快速浏览了Wikipedia上有关软件原型的文章。它的某些部分有些奇怪(至少在我的快速阅读中),但是似乎没有什么我完全不同意的。其中有些只是侧重于某个特定方面,但是我认为这实际上并不是错误的。我更喜欢下面的定义,但这可能是有关各种原型制作的有趣读物。
探索性开发,该过程的目标是与客户一起探索其需求并交付最终系统。开发从了解系统的各个部分开始。该系统通过添加客户提出的新功能来发展。(Sommerville:软件工程,第8版)
进化原型是一种生命周期模型,在该模型中,系统是逐步开发的,因此可以根据最终用户和客户的反馈轻松地对其进行修改。大多数进化原型设计工作都是从对用户界面进行原型设计开始,然后从中发展出完整的系统,但是原型设计可以从任何高风险领域开始。进化原型与抛弃式原型并不相同,正确选择开发进化原型还是抛弃式原型是成功的关键。成功的其他关键包括使用经验丰富的开发人员,管理进度和预算期望以及管理原型活动本身。(麦康奈尔:快速开发:驯服野性软件时间表)
一次性原型是演化开发过程的目标,旨在了解客户的需求,从而为系统开发更好的需求定义。该原型专注于试验人们所了解的客户需求。(Sommerville:软件工程,第8版)
借助Throwaway Prototyping,可以开发代码来探索对系统成功至关重要的因素,然后将这些代码丢弃。原型实现使用编程语言或开发实践,或两者都比目标语言和实践快得多。用户界面的原型设计远比系统的任何其他部分更为通用,但是某些系统的其他部分也可以从原型设计中受益。当用作需求规格说明的辅助工具时,一次性原型实践可以加速基于传统生命周期模型的项目,例如DoD项目。它可以在管理级别或技术级别启动。(麦康奈尔:快速开发:驯服野性软件时间表)
一次性原型-使用此系统的一小部分进行开发,然后提供给客户和最终用户以对其进行评估。用户提供的反馈可以迅速与主系统的开发配合使用
进化原型-是一种生命周期模型,在该模型中,系统是逐步开发的,因此可以根据最终用户和客户反馈轻松进行修改