16 敏捷开发实践(1)
-
敏捷方法:是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。
-
敏捷开发:是一种以人为核心、迭代、循序渐进的开发方法。
-
敏捷实践:精益软件开发(LSD)、SCRUM、KanBan、极限编程(XP)
敏捷实践简介
精益软件开发(LSD)
在创造价值的目标下,通过改良流程不断地消除浪费。现被广泛用于生产制造管理、IT系统建设。
精益开发的基本原则:
-
消除浪费:将所有的时间花在能够增加客户价值的事情上。
-
推迟决策:保持可选方案的开放性,但时间不能过长。
-
加强学习:通过短迭代周期、重构、集成测试和频繁的客户反馈会议增强学习。
-
快速交付:短期迭代或小批量立即交付价值,促进有效的决策制定。
-
打造精品:使用恰当的方法确保质量,如构建自动化测试、安装和持续集成。
-
授权团队:精益专注于团队,让创造增值的员工充分发挥自己的潜力。
-
优化整体:快速试错,快速学习
Scrum
Scrum一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程,强调团队的自组织和跨功能性。一般由多个Sprint(迭代冲刺)组成,每个Sprint长度一般为2-4周。具体介绍见下一篇:「17 敏捷开发-Scrum(2)」。
-
三个角色:产品所有者(Product Owner), Scrum Master,开发团队(Team)。
-
核心:Product Backlog(产品待办事项)、Sprint Backlog(迭代待办事项)、迭代目标。
-
流程:需求梳理、Sprint Plan(迭代计划)、Sprint (迭代)、Daily Scrum(每日站会)、Sprint Review(迭代评审)和 Sprint Retrospective(迭代回顾)
-
五个会议:待办事项整理会议(Backlog Grooming Meeting)、迭代计划会议(Sprint Planning Meeting)、每日站会(Daily Meeting)、评审会(Review Meeting)、回顾会(Retrospective Meeting)
Kanban
Kanban 是把敏捷的过程和产品进行可视化的方法。把过程中的协作、分工、范围、工作、需求、进度、速度、提交物等直观地展现出来。且通过限制「进行中」的任务数量来保持工作流畅。
-
基本看板三步工作流程:「待办」、「进行中」、「完成」。
-
在制品 (WIP): 限制设定了工作流中每个状态所能允许的最大制品量。限制在制品数量更易于发现团队工作流中的低效率现象。
-
看板卡片:通过帮助团队成员之间信息共享。
极限编程(XP)
一种基于频繁交付周期的软件开发方法,强调团队协作、快速反馈和持续改进。
-
方法核心实践:测试驱动开发(TDD)、持续集成(CI)、小版本发布和团队协作。
-
核心价值观:沟通、简洁、反馈、勇气、尊重。
敏捷开发的优势
-
加速交付:注重迭代开发和快速响应变化,更快地交付。
-
更灵活项目管理:允许在项目进行中灵活调整计划和需求,以更好地应对变化的市场和技术环境。
-
增强客户满意度:强调与客户的密切合作和持续反馈,有助于团队更好地理解客户需求并及时调整开发方向,从而提高客户满意度。
-
促进团队协作:强调团队协作和自组织,有助于激发团队成员的创造力和责任感,提高工作效率和质量。
敏捷开发的挑战
-
资源规划难:并不是一开始知道产品“最终的样子”,是在过程中挖掘用户需求逐渐知道终局状态,给前期规划带来很大挑战。
-
有效度量难:敏捷是以增量的方式交付,边走边看意味着开始如果设置了KPI,这跨周期的开发进度使得衡量进度相对困难。
-
必要文档缺少或分散:频繁交付会导致成员依赖于讨论,缺少文档支撑,一些原型设计、UI设计、需求文档分散于各个迭代,不利于后期维护和交接。
敏捷宣言 12条原则
-
为满足客户,尽早并持续交付高价值软件。
-
积极面对需求变化,即使是在软件迭代后期,敏捷方法依然是帮助客户获得市场竞争优势的重要手段。
-
频繁交付可用的软件,交付周期越短越好。
-
在项目过程中,业务人员、开发人员应当保持高度合作关系。
-
为软件开发人员提供必要的环境和技术支持。
-
保证高效的面对面交谈机会。
-
软件可用性是衡量软件开发进度的首要标准。
-
敏捷流程倡导可持续开发。软件供应的甲方和乙方要保持长期稳定的合作关系。
-
持续地追求技术卓越和良好的设计,增强敏捷能力。
-
简单是敏捷流程的根本,尽最大可能减少不必要的工作。
-
强调软件开发过程需要形成最佳架构、需求和设计方案。
-
软件开发团队要以提升效率为主。
相关文章:
16 敏捷开发实践(1)
敏捷方法:是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。 敏捷开发:是一种以人为核心、迭代、循序渐进的开发方法。 敏捷实践:精益软件开发(LSD&#x…...
如何使用虚拟机如何安装 Kali Linux ?
1.下载虚拟机:https://www.virtualbox.org/wiki/Downloads 选择你的系统版本 2.下载kali linux系统镜像:https://www.kali.org/get-kali/#kali-virtual-machines 全部下载完成后,我们会得到以下文件! 1.压缩Kali Linux压缩包 2.安…...
Yarn UI 时间问题,相差8小时
位置 $HADOOP_HOME/share/hadoop/yarn/hadoop-yarn-common-2.6.1.jar 查看 jar tf hadoop-yarn-common-2.6.1.jar |grep yarn.dt.plugins.js webapps/static/yarn.dt.plugins.js 解压 jar -xvf hadoop-yarn-common-2.6.1.jar webapps/static/yarn.dt.plugins.js inflated: we…...
【JavaWeb项目】——外卖订餐系统之登入、登入后显示餐品信息、用户注册、注销部分
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
怎么保护电脑文件夹?文件夹保护方法大盘点
文件夹是管理电脑数据的重要工具,可以有效避免数据混乱。而为了避免文件夹数据泄露,我们需要严格保护文件夹。下面我们就来盘点一下文件夹的保护方法。 文件夹隐藏 隐藏文件夹是一种简单有效的保护方式,通过隐藏文件夹来避免其他人发现&…...
Temporal(时效)模式01
Andy Carlson, Sharon Estepp, Martin Fowler 著,透明 译 抽象 在面向对象设计中,我们不断使用“对象”(object)这个词。对象不仅仅用来表现真实世界中存在的物件,它们也被用来表现那些曾经存在但已经消失了的物件&…...
C语言 -- 动态内存管理
C语言 -- 动态内存管理 1. 为什么要有动态内存分配2. malloc 和 free2.1 malloc2.2 free 3. calloc 和 realloc3.1 calloc3.2 realloc 4. 常见的动态内存的错误4.1 对NULL指针的解引用操作4.2 对动态开辟空间的越界访问4.3 对非动态开辟内存使用free释放4.4 使用free释放一块动…...
docker 篇
简单描述下,有时候真的要熟练,否者上了生产真的不知所措。 背景:有个项目上线了,依赖的项目没有上线,因此需要紧急发布,发现:打包环境有问题,第一、架构不一致,第二、环…...
汽车、能源、烟草、电力行业洞见:TDengine 用户大会亮点荟萃
近年来,随着物联网、车联网、工业互联网等前沿技术的迅猛发展,全球数据量呈指数级增长。作为大数据的一个重要组成部分,时序数据因其在实时监控、预测分析和智能决策中的独特优势,正逐步成为数字化转型的关键要素。尤其在 AI 时代…...
从零开始编写一个Chrome插件:详细教程
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…...
photoshop学习笔记——选区3 快速选择工具
快速选择工具 W shift W 在3种快速选择工具之间切换 对象选择工具 photoshop CC中没有这个工具,利用AI,将款选中的对象快速的提取选区,测试了一下,选区制作的非常nice快速选择工具 跟磁性套索类似,自动识别颜色相似…...
Centos7下安装配置最新版本Jenkins
1、基础环境配置 1.1 服务器下载Jenkins安装包 下载地址:Download and deploy 下载命令:wget https://get.jenkins.io/war-stable/2.452.3/jenkins.war 1.2 服务器安装配置JDK Jenkins 是基于 Java 语言开发的,因此需要 Java 运行环境支…...
c++ 构造函数与析构函数
本文参考菜鸟教程,仅作笔记用。 构造函数 构造函数(Constructor)是一种特殊的方法,用于在创建对象时进行初始化操作。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。在面…...
Lc63---1859将句子排序(排序)---Java版(未写完)
1.题目描述 2.思路 (1)首先将句子按空格分割成若干单词。 (2)每个单词的最后一个字符是它的位置索引。我们可以通过这个索引将单词恢复到正确的位置。 (3)按照单词的索引顺序排序这些单词。 (4…...
centos7-8/redhat7-8一键安装配置vsftp服务
1.脚本介绍 1.1.介绍: linux下一键安装及配置vsftpd服务 ,通过执行install.sh脚本,脚本会根据参数区域的值执行安装和配置vsftp服务,安装后会创建一个默认ftp用户wangxf密码wangxf2023 1、支持自定义安装(更改脚本内参数值) 2、…...
7月24日JavaSE学习笔记
序列化版本控制 序列化:将内存对象转换成序列(流)的过程 反序列化:将对象序列读入程序,转换成对象的方式;反序列化的对象是一个新的对象。 serialVersionUID 是一个类的序列化版本号 private static fin…...
微信小程序教程008:事件绑定
文章目录 事件绑定1、什么是事件2、小程序中常用事件3、事件对象的属性列表4、target和currentTarget的区别5、bindtap的语法格式6、在事件处理函数中为data中的数据赋值7、事件传参数8、bind:input语法格式9、实现文本框和data之间的数据同步事件绑定 1、什么是事件 事件是渲…...
企业级-实现Nginx的静态文件服务器映射
作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 开发人员往往会经常需要通过浏览器下载文件、图片或者PDF或者缩略图等,这时候我们可以根据…...
CTF Web SQL注入 10000字详解
这里写目录标题 涉及的数据库知识unionorder bydatabase()information_schemalimit--空格注释replaceinto outfilelikeGROUP BYHAVINGGROUP BY、HAVING、WHERE之间的关系regexp 原理信息收集操作系统数据库判断注入点注入点类型POST注入数字型注入字符型注入搜索型注入Insert/u…...
动态SLAM:如何判断一个特征是动态特征(对极几何)
文章目录 1.什么是极线、极点和极面2.如何判断其为动态点特征3.如何判断其为动态线特征 1.什么是极线、极点和极面 由图可知,C1,C2,X(X1,X2)组成了一个三角平面,这个三角所在的平面就是极面 在这个极平面中,和成像平面相交的线是极线…...
25GbE以太网:数据中心服务器接入的技术革命与演进逻辑
1. 项目概述:25GbE的诞生与数据中心变革如果你在2014年前后关注数据中心网络,可能会觉得以太网速率的发展路径有点“拧巴”。我们刚刚习惯了从1G到10G的十倍跨越,紧接着迎来的却是40G和100G。对于服务器接入来说,40G(4…...
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟的BP阶段犹豫不决,错过了最佳选择࿱…...
OpenOCD实战:从源码编译到JTAG调试RISC-V平台
1. OpenOCD与RISC-V调试基础 第一次接触OpenOCD调试RISC-V芯片时,我对着开发板上的JTAG接口发了半天呆。作为嵌入式开发者,我们都经历过这种从零搭建调试环境的阵痛期。OpenOCD就像一位硬件调试的瑞士军刀,它能通过JTAG接口与各种处理器架构对…...
告别手机外放‘破音’:深入拆解SmartPA技术如何拯救MTK平台的音频体验
告别手机外放‘破音’:深入拆解SmartPA技术如何拯救MTK平台的音频体验 你是否曾在用手机外放音乐时,遇到音量调大就出现刺耳破音的情况?或是发现低音部分总是软弱无力,完全没有沉浸感?这些问题在采用MTK平台的手机中尤…...
R语言数据导入全指南:从CSV到SPSS的底层原理与工程实践
1. 项目概述:为什么数据导入是R语言真正的第一道门槛刚接触R的人,十有八九会在读取第一个文件时卡住。不是报错“cannot open the connection”,就是加载出来全是NA,再或者干脆卡死在进度条不动——这根本不是你手生,而…...
CANN/ops-nn LpLoss算子
LpLoss 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atl…...
LumenPnP真空系统架构:双喷嘴拾放技术深度解析
LumenPnP真空系统架构:双喷嘴拾放技术深度解析 【免费下载链接】lumenpnp The LumenPnP is an open source pick and place machine. 项目地址: https://gitcode.com/gh_mirrors/lu/lumenpnp LumenPnP作为一款开源桌面贴片机,其真空系统是实现精准…...
2026遥感、地球科学与人工智能国际学术会议(RSGAI 2026)
随着人工智能(AI)技术的迅猛发展,特别是机器学习和深度学习在数据处理与复杂模式识别中的卓越能力,地球科学研究与遥感观测技术正迎来革命性的变革。将人工智能与遥感对地观测、地球信息科学、以及资源环境监测等领域的理论研究和…...
5G接入与移动性管理(AMF):构建未来通信的基石
5G接入与移动性管理(AMF):构建未来通信的基石 在5G网络架构中,接入与移动性管理功能(AMF,Access and Mobility Management Function)扮演着至关重要的角色。作为核心网的关键组件之一࿰…...
每日 AI 研究简报 · 2026-05-10
(本文借助 AI 大模型及工具辅助整理) 一句话总结:Anthropic 新架构让模型「做梦」反思、MoE 专家池共享设计突破线性增长假设、AI Agent 工具栈开源井喷——今天的信号指向「模块化」与「可组合性」。 🌊 AI 动态与趋势 本周技…...
