ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

软件构造:软件的开发模型

2022-06-12 00:31:48  阅读:133  来源: 互联网

标签:迭代 模型 构造 开发 版本 增量 软件


一、软件的开发模型

    这一部分主要介绍几种描述软件开发过程的开发模型,包括传统的软件开发过程模型和现代的敏捷开发。软件开发的步骤非常复杂,包括系统设计、软件设计、编码、测试、发布、维护等许多环节。如果想要系统地、全面地、无遗漏地开发一款软件,我们最好来了解一下软件开发的几种模型。传统开发模型包括两种基本类型:线性过程和迭代过程。我们需要根据开发过程中的用户参与程度、开发效率、管理复杂度、开发出的软件的质量等因素来选择合适的开发过程模型。接下来我们来具体介绍几种模型。

1. 瀑布模型:

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

    特点:线性推进、整体推进、非迭代

    优点:管理简单

    缺点:无法适应需求的增加或变化

2.增量模型:

    增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。

    特点:线性推进、增量式(多个瀑布的串行)、非迭代

    优点:比较容易适应需求的增加

3.V-Model:

    V模型可以看作是瀑布模型的优化,它依然是线性推进的,瀑布模型中存在的问题大多在V-Model中也存在。V模型中每个开发阶段都有相应的测试对其进行验证,但是测试与开发是串行的而非并行的,也就是说测试需要等到开发完成后再开始。

4.原型过程\迭代模型:

    迭代模型是RUP推荐的周期模型。被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。也就是对产品开发的每个活动、阶段或子阶段进行迭代。

    特点:迭代推进

    优点:开发质量高

    缺点:时间代价高

5.螺旋模型:

    即根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称之为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。采用演化模型的开发过程,实际上就是从初始的原型逐步演化成最终软件产品的过程。演化模型特别适用于对软件需求缺乏准确认识的情况。

6.敏捷开发:

    敏捷开发即通过快速迭代和小规模的持续改进,以快速适应变化。敏捷宣言包括四个维度:

        a.个体和互动高于流程和工具

   b.工作的软件高于详尽的文档

        c.客户合作高于合同谈判

        d.响应变化高于遵循计划

     敏捷=增量+迭代,每次迭代处理一个小规模增量

二、软件配置管理和版本控制

1.软件配置管理(SCM):

    软件配置管理的作用是追踪和控制软件的变化,包括版本控制和软件配置项。其中软件配置项(SCI)是软件中发生变化的基本单元(例如:文件和行)

2.版本控制(VCS)

    a.版本控制中的术语:

        仓库(Repository):本地或远程的配置管理数据库(CMDB)

        工作拷贝(Working copy):再开发者本地机器上的一份项目拷贝

        文件(File):一个独立的配置项

        版本(Version):在某个特定时间点的所有文件的共同状态

        变化(Change/Diff):即code churn,两个版本之间的差异

        head:程序员正在其上工作的版本

    b.版本控制分类:

        本地版本控制系统:仓库存储于开发者本地机器,无法共享和协作

        集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作

        分布式版本控制系统:仓库存储于独立的服务器同时也存在每个开发者的本地机器(如Git)

 

 

    

 

    

标签:迭代,模型,构造,开发,版本,增量,软件
来源: https://www.cnblogs.com/mzh2017/p/16367214.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有