敏捷开发


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

已上介绍来源于百度百科,就我个人理解,敏捷开发的作用,是将以前瀑布式开发一次性需要上线的东西,拆分成为多个可以在不同阶段分开独立上线的功能,采取迭代更新的方式,可以让需要交付的最终结果中的一部分提前移交用户测试,发现问题及时整改。从用户角度上来看,可使用的东西尽早交付可以提高用户体验;从开发者角度上来看,避免了闭门造车的情况,有问题可以提前发现,并且功能被拆分成多个子项,也便于进行项目进度跟踪。

敏捷不是指某一种具体的过程或者框架,而是一组价值观和原则,需要大家遵守一系列的规范

敏捷开发流程


在日常开发过程中,我所在的团队也开始尝试使用敏捷开发的方式进行开发,以下是我在敏捷开发过程中对于流程的一些总结:

1.Event Storming
早期需求讨论时,可以让业务、产品经理、开发共同参与讨论,梳理出史诗级的用户故事。此过程可以让开发早介入,提前了解业务北京及流程

2.用户故事地图
根据Event Storming每一个事件,细化每一个点,梳理出mvp(每次都是可用的功能集合)

3.用户故事
用户故事地图文档化,整理到confluence,层级如下:
项目->史诗(按子域或模块划分)->用户故事(谁是什么角色,能干什么,目的是什么)

4.设计评审
做领域上下文的划分(每块都是微服务一个服务的划分,跟领域模型映射起来对应代码实现) + 技术实现方案(ISR)

5.Sprint规划
此过程也可称作定义里程碑,需要确定每个冲刺做哪些事,制定每个冲刺的计划及时间

6.Sprint规划会
Spring规划会:依赖于用户故事,全员参加,对子任务拆分(按照每个人物1-3人天的颗粒度,把任务拆解到能编码的程度)

7.Sprint设计
从此步开始已经进入正式开发流程,需要做的准备工作的流程如下:
流程设计->领域建模(可以采用架构师主画,全员沟通的形式)->统一语言->接口设计(方便前后端联调,可以使用yapi平台)

:在此过程中统一语言尤为重要,因为不论是开发过程中的沟通,还是业务、产品经理和开发间的沟通,如果出现名词含义不统一的情况,在沟通中是很浪费时间的

8.测试驱动开发
前期单元测试、功能测试、接口测试
可以针对代码需要实现的逻辑,先进行测试用例的编写,然后为了支持测试用例的通过来进行产品代码开发,此过程成为TDD(测试驱动开发)
这点个人认为实现起来难度还是比较大的,本人所在团队在进行实验的时候,这点做得不是很好,基本还是采用的传统的开发业务代码,然后编写测试用例的方法

9.Sprint执行
在每个Sprint开发过程中实行看板管理,站会
通过Confluence和Jira关联,将之前输出在Confluence的用户故事创建成Jira任务
每天开站会,快速过一下每个人前一天完成的任务,以及遇到的问题

10.Sprint评审
每个Sprint结束之前要给用户演示系统,评审已经实现的功能和与用户需求的差异
这个过程中发现的问题可以在下一个Spint中解决,推动项目流程向正确的方向上发展

11.Spring回顾
每个Spring结束后,大家坐到一起针对已经完成的上一个Sprint进行回顾,总结做的好的地方和不好的地方,也可以输出自己对团队开发的意见或者问题。这个过程有利于日后的合作与开发,对提升工作效率有一定帮助

自身实践中的不足


总的来说,目前我参与的敏捷开发项目不是很成功,我总结了一下,有几个不足的地方,今后还需要在实践过程中不断完善

1.如果项目是从0到1做的话,在项目早期实现了自动化测试脚本,但是很多接口的逻辑和参数等非常不稳定,导致开发或测试人员频繁返工

2.TDD的模式还是不好实现,目前还没有掌握测试驱动开发的最佳实践,还需要深入学习一下

3.开发任务很紧,code review做的不够

敏捷开发在项目开发过程中的实践总结相关推荐

  1. [敏捷开发]研发管理 开发过程管理

    开发过程管理,主要面向开发人员的管理.其核心目的,是通过一个项目管理软件,来管理不同项目,然后通过项目的里的工作项,了解开发人员的工作量,效率,从而来管理开发人员,合理调配开发人力. 名词解释 项目: ...

  2. 敏捷开发团队 项目分工_如何为您的软件开发项目建立敏捷团队

    敏捷开发团队 项目分工 敏捷公司认为团队合作对于交付工作软件至关重要,而优秀的敏捷团队则关注"我们"而不是" I". 不幸的是,许多公司声称他们拥有敏捷团队,但 ...

  3. 项目开发过程中的收获与思考

    2013年7月,我正式毕业了,到公司入职,也就正式成为了一名菜鸟程序员.到今天,2014年1月3日,目前主要的工作是公司一个项目中的一个功能模块,到我进入项目组算起,已经过了四个月了.因此,想写点东西 ...

  4. 软件项目开发过程中主要遇到的核心问题小结

    最近在北京组织管理某银行的现金管理系统项目的开发,对软件项目开发过程中遇到的问题进行一些心得体会小结,怕时间长了没及时写下来时间久了被遗忘了,现在趁项目还在开发过程,把体会相对深刻时,感受到的一些问题 ...

  5. 浅谈软件项目开发过程中的主要项目风险及对策

    软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时.按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属 ...

  6. 互联网项目开发过程中的测试分类

    1. 前言 我接触互联网项目的开发将近半年时间了.在这半年时间里,基本接触了互联网软件产品过程中的两个重要环节,开发和测试.开发既有后端服务器的开发,也有Web前端的开发.在项目前1/3时间里,我是进 ...

  7. 甲方在项目开发过程中的作用

    [摘要]软件项目的开发是一个综合性的工程,需要项目相关各方努力配合.随着信息化程度的深入,软件项目的复杂度和精细化程度越来越高,对项目相关方的配合也提出了更高的要求.项目开发不仅仅是软件开发公司的工作 ...

  8. iOS项目开发过程中的目录结构(转)

    iOS项目开发过程中的目录结构 我在这个目录结构方面真是吃了不少苦,开始总是觉得快点写快点写,后来发现只有快是不行的,在没有给整个项目的结构有一个清楚的认识和了解之前就匆匆动笔(敲代码啦)是非常冒失的 ...

  9. 浅谈Taro和Apollo在开发过程中的实践

    一.什么是Taro Taro是凹凸实验室研发的一套遵循React语法规范的多端开发的解决方案.使用Taro,可以只书写一套代码,再通过 Taro 的编译工具,将源代码分别编译出可以在不同端(微信/百度 ...

最新文章

  1. 并发基础篇(一): Java 并发性和多线程
  2. php怎麼讲$字段的值截取第一个字,PHP截取中文字符串方法总结
  3. 关于html文档,关于HTML的简介
  4. 得到qq正在登录的qq号
  5. ActiveMQ 5.x中的消息持久性
  6. linux 关联数组,Linux shell数组与关联数组的用法实例
  7. 入门命令23-更换CMD窗口的颜色:color
  8. 论文阅读笔记(十一)——Mobilenet-SSDv2: An Improved Object Detection Model for Embedded Systems
  9. DIV+CSS图片和文字如何显示同一行
  10. SCU-3968 Mowing the Lawn(DP+单调队列)
  11. 批量生成条形码并写入到excel文件
  12. MySQL数据导入导出方法与工具介绍
  13. 快手与欧足联达成版权合作,获本赛季欧冠直播和短视频二创授权
  14. 关于网络下载的记忆碎片
  15. 最新版项目部署到腾讯云超详细教学
  16. html样式表是不是css,css样式是什么
  17. 实现永久关闭445服务
  18. 0基础学RS(二十七)ACL访问控制列表
  19. word中的交叉引用
  20. S5PV210_流水灯

热门文章

  1. 高德地图自定义背景图+自定义文字,marker自定义
  2. 高升专计算机应用基础试卷,2015秋季班高升专-计算机应用基础(一)参考答案.doc...
  3. 薄板样条函数Thin Plate Spline
  4. 投资普通股的原则--本杰明·格雷厄姆
  5. 500K通讯速率下标称位宽度为320ticks
  6. java窗体广告墙(图片上传)java广告系统
  7. python 根据树型结构生成指定格式的excel数据
  8. 亚马逊跟卖有效找listing,适合各阶段卖家
  9. 【计算机基础】半角符号与全角符号
  10. 学做短视频去哪学 学做短视频教程