敏捷开发流程图和敏捷开发十二原则

教育行业A股IPO第一股(股票代码003032)

全国咨询/投诉热线:400-618-4000

WHAT敏捷开发的定义

敏捷软件开发是基于敏捷宣言定义的价值观《敏捷软件开发宣言》和原则《敏捷软件的十二条原则》的一系列方法和实践的总称。自组织、跨职能团队运用适合他们自身环境的实践进行演进得出解决方案。换句话说敏捷开发是一种应对快速变化的需求的一种软件开发能力,只要在符合价值观和原则的基础上能让开发团队拥有应对快速变化需求的能力,这就叫做敏捷开发。

敏捷开发宣言

·个体和互动高于流程和工具

·工作的软件高于详尽的文档

·客户合作高于合同谈判

·响应变化高于遵循计划

解读:

·以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。

·为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。

主动拥抱变化,及时响应,持续交付。

·通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费

敏捷开发十二原则

·我们最重要的目标,是通过及早和持续不断地交付有价值的软件使客户满意;

·欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化;

·经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期;

·业务人员和开发人员必须相互合作,项目中的每一天都不例外;

·激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标;

·不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈;

·可工作的软件是进度的首要度量标准;

·敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续;

·坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强;

·以简洁为本,它是极力减少不必要工作量的艺术;

·最好的架构、需求和设计出自自组织团队;

·团队定期地反思如何能提高成效,并依此调整自身的行为表现。

WHY为何使用敏捷

在敏捷开发还没有出来之前,大部分公司的开发模式基本都采取瀑布式开发。而瀑布式开发往往具有如下几个特点:

·文档:尤其看重文档,项目初期就要求文档设计的非常完善,一切以详细的文档为导向

·开发周期:固定且漫长,至少以数月为单位,团队成员严格按照项目排期进行开发

·人员规模:人数众多,一般都是整个技术部门全员一起参与某一开发周期的项目开发

·需求变动:定好的需求,一般不会变动,所以需求一开始就要设计的非常完善

·返工:由于软件生命周期严格按顺序划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。那么一旦开始进入开发,那么不可能返工,因为返工会带来巨大的成本开销。

·版本变更:每个项目项目开发阶段都会有明确的目标,目标如果未完成不会进入下一阶段,也就意味着版本变更不会太频繁

根据传统瀑布式开发的以上特性,我们发现,面对互联网时代用户多变的需求,如果按照瀑布式开发进行,那么几乎很难响应需求的变更,难以做到快速交付新版本的产品。而并不是说瀑布式开发就一定不行,在传统行业依然是主流开发模式。

而敏捷开发由于迭代周期短(一般周为单位)、人员规模少、随时响应变化,具有更大的灵活性、更少的投入、更高效的开发、更及时的交付、更大程度的降低风险(及时了解市场需求,降低产品不适用风险)。从这个方面来讲敏捷开发是完全可以适用互联网时代下用户多变的需求,也就是我们常说的小步快跑,将一个大的需求拆分成各个小的需求,针对某个阶段的小需求,组织少量的人员,借助于一定的规范、流程、工具、会议,从而达到快速交付上线的目的。

HOW如何实施敏捷

互联网IT职能团队,如果要实施敏捷开发离不开四要素:规范、流程、工具、会议。敏捷的核心是人,只有人人参与遵守约定,那么敏捷开发才能高效进行。如下图,敏捷开发流程图。

规范是一种契约精神,要求团队所有成员都要遵守约定,把控规范细节,最终高质量交付成果。

软件编码规范

编码规范,规定团队技术人员在编写代码时应该遵守的开发规则,比如命名规范、日志规范、注释规范、单元测试规范、异常处理规范等等。

数据库设计规范

数据库设计规范,要求技术人员在设计数据库时要考虑表设计、索引设计、SQL编写等方面的规则。

API设计规范

API规范一般意义指的是前后端分离时服务端网关系统对外提供的API规范,除此之外,在分布式环境中,服务端各模块系统会进行接口间通信,写接口时也要求遵守设计规范。

GIT管理规范

GIT管理规范,要求技术人员在分支命名、提交注释、代码合并等方面要遵守特定的规则。

版本管理规范

版本管理规范,软件发布包的版本号管理要遵守特定的规则,每次版本升级的变更特性列表要求详细编写。

测试规范

测试规范,用于约定测试团队的测试范围和测试标准,具体包括功能测试、接口测试、性能测试、自动化测试。

邮件规范

邮件规范,约定团队成员要遵守发送邮件的标题名编写规范,不同类型的邮件对应的标题关键字各不相同,方便及时通过关键词搜索历史邮件。另外根据团队不同,有的团队可能会要求团队成员发送每日日报、每周周报,日报和周报都是通过邮件的形式进行发送。

部署规范

部署规范,用于约定生产服务的部署方式,具体采用金丝雀部署、蓝绿部署、还是其他部署方式。

结对编程

一般互联网公司的开发流程按照顺序大致分为如下几个阶段:

需求整理阶段、排期设计阶段、开发阶段、测试阶段、部署阶段。整个流程在实施的过程中必要时允许返工,允许驳回需求并且可随时调整需求。

需求整理阶段

一般是产品部门负责,产品从需求池中根据优先级筛选出优先级最高的需求进行详细设计,并产出PRD成果给到技术部门。

排期设计阶段

排期先要先进行需求评审,需求评审会由产品负责人发起,评审会中所有参与人就需求的问题进行讨论,需求敲定后,技术部门负责人或本次迭代负责人将详细的项目开发计划发送至所有干系人。

特殊说明的是,如经验证出现不合理需求问题,开发团队可打回需求拒绝排期开发。

开发阶段

开发阶段各成员按照计划有序进行开发,开发过程有任何需求疑问及时找产品经理沟通,产品经理如在开发过程中有紧急临时需求,可组会讨论后,优先紧急需求的开发;如有需求变动,可调整排期后重新发出排期计划。

注意强调单元测试的必要性,开发人员必须为自己编写的代码质量负责,自测完毕后才可提交给测试人员。

测试阶段

开发完毕自测通过后,开发人员通知测试人员基于测试项目分支开始进行测试环境的测试,如果出现任何BUG则将BUG提交到缺陷管理系统,开发人员根据BUG列表修复后更新BUG任务状态,然后测试复测。直到测试部门测试完毕后,符合上线要求后,方可通知运维部门进行上线操作。

特殊说明的是,如出现提测的功能部署后系统不能正常运行影响测试,测试团队可打回给开发拒绝本次测试,直到开发提测的代码没问题为止。

部署阶段

部署阶段,可分为预发环境部署和生产环境部署,流程大致相似。都是基于完成测试成功的对应环境的项目分支通过CI工具进行持续集成和部署。部署时的网关开关切换机制应考虑到位,尽量做到部署时对用户无感知,部署完毕后测试人员在生产环境仍需复测一次,确保上线成果的正确性。

一定要保证如果部署过程出现问题要有完善的回滚机制。

敏捷团队若要执行落地离不开很多高效的协作工具,这里我列举一些非常实用的工具供大家参考,工具的安装步骤不在本文的讲解范围内。

代码管理工具

一般选用基于GIT协议的分布式代码管理工具进行代码管理,常用的有gitlab、gitee、github。

项目管理工具

项目管理工具的意义在于管控所有迭代过程中的具体任务,用于跟进开发进度、管控开发效率。常用的工具有tower、jira。每个迭代周期内的任务会在排期过程中由部门负责人分配给每个人员,任务完毕后要求及时拖动任务状态,方便领导跟进查看进展。

知识库工具

知识库管理工具的作用在于团队协作的所有资料,方便团队成员有需要时随时进行查看。比如产品团队会将每个版本的产品PRD文件放入产品团队的知识库目录下,开发团队会将开发设计架构图、API接口文档等放入技术团队的知识库目录下,类似的,所有团队都可将用于团队协作的资料存入本团队对应的知识库目录中。

缺陷管理工具

缺陷管理工具用于测试团队在测试阶段提交BUG任务给开发人员,常见的工具有禅道、jira。

持续集成工具

持续集成工具目的在于实现自动构建、测试、打包、部署到各个环境中,建议使用docker进行进行部署,保证各个环境中系统运行不会出现环境问题。目前主流的持续集成工具有Jenkins、Bamboo。

SQL审核工具

生产系统上线后,如果出现BUG要修复生产数据,应由开发人员提交修复的SQL到审计系统中并提交申请,团队负责人负责一审,DBA负责二审,二审通过后SQL会自动执行。SQL审计工具上所有提交的SQL操作日志全部都会保留下来,方便追责时随时查看。常见的SQL审核工具有Yearning。

容器管理工具

用于对docker进行编排管理,比如常用的docker动态扩容、升级等。目前主流的的容器编排工具是K8S。

运维安全管理工具

敏捷开发宣言强调个体沟通的重要性,所以会议的形式能增强沟通及时发现并修正问题,如下列举了敏捷开发过程中常见的会议类型。

每日站立会议

迭代总结会议

迭代总结会议一般在某个迭代完成后尽快召开,此会议的目的在于复盘上次迭代过程中的整体情况,包括好的和不好的,好的继续精进,不好的要反思改正。

代码Review会议

代码检查会议,会根团队实际情况不定期的召开,目的在于规范团队开发人员的编码规范,要求注重代码质量。

THE END
1.开发,测试,运维这三个岗位该如何选择开发测试运维作为互联网行业的测试、运维、和开发职位,这些岗位的需求量都很大。这些职业也都有各自的优缺点; 开发工程师负责项目的概要设计、详细设计以及编码;测试工程师从质量上对软件实施保障工作,确保软件能够符合用户需求;运维工程师负责保证软件产品在生产环境能够工作解决用户使用产品遇到的一些异常。 https://blog.csdn.net/jiegeniuboyi/article/details/139455578
2.测试开发和运维,这三个哪个比较轻松?网友(埃拉)职场问答我做了多年的开发工作,对测试和运维工作也了解一些,根据我的经验来看,这三个工作都不轻松,要是一定https://zq.zhaopin.com/question/7140893/
3.运维开发测试等IT岗位薪酬体系大公开!你拖后腿了吗?网站运维将成为一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给大家提供一个很好的个人能力与技术广度的发展空间。运维工作的相关经验将会变得非常重要,而且也将成为个人的核心竞争力,具备很好的各层面问题的解决能力及方案提供、全局思考能力等。 https://www.51cto.com/article/595625.html
4.运维是做什么的?运维和测试开发岗位的区别而运维开发岗位的火热也是对相关需求的应运而生,我们都知道互联网岗位是需要不断学习新的计算机语言知识的,这一点对于年纪大点的程序员来说就不太友好了。所以运维岗位如果想转化到开发或者测试岗位最好早点考虑。 以上就是我今天给大家带来的运维是做什么的小分享,另外还有运维和开发、测试岗位的一些区别。大家都看https://baidu-mip.xianjichina.com/news/details_271215.html
5.运维是做什么的?运维和测试开发岗位的区别运维和测试、开发岗位的区别 运维(Operation)是指负责维护和支持软硬件服务的一系列过程,它既可以是一项运行活动,也可以是一个完整的工作岗位。一般来说,运维工作包括:建立操作标准和流程,构建和维护网络和服务,管理服务器和存储设备,维护计算元件和电子化系统,监控网站和其他应用的安全性和可用性,发现潜在的流量和HDDhttps://www.sgpjbg.com/info/6f3cd6c834c7c5ed284ae66955c86d05.html
6.你了解软件测试和运维吗?没错!正如你所看到的,什么都得会,一个需要会这么多技术才能做好的工作,你是不是觉得工资不低了,但其实不然,运维工程师是工资普遍低于开发工程师,而且发展空间小,一般开发工程师3-5年基本可以往管理层发展,月薪2-5万,但是运维工程师的工资想要提升却是举步维艰,一直停留在6k-8k也是很正常的事情。 https://www.jianshu.com/p/f07449fe7c41
7.软件测试”“移动应用设计与开发”“大数据应用开发”“5G4月11日-12日,由吉林省教育厅主办长春职业技术学院承办的2024年吉林省职业院校技能大赛(高职组)“软件测试”“移动应用设计与开发”“大数据应用开发”“5G组网与运维”四个赛项在我校信息学院圆满落幕。 “软件测试”赛项共有来自省内12所高职院校的24支参赛队,共44名选手参赛。本赛项内容以企业级真实项目为载体http://www.cvit.edu.cn/info/1180/2194.htm
8.RAM账号权限管理内部技术团队分为开发、测试和运维,环境分为开发环境、测试环境、生产环境。由此构建相应的用户组和RAM用户遵循以下原则:不创建云账号AccessKey,不使用云账导进行日常运维管理,仅做用户及权履管理,开启MFA;需要控制台置陆的RAM用户不要生成AK,开启MFA。程序调用API的RAM用户不要授权控制台登陆。https://developer.aliyun.com/article/858399
9.系统运维岗位职责20篇5、负责配合开发搭建测试平台,协助开发设计、推行、实施和持续改进。 6、负责相关故障、疑难问题排查处理,编制汇总故障、问题,定期提交汇总报告。 岗位要求: 1、 2年以上大中型在线系统运维工作经验、精通Linux系统及常见服务的安装配置,熟悉常见的`负载均衡实现方案并有实际实施经验; https://www.yjbys.com/hr/gangwei/3844025.html
10.python教程Python语言简介一个互联网产品的生成一般经历的过程是:需求分析、研发部门开发、测试部门测试、运维部门部署发布以及长期的运行维护。运行维护的日程主要工作包括服务部署、服务监控等。运维的工作繁琐重复,即使最谨慎的人,也会犯错,尤其是面对着重复性工作。通过运维自动化工具来完成这样的工作,错误率将大大降低。 https://www.xiaomawang.cn/help/71640.html
11.运维测试招聘网2025年运维测试招聘信息猎聘2025年运维测试招聘信息,海量高薪猎头职位等你来选,了解运维测试岗位要求、薪资待遇等真实招聘信息,找高薪职位,上猎聘!https://www.liepin.com/zpyunweiceshi/
12.开发一个手机app需要多少人?1个人能完成开发吗?如果用传统方式编程开发手机app,需要经过需求分析、UI设计、前端开发(安卓开发/苹果开发)、后端开发、测试上线、后期维护等流程。至少需要配置1名产品经理、1名UI设计师、1名安卓开发工程师、1名IOS开发工程师、1名后端开发工程师、1名测试工程师、1名运维工程师等7人。 http://www.apppark.cn/t-38971.html
13.软件开发环境的几个名词(DEVSITUATPROD)在软件开发、测试、运维,经常听到DEV,SIT,UAT,Prod等名词,按时间阶段排序: DEV:Development Environment 持续集成开发环境 源代码编译打包,单元测试,服务API自动化测试,服务UI自动化测试,合并代码,开发联调 SIT:System Integrate Test Environment 系统集成测试环境(内测) https://blog.oxings.com/article/80
14.软件供应链安全减少开发和安全团队对漏洞进行发现、审查、确认、修复的时间。 悬镜灵脉IAST灰盒安全测试平台 灵脉IAST为研发、测试、运维等非安全专家设计,简单易用的界面和自动化的检测能力使得任何人都可快速上手,变身安全专家。灵脉IAST可集成于悬镜夫子、Jira、Jenkins等第三方漏洞管理和项目管理平台,不改变原有的工作流程,不增加https://www.xmirror.cn/page/solution/