浅谈敏捷开发的思维

什么是敏捷

Agile(敏捷)来源于敏捷宣言,宣言明确指出,“敏捷”:

  • 不是一种方法论
  • 也不是开发软件的具体方法
  • 更不是一个框架或者过程

“敏捷”是一套价值观(理念)和原则,帮助团队在软件开发过程中更好地做出决策。


 什么是敏捷开发

        简而言之,就是遵循了“敏捷”这一开发原则的开发方法。

        “敏捷并不意味着一味强调速度,而是轻量和高效。”

「百度百科」是这样说的敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

思考🤔:对于一个项目工程,多人团队合作分工提交代码,按照敏捷开发思维,每个人员的代码应该相对独立可提测发板,而没有互相强依赖关系。不能应该一个人代码报风险阻塞就影响其他人,造成团队效率降低。举一反三,小到每一个产品需求,涉及到多个业务模块,也应该把需求拆分独立,抓住核心要点即可。大到团队管理,也是一样道理,不能一个部门delay其他部门都进入阻塞状态(停工等待)。

敏捷开发流程如下:

 

敏捷宣言

  • 个体和互动   高于    流程和工具
  • 工作的软件   高于    详尽的文档
  • 客户合作       高于    合同谈判
  • 响应变化       高于    遵循计划

注:这并不意味摒弃了右边的原则,而是应该更加注重左边的原则。

比如就“简单”和“尽早交付”而言:
当我们在构建某个功能时,发现其可能会需要数据库支持,一般情况下我们会去构建数据库并为其编码,然而敏捷认为:为这个功能构建数据库就意味着要浪费很多时间,软件就不得不延迟交付给客户,如果能找到一种替代的简单方法完成该功能,那就更符合我的敏捷原则。

敏捷开发的核心价值是“轻量、高效”,但不要形而上学,为了追求高效而删繁就简,应该保持在架构背景和长远规范的合理范围内去做敏捷开发。


瀑布模型开发

        瀑布型是最常见的结构开发方法。规定了计划、需求分析、设计、编码、测试的自上而下相互衔接的结构化开发方法,

各阶段介绍
需求分析

入口条件:项目计划书已通过评审

出口条件:软件需求规格说明书通过评审

操作过程:根据项目经理或者开发代表提出或者了解的用户需求,进行分析确认,由项目经理和系统分析人员共同指定需求规格说明书,主要说明软件的运行环境、开发工具以及详细的功能和性能需求。

设计

入口条件:软件需求规格说明书已通过评审

出口条件:软件设计说明书通过评审(可分为概要设计和详细设计)

操作过程:根据软件的需求规格说明书,将软件分解到功能模块一级,并定义好全局变量和全局数据以及各个模块之间的接口描述(一般可以将此整理成为概要说明书)。并根据模块划分,定义好实现每一个模块功能所需的结构、变量以及函数,并对每一个函数提供基于伪代码的实现(这些可拆分为详细设计说明书)。将这些形成软件设计说明书。

编码实现

入口条件:设计说明书已通过评审

出口条件:代码通过评审和编译检查,并通过运行测试

操作过程:开发人员根据详细设计说明书定义的函数实现过程,依照一定的编码规则,编写出软件的实现代码,然后使用编译检查工具对其进行编译检查

测试

入口条件:代码通过评审和编译检查,并通过运行的冒烟测试

出口条件:软件的功能和性能通过验证

操作过程:测试人员编写系统测试用例,并根据测试用例,在实际的系统运行环境中,验证软件的功能和性能(可分为单元测试、集成测试和系统测试)

优缺点
优点:结构清晰

缺点:测试在项目生命周期的最后阶段进行,当系统出现严重 Bug 并且修改代价很大时,就会无可避免的推迟项目提交日期。而且瀑布模型使得开发中的很多关键成员例如开发、测试处于长期空闲状态。测试人员由于最后才开始介入测试,会因为没有充分的准备而导致测试的缺失和不够深入



 
总结:在理解了“敏捷”的价值和原则后,将其带入到软件开发过程中做出正确的决策,就是所谓的敏捷开发了。

 

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

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

相关文章

PPO 跑CartPole-v1

gym-0.26.2 cartPole-v1 参考动手学强化学习书中的代码,并做了一些修改 代码 import gym import torch import torch.nn as nn import torch.nn.functional as F import numpy as np import matplotlib.pyplot as plt from tqdm import tqdmclass PolicyNet(nn.Module):def __…

HTML--JavaScript--语法基础

变量与常量 这个基本上没啥问题 变量命名规则: 变量由字母、数字、下划线、$组成,且变量第一个字符不能为数字 变量不能是系统关键字和保留字 语法: var 变量名 值;所有Javacript变量都由var声明 定义赋值字符串: …

GaussDB(DWS)查询优化技术大揭秘

GaussDB(DWS)查询优化技术大揭秘 大数据时代,数据量呈爆发式增长,经常面临百亿、千亿数据查询场景,当数据仓库数据量较大、SQL语句执行效率低时,数据仓库性能会受到影响。本文将深入讲解在GaussDB(DWS)中如何进行表结构设计&#…

【Web】websocket应用的是哪个协议

🍎个人博客:个人主页 🏆个人专栏:Web ⛳️ 功不唐捐,玉汝于成 前言 在当今互联网时代,实时性和即时通讯成为网络应用日益重要的一部分。WebSocket 协议作为一种创新性的通信协议,极大地改善了…

C语言——编译和链接

(图片由AI生成) 0.前言 C语言是最受欢迎的编程语言之一,以其接近硬件的能力和高效性而闻名。理解C语言的编译和链接过程对于深入了解其运行原理至关重要。本文将详细介绍C语言的翻译环境和运行环境,重点关注编译和链接的各个阶段…

Architecture Lab:预备知识2【汇编call/leave/ret指令、CS:APP练习4.4】

chap4的练习4.4(page.255)让用Y86-64实现rsum(递归求数组元素之和),提示为:先得到x86-64汇编代码,然后转换成Y86-64的 这是rsum的c实现: long rsum(long *start, long count) {if …

【面试合集】说说微信小程序的发布流程?

面试官:说说微信小程序的发布流程? 一、背景 在中大型的公司里,人员的分工非常仔细,一般会有不同岗位角色的员工同时参与同一个小程序项目。为此,小程序平台设计了不同的权限管理使得项目管理者可以更加高效管理整个团…

微软推出付费版Copilot

关注卢松松,会经常给你分享一些我的经验和观点。 微软已经超越苹果,成了全球市值最高的公司,其他公司都因为AI大裁员,而微软正好相反,当然这个原因很简单:就是微软强制把AI全面接入到系统里来了。而Copilot…

Mac系统下,保姆级Jenkins自动化部署Android

一、Jenkins自动化部署 1、安装jenkins 官网:macOS Installers for Jenkins LTS 选择macOS brew install jenkins-lts 安装最新: brew install jenkins-lts 启动jenkins服务: brew services start jenkins-lts 重启jenkins服务: brew services restart jenkin…

web开发学习笔记(2.js)

1.引入 2.js的两种引入方式 3.输出语句 4.全等运算符 5.定义函数 6.数组 7.数组属性 8.字符串对象的对应方法 9.自定义对象 10.json对象 11.bom属性 12.window属性 13.定时刷新时间 14.跳转网址 15.DOM文档对象模型 16.获取DOM对象,根据DOM对象来操作网页 如下图…

基于杂交PSO算法的风光储微网日前优化调度(MATLAB实现)

微网中包含:风电、光伏、储能、微型燃气轮机,以最小化电网购电成本、光伏风机的维护成本、蓄电池充放电维护成本、燃气轮机运行成本及污染气体治理成本为目标,综合考虑:功率平衡约束、燃气轮机爬坡约束、电网交换功率约束、储能装…

【GCC】6 接收端实现:周期构造RTCP反馈包

基于m98代码。GCC涉及的代码,可能位于:webrtc/modules/remote_bitrate_estimator webrtc/modules/congestion_controller webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc webrtc 之 RemoteEstimatorProxy 对 remote_bitrate_estimator 的 RemoteEstimato…

Vue 富文本实现内容项目倒序

应用场景: 比如写计划和待办事项,内容少还好,内容多了最新的内容就放在下面了,每次打开要滚动到最后才能看到,这时可以使用倒序把最新的排在最前面。 倒序前: 倒序后: 倒序代码: …

设计模式⑥ :访问数据结构

文章目录 一、前言二、Visitor 模式1. 介绍2. 应用3. 总结 三、Chain of Responsibility 模式1. 介绍2. 应用3. 总结 参考内容 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书&q…

ElasticSearch概述+SpringBoot 集成ES

ES概述 开源的、高扩展的、分布式全文检索引擎【站内搜索】 解决问题 1.搜索词是一个整体时,不能拆分(mysql整体连续) 2.效率会低,不会用到索引(mysql索引失效) 解决方式 进行数据的存储(只存储…

【51单片机系列】继电器使用

文章来源:《零起点学Proteus单片机仿真技术》。 本文是关于继电器使用相关内容。 继电器广泛应用在工业控制中,通过继电器对其他大电流的电器进行控制。 继电器控制原理图如下。继电器部分包括控制线圈和3个引脚,A引脚接电源,B引…

排序算法9----计数排序(C)

计数排序是一种非比较排序,不比较大小 。 1、思想 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 2、步骤 1、统计数据:统计每个数据出现了多少次。(建立一个count数组,范围从[MIN,MAX],MAX代表arr中…

.Net 8.0 Web API Controllers 添加到 windows 服务

示例源码下载:https://download.csdn.net/download/hefeng_aspnet/88747022 创建 Windows 服务的方法之一是从工作线程服务模板开始。 但是,如果您希望能够让它托管 API 控制器(也许是为了查看它正在运行的进程的状态)&#xff0…

深入浅出Spring AOP

第1章:引言 大家好,我是小黑,咱们今天要聊的是Java中Spring框架的AOP(面向切面编程)。对于程序员来说,理解AOP对于掌握Spring框架来说是超级关键的。它像是魔法一样,能让咱们在不改变原有代码的…

git基础知识

简述 git 的安装配置、工作区域划分、文件类型、基本命令。 基础安装与配置 基于 WSL 的 Ubuntu 下的 git 打开或关闭Windows功能->Hyper-V、Virtual Machine Platform、Windows Subsystem for Linux # 1.必须运行 Windows 10 版本 2004 及更高版本(内部版本 …