浅谈云效中的开发任务拆分

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 项目协作,基础版人数 不受限
云效 DevOps 代码管理,基础版人数 不受限
简介:

使用云效公有云版本三个多月,对于任务拆分的一点心得,现在这里分享一下。

任务的定义

任务是从产品到开发到测试一个可以贯穿的概念,在Jira、github 等项目管理软件中,叫做 Issue,Issue 在不同的项目、项目中不同的环节都不太一样。称之为任务的确也没啥太多问题。

开发中过的任务,简单的来说,要完成的一个定义明确的功能项,不依赖内部别的功能,需要的时间根据难易度在两小时到一天左右,且一个人可以独立完成。

我们看到有些项目组的任务会定义为一个人完成的一个大的功能点,可能需要 2-3 天完成,这也是可以的。任务的重要边界是完成本身不依赖其他任务 ( 和定义好的接口通讯不属于此 )。

在开发过程中的任务大部分就是从产品需求而来,

下面这些都可以是一个独立的任务:

  • 一个 40 行代码左右的函数
  • 一个有三个方法的独立的类的定义和实现
  • 一个 3 屏幕高的网页视觉设计
  • 5 个表,每个表大约 20 个字段的数据库设计
  • 增加一个接口函数
  • 为了测试一个接口准备 50 个 test case
  • 某种 SAAS 服务的一种功能的接口对接

开发任务的详细设计具体怎么进行,这里就不展开了,因事而异。

任务的基本属性

在云效中新建一个任务会看到下面这些属性,有很多。

issue0

建议下面这些属性是必须要输入的,如下图中蓝色框出的:

issue1

  • 标题
  • 描述
  • 指派给
  • 优先级
  • 迭代
  • 归属项目
  • 版本
  • 标签
  • 预计工时
  • 实际工时

任务标题和描述

任务的标题非常重要,我们建议任务标题按照如下规则来进行:

  • 颗粒度一致
  • 字数不要太多
  • 句式尽量一致
  • 不要有歧义

好的任务标题如下:

  • 机具底层,回写发卡行脚本
  • 刷卡收款,完成交易轮询
  • 外部调用,提供获取商户的收款方式接口
  • SDK 初始化,完成统一初始化入口

写的不太好的任务标题如下:

  • 创建 jsp
  • 用户信息查询(商户)
  • 控台功能修复-交易查询
  • 单笔交易查询接口返回状态优化

推荐使用在以一个项目中: AAA,BBBBB。这样的句式。其中AAA 是某个大模块的名称,一个项目中的模块划分可以由项目经理确认,一般也不会超过5个,如果每个标题中的 AAA 都不太相关,说明颗粒度太细了。这样的描述还有个好处就是视觉上比较整齐。在有的项目中我也会建议 AAA 这里试用新增、修改、删除这样的描述,特别是一些底层的支持类的项目,变化也比较频繁的,可以用这类描述方式。

任务描述是对这个任务的详细描述,可以对这个任务更好的理解。很多程序员不太愿意写文档,经常看到一些程序员详细设计写的简单,项目评审流于形式,有些程序员急于想编码。这样的风险很大,使用尽量标准的项目开发流程可以约束这样的行为。任务的描述并不能替代详细设计,但是也是不可缺少的,因为对任务的标题的字数等有一定要求,不能太啰嗦,所以在描述这里可以尽量将当前任务的内容描述清楚,解决什么问题,可能会碰到的技术问题,包括一些业务和程序流程,甚至是伪代码。

云效系统的描述是支持 Markdown 格式的,所以在表现形式上完全不用担心,可以节约很多排版时间。

任务标签

任务标签也是重要的,对比 jira 这样强大的自定义工作流来说,基于公有云的云效的项目体系相对比较简单,状态有限(私有云版本的云效也可以做比较复杂的定义),至少我们可以通过标签来区分任务的属性。另外目前也是在尝试从产品需求到开发测试的全流程管理,所以用标签可以来区分不同的种类。

任务标签会显示在:

  • 迭代管理的任务项

issue9

  • 任务管理的任务项

issue2

  • 任务明细页

issue3

我们建议在开发项目的时候用下面这些标签,标签在一个项目或者最好在一个公司的所有项目中,保持一致,标签不要颗粒度太小:

  • 数据库
  • 控台
  • server
  • api
  • h5
  • app

任务的完成时间

任务的属性中有一个任务时间,有如下建议:

  • 一般情况下,不要小于两小时,或者大于三天,这个和前面说的任务的分拆原则要一致
  • 一天按照六小时有效开发时间计算,如果是加班的话,可以增加三小时左右;时间不要排的太满,因为一天之中总会有些开会、电子邮件回复、各种局部讨论等,时间排得太满,会影响项目进度控制

issue4

拆分任务的颗粒度一致性

分拆任务时候并不是颗粒度越小越好,在一个项目中,注意颗粒度的一致性非常重要。

在一个纯开发的项目里,可以把任务分拆成都是需要 20-80 行代码实现,按照一个函数一个类为最小颗粒度,也可以是按照源文件,比如所有的基于一个源文件的增加修改代码,还可以按照产品功能点来拆分,或许一个功能点也会涉及到好几个源文件,这种拆法在有些项目中也会有好处。

相对来说,建议按照下面方式来拆分:

  • 按照技术的详细设计的功能划分,基本基于单个文件的修改,由一个人完成
  • 更细颗粒度的,可以按照一个函数的拆分
    issue8

任务颗粒度和合并代码的复杂度

对于目前大部分项目基于版本代码分支的管理来说,任务的颗粒度到一个源文件,在代码合并时候比较容易,相对冲突会比较少。

如果任务影响到几个文件,并且这几个文件同时也被别人编辑的话,我们是推荐使用 git ,并进行每日合并,这样包括代码评审的过程一并进行,这部分在 git flow 流程中进行详细解释。

任务的生命周期

任务从建立开始,有一个生命周期,并且任务在这个生命周期里面,内容是可以修改的,有些属性是可以变化的。这也是我们强烈推荐使用系统来进行任务管理的原因之一,要达到同样的效果,可以减少大量的人工工作量。

任务的生命周期分为:

  • 待处理
  • 处理中
  • 已完成
  • 已取消

在看板中,可以通过拖放来调整任务所处的生命周期,并且云效工具支持对看板进行配置。

issue5

看板

看板管理是一个从工业管理中移植过来的管理名词:

来自于维基百科的定义:看板管理,常作“Kanban管理”(来自日语“看板”,カンバン,日语罗马拼写:Kanban),是丰田生产模式中的重要概念,指为了达到及时生产(JIT)方式控制现场生产流程的工具。及时生产方式中的拉式生产系统可以使信息的流程缩短,并配合定量、固定装货容器等方式,而使生产过程中的物料流动顺畅。

在看板标示系统中常将塑料或纸制成薄板,将产品名称及数量写于其上,故此得名。及时生产方式的看板在生产线上分为两类:领取看板生产看板,旨在传达的信息是:“何物,何时,生产多少数量,以何方式生产、搬运”。

敏捷中的看板管理大家都熟悉了,现在已经不需要小贴纸在白板上了。非常建议使用本文中的看板模式,虽然看板模式从显示信息数量来说并不太有效率,但是对于产品经理、项目经理等来说,对于进度的控制的一目了然是最重要的。

图表

图表可以给团队和管理层提供一个可视化工具,有助于定义过程中的障碍,并且让每个人持续关注交付有价值的产品。

图表的作用:

  • 信息传递可视化
  • 真实反映(或者至少部分反映)团队正在进行的过程
  • 描述工作过程的情况
  • 用于控制工作过程
  • 任何人均可查看

issue10

issue11

issue12

任务的评论功能

我们觉得这是现代项目管理软件非常有特色一个地方,不管是 jira、github 以及云效,都可以很容易的进行对任务的评论。有时候我们在详细设计的时候,并不能真正的考虑周全,或者因为时间的关系,有些内容先简单的写一下。项目开发的组长、其他开发人员、在准备测试的测试同事以及产品经理,都可以在一个任务下面进行评论,提出自己的问题。开发人员可以在这个小小的讨论区进行针对性的讨论。我们称这样的过程可以看到一些变化的过程,对于项目后期评审以及其他新加入项目组的同事学习有很大的好处,你看到的不光是结果,还有所有相关人讨论的过程。

云效的任务评论功能可以像微信等,用@符号在评论中指定需要额外看到的人,除了任务的创建者以外。并且通过邮件来发送到和这个任务相关的同事。

issue6

任务拆分的注意事项

不要把任务拆分为:立项、详细设计、开发、测试等这样,这是项目的流程环节,而不是项目中的任务。

需求中的任务可以是任务的功能,有点像我们平时说的 feature list 中的项目。
开发中的任务就是技术的详细设计的拆分,有些比如时序图等文档可以以附件形式存放。

每个任务有一个 ID,就像是 Issue number,这是一个唯一的 ID。

issue7

需求池管理

在敏捷开发中,我们称之为 Backlog,我们观察到,大部分项目其实开发总是来不及在指定的版本完成的,而需求每天会因为各种情况层出不穷,所以需要一个需求池来存放这些不能马上开发的需求。

需求池中的需求的走向:

  • 因为紧急程度,成为目前版本中需要开发的需求;这样的话,需要重新评估需求影响、开发、测试等细节,这也是会造成项目延误的原因;
  • 需求池中的需求最好的走向是成为之后上线版本的需求,这样既不影响这个版本的开发,也可以让各方面同事对整个项目有更好的理解,比如为某些优化、某些分级在设计数据表、设计类结构等的时候留好足够的余地;
  • 需求取消;
  • 需求合并,不管是产品需求、功能优化等都可以在需求池中先列出来,然后产品经理、项目经理等经常检查审视的话,就可以进行一些合并,抽象出一些共通的内容等,所以这也是我们一直觉得要有一个需求池的好处;

既然是需求池,所以其中的任务可以是比较简单的,前面说过,在任务的标题这里需要说明清楚,但是具体的详细设计、关联影响等可以暂且省略。

相关实践学习
流水线运行出错排查难?AI帮您智能排查
本实验将带您体验云效流水线Flow的智能排查能力,只需短短1-2分钟,即可体验AI智能排查建议。
ALPD云架构师系列 - 云原生DevOps36计
如何把握和运用云原生技术,撬动新技术红利,实现持续、安全、高效和高质量的应用交付,并提升业务的连续性和稳定性,这是云原生时代持续交付共同面对的机会和挑战。本课程由阿里云开发者学堂和阿里云云效共同出品,是ALPD方法学云架构师系列的核心课程之一,适合架构师、企业工程效能负责人、对DevOps感兴趣的研发、测试、运维。 课程目标 前沿技术:了解云原生下DevOps的正确姿势,享受云原生带来的技术红利 系统知识:全局视角看软件研发生命周期,系统学习DevOps实践技能 课程大纲: 云原生开发和交付:云研发时代软件交付的挑战与云原生工程实践 云原生开发、运行基础设施:无差别的开发、运行环境 自动部署:构建可靠高效的应用发布体系 持续交付:建立团队协同交付的流程和流水线 质量守护:构建和维护测试和质量守护体系 安全保障:打造可信交付的安全保障体系 建立持续反馈和持续改进闭环
目录
相关文章
|
2月前
|
敏捷开发 运维 数据可视化
提升协作效率的秘密武器:2025年DevOps任务可视化工具全解析
开发、测试、运维团队协作常因流程不透明导致效率低下,DevOps任务可视化工具成为解决这一痛点的关键方案。这类工具通过图形化呈现任务流程、状态追踪和CI/CD监控,实现跨团队协作透明化。核心功能包括看板管理、流水线可视化、自动告警等,能显著降低沟通成本,提升交付效率。市场主流工具如Jenkins、GitLab、板栗看板等各有优势,企业需根据规模、集成需求选择合适方案。随着AI和ChatOps发展,未来可视化工具将更智能化,助力企业构建高效DevOps闭环。
108 1
|
2月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之怎么批量导出任务
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
10月前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
运维 Devops 持续交付
自动化运维之路:从脚本到DevOps探索后端开发:从基础到高级实践
【8月更文挑战第28天】在数字化时代的浪潮中,企业对于IT运维的要求越来越高。从最初的手动执行脚本,到如今的自动化运维和DevOps实践,本文将带你领略运维的演变之旅。我们将探索如何通过编写简单的自动化脚本来提升效率,进而介绍DevOps文化的兴起及其对现代运维的影响。文章将为你揭示,通过持续集成、持续部署和微服务架构的实践,如何构建一个高效、可靠的运维体系。准备好让你的运维工作变得更加智能化和自动化了吗?让我们一起踏上这段旅程。 【8月更文挑战第28天】 本文旨在为初学者和有一定经验的开发者提供一个深入浅出的后端开发之旅。我们将一起探索后端开发的多个方面,包括语言选择、框架应用、数据库设计
|
敏捷开发 运维 Devops
DevOps文化:打破开发与运维之间的壁垒
【8月更文挑战第14天】DevOps文化是现代软件开发和运维的重要趋势之一。通过打破开发与运维之间的壁垒,实现自动化、持续集成/持续部署以及紧密协作等关键实践,可以显著提高软件交付的质量和效率。对于任何希望在数字化时代保持竞争力的企业来说,拥抱DevOps文化无疑是一个明智的选择。
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
182 0
|
前端开发 Devops 持续交付
【前端自动化新高度】Angular与Azure DevOps完美结合:从零构建持续集成与持续部署的全自动流水线,提升开发效率与软件交付质量!
【8月更文挑战第31天】Angular作为领先的前端框架,以强大功能和灵活性深受开发者喜爱。Azure DevOps提供一站式DevOps服务,涵盖源码管理、持续集成(CI)及持续部署(CD)。本文将指导你如何在Azure DevOps中搭建Angular项目的CI/CD流程,并通过具体示例代码展示整个过程。首先,我们将创建一个Angular项目并初始化Git仓库;然后,在Azure DevOps中设置CI流水线,定义YAML文件以自动化构建和部署流程。最终实现每次提交代码后自动构建并部署至Azure Web App,极大提升了开发效率和软件交付速度,使团队更专注于创新。
176 0
|
运维 Devops 数据库
太卷了!DevOps,就是开发要把运维卷跑了?
太卷了!DevOps,就是开发要把运维卷跑了?
219 0
|
敏捷开发 Java Shell
阿里云云效产品使用合集之如何设置流水线可以控制任务的串行执行
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章