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

教育行业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.软件开发有哪些方法和技术,需要注意什么?软件维护是指软件开发完成后,在实际使用过程中,对软件进行更新、修改、优化的过程,使软件能够满足用户的需要,确保软件的正常运行。 6、软件工程管理 软件工程管理是指在软件开发中,将系统化思想、科学方法、工程管理理念应用于软件开发过程中,以提高软件开发质量和效率的一种管理模式。 二、软件开发流程中的6条问题总https://aiqicha.baidu.com/qifuknowledge/detail?id=10112228468
2.软件开发流程管理规范20240727001814.pdf软件开发流程管理规范.pdf,软件开发流程管理 规范 1 2020 年 4 月 19 日 软件开发流程管理规范 编制日期: /5/25 版本号:V1.0(征求意见稿) 批准人: 发布日期: 项目管理的根本目的是按时、保质、保量完成预期交付的成果。项目管理要让整个组织能清楚理解项目实 施的目https://m.book118.com/html/2024/0727/5144303333011301.shtm
3.“从0到1”建设软件质量管理体系(1)——何谓流程以下就目标、方法和落地这三个层次,对智能汽车软件开发流程展开介绍。 行业标准 “是什么”(目标)来源于行业标准,智能汽车软件开发行业标准涵盖了一系列关于质量管理、功能安全、信息安全等方面的规范。其中IATF16949、ISO26262、ISO21434等都是核心的标准,而ASPICE是这些标准的实现主线。下面是这些标准的简要介绍: https://zhuanlan.zhihu.com/p/623009173
4.软件项目开发管理流程流程图模板给大家分享一份使用博思白板绘制而成的软件项目开发管理流程图模板,对于一个新项目,从可行性研究到产品交货整个生存阶段将经历五大工作流程,分别是立项阶段——需求阶段——设计阶段——研发阶段——测试阶段,每个阶段又包括了各种大大小小的工作流程。软件项目开发管理流程是项目管理学科中的一个重要内容,对于确保项目https://www.processon.com/view/6674f26d5035294a5383da27
5.生产管控软件平台开发流程零代码企业数字化知识站通过以上步骤,可以确保生产管控软件平台的开发流程科学合理,软件质量和功能能够满足客户的需求,从而提高生产效率和管理水平。 相关问答FAQs: 1. 生产管控软件平台开发的流程是什么样的? 生产管控软件平台的开发流程通常包括需求分析、设计、开发、测试、部署和维护等阶段。首先,开发团队需要与客户充分沟通,了解客户的需求和https://www.jiandaoyun.com/blog/article/365041/
6.软件开发项目管理流程大家好,今天小编来为大家解答软件开发项目管理流程这个问题,软件项目管理流程是什么很多人还不知道,现在让我们一起来看看吧! 一、软件项目的管理流程 导语:关于软件项目的管理流程,相关人员来了解一下吧。下面是我收集整理的软件项目管理流程,供各位阅读和参考。 https://www.zhikuzx.com/zixun-66242.html
7.软件开发常用工具有哪些IT软件开发流程详解→MAIGOO知识包括追踪工具、版本管理工具和发布工具。 7、软件工程管理工具 包括项目计划与追踪工具、风险管理工具和度量工具。 8、软件工程过程工具 包括建模工具、管理工具和软件开发环境。 9、软件质量工具 包括检查工具和分析工具。 IT软件开发流程 1、需求调研分析 https://www.maigoo.com/goomai/98822.html
8.如何用Gitee企业版管理软件研发全流程–Gitee官方博客全流程管理 Step3:任务管理 层次分明 软件开发过程管理的核心就是对任务进行管理。相比平铺式的任务展示,将需求拆分成一个系统的树状任务分布,同时,多个任务又能相互关联,纵横管理更灵动。 Gitee 企业版的「任务管理」可对需求进行父子层级关系的细化管理。 https://blog.gitee.com/blog.usage.com/2019/04/16/gitee-enterprise-usage/
9.软件开发管理规范(制度)开发管理规范,软件研发管理规范资源软件开发流程管理制度,基本的软件开发流程管理的文件,可以参考下,从软件工程的理念来看还有参考价值,试试看。 软件开发管理规范 浏览:30 5星 · 资源好评率100% 详细的软件开发管理规范 软件开发管理规范制度.docx 浏览:17 软件开发管理规范制度软件开发管理规范制度是指在软件开发过程中,为了确保软件开发的质量、安全https://download.csdn.net/download/lishifu119/10232360
10.SSDLC平台软件开发生命周期管理开发安全开源网安S-SDLC平台是一款软件研发安全全流程管理平台,通过整合开源网安在软件研发安全领域多年积累的流程、方法、工具、知识库等经验,集成开源网安庞大的威胁数据库和安全需求库,对企业现有开发流程进行差距分析,全面挖掘软件开发从架构设计到部署运维各个阶段的安全风险,构造安全开发能力,在流程管理方面帮助企业SDL的实施过https://www.seczone.cn/channels/S-SDLC.html
11.程序员为您揭秘软件开发的流程软件开发是一个复杂而精密的过程,程序员在其中扮演着核心的角色。从需求分析到规划、设计、编码、测试、调试、部署、维护再到文档与知识管理,每个阶段都需要程序员的细心和技术水平。通过这个流程,软件得以高效、可靠地诞生并为用户提供服务。对于程序员来说,持续的学习和不断的实践是不可或缺的,以适应日新月异的技http://www.apppark.cn/t-50533.html
12.软件开发项目项目管理8篇(全文)1、建立有效的工作流程保证项目的顺利进行,初期使用传统RUP过程,引入部分敏捷方法,团队磨合完成后逐步实现敏捷开发全流程管理。 2、明确项目目标,制定具有可行性的项目计划,有效明确的分解项目需求。 3、跟踪设计/开发/测试/回归/发布全流程,推动项目按预定计划执行。 https://www.99xueshu.com/w/fileecz6wkkk.html
13.软件开发管理规范流程图在项 目管理中还能看到公司高层领导通过实际行动表现出来的对于项目实施的支持与帮助,通过以制度化管理 来组织合理安排员工的工作职责和角色转换。为满足上述要求,就必须让员工、企业、客户能接受并适应 新的“软件项目开发管理规范”。 点击看大图!http://www.mypm.net/blog/user1/dracula/archives/2007/31625.html