当前位置: 首页 > news >正文

软件的开发模型

目录

1.基本概念

2.软件开发模型的分类

1.瀑布模型

2.原型模型

3.演化模型

4.增量模型

5.螺旋模型

6.V模型

7.喷泉模型

8.快速开发模型(RAD)

9.构件开发模型(CBSD)

10.RUP统一过程开发模型

1.RUP的特点

2.RUP的阶段

3.RUP的优缺点

11.敏捷开发方法

1.敏捷开发的原则

2.12个最佳实践

3.敏捷开发优缺点


1.基本概念

开发模型是软件开发过程中的开发体系,指导思想。

2.软件开发模型的分类

软件开发模型包含瀑布模型,原型模型,增量模型,演化模型,螺旋模型,V模型,统一过程RUP,敏捷开发方法。

1.瀑布模型

结构化方法中的一种模型,现在用的比较少了,因为新项目使用瀑布模型风险比较高,失败几率较大。

瀑布模型的流程分为软件计划,需求分析,软件设计,软件编码,程序测试,运行维护阶段。

为什么说瀑布模型在新项目中容易失败呢?

因为在新项目中需求难以明确,最后做完用户看到发现和自己想的不一样,又得重新进行需求分析等阶段,最终项目超时。所以瀑布模型使用于需求明确的项目或者二次开发项目。当然也可以结合原型模型一起使用。

2.原型模型

原型模型是在项目初期,快速构建一个简易的系统,用来和用户明确需求,适用于需求不明确的项目。

3.演化模型

演化模型是在原型模型之上不断演化成最终产品的方式。

4.增量模型

增量模型是结构化方法中模型的一种,其思想是先做一部分核心模块然后给用户看确认没问题,再做一部分模块,一直迭代增量开发,每一个增量都是一个可操作的系统,这种方式项目不会做到最后发现和用户需求不一致的情况。

5.螺旋模型

螺旋模型是多个模型的组合,包括原型模型,演化模型,增量模型,因其形状是螺旋型,一圈一圈的出来,所以叫做螺旋模型,其最显著的特征是引入了风险分析。

6.V模型

V模型是一种强调测试的模型,其型像一个V字所以叫做V模型,V的左边是需求分析->概要设计->详细设计->软件编程,V的右边是单元测试->集成测试->系统测试->验收测试

在需求分析阶段会写验收测试和系统测试的测试计划,在概要设计阶段写集成测试的测试计划,在详细设计阶段写单元测试的测试计划,强调测试提前,测试贯穿始终,而不是最后再进行测试,这样可以提前发现问题。

7.喷泉模型

喷泉模型是面向对象的一种模型,出现的比较早的一种面向对象模型,其有着一般面向对象模型的特点,迭代,无间隙。

8.快速开发模型(RAD)

RAD,快速开发模型,是瀑布模型和构件开发模型(CBSD)组合形成的模型,它的特点是快速开发应用,例如界面拖拽式开发。

9.构件开发模型(CBSD)

构件开发模型(CBSD),现在应用的比较广泛,它的思路是把各个功能模块做成标准构建,构建完成之后进行构件组装得到我们需要的系统,因其构件库的建立使得软件的复用性得到很大的提高,复用性提高就会带来项目周期的缩短,成本的降低,可靠性的提升。

其分为需求分析和定义,软件架构设计,构件库建立,应用软件构建,测试和发布。

10.RUP统一过程开发模型

RUP统一过程开发模型是一种面向对象的开发模型,适合大型项目的开发,现在比较流行。

1.RUP的特点

用例驱动,以架构为中心,迭代和增量

  • 用例驱动,简单来说用例就是系统的一个小的功能,在系统分析和系统设计中,我们把系统分解成很多小的单元,这些单元就是用例,然后我们对这些单元进行开发,用例贯穿整个软件的声明周期,在需求分析阶段,客户对用例进行描述。在设计阶段,架构师对用例进行分析。开发阶段,编程人员对用例进行实现。测试阶段,测试人员对用例进行验证。
  • 以架构为中心,统一过程强调把架构设计好,架构是系统开发中的一个重要组成部分,在设计过程中,必须完成对技术和运行平台的选取,整个项目的框架设计,公共组件的设计,还必须完成对可靠性,可用性,可扩展性,安全性,伸缩性等提出可行的解决方案,设计好之后我们就可以往里面填充构件,完成系统的开发。
  • 迭代和增量,迭代是指开发形成一个环状,每个环状会有一些增量的东西,每走一轮就是迭代和增量的过程。

2.RUP的阶段

RUP的软件过程是一个迭代的过程,通过初始,细化,构建,交付四个阶段就是一个周期,每个周期产生一代软件,循环迭代下去演化成最终的版本,直至退役。

  • 初始阶段:确定项目范围和边界,识别系统的关键用例,展现系统的候选架构,估计项目费用和时间,评估系统的项目风险。
  • 细化阶段:确定系统架构,选择构件。
  • 构建阶段:开发剩余的构建和应用程序功能,构建组装形成系统。
  • 交付阶段:beta测试,用户文档,用户培训,发布版本,确定新系统。

3.RUP的优缺点

优点

  1. RUP将项目管理,业务建模,分析和设计等统一起来,贯穿整个软件开发过程。
  2. 为团队成员提供了使用准则,模板和工具指导,形成最佳实现方案,并基于共同的基础知识,使所有团队成员思想统一,沟通更易,这是项目成功的关键因素。
  3. 增强软件开发人员的预见性,提高了软件质量,缩短项目时间。
  4. RUP可用于所有类型的软件系统开发,应用广泛。

缺点

过于庞大和复杂,不能适应需求快速变化,每个需求变更都要经过复杂的过程和额外的工作,对于小的项目和公司,使用敏捷方法会更合适。

11.敏捷开发方法

敏捷开发方法是一种比较新的开发方法,适合中小项目,强调小步快跑,快速迭代。

发展历程:在最初我们还没有开发方法,开发模型的时候,我们开发的软件质量很难保证,但随着软件工程的兴起,越来越多的开发方法,开发模型,越来越多的开发文档及规范,开发人员的工作也越来越多,需要写很多的文档,这时候敏捷开发出现了,其思想就是给开发人员减负,抛弃不必须要的文档及流程,采用小步快跑,快速迭代的方式进行开发。

敏捷开发不是一个开发模型而是一组开发模型。包含自适应开发,水晶方法,特征驱动开发,SCRUM,极限编程。

1.敏捷开发的原则

五大原则

  • 快速反馈
  • 简单性假设
  • 逐步修改
  • 提倡更改
  • 优质工作

基本原则

  • 短平快的会议
  • 小型版本发布
  • 较少的文档
  • 合作为重
  • 客户直接参与
  • 自动化测试
  • 适应性计划调整
  • 结对编程
  • 测试驱动开发
  • 持续的集成
  • 重构

2.12个最佳实践

  • 计划游戏,像游戏一样让用户参与进来
  • 小型版本
  • 结对编程,2个在一起开发,一人开发一人审查
  • 持续集成
  • 重构
  • 隐喻,用比喻的方式和用户描述问题
  • 测试先行
  • 简单设计
  • 现场客户
  • 编程标准
  • 集体代码所有制
  • 每周工作40小时,不加班

3.敏捷开发优缺点

优点:可以快速开发出基线版本,快速可持续的开发速度,能快速响应市场需求变化,客户前期满意度高。

缺点:需要团队中有经验高的人,不然容易遇到瓶颈,因为对文档要求精简,所以人员流通大会带来系统维护困难。

相关文章:

  • 基于C++MFC的活塞环外观表面缺陷机器视觉检测系统
  • 操作系统漏洞利用思路
  • 声学模型(语音识别中的)--学习笔记
  • Python采集《惊奇先生》, 下载你想看的高质量漫画
  • rust的所有权与引用
  • 大前端CPU优化技术--NEON intrinsics进阶
  • 【每日一读】Policy-GNN: Aggregation Optimization for Graph Neural Networks
  • 每日三题 9.26
  • 第1章Python语言基础-1.4循环结构(一)
  • LeetCode - 解题笔记 -202- Happy Number
  • vue3组件通信实例
  • LeetCode刷题第4周小结
  • python自动化测试——unittest二次开发之自定义测试用例执行器和测试结果记录器(二)
  • fastapi访问/docs接口,页面空白
  • 《Python 计算机视觉编程》学习笔记(二)
  • AWS实战 - 利用IAM对S3做访问控制
  •  D - 粉碎叛乱F - 其他起义
  • HashMap ConcurrentHashMap
  • Java深入 - 深入理解Java集合
  • JSDuck 与 AngularJS 融合技巧
  • js递归,无限分级树形折叠菜单
  • orm2 中文文档 3.1 模型属性
  • V4L2视频输入框架概述
  • Vue2 SSR 的优化之旅
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 让你的分享飞起来——极光推出社会化分享组件
  • 微信公众号开发小记——5.python微信红包
  • 一道面试题引发的“血案”
  • 终端用户监控:真实用户监控还是模拟监控?
  • 转载:[译] 内容加速黑科技趣谈
  • Python 之网络式编程
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 我们雇佣了一只大猴子...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (1)虚拟机的安装与使用,linux系统安装
  • (3)选择元素——(17)练习(Exercises)
  • (C#)一个最简单的链表类
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)c52学习之旅-简单了解单片机
  • (二)fiber的基本认识
  • (二)springcloud实战之config配置中心
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (过滤器)Filter和(监听器)listener
  • (实战篇)如何缓存数据
  • (一)RocketMQ初步认识
  • .cfg\.dat\.mak(持续补充)
  • .net 4.0发布后不能正常显示图片问题
  • .NET 材料检测系统崩溃分析