精华内容
下载资源
问答
  • 原型模型

    2019-10-14 17:14:08
    原型模型的概念,细节以及 创序列化之用序列化实现深复制

    原型模式

    (Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。

    原型模式结构图中包含如下几个角色

    ●Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体实现类。
    ● ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。
    ● Client(客户类):让一个原型对象克隆自身从而创建一个新的对象,在客户类中只需要直接实例化或通过工厂方法等方式创建一个原型对象,再通过调用该对象的克隆方法即可得到多个相同的对象。由于客户类针对抽象原型类Prototype编程,因此用户可以根据需要选择具体原型类,系统具有较好的可扩展性,增加或更换具体原型类都很方便。

    下面我就我学习到原型模型总计几个要点

    1.通过克隆方法创建的对象是全新的对象,他们在内存中拥有全新的地址。即克隆产生的新的对象在内存中有新的地址。
    所以在新的对象中做更改,不会改变原来对象中的数据。
    2.Jvav语言提供了clone()方法,在java.lang.Object类中。需要注意的是能够实现克隆的Java类必须实现一个接口Cloneable
    3.我们谈一谈浅克隆和深克隆
    通俗的理解,浅克隆就是,加入数据是值类型,只复制了数据,加入数据是引用类型,只复制地址。浅克隆,并没有为引用类型的创建新的内存空间。而深克隆,在浅克隆的基础上,为引用类型的变量开辟了新的地址空间。

    就此我们写个栗子

    在这里插入图片描述

    package com.rj.yx;
    
    public class Attachment implements Serializable {
    private String name;
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
    public void download(){
    System.out.println("下载附件,文件名:"+name);
    }
    }
    
    
    package com.rj.yx;
    
    public class Client {
        public static void main(String[] args) {
            WeeklyLog log_previous,log_new=null;
            log_previous=new WeeklyLog();
            Attachment attachment =new Attachment();
            log_previous.setAttachment(attachment);
            try{
                log_new=log_previous.deepClone();
            }catch (Exception e){
                System.out.println("克隆失败");
            }
            System.out.println("周报是否相同:"+(log_previous==log_new));
            System.out.println("附件是否相同:"+(log_previous.getAttachment()==log_new.getAttachment()));
        }
    }
    
    
    package com.rj.yx;
    
    import java.io.*;
    
    public class WeeklyLog implements Serializable {
    private Attachment attachment;
    private  String name;
    private String date;
    private String content;
    public void setAttachment(Attachment attachment){
        this.attachment=attachment;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setDate(String date){
        this.date=date;
    }
    public void setContent(String content){
        this.content=content;
    }
    public String getName(){
        return name;
    }
    public String getDate(){
        return date;
    }
    public String getContent(){
         return content;
    }
    public Attachment getAttachment(){
        return attachment;
    }
    public WeeklyLog deepClone() throws IOException,ClassNotFoundException{
        ByteArrayOutputStream bao=new ByteArrayOutputStream();
        ObjectOutputStream oos=new ObjectOutputStream(bao);
        oos.writeObject(this);
        ByteArrayInputStream bis=new ByteArrayInputStream(bao.toByteArray());
        ObjectInputStream ois=new ObjectInputStream(bis);
        return (WeeklyLog)ois.readObject();
    }
    }
    
    

    点击链接加入群聊【程序员技术交流群】:添加链接描述

    展开全文
  • 1、什么是快速原型模型原型是指模拟某种产品的原始模型,在其他产业中经常使用。软件开发中的原型是软件的一个早期可快速原型模型运行的版本,它反映了最终系统的重要特性。快速原型模型又称原型模型,它是增量模型...

    1

    、什么是快速原型模型

    原型是指模拟某种产品的原始模型,在其他产业中经常使用。软件开

    发中的原型是软件的一个早期可

    快速原型模型

    运行的版本,它反映了最终系统的重要特性。

    快速原型模型又称原型模型,它是增量模型的另一种形式;它是在开

    发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统

    的开发工作。快速原型模型的第一步是建造一个快速原型,实现客户或未

    来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发

    软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定

    客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件

    产品。

    2

    、快速原型方法提出的背景

    现代市场对产品的需求呈现多样性和快速性的趋势,

    对控制系统安全必

    和可靠性的要求也与日俱增,为了在激烈的市场竞争中取胜,必须不断地

    缩短新产品开发与投入市场的周期,这就出现了企业新产品面临着多样性

    的需求和快速开发之间的矛盾。为了设计可靠的控制系统,满足用户的多

    样化需求,缩短项目开发周期,降低产品开发费用,需要采用先进的开发

    工具来加速设计流程,从而找到新的途径获得技术上的突破。使用快速原

    型方法与集成开发环境技术来进行控制系统开发的目的就是为了缩短开发

    周期,在行业竞争中能够快速开发新产品,从而获得最大的经济效益和市

    场益。

    展开全文
  • 2.3快速原型模型的思想产生、原理及运用方式 2.4类型 2.5开发步骤 三、增量模型 3.1什么是增量模型 3.2特点 3.3优缺点 3.4作用 四、螺旋模型 4.1什么是螺旋模型 4.2特点 4.3优缺点 4.4...

    目录

    一、瀑布模型

    1.1什么是瀑布模型

    1.2特点

    1.3优缺点

    1.4客户需求

    二、快速原型模型

    2.1什么是快速原型模型

    2.2优缺点

    2.3快速原型模型的思想产生、原理及运用方式

    2.4类型

    2.5开发步骤

    三、增量模型

    3.1什么是增量模型

    3.2特点

    3.3优缺点

    3.4作用

    四、螺旋模型

    4.1什么是螺旋模型

    4.2特点

    4.3优缺点

    4.4限制条件


    一、瀑布模型

    1.1什么是瀑布模型

    1970年温斯顿.罗伊斯提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型

    瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落

    瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动

    从本质来讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是瀑布开发名称的由来

    对于经常变化的项目而言,瀑布模型毫无价值

    1.2特点

    1、阶段间具有顺序性和依赖性

    该阶段具有两重含义

    1. 必须等前一阶段的工作完成后,才能开始后一阶段的工作
    2. 前一阶段的输出文档就是后一阶段的输入文档,因此只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果

    2、推迟实现的观点

    对于规模较大的软件项目来说,往往编码开始的越早,最终完成开发所需时间越长。因为前面阶段的工作没做或做的不扎实,过早地考虑进行程序实现,往往导致大量返工,有时甚至发生无法弥补的问题

    瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现

    清楚的区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想

    3、质量保证的观点

    为了保证所开发的软件的质量,在瀑布模型的每一个阶段都应坚持两个重要做法

    1. 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务
    2. 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误

    传统的瀑布模型过于理想化,实际的瀑布模型是带"反馈环"的。如图所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品后再回来继续完成后面阶段的任务

    瀑布模型是文档驱动的模型,遵守这个约束可使软件维护变得比较容易一些,从而显著降低软件预算

    1.3优缺点

    优点:

    • 项目提供了按阶段划分的检查点
    • 当前一阶段完成后,您只需要去关注后续阶段
    • 可在迭代模型中应用瀑布模型

    缺点:

    • 不适合需求模糊或需求经常变动的系统
    • 由于开销的逐步升级问题,它不希望存在早期阶段的反馈
    • 在一个系统完成以前,它无法预测一个新系统引入一个机构的影响
    • 用户可能需要较长等待时间来获得一个可供使用的系统,也许会给用户的信任程度带来影响和打击
    • 最终产品往往反映用户的初始需求而不是最终需求

    1.4客户需求

    对项目而言,是否使用这一模型主要取决于是否能理解客户的需求以及在项目的进程中这些需求的变化程度;对于经常变化的项目而言,瀑布模型毫无价值,可以考虑其他的架构来进行项目管理,比如螺旋模型

    瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

    1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
    2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险
    3. 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果

    按照瀑布模型的阶段划分,软件测试可以分为单元测试集成测试系统测试

     

    二、快速原型模型

    2.1什么是快速原型模型

    快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集

    快速原型模型是增量模型的另一种形式,在开发真实系统之前,迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,在该原型的基础上,逐渐完成整个系统的开发工作

    它允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护

    2.2优缺点

    优点

    • 克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
    • 适合预先不能确切定义需求的软件系统的开发

    缺点

    • 所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下
    • 使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新

    2.3快速原型模型的思想产生、原理及运用方式

    1、思想产生

    在需求分析阶段得到完全、一致、准确、合理的需求说明十分困难

    获得一组基本需求说明后,就快速地使其“实现”,通过原型反馈,加深对系统的理解满足用户基本要求,使用户在试用后对需求说明进行补充和精确化,从而获得合理完整、现实可行的需求说明

    再把快速原型思想用到软件开发的其他阶段,向软件开发的全过程扩展

    先用相对少的成本,较短的周期开发一个简单的、但可以运行的系统原型向用户演示或让用户试用,以便及早澄清并检验一些主要设计策略,在此基础上再开发实际的软件系统

    2、原理

    利用原型辅助软件开发

    经过简单快速分析快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,最终提高软件质量

    3、运用方式

    由于运用原型的目的和方式不同,在使用原型时也采取不同的策略

    • 抛弃策略:将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的
    • 附加策略:将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略

    采用何种形式、何种策略运用快速原型主要取决于软件项目的特点、可供支持的原型开发工具和技术等,根据实际情况的特点决定

    2.4类型

    在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性

    探索型

    这种原型目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性

    实验型

    这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠

    进化型

    这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统

    2.5开发步骤

    1、快速分析

    在分析人员与用户密切配合下,迅速确定系统的基本需求,根据原型需要体现的特征描述基本需求以满足开发原型的需要

    2、构造原型

    在快速分析的基础上,根据基本需求说明尽快实现一个可行的系统

    要求具有强有力的软件工具的支持,并忽略最终系统在某些细节上的要求,主要考虑原型系统能够充分反映所要评价的特性

    3、运行原型

    发现问题,消除误解,开发者与用户充分协调

    4、评价原型

    在运行的基础上,考核评价原型的特性,分析运行效果是否满足用户的愿望,纠正过去交互中的误解与分析中的错误,增添新的要求,并满足因环境变化或用户的新想法引起的系统要求变动,提出全面的修改意见

    5、修改

    根据评价原型的活动结果进行修改

    若原型未满足需求说明的要求,说明对需求说明存在不一致的理解或实现方案不够合理,根据明确的要求迅速修改原型

    快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的

    快速原型的本质是"快速"。开发人员应尽可能地建造出原型系统,以加速软件开发过程,节约软件开发成本

    原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃

     

    三、增量模型

    3.1什么是增量模型

    增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

    使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能

    把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形成的产品必须是可测试的

    瀑布模型或快速原型模型目标是一次就把一个满足所有需求的产品提交给用户

    增量模型把整个软件产品分解成许多个增量构件,分批地逐步向用户提交产品

    3.2特点

    把瀑布模型的顺序特征与快速原型法的迭代特征相结合

    将软件看作一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量

    风险更大的增量模型

    确定用户需求后就着手拟定第一个构件的规格说明文档,完成后规格说明组转向第二个构件的规格说明文档,同时设计组开始涉及第一个构件

    使用该方法将不同的构件并行构建,可能加快工程进度,但将冒构建无法集成到一起的风险

    3.3优缺点

    优点

    1. 能在较短的时间内向用户提交可完成部分工作的产品
    2. 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展
    3. 以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统
    4. 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整

    缺点

    1. 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构
    2. 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性
    3. 如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程

    3.4作用

    1、开发初期的需求定义只是用来确定软件的基本结构,使得开发初期用户只需要对软件需求进行大概的描述;而对于需求的细节性描述,则可以延迟到增量构件开发时进行,以增量构件为单位逐个地进行需求补充。这种方式能够有效适应用户需求的变更

    2、软件系统可以按照增量构件的功能安排开发的优先顺序,并逐个实现和交付使用。不仅有利于用户尽早用上系统,能够更好地适应新的软件环境,而且在以增量方式使用系统的过程中,还能获得对软件系统后续构件的需求经验

    3、软件系统是逐渐扩展的,因此开发者可以通过对诸多构件的开发,逐步积累开发经验。实际上,增量式开发还有利于技术复用,前面构件中设计的算法、采用的技术策略、编写的源码等,都可以应用到后面将要创建的增量构件中去

    4、增量式开发有利于从总体上降低软件项目的技术风险。个别的构件或许不能使用,但一般不会影响到整个系统的正常工作

    5、实际上,在采用增量模型时,具有最高优先权的核心增量构件将会被最先交付,而随着后续构件不断被集成进系统,这个核心构件将会受到最多次数的测试。这意味着软件系统最重要的心脏部分将具有最高的可靠性,这将使得整个软件系统更具健壮性

     

    四、螺旋模型

    4.1什么是螺旋模型

    螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径

    螺旋模型是快速原型模型以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。该模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次。用螺旋模型的软件过程如下

    简化的螺旋模型

    完整的数据模型

     

    图中带箭头的点划线的长度代表当前累计的开发费用,螺旋线的角度值代表开发进度,螺旋线的每个周期对应于一个开发阶段

    图中的四个象限代表了以下活动

    1. 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
    2. 风险分析:分析评估所选方案,考虑如何识别和消除风险
    3. 实施工程:实施软件开发和验证
    4. 客户评估:评价开发工作,提出修正建议,制定下一步计划

    4.2特点

    螺旋模型在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定

    螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用于庞大、复杂并具有高风险的系统

    4.3优缺点

    优点

    1. 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标
    2. 减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险
    3. 在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别

    缺点

    1. 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失
    2. 过多的迭代次数会增加开发成本,延迟提交时间

    4.4限制条件

    1. 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发
    2. 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目
    3. 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

    一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段

    展开全文
  • 原型模型(快速原型模型)2.1 原型模型的基本思想2.2 原型模型的特点2.3原型模型的优点2.4原型模型的缺点2.5 原型模型的应用范围 本文参考Mooc《软件工程基础》—电子科技大学、《软件工程》—陈...

    本文参考Mooc《软件工程基础》—电子科技大学、《软件工程》—陈永、《软件工程》(第四版)—张海藩、《软件测试教程》—贺平

    一.瀑布模型

    1.1瀑布模型的基本思想

    瀑布模型是一种严格按照生命周期定义进行软件开发的过程模型,所以也被经典生命周期模型

    瀑布模型将软件生命周期划分为问题定义、可行性分析、需求分析、软件设计、程序编写、软件测试和运行维护等基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落,故而形象地称为“瀑布模型”。 其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。它是一种被广泛采用的软件开发模型。

    典型的瀑布模型如图所示:

    在这里插入图片描述
    瀑布开发模型中各阶段的主要工作及其相应的质量控制方式如下表所示:
    在这里插入图片描述

    1.2.瀑布模型的特点

    应用瀑布模型进行软件开发过程中,瀑布模型的特点如下:

    (1)阶段间的顺序性和依赖性

    顺序性是指:在瀑布模型软件开发过程中必须等到前一阶段的工作完成以后,才能开始下一阶段的工作。
    依赖性是指:前一阶段的输出文档就是后一阶段的输入文档。因此前一阶段文档的正确性是保证后一阶段工作的前提条件。

    (2)推迟实现的观点

    实践表明,对于规模较大的软件项目,如果前面的准备工作做的不扎实,过早地考虑进行编码实现,往往会导致大量返工,有时甚至会发生无法弥补的错误,带来灾难性后果。采用瀑布模型会强制研发人员按照阶段步骤进行软件设计,避免了一开始就直接进行详细编码的错误做法。编码处于软件开发的中后期,强调了需求分析和系统设计的重要性,体现了推迟实现的观点。如果坚持阶段性的评审,采用瀑布模型可以避免后期大量返工的现象,还可以减少后期维护工作的人力和费用。

    (3)文档驱动推进研发进程

    瀑布模型在每阶段要完成规定的文档。软件开发是许多人共同参加、分工合作的工作,完整而合格的文档是开发人员间联系的媒介,同时是维护时期的重要依据。所以没有完成文档,就被认为没有完成该阶段的工作。 瀑布模型过程中,各个阶段与文档的关系如下图所示:
    在这里插入图片描述
    此外,在瀑布模型的每个阶段都要对已完成的文档进行复审,以便及早发现问题、消除隐患。这是保证软件质量、降低开发成本的重要措施。越是早期潜伏的错误,暴露时间越晚,纠错的代价就越高。

    1.3.瀑布模型的优点

    瀑布模型有以下优点:

    • ①瀑布模型提供了一个框架,使得软件软件开发可以在分析、设计、编码、测试和维护的这个框架下进行,克服了软件开发的随意性;
    • ②推迟了编码实现,强调了需求分析和设计,避免后期大量返工的现象,还可以减少后期维护工作的人力和费用
    • ③当前一阶段完成后,才开始要去关注后续阶段,可以实现阶段性质量保证;
    • ④严格按照瀑布模型进行软件开发,会得到完整的软件配置文档,便于设计和后期维护。

    1.4.瀑布模型的缺点

    瀑布模型有以下缺点:

    • ①工作量大:各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
    • ②开发风险大:由于开发模型是线性的,用户只有在整个过程的末期才能见到开发成果,中间沟通交互环节(反馈)较少,从而增加了用户对开发产品不满意的风险。
    • ③早期错误发现晚:早期的错误可能要等到开发后期测试阶段才能发现,失去了及早纠正的机会,进而带来严重的后果。
    • ④缺乏灵活性:无法解决软件需求不明确和用户需求的变化的问题;不能反映出软件开发过程中的反复性和迭代性。

    1.5 瀑布模型的应用范围

    • 系统需求明确而稳定,需求在开发过程中没有或很少变化的
    • 分析设计人员应对应用领域很熟悉技术成熟
    • 工程管理比较严格
    • 用户的使用环境非常稳定
    • 开发工作对用户参与的要求很低
      如军工,航天,医疗,等领域,或者一些变更少的小项目。

    二. 快速原型模型

    2.1 快速原型模型的基本思想

    鉴于瀑布模型与用户交流不足,无法准确的获取用户真实需求,在软件开发过程中,提出了原型模型。
    快速原型模型是指在软件开发者在获取一组用户基本需求定义后,利用高级软件工具可视化的开发环境,快速地建立一个目标系统的最初版本(可运行的系统),并把它交给用户试用、补充和修改,再进行新版本开发。反复进行这个过程,直到得出系统的 “最优解”,即用户满意为止的一种方法。通过多次与用户交互后,可以获取用户最真实的需求。模型示意图如下:

    在这里插入图片描述
    快速原型模型的开发过程如下:

    • (1)确定用户的基本需求
      由用户提出对新系统的基本要求,如功能、界面的基本形式、所需要的数据、应用范围、运行环境等,开发者根据这些信息估算开发该系统所需的费用,并建立简明的系统模型。

    • (2)构造初始原型
      系统开发人员在明确系统基本要求和功能的基础上,依据计算机模型,以尽可能快的速度尽可能多的开发工具来建造一个结构仿真模型,即快速原型构架。之所以称为原型构架,是因为这样的模型是系统总体结构、子系统以上部分的高层模型。由于要求快速,这一步骤要尽可能使用一些软件工具和原型制造工具,以辅助进行系统开发。

    • (3)运行、评价、修改原型
      快速原型框架建造成后,就要交给用户立即投入试运行,各类人员对其进行试用、检查分析效果。由于构造原型中强调的是快速,省略了许多细节,一定存在许多不合理的部分。所以,在试用中要充分进行开发人员和用户之间的沟通,尤其是对用户提出的不满意的地方进行认真细致的反复迭代,并与用户交流、修改、完善,直到用户满意为止。

    • (3)形成最终的软件系统
      如果用户和开发者对原型比较满意,则将其作为正式原型。然后可以采用其他软件过程开发方法,如瀑布模型进行后续开发; (该模型要结合其它模型进行后续开发)或者经过双方继续进行细致的工作,在正式原型的基础上对细节问题逐个补充、完善、求精、设计、编码,最后形成一个完整的软件系统。

    下图是原型模型结合瀑布模型开发软件的过程:
    在这里插入图片描述

    2.2 原型模型和快速原型模型的区别

    原型模型通常可分为两类:

    • 第一类,原型演示仅是为了获得完整的需求说明,在用户认可后,按生命周期重新开发新产品,这种方法不能直接得到终端的目标系统,它的目的只是和用户交流,它保证了功能暂时牺牲了性能。在用户接受系统规格说明书(SRS)后,会将此类原型丢弃),这一类称为原型模型
    • 第二类,不丢弃原型,而是通过原型的不断增加和扩充,增强式地开发(迭代式),逐步达到产品的要求。总的目的都是为了以后尽量少返工,降低维护费用。这一类是就我们所说的快速原型模型

    快速原型法突出的特点是一个“快”字这与瀑布模型的推迟实现观点正好相反。采用瀑布模型时,软件的需求分析也要在用户和开发人员之间往返讨论,前期需求不足,会导致用户设计出来的产品不满意的现象经常发生。快速原型法就是针对上述情况,采用演示原型(亦称模拟原型)的方法来启发和揭示系统的需求。具体来讲,其主要思想就是*:首先建立一个能够反映用户主要需求的原型,让用户实际使用未来系统的概貌,以便判断哪些功能是符合需求的,哪些方面还要改进,然后将原型反复修改,最终建立起完全符合用户要求的新系统。快速原型系统*则是开发人员向用户提供“模型样品”,用户向开发人员迅速做出反馈,开发人员根据用户反馈及时做出产品修正、补充,最终减少了维护时期的工作量和费用,这正是快速原型法的优越性存在。

    2.3快速原型模型的优点

    • 在开发过程中,开发者更容易得到用户对于已做原型系统的反馈意见
    • 系统开发循序渐进,反复修改,确保较好的用户满意度
    • 开发周期短,费用相对少
    • 尽早发现软件中的错误
    • 支持需求的动态变化

    2.4 快速原型模型的缺点

    • 所选用的开发技术和工具不一定符合主流的发展
    • 快速建立起来的系统加上连续的修稿可能导致原型质量低下
    • 开发过程管理要求高,整个开发过程要经过“修改—评价—再修改”的多次反复;
    • 开发人员易将原型取代系统分析;
    • 如果管理不足将会导致缺乏规范化的文档资料。

    2.5 快速原型模型的应用范围

    快速原型法作为对传统生命周期法的一种改进,由于在研制过程中的前期就有用户的介入与反馈,使得最终系统能更好地适应用户的要求,因而被认为是一种有前途的新方法。但是,在短时间内研发者快速构成系统并快速响应用户提出的修改,对其研发者技术水平和开发环境和工具都有较高要求,从而在一定程度上影响和制约了快速原型法的迅速推广。

    快速原型法适合预先不能确切定于需求的软件系统的开发,也适用于处理业务过程明确、简单以及涉及面窄的小型软件系统。 不适合处理大型、复杂的系统。因为大型复杂的系统难以直接模拟,此外存在大量运算、逻辑性强的处理系统也不便于用原型表示;最后,如果管理基础工作不完善、处理过程不规范也会影响原型法发挥作用。

    展开全文
  • 快速原型模型

    2019-09-29 10:53:14
    什么是快速原型模型 原型是指模拟某种产品的原始模型,在其他产业中经常使用。软件开发中的原型是软件的一个早期可 快速原型模型 运行的版本,它反映了最终系统的重要特性。 快速原型模型又称原型模型,它是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,002
精华内容 2,800
关键字:

原型模型