软测(概念) · 开发模型 · 软件的生命周期 · 瀑布模型 · 螺线模型 · 增量模型 · 迭代模型 · 敏捷模型 · scrum

news2024/11/15 1:39:17

  • 一、开发模型的由来
  • 二、软件的生命周期
  • 三、瀑布模型(Waterfall Model)
  • 四、螺线模型(Spiral Model)
  • 五、增量模型(Incremental Model)
  • 六、迭代模型(Rational UnifiedProcess)
  • 七、敏捷模型(Fig. Agile Model)
  • 八、scrum
    • 敏捷模型中的测试人员

一、开发模型的由来

随着软件工程学科的发展,人们对计算机软件的认识逐渐深入。软件工作的范围不仅仅局限在程序编写,而是扩展到整个软件生命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安装部署、运行维护,直到软件被更新和替换新的版本
软件工程还包括很多技术性的管理工作,如过程管理、产品管理、资源管理和质量管理,这些方面也渐渐的建立起标准和规范。


二、软件的生命周期

软件的生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。
如果把软件看成是有生命的事物,那么软件的生命周期可以分为六个阶段,即 需求分析、计划、设计、编码、测试、运行维护


三、瀑布模型(Waterfall Model)

瀑布模型在软件工程中占有重要地位,是其它所有模型的基础框架
瀑布模型的每一阶段都只执行一次,因此是线性顺序进行的软件开发模式。

优点:

  • 强调开发的阶段性
  • 强调早期计划以及需求调查
  • 强调产品测试

缺点:

  • 依赖于早期进行的唯一一次需求调查,不能适应需求的变化
  • 由于单一的流程,开发中的经验教训不能反馈应用于产品本身
  • 风险往往到后期的测试阶段才能显露,因此失去及早纠正的机会

瀑布模型的一个最大缺陷在于,可以运行的产品很迟才能被看到。
这会给项目带来很大的风险,尤其是在集成的时候。因为如果需求引入的一个缺陷要到测试阶段甚至更后的阶段才能发现,通常会导致前面阶段的工作大面积返工,业界流行的说法是:“集成之日就是爆炸之日”。

尽管瀑布模型存在很大的缺陷,但是目前很多软件企业还是沿用了瀑布模型的线性思想,在这个基础上做出了自己的修改。例如在细化了各个阶段,在某些重点关注的阶段之间掺入了迭代的思想。

对于测试环节来说,测试阶段处于软件实现之后,这意味着必须在代码完成后有足够的时间预留给测试,否则将导致测试不充分,从而把缺陷直接遗留给用户。


四、螺线模型(Spiral Model)

一般在软件开发初期,需求还不是很明确的时候,采用渐进式的开发模式。螺旋模型就是渐进式开发模型的代表之一。

这对于那些规模庞大、复杂度高、风险大的项目尤其适合。这种迭代开发的模式给软件测试带来了新的要求,它不允许有一段独立的测试时间和阶段,测试必须跟着开发的迭代而迭代。因此,回归测试的重要性就不言而喻了。

原理:

其实就是在瀑布模型的基础上,每一步骤后面都加上风险分析。

优点:

  • 强调严格的全过程的风险把控。
  • 强调各个开发阶段的质量。
  • 提供机会,探讨项目是否正确的继续下去。

缺点:

  • 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。
  • 提高了人员、资金和时间的投入。

五、增量模型(Incremental Model)

增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实施之一。

例如:
用户有一个需求,功能包含 a、b、c。
增量模型就是,开发完 a,我就直接上线提供给用户去使用;开发完 c 我就直接上线提供给用户使用;开发完 b 我就直接上线提供给用户使用。


六、迭代模型(Rational UnifiedProcess)

迭代模型经常和增量模型混为一谈,其实两者是有区别的。

增量是逐块建造的概念,例如画一幅人物画,增量先画出人头部,再画身体,再画手脚…

而迭代模型是反复求精的概念,同样是画人物画,迭代是先画出整体轮廓,再勾勒出基本雏形,再细化、着色。

例如:
对于用户的需求,先开发一个基础版本(包含了 a、b、c),但是 a、b、c 的功能比较简陋。接下来我会继续在基础版本上对 a、b、c 功能进行迭代优化。


七、敏捷模型(Fig. Agile Model)

2001年,以Kent Beck、Alistair Cockbum、Ward Cunningham、Martin Fowler等人为首的“轻量”过程派聚集在犹他州的Snowbird,决定把“敏捷”(Agile)作为新的过程家族的名称。

在会议上,他们提出了《敏捷宣言》: 我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工怍,我们形成了如下价值观。

个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更加看重前者

《敏捷宣言》提出:
轻流程,强调人与人之间面对面的高效沟通;
轻文档,重产出可用的软件;
与客户友好的交流;
用户提出需求再过两天,用户又需要替换一个功能。

从中我们可以知道敏捷模型的一个特点:轻流程,轻文档,重目标,重产出。

敏捷开发有很多种,其中 scrum 是比较流行的一种。


八、scrum

scrum 里面的三个角色和五个会议

scrum 由 product owner(产品经理)、scrum master(项目经理)、team(研发团队)组成。

  • 其中 product owner 负责整理 user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • scrum master 负责召开各种会议,协调项目,为研发团队服务。
  • 研发团队由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。

迭代开发

与瀑布不同,scrum 将产品的开发分解为若干个小 sprint(迭代),其周期从 1 周到 4 周不等,但不会超过 4 周。参与的团队成员一般是 5 到 9 人。每期迭代要完成的 user story 是固定的。每次迭代会产生一定的交付。

scrum 的基本流程

产品负责人负责整理用户需求 user story,形成需求代办列表 product backlog。

发布计划会议:product owner 负责讲解 user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的 story 列表,sprint backlog。

迭代计划会议:项目团队对每一个 story 进行任务分解,分解的标准是完成该 story 的所有任务,每个任务都有明确的负责人,并完成工时的初步估计。

每日例会:每天 scrum master 召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。目的为了及时了解项目角度,预知风险,规避风险。

演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队代表向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由 product owner 整理,形成新的 story。

回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,以此达到持续进步的效果。

整个流程示例图如下…

敏捷模型中的测试人员

在敏捷模型开发中,测试人员如何做好自己本身的任务呢?

挑战1:轻文档

挑战2:快速迭代

  1. 测试工作的核心内容是没有改变的,就是不断的找 Bug,只要调整好自己的心态,一切以敏捷的原则为主。
  2. 测试人员不能依赖文档,测试用例的作用减弱,更多的采用思维导图、探索性测试(强调自由度,设计和执行同步,根据测试结果不断调整测试计划)、自动化测试。
  3. 敏捷讲究合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一起研究 Bug 出现的原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

daz ue和maya插件配置

daz ue插件配置用这个插件方便导入材质,毕竟材质球还是挺多的我安装的时候DAZ Install Manager需要定位,没成功就直接用dll放在daz安装里面也可以直接用,daz ue插件放在插件目录daz maya2022插件配置首先用DAZ Install Manager安装daz maya插…

进程间通信之共享内存(简单介绍消息队列和信号量)

进程间通信之共享内存system V共享内存共享内存示意图常见的共享内存操作共享内存数据结构共享内存函数消息队列信号量📌————本章重点————📌 🔗基本掌握system V共享内存的使用方法 🔗了解消息队列🔗了解信号量…

vue v-model的详细介绍

v-model是什么? v-model 是Vue框架的一种内置的API指令,本质是一种语法糖写法。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理 为什么使用v-model? v-model指令可以在表单input、textarea以及select元素上…

Power BI中如何实现移动平均功能

一、移动平均 移动平均,是一种常用的统计分析方法,它是指将一定时间范围内的数据,按一定的时间间间隔进行计算平均,然后将平均值形成一条折线。常用的时间间隔有10天、20天、30天、60天等。 当原数据折线图波动比较大时&#xff…

利用GPAC生成MP4文件

GPAC主要针对学生和内容创作者,代表了一个跨平台的多媒体框架,开发人员可以使用它在 LGPL 许可下制作开源媒体。GPAC多媒体框架兼容范围广泛的流行文件类型,从常见格式(如 AVI、MPEG 和 MOV)到复杂格式(如 MPEG-4 系统或 VRML/X3D)和 360 电影…

哈工大机器学习复习笔记(二)

本篇文章是在参考西瓜书、PPT课件、网络上相关博客等资料的基础上整理出的机器学习复习笔记,希望能给大家的机器学习复习提供帮助。这篇笔记只是复习的一个参考,大家一定要结合书本、PPT来进行复习,有些公式的推导最好能够自己演算一遍。由于…

JVM结构 类加载

类加载 类加载子系统 类加载器子系统负责从文件系统或者网络中加载class文件。classLoadr只负责class文件的加载,至于它是否可以运行,则由Exception Engine(执行引擎)决定。加载类的信息存放于一块成为方法区的内存空间 class fi…

【GPLT 二阶题目集】L2-007 家庭房产

给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产: 编号…

Java创建线程的七种方法,全网最全面总结~

目录 前言 一、继承Thread,重写run方法 二、实现Runnable接口,重写run方法 三、使用匿名内部类创建 Thread 子类对象 四、使用匿名内部类,实现Runnable接口 五、lambda表达式 六、实现Callable接口 七、使用线程池创建线程 前言 属于基…

末端工具重力辨识

辨识工具重力 法一:6点标定 已知,工件重力在世界坐标系的大小为{0,0,−G}\{0,0,-G\}{0,0,−G},假设工件重心在工具坐标系下的坐标为 {Lx,Ly,Lz}\{L_x,L_y,L_z\}{Lx​,Ly​,Lz​},重力在工件的三个坐标轴分量为 {Gx,Gy,Gz}\{G_x,G_y,G_z\}{G…

Docker安装MySQL8数据库

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

为什么要拒绝嵌套代码?

linux 内核的最早作者 linus torvalds 在 linux 内核样式指南 第一节中提到: if you need more than 3 levels of indentation, you’re screwed anyway, and should fix your program. 如果你需要超过3级的缩进,你无论如何都搞砸了,应该修复…

ABBYY15免费照片识别文字识别软件

照片识别文字的软件有哪些?在日常的工作的时候,小伙伴们是不是经常会借助拍摄照片记录一些比较重要的事情或者是一些比较重要的笔记,等回头空闲出来的时候在去整理,那么这时候,如果我们运用好图片识别文字这项技术&…

线性代数篇

主线为花书第二章-线性代数,但其上面一些表述属实费解,于是参考B站3Blue1Brown线性代数和B站同济子豪兄的视频讲解。 先放一句3B1B的话共勉,伙计们不要被数学公式吓到,慢慢钻研,慢慢推肯定能学懂。线性代数这一部分相信…

cannot redeclare block-scoped variable

使用 Vue3.0 的时在模块类中声明方法的时候抛出了如下的异常:cannot redeclare block-scoped variable解决办法检查是否集成了 Vetur 插件,若存在禁用或卸载即可,该插件Vue3.0 的时候会冲突;Vue3.0 集成如下两款即可:名称: TypeScript Vue Plugin (Volar)ID: Vue.vscode-typesc…

Qt 自定义控件 带UI 不带 UI

一般自定义控件原因 有时Qt 现有控件不能满足我们的开发需求,这时候就需要我们进行自定义控件的使用,自定义控件,这大大提高了设计UI的通用性,程序利用,封装; Part1 easy one 继续 Lab 自定义Label控件:文本太长省略…

机械设备管理系统如何帮助企业做好成本核算管理?

随着多元化市场经济的深入发展,机械设备制造企业面临的竞争压力也越来越大,企业要想在激烈的市场环境中生存下去,就得不断提高竞争力。企业提高自身竞争能力最为重要一个途径便是不断提高企业的成本核算及管控能力,降低企业经营成…

java使用导出百万级别数据

用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会常报OOM错误, 这时候调整JVM的配置参数也不是一个好对策(注:jdk在32位系统中支持的内存不能超过2个G,而在64位中没有限制&a…

栈、堆、全局区/静态存储区、常量区、代码段、到底是什么?

一、程序运行内存分布图 我们知道一个由我们编写好的程序,运行时,我们的程序中写的代码,定义的变量,写的函数、for 循环等等,这些运行时都分布在内存中的哪里吗? 一下是一个程序运行时 内存的各个区域的分…

C语言字符串指针(指向字符串的指针)详解

C语言中没有特定的字符串类型&#xff0c;我们通常是将字符串放在一个字符数组中&#xff0c;这里演示一下&#xff1a;#include<stdio.h> #include<string.h>intmain(){ char str[]"http://csdn.net"; int len strlen(str), i; //直接输出字符串 printf…