敏捷开发流程

1.敏捷开发介绍

1.1什么是敏捷开发?

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

1.2什么是迭代?

迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。

1.3什么是Scrum?

Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。

1.4什么是Sprint?

Sprint是短距离赛跑的意思,这里面指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。

2.Scrum开发流程

在这里插入图片描述

2.1确定Product Backlog

按优先顺序排列的一个产品需求列表,这个是由Product Owner 负责的。

2.2 工作量预估和安排

Scrum Team根据Product Backlog列表,做工作量的预估和安排。

2.3 Sprint计划会议

从Product Backlog中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是2~6个星期,然后把这个Story进行细化,形成一个Sprint Backlog。

2.4 细化Sprint Backlog

Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成)。

2.5 Daily Scrum Meeting(每日会议)

每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出。

2.6 每日集成

也就是每天都要有一个可以成功编译、并且可以演示的版本。

2.7 Srpint Review Meeting(演示会议)

当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,每一个Scrum Team的成员都要演示自己完成的软件产品。

根据需求考虑,可与回顾会议合并为一个会议。

2.8 Sprint Retrospective Meeting(回顾会议)

最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中。

3.Scrum Master的职责

3.1 管理Scrum流程

1)管理Scrum流程;

2)帮助PO建立product backlog与sprint backlog,并确立其中每个story的优先级;

3) Scrum Master应该有一个block list用来记录Team在开发中遇到的问题障碍,由Scrum Master自己进行管理并最终使得列表中的每一问题得到及时处理。

3.2 向PO获取合理的工作量

1) 不承诺太多的工作,导致Team在sprint的后期连续加班,致使Team的效率严重降低。同时避免由于时间的匆忙,急于交付,导致了项目的质量很低,最终形成了恶性循环。

2) 保护team在sprint的过程中不受PO干扰。

3.3 把关质量

1) 控制速度

不应过于强调速度,应保持合理的开发节奏,才会使得产品质量具有一定的保障。Scrum流程在每个sprint应统一完整,使得Team形成习惯,最终达到良好的开发节奏。

2)制定coding style

代码的规范非常重要,好的代码可以提高整体团队的开发与沟通的效率。可通过Jenkins集成sonarQube对代码进行审查,审查内容包括bug、漏洞、代码规范、单元测试覆盖率、代码重复率。

3)冒烟测试

在每天下班之前,停止push代码,然后进行冒烟测试。冒烟测试成功之后,才会下班回家。这是一种很好的方法,它保证了每天功能都是可用的,从而确保了质量。

3.4跟踪进度

1) 利用jira工具进行进度跟踪

2) 通过daily scrum meeting获取到Team每天的工作进展。此时我们可以根据进展进行一些必要的调整。

4.Confluence(文档集中化管理)

Confluence为团队提供一个协作环境。在这里,团队成员齐心协力,各擅其能,协同地编写文档和管理项目。从此打破不同团队、不同部门以及个人之间信息孤岛的僵局,Confluence真正实现了组织资源共享。

4.1文档分类

1)Sprint文档

包括Sprint计划、回顾会总结等相关文档;

2)产品文档

包括需求分析、产品操作手册登文档;

3)开发文档

包括接口规范、数据库设计、编码规范登文档;

4)测试文档

测试相关文档,根据实际情况考虑;

5)其他文档

其它各种团队共享文档。

5.Jira(项目管理)

5.1 jira的主要功能

1)问题追踪和管理,用它管理项目,跟踪任务、bug、需求,通过jira的邮件通知功能进行协作通知,在实际工作中使工作效率提高很多(邮件功能暂未能使用);

2)问题跟进情况的分析报告:可以随时了解问题和项目的进展情况;

3)项目类别管理功能:可以将相关的项目分组管理;

4)组件/模块负责人功能:可以将项目的不同组件/模块指派相应的负责人,来处理所负责的组件的Issues;

5)无限制的工作流:可以创建多个工作流为不同的项目使用。

5.2 迭代管理

团队刚开始采用kanban的形式,后期根据实际情况考虑是否采用sprint模式;
在这里插入图片描述

5.3 Bug管理

1)open

发现人员建立BUG后,指派给相关的开发人员,指定其为BUG的经办人,此时BUG为OPEN状态;

2)resolved

当经办人开发人员解决了该BUG并在测试环境自行检查通过后,点击“解决问题“,选择合适的解决类型(Fixed,Won’t Fix, Duplicate, Cannot Reproduce),并点击”解决“,将BUG状态变为Resolved,同时可以在“描述”里填写合适的解决原因;

3)closed

BUG状态变为Resolved后,BUG的报告人对BUG进行Verify工作。如果验证后发现BUG已经被解决,则报告人点击“关闭问题”将BUG变为CLOSED状态;

4)reopen

如果验证后发现BUG依然存在,则报告人点击”重新开启问题“,将BUG状态变为REOPENED。

6.持续集成

频繁地(一天多次)将代码集成到主干,让产品快速迭代,同时还能保持高质量。

6.1持续提交

流程的第一步,是开发者向代码仓库提交代码,所有后面步骤都始于本地代码的第一次提交(commit);

6.2自动化持续代码质量扫描

只要提交了代码,jenkins就会从代码仓库拉取代码进行进行代码质量分析,然后将分析结果发送至sonarqube平台,开发人员可以使用ide插件同步sonarqube结果,并可以在线分析;

Jenkins支持每当代码分析无法满足SonarQube的质量标准时,即工程构建失败,构建失败可通过邮件通知开发人员(该步骤暂未实行)。

6.3自动化部署

后端项目:后端代码提交后,Jenkins自动构建并打包为镜像文件上传到harbor仓库,jenkins远程控制应用服务器上的脚本从harbor仓库拉取镜像完成部署;(gitlab+Jenkins+harbor+docker镜像部署方式为后期生产环境的集群部署和上云准备);

前端项目:前端代码提交到gitlab后,Jenkins自动打包,并通过ssh远程传输dist包到nginx完成部署;

6.4测试

代码集成到主干之前,必须通过测试,只要有一个测试用例失败,就不能集成;

项目前中期,以手动测试为主,在后期的时候,可考虑自动化的全面覆盖保证回归测试的有效进行。

6.5 发布版本

测试通过之后,由专人集成到主干,同步到生产环境。

6.6持续部署/持续交付

持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。持续部署的前提是能自动化完成测试、构建、部署等步骤。

持续交付,它强调的是,不管怎么更新,软件是随时随地可以交付的,以供评审。

测试环境和生产环境网络不互通,持续交付/继续部署暂时无法实现,目前预发布和正式环境仍采用手动部署。

7.分支管理

1)master分支: 闲置,限制权限;

2)prod: 同步生产环境,限制权限;

3)test:测试分支,保证有一个稳定的测试版本;

4)dev:开发分支,开发人员在该分支开发;

5)feature:根据开发人员个人情况决定是否创建;

6)当存在长时间无法存在的大bug时,可考虑新开一个bug分支。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录   译者序   第2版前言   第1版前言   第0章不可知和不可说   0.1和解析体验相关的问题   0.1.1解析模式的冲突   0.1.2检测解析模式   0.1.3思考不准确的思想   0.2沟通的不可能性   0.2.1内部重新组织   0.2.2触及共享体验   0.2.3管理不完美的沟通   0.3聆听的三个层次   0.3.1三个层次和方法集   0.3.2三个层次与本书   0.3.3守-破-离   0.4那么,明天我做什么   第0A章不可知和不可说:演进   0A.1沟通和共享的体验   0A.2守-破-离   第1章创造和沟通的合作博弈   1.1软件和诗歌   1.2软件与博弈   1.2.1博弈的类型   1.2.2软件与攀岩   1.2.3创造和沟通的博弈   1.2.4软件与工程化   1.2.5软件与模型构建   1.3再论合作博弈   1.3.1程序员成为沟通专家   1.3.2更快地博弈   1.3.3标识物和道具   1.3.4减少回报   1.3.5对于首要目标的充分度   1.3.6对于积淀的充分度   1.3.7博弈中的博弈   1.3.8开放源码开发   1.4这对我意味着什么   第1A章创造和沟通的合作博弈:演进   1A.1沼泽游戏   1A.2合作中的竞争   1A.3其他领域的合作博弈   1A.4软件工程的重建   1A.4.1这一词汇从哪里来   1A.4.2我们从哪里走错了   1A.4.3重建软件工程   1A.4.4技艺   1A.4.5合作博弈   1A.4.6精益制造   1A.4.7重建后的软件工程   1A.4.8其他工程化中的协作   第2章个人   2.1人是古怪的   2.1.1寻找特征函数   2.1.2古怪性格的元素   2.1.3不可避免的多样性   2.1.4技术的作用   2.1.5相互冲突的共同点   2.2克服失败模式   2.2.1犯错误   2.2.2宁可失败也要选择保守   2.2.3创新而不研究   2.2.4不能始终如一的习惯动物   2.2.5使用纪律和容忍来应对   2.3以一些更好的方式工作   2.3.1具体化   2.3.2实物   2.3.3在某些东西的基础上进行修改   2.3.4观察和聆听   2.3.5支持专注和沟通   2.3.6工作分配要与个性相匹配   2.3.7天赋   2.3.8奖励要能保留乐趣   2.3.9组合奖励   2.3.10反馈   2.4利用成功模式   2.4.1善于四处寻找   2.4.2人们学习   2.4.3可塑性   2.4.4贡献和采取主动   2.4.5组合成功模式   2.4.6英雄也是普通人   2.5明天我该做什么   第2A章个人:演进   2A.1策略平衡   第3章团队的沟通与合作   3.1信息的对流   3.1.1延迟和机会损失成本   3.1.2尔格-秒   3.1.3渗透式沟通   3.1.4穿堂风   3.1.5信息辐射源   3.1.6热空气理论的应用   3.2跨越沟通的鸿沟   3.2.1沟通的形态   3.2.2去掉某些形态所产生的影响   3.2.3利用各种形态   3.2.4黏度与跨越空间的鸿沟   3.3团队就是集体   3.3.1友善和冲突   3.3.2工作时间的公民意识   3.3.3敌意的XP与友善的XP   3.3.4使用胜利来建立“团队”   3.3.5团队文化与亚文化   3.4团队就是生态系统   3.5我明天该做什么   第3A章团队:演进   3A.1一个修订后的办公室布局样本   第4章方法集   4.1一个交付软件的生态系统   4.2方法集中的概念   4.2.1结构术语   4.2.2范围   4.2.3概念术语   4.2.4发布一个方法集   4.3方法集的设计原则   4.3.1常见设计错误   4.3.2在方法集上成功的项目   4.3.3与作者的相关性   4.3.4七条原则   4.4细看XP   4.4.1XP简介   4.4.2剖析XP   4.4.3调整XP   4.5到底为什么使用方法集   4.5.1方法集解决什么问题   4.5.2如何评估一个方法集   4.6明天我应该做什么   第4A章方法集:演进   4A.1方法集与策略   4A.2组织级的方法集   4A.3过程就是循环   4A.4更简单地描述方法集   第5章敏捷与自适应   5.1轻但足够   5.1.1刚好足够   5.1.2对于编制文档的建议   5.2敏捷   5.2.1最佳击球点   5.2.2虚拟团队的麻烦   5.3变得自适应   5.3.1不厌其烦地进行反思   5.3.2方法集成长技术   5.3.3反思研讨会技术   5.4明天我该做什么   第5A章敏捷与自适应:演进   5A.1对于寓意的误解   5A.1.1迭代必须简短   5A.1.2敏捷团队必须驻扎在一起   5A.1.3敏捷团队不需要计划   5A.1.4架构已死;重构是你全部所需要的   5A.1.5我们不需要什么经理   5A.1.6敏捷开发在纪律上要求很低   5A.1.7敏捷只适合最优秀的开发人员   5A.1.8敏捷是既老又新的、失败的、没有尝试过的   5A.2敏捷方法集的演进   5A.2.1XP第2版   5A.2.2Scrum   5A.2.3实用主义和无名的   5A.2.4可预测、计划驱动和其他中心调整   5A.2.5约束理论   5A.2.6精益开发   5A.3新的方法集话题   5A.3.1敏捷项目管理   5A.3.2测试   5A.3.3用户体验设计   5A.3.4规划管控、Burn图和系统工程   5A.3.5用例和用户故事   5A.4经久不绝的问题   5A.4.1最佳击球点和下降   5A.4.2固定价格、固定范围的合同   5A.4.3敏捷、CMMI和ISO9001   5A.4.4何时停止建模   5A.4.5高科技/高接触的工具箱   5A.4.6敏捷的中心   5A.4.7你有多敏捷   5A.4.8引入敏捷   5A.5软件开发之外的敏捷   5A.5.1项目组合管理   5A.5.2客户关系   5A.5.3合同   5A.5.4将变更引入组织   5A.5.5程序员读哈佛商业周刊   5A.5.6建造房屋   5A.5.7机场建设   5A.5.8图书出版   5A.5.9会议组织和敏捷模型的限制   第6章Crystal方法集   6.1对Crystal家族塑形   6.1.1核心Crystal元素   6.2CrystalClear   6.2.1CrystalClear的简要描述   6.2.2CrystalClear的反思   6.3CrystalOrange   6.3.1CrystalOrange的简要描述   6.3.2CrystalOrange的反思   6.4CrystalOrangeWeb   6.4.1CrystalOrangeWeb的简要描述   6.4.2CrystalOrangeWeb的反思   6.5明天我该做什么   第6A章Crystal方法集:演进   6A.1Crystal基因代码   6A.1.1合作博弈的理念   6A.1.2方法集的重点   6A.1.3方法集设计原则   6A.1.4高度成功的项目的7个特性   6A.1.5技术与选择   6A.1.6样本方法集设计   6A.2CrystalClear   6A.3把CrystalClear扩展到Yellow   附录A敏捷软件开发宣言   附录Aa敏捷软件开发宣言和相互依赖声明   附录BNaur、Ehn、宫本武藏   附录BaNaur、Ehn、宫本武藏:演进   附录C后记   参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值