华为云用户手册

  • 总结 以上三种没有人认领任务的情况,是比较常见的。但在真正的实际项目中,每个公司或团队的情况都不尽相同,无法穷举所有,应具体情况具体分析。比如,一个刚刚转型的敏捷团队,在开发任务的领取上可能会更偏向于半指派半领取的方式。这就好比中国经济一样 “以市场经济为导向,适当进行宏观调控”。但不管这个“调控”的力度如何,都应该鼓励团队成员能积极主动地领取任务,并随着任务的进展情况灵活调整,及时做好风险把控,必要的时候需要其他渠道的协调帮助或相关领导的介入,以保证迭代的目标不受影响。
  • 了解更多:迭代待办列表 迭代待办列表在CodeArts中称“迭代”,它是一组为当前迭代选出的产品待办列表项,同时加上交付产品增量和实现迭代目标的计划。 当新工作出现时,开发团队需要将其加入到迭代待办列表中去。随着工作的执行或完成,剩余的工作量被估算并更新。当计划中的某个部分失去开发意义,就可以将其移除。在迭代期间,只有开发团队可以改变迭代待办列表。迭代待办列表是高度可见的,是对开发团队计划在当前迭代内工作完成情况的实时反映,该列表由开发团队全权负责。 迭代待办列表在迭代计划会议中形成,其中开发团队不会被动分配任务而是由开发团队成员主动认领自己擅长和喜爱的任务。任务被分解为以小时为单位,建议任务不要超过16个小时。如果一个任务超过16个小时,那么它就应该被进一步分解。每项任务信息包括其负责人、工作量、承诺的完成时间及其在迭代中任意一天的剩余工作量,且仅开发团队有权改变其内容。
  • 问题分析 目前Sprint中存在的主要问题是Sprint目标完成不好,解决障碍,Sprint目标按承诺完成即可。 团队成员的工作内容中包含很多探索性工作项,对工作内容领域不熟悉,需要投入一些学习成本,导致工作项的实际完成用时要比正常多。每个用户故事的工作量也比较大,多数超过24小时。PO对工作项完成标准的要求非常高,评审严格,不合格的工作项在Sprint中经常返工。团队当前的Sprint时长为一周,并且四大事件按照Scrum框架执行,其中Sprint计划会议和Sprint回顾会议平均持续时长为2小时左右。 从分析中归纳影响Sprint目标完成的几个主要因素如表1所示。
  • 解决措施 针对以上问题的分析,建议这种情景下将Sprint的时间盒由一周改为两周。Sprint的时间过短,团队成员会忙于准备计划会议、评审会议及回顾会议,真正完成工作项的时间较少。对于突发事件的应对能力减弱,不利于形成团队稳定的节奏。Sprint的时间过长,失去了短时间盒的优势,失去了时间盒的意义。因此,如果团队在时间盒为一周的Sprint中经常不能完成Sprint目标,可以试着把时间盒调为两周。同时要注意优化用户故事的大小,提高四大事件的效率。 Sprint的时间盒由一周改为两周后影响因素会有所改善,具体如表2所示。 表2 影响Sprint目标因素表(二) 序号 影响因素 Sprint由一周改为两周后的相应缓解 1 探索性工作项多 有相对充分的缓冲时间应对学习、探求性工作以及突发情况。 2 工作领域不熟悉,需要学习成本 3 用户故事比较大 时间相对宽裕后,计划会议开得更充分,用户故事拆分为更小的故事,或者在每项用户故事下建Task。Sprint的目标可以按Task级别来平衡考量完成度。 4 PO完成标准高 时间相对宽裕后,理解PO完成标准更加充分,在计划会议上明确验收标准,包括AC(Acceptance Criteria) 和 DoD (Definition of Done)。 5 Sprint周期短 调整周期后,团队成员氛围更加好,每个Spring目标完成度得以改善,成员更加自信。 6 Sprint计划会议和Sprint回顾会议持续时间略长 时间相对宽裕后,每项会议质量有所提高,在合理的时间范围内可以高质量完成会议内容。 其情况Sprint的时间盒长度建议如下,您可根据团队现况选择适合的时间盒。
  • 了解更多:时间盒 在Scrum框架中,工作在建议时间长度为一个月或者更短的迭代或循环中进行,这个迭代或者循环叫做冲刺。冲刺在一个时间盒(Time Box)内,也就是冲刺有固定的开始和结束时间。 时间盒的优点具体内容如下: 时间盒是设定WIP(work in process)数量限制的技术。WIP是已经开始但还没有完成的工作清单。开发团队只开发自己认为在一个冲刺内可以开始并按时完成的工作事项,因此时间盒是为每个冲刺设定WIP数量限制。 时间盒可以强制排列优先级。需要先执行高优先级的工作,时间盒可以强制团队按优先级排序执行小批量工作,这样团队的注意力可以更集中于快速完成高价值的工作。 时间盒可以展示进度。时间盒可以展示团队需要多少个时间盒才能完成大特性的进度,帮助团队准确知道为交付整个特性还需要做多少工作。 时间盒可以限定结束日期。每个冲刺中,时间盒限定了一个固定的结束日期,通过这种方式强制结束可能无休止的工作。 时间盒可以促进结束。冲刺有明确的最后期限,这个期限不允许修改,这可以激发Scrum团队成员全力以赴按时完成冲刺内的工作。如果没有时间盒的限制,Scrum团队成员就不会有完成工作的紧迫感存在。 时间盒可以增强预测性。团队可以不预测后续长时间段内可以完成的工作,但是预测下个冲刺内能够完成的工作是可以做到的。
  • 什么是Epic、Feature、Story和Task? Epic、Feature、Story和Task用来划分需求颗粒度的标签,可以看作需求占位符,分别代表需求颗粒度从大到小。每个层级的需求本身又承载着一些意义,在进行需求划分的时候可以进行参考。 Epic:史诗,是项目的愿景目标。通过Epic的落地达成,使公司可以获得相应的市场地位和回报,具有战略价值。通常需要数月完成。 Feature:可以带来价值的产品功能和特性。相比Epic,Feature更具体,更形象,客户可以感知,具有业务价值。通常需要数周,多个Sprint才能够完成。 Story:通常所说的用户故事,是User Story的简称。Story是从用户角度对产品功能的详细描述,承接Feature,并放入产品Backlog中,持续规划,滚动调整,始终让高优先级Story交付给客户,具有用户价值。Story要符合INVEST原则(Idependent、Negotiable、Valuable、Estimable、Small、Testable),通常需要数天,并在一个Sprint中完成。 Task:是团队成员要完成的具体任务。在Sprint计划会议上,将Story分配给成员,然后由成员分解为Task,并预估工时,通常在一天内完成。
  • 如何灵活使用这些概念,让需求管理更为高效? 为了加深对Epic、Feature、Story和Task的理解,本文对一个案例进行需求拆分,过程中会结合CodeArts需求管理服务进行展示。 案例: 某大型商超受互联网的冲击,营业额大幅下滑。 为了减少门店消费者流失,保有市场地位和份额,决定用6个月的时间建立自己的网上商城。 第一步:Epic确定和创建 根据前面的介绍,在进行需求确认的时候先看颗粒度,然后再考虑其承载意义。 此处需要考虑一个问题:一个产品是一个Epic吗?产品的每个业务模块是Epic还是Feature? 产品通常具有战略意义,从这个角度看,产品适合作为一个Epic。但是不是所有的产品都适合,还要看产品是什么,它的颗粒度有多大。在本文的实例中,网上商城周期是6个月,目的是保有市场份额,从颗粒度和战略意义上,网上商城适合作为一个Epic。 每个业务模块具体是Epic还是Feature要分情况。比如:构建智慧城市是一个愿景目标,下面包括智慧交通、智慧政务、智慧社区等,这些每个业务模块都很大,用Epic进行需求占位合适一些。 在CodeArts创建一个Scrum项目,命名为“某大型商超网上商城”。进入“需求规划”界面,新建Epic: 图2 新建Epic 新建之后,单击进入到详细编辑界面。将描述信息填写完整,可以使用CodeArts提供的模板: 作为:对于这个Epic来说,用户角色是整个公司。 我想要:想要的结果就是建造网上商城。 以便于:目的是想要减少消费者流失,保有市场地位和份额。 同时在基本信息中设定这个Epic的起止时间、优先级、重要程度、预计工时等信息。这些信息对于团队理解产品、理解项目起到至关重要的作用,所以要进行详细填写。 图3 编写Epic 第二步:将Epic分解为Feature 客户要求在6个月内交付5个功能模块:促销管理、会员管理、订单管理、配送管理和客户端。团队的一个Sprint是2个星期,每个模块大概需要2-3个Sprint完成,从颗粒度和承载的意义,这5个模块适合作为Feature。 图4 Epic分解为Feature 创建之后,如需要填写详细信息,可以在详细页面进行编辑。界面信息项和前面Epic的相同,此处不再赘述。 第三步:Feature分解为Story 敏捷开发是渐进明细的,不要求所有需求在相同时间做到同样详细,只要求当前Sprint和未来的一个或两个Sprint的Story是详细的。将来Sprint的Story可以是一个大概的情况。进入到当前Sprint的Story要符合INVEST原则。开发团队要在Sprint结束时完成交付。 客户优先级中,会员管理Feature优先级高,会员管理这个Feature就要在需求梳理会议上详细分解为Story放入到产品Backlog中。经过分解后,需要包含和管理员相关的功能:积分管理、会员级别管理、用户分析、用户管理。这些具体的功能就可以作为Story。需要注意的是,分解出的Story要尽量在一个迭代内完成交付,如果无法完成就尝试继续分解。因为只有交付的Story才是有价值的,无法交付的Story对于当前Sprint来说就是浪费。分解后的Story如图5所示。 图5 Feature分解为Story 第四步:将Story划分为Task 在Sprint计划会议上,团队和PO要共同从产品Backlog中按照优先级顺序选择本次Sprint需要完成的Story,进入到冲刺Backlog中。团队成员认领后,将Story分解为Task,并进行估算。 此时面临一个问题:Story和Task如何区分? Story聚焦价值,需要在Sprint中完成,要用数天的时间,要符合INVEST原则。Story的描述是一个名词,如积分管理这个Story的完整描述是:作为管理员,我能够进行会员的积分管理,以此来划分消费等级提供不同增值服务。 Task聚焦实现价值,通过过程性的任务来实现Story的功能。通常是1~8个小时。Task的描述是一个动作。如积分管理这个Story,功能的实现需要通过业务逻辑开发、积分规则设计和积分数据库设计这几个过程来完成,这些就是Task。如图6所示。 图6 Story分解为Task 这样,从Epic开始,到Task结束,完成了网上商城的需求拆分。
  • 小结 使用Epic、Feature、Story、Task管理需求时,需要注意以下几个方面: 敏捷开发中需求是逐步细化的,遵循自上而下的方式去分解需求。 Epic和Feature都是颗粒度比较大的需求,是用户对于产品的期望和功能特性的描述。 分解为Story的时候,目前正在进行的Sprint需要分得更小更细,将来的Sprint需求(可能是3个及以上)就不需要那样细分。当进行到某个Sprint时,再进行分解,细分成一组更小、更细的条目。 Task是对当前Sprint的Story进行的分解。 所有这些粗略和详细的Story都放在产品Backlog中,整个列表要遵循DEEP(Detailed appropriately、Emergent、Estimated、Prioritized)原则,定期梳理和排序优化,保证高优先级的需求优先实现和交付。 在整个过程中需要和客户一直保持沟通合作,这样才能保证实现的功能是客户真正想要的。
  • 具体操作方法 具体操作,可以按照事前、事中、事后各个阶段来采取不同的措施处理。 事中的处理 根据具体情况不同,在发现需求遗漏的当时,可以采取如下一些做法: 重要需求遗漏,不紧急:既然不紧急,按照常规做法增加进去即可,但如果经常出现遗漏,就要考虑是否是需求分析和规划的实践做法有问题,才会导致问题持续出现,这种情况,应强化需求结构化管理,从全局出发进行思考和规划,避免因为思考的片面化和局部性导致的遗漏。 重要需求遗漏,紧急:既然是又重要又紧急的需求,那么必然就得调整当前开发工作的顺序,把这个遗漏的重要紧急需求排进去,把工作安排下去;然后就要考虑从需求的优先级和需求的结构化管理两个方面入手复盘,并切实改进,避免类似情况再次发生。 需求遗漏:如果是不太重要的需求遗漏,按照常规做法处理即可;可以根据其紧急程度和影响,决定是否调整工作顺序让这个需求插队;如果这种情况反复出现,那建议可以考虑进行复盘,从需求结构化管理的角度进行分析,并商讨改进措施。 事后的处理 事后其实就是复盘,复盘的关键是要基于盘来推演和分析,这个盘就是事前制定的模型和规范。是有模型有规范,但执行出了问题?还是说这几个需求情况特殊,模型比较简单没有覆盖到这些特殊情况?还是说模型和规范都没问题,就是人员能力不足,导致判断偏差大?只有找到正确的根因,才能够真正有效的解决问题,所以不复盘则已,要复盘就务必要认真严格地进行复盘。 怎么复盘?复盘也是有方法,业界也有相关书籍可供参考借鉴。例如温伯格在《成为技术领导者》中提出的MOI模型就可以用作复盘的一种思路。 M:激励(Motivation),是不是人们没有动力去做这件事情? O:组织(Organization),是不是无组织无纪律、一片混乱,人们不知道自己或别人该做什么? I:想法或创意(Idea/Innovation),是不是缺少如何解决这些问题的点子或创意,不知道有什么办法解决这个问题? 复盘时要注意,受限于能力、经验以及出问题次数多少的影响,可能无法得出一个准确的结论和必然有效的解决方案。此时,一方面需要秉持持续改进的心态,可以先落实当前已经比较明确的改进措施,后续再观察效果,持续复盘、持续改进即可。另一方面也可以先采取一些临时措施。 预留时间:比如,如果确实很难分析清楚为什么总是会遗漏需求,无法进行非常有针对性的处理时,也可以采取较为模糊应对的方式。可以拉取过去一段时间的工作记录,评估这段时间每个迭代的突发需求所消耗的工作量投入,可以取个平均值,然后在后续进行迭代工作安排的时候,固定的预留出一定量的时间,用于应对极有可能会出现的突发需求。 需求拆细:当出现突发需求,导致需要调整工作顺序时,很有可能会因为需求颗粒度大以至于腾挪余地有限,而难以避免突发需求带来的影响,因而还应该尽可能地采取拆细需求的方式,将颗粒度比较大的需求拆分为较小颗粒度的需求,可以增加调整需求工作顺序时的灵活性。 确定要预留多少时间,可以利用CodeArts的Epic-Feature-Story结构,把突发需求汇集在一起,便于统计。例如创建一个特殊的Epic“突发需求”,下一级是为每个迭代创建的Feature,用来承载各个迭代里面具体的那些突发需求(体现为Story),并做好工时的记录,迭代结束后,就可以来计算出现了多少个突发需求、投入了多少工作量了。 图1 规划迭代 也可以采用“模块”字段来辅助记录和统计突发需求的数据。例如,新建一个模块,取名“突发需求”,所有突发需求都标注为这个模块,那么后续就可以基于模块进行筛选或查看报表等方式来统计突发需求所消耗的工作量了。 图2 迭代内容 事前的处理 事前的处理放到最后来介绍,是因为已经出现了问题就需要在当时尽快处理,所以先介绍了事中的处理。但当处理完问题也完成了事后复盘,就需要考虑未来的事前,尽可能的避免问题发生。 简单来讲,事前的话,就是要做好需求的结构化管理和需求的优先级管理,以及做好相关规范的宣导、人员的分配和能力的培养,这样就能够有效的避免或减小突发需求带来的影响了。
  • 避免重要需求遗漏的思路 避免重要需求遗漏,首先需要反问一句——为什么这些紧急重要的需求无法更早预见?同样的,需要了解: 具体是哪些外界原因?这些原因是否有共性,有的话,那就针对性处理。 增加的需求有无共性特点?有的话,可以针对性处理。 临时增加有多临时?是否有提高或改善响应能力的空间,如果可以更快调整和响应,使得这些临时需求产生不了什么影响,那么这个问题也就不再是问题了。 既然是常态,为何流程没有做出调整去应对?是调整过流程或工作方式,还是无法解决问题,还是说不知道该怎么调整流程或工作方式去适应?
  • 改进优先级模型 市场在变化,用户在变化,产品在变化,优先级模型自然也必须跟随着发生变化。可以定期或不定期的安排对需求优先级模型进行复盘分析,找出可以改进或优化的点,并跟进落实。可以是定期开展,例如每个月进行一次复盘,把这个月所涉及的需求都拿出来审视,或者是其中有调整过优先级顺序或者出现过问题的需求拿出来审视均可;也可以是不定期,以问题驱动的方式,比如某天进行了大量需求优先级的调整,那么当天或第二天就可以临时召集一次复盘会议,分析为什么会发生这种情况。 复盘要有好的效果,就必须尽可能的复原问题发生当时的情况,所以前面提到的知识库记录就变得非常重要。复盘会议应提供尽可能多的相关信息以便参会人员了解情况,充分探讨。 复盘过程中,要定位出正确的根因,是模型本身设计有问题(例如要素和尺度),还是取值、加权有问题(比如某类需求的预计收入就是非常难估算),还是过程管理的问题(比如过早进行估算,因为缺乏必要信息,导致估算得出的优先级顺序不准确),并进行针对性地改进。
  • 排定需求优先级顺序 比如成本收益分析,可以是把预期市场收入作为收益值,把预期研发投入作为成本值,计算差值,或计算ROI均可。假设需求A预计收益为10万元,研发投入按人天折算预计3万元,那么预计利润就是7万元,预计ROI是233%;需求B预计收益为5万元,研发投入折算预计4万元,那么预计利润1万元,预计ROI为25%。那么需求A的优先级顺序就要比需求B更靠前。这种相差悬殊的情况往往不难判断,假设还有需求C预计利润也是7万元、预计ROI是50%,以及需求D是预计利润1万元、预计ROI是500%。那么A、B、C、D这四个需求的具体顺序怎么排定呢? 如果真的出现这种情况,那就更复杂一些了,需要考虑引入权重,然后计算出一个综合值,这个值按照某种规则(例如从大到小)排列出来就是最终的优先级顺序,比如: 需求名称 预计收入(万元) 预计成本(万元) 预计利润(万元) 利润权重 利润加权值 ROI(%) ROI权重 ROI加权值 综合值 优先级顺序 需求A 10 3 7 0.1 0.7 233% 1 2.33 3.03 2 需求B 5 4 1 0.1 0.1 25% 1 0.25 0.35 4 需求C 21 14 7 0.1 0.7 50% 1 0.5 1.2 3 需求D 2 1 1 0.1 0.1 500% 1 5.0 5.1 1 根据上述表格中所得出的结果,应该依序将需求D、需求A、需求C、需求B排入开发计划。优先级顺序,在CodeArts中,可以使用工作项的“优先级顺序”字段来实现,该字段取值范围1~100。 图2 Story工作项优先级顺序展示
  • 需求优先级管理四步走 需求优先级的管理,其实是为了帮助需求管理者确定先做哪个需求后做哪个需求,从而可以最大化回报、最小化风险或投入。要做好优先级管理,或者更直接来说是优先级顺序管理,需要做到如下四件事情: 确定优先级模型:优先级看起来像是一个简单直接的值,但实际上它是一个基于多种因素进行综合判断之后得出的一个值,这些因素和判断原则,就是优先级模型。 排定需求优先级顺序:将需求代入优先级模型进行计算,得出每个需求的优先级顺序。 调整需求优先级顺序。 改进优先级模型:如果经常发生需要调整需求优先级顺序的情况,那么应该对这些情况进行一定的复盘分析,如有必要,修正或改进当前的优先级模型,让它可以适应实际情况,以避免调整优先级顺序的情况反复发生;另外就是需求可能已经交付或发布上线,但是该功能的实际用量或价值不吻合预期,则需要反思对这些需求的分析和判断,究竟是分析判断有误还是优先级模型有误,并进行相应的调整。
  • 确定优先级模型 成本收益分析就是最简单的一种优先级模型,重要/紧急的四象限也是一种优先级模型,Kano模型也是一种优先级模型,它们都可以确定需求的优先级顺序。模型可以简单也可以复杂,根据企业实际需要来确定即可。 务必切记优先级模型一开始不应过于复杂,那样会导致优先级管理的管理开销过高,喧宾夺主,反而影响了需求的开发和交付。如果较为简单的模型就可以满足需要,就应该首选使用较简单的模型。企业可以从简单开始,逐渐完善,不需要也不应该在一开始就追求过于复杂的模型。 简单可以体现在考虑的要素更少,比如成本收益分析只考虑两个要素,就比考虑更多要素的模型简单。 简单还可以体现在要素的取值范围更窄或精度要求更低,比如预计利润只要求评估高/中/低,就比要求以万元为单位评估预计利润更简单。
  • 为什么要进行需求结构化管理? 并不是说任何情况下都需要进行软件项目需求的结构化管理。如果只是事务性质的管理需求,也就是有需求了能记录、能跟踪状态、实现之后不需要继续跟踪、也不需要维护需求与需求之间的关联,那么不需要思考需求结构化管理这个问题。这种情况下,不管是用CodeArts的Scrum项目模板还是看板项目模板,都可以管理好需求和软件项目。只有在需求较多、且需求之间存在关联,而且即便是已经实现的需求也需要进行一定的管理、维护的情况下,才需要去思考需求结构化管理的问题,此时,需要使用CodeArts提供的Scrum项目模板,因为里面有Epic-Feature-Story的需求结构,以及需求规划功能可以辅助团队进行需求的结构化管理。
  • 以什么为依据进行需求结构化管理? 需求结构化管理,应该以什么为脉络来建立这个结构呢?软件研发无非是分为项目型软件研发和产品型软件研发两种,项目通常来讲都是临时性的,或者说短期性的,而产品或者软件系统是长期性的,或者说会持续维护、更新其功能特性的。项目复项目,很可能通过持续地完善和刷新同一套软件产品或系统来达成项目目标,交付软件项目所要求的功能特性的。这就意味着,需求结构化管理,需要以产品或系统的功能特性的脉络为依据。而软件项目管理所需要关注的版本、客户、模块等信息,则可以通过需求的不同属性甚至标签等方式来实现。
  • 使用CodeArts进行需求结构化管理的一种方式 接下来,介绍推荐的一种方式。 第一步:建立CodeArts项目 针对一个产品或系统,建立一个CodeArts项目,该产品或系统的所有需求,都在此CodeArts项目里面进行管理。 第二步:确立Epic-Feature-Story的需求结构 Epic要承载业务价值,即Epic需要是对企业本身是有意义的。 将产品或系统的业务模块作为Epic,比如用户中心、购物车、配送管理等,比如一家货运云商的油卡业务,就适合作为一个Epic,针对油卡的各种功能,就可以作为Feature展开。 Feature要承载用户价值,也即对于用户来说,是可以理解这个Feature,且认可其价值的,通常Feature也是用户可以直接感知、可以操作的。 针对前面业务模块的具体展开、拆开,就可以作为Feature,也可以简单理解为一个业务流程、用户流程;以前面用户中心为例,用户信息可以是一个Feature、我的订单可以是一个Feature、地址管理可以是一个Feature;或者以油卡为例,购买油卡、我的油卡等就可以作为不同的Feature。 Feature往往还是有些大有些复杂,那就需要拆成颗粒度更小的Story,用来承载一个具体的用户操作。 例如可以查看到所有订单、可以过滤订单、可以修改用户昵称、可以自定义头像等功能。 再往下一级的Task,就主要是为了分工协作,也即是说,如果Story可以包干到人,那么不再拆分Task也是可以的。 Task往往是关于工程师需要具体做的工作,也就跟业务价值、用户价值、用户单步操作都没有了什么关系,通常都是把Story按照具体的组件、模块进行拆分,例如前端、后台、数据库之类的,或者是按照工作流程分工来拆分,例如UCD、开发、测试、部署等。 如下图所示,各层级为: Epic:用户中心。 Feature:地址管理。 Story:用户可以新建地址。 Task:【Web端】页面入口及地址编辑表单、【数据库】用户地址数据表设计和实现。 图1 需求规划 第三步:通过工作项的属性,对于不同模块以及版本进行管理 工作项详情页面对应属性如图2所示: 模块:Web端。 发布版本号:1.0.1.2。 图2 属性示例 对于模块清单的维护,可以在工作项编辑状态,单击“模块”字段右侧的,即可在弹出窗口进行操作,可以添加、修改、删除模块。 图3 编辑模块 在工作项管理的Backlog视图下,通过“设置显示字段”增加“模块”字段后,既可以很方便地看到工作项相关的模块,也可以进行过滤。
  • 解决措施 综合前面几种参考情况经分析后得出了根因,基于这些根因,可以将所要解决的问题重新描述如下: 如何进行需求结构化管理? 如何进行需求优先级管理? 如何避免重要需求遗漏? 如何进行需求结构化管理? 首先,并不是说任何情况下都需要进行需求的结构化管理。只有在需求较多、且需求之间存在关联,而且即便是已经实现的需求也需要进行一定的管理、维护的情况下,才需要去思考需求结构化管理的问题,此时,团队需要使用CodeArts提供的Scrum项目模板,因为里面有Epic-Feature-Story的需求结构,以及需求规划功能可以辅助团队进行需求的结构化管理。那么团队应该以什么为脉络来建立这个结构呢?这就意味着,团队的需求结构化管理,需要以产品或系统的功能特性的脉络为依据。而软件项目管理所需要关注的版本、客户、模块等信息,则可以通过需求的不同属性甚至标签等方式来实现。 简单来说,可以通过如下三个步骤来完成: 针对产品或系统建立CodeArts项目。 确立Epic-Feature-Story的需求结构。 对不同模块以及版本的管理,可以通过工作项的属性来进行管理。 更多详情请参考如何进行需求结构化管理。
  • 问题分析 一个项目在从小到大的过程中,项目团队也势必扩张,面临新员工的加入。新员工对刚接触的项目不够熟悉,所以针对新员工的培养(培训)是非常有必要投入人员配置的。 项目发展过渡到平稳期的时候,可能会因为公司体制、薪资待遇、员工身心疲惫等原因,出现老员工的离职等情况,如果离职的老员工是核心骨干,就可能导致某些如业务无人知晓、关键技术断层等风险,在此期间,也包括老员工随着项目的延续,慢慢产生了对原来工作厌倦,或者因认知的提升以想要寻求一些新的工作内容,进而做了转型的打算。所以上述问题,如果没有得到较好的解决,将会影响到项目的进度和造成不必要的开销,甚至对于团队内部成长、自组织能力的发展建设也是不利的。 所以问题的关键,仍旧是新人的培养。
  • 解决措施 一般来说,在针对新员工加入所带来的内耗、关键核心人员的离职风险、个人发展转型等情况的应对,可以从团队信息、工作方式以及 知识管理 三方面来通过建立信息管理库进行解决。 CodeArts是集华为研发实践、前沿研发理念、先进研发工具为一体的研发云平台(更多了解请见参考文档)。以CodeArts为例,在CodeArts中提供了知识库服务。知识库本身是一种以知识库文档为中心,共同创作为手段,依靠众人不断地更新修改为实现的多人协作的工具。可以通过知识库来管理和搭建项目或团队内的信息管理库,以达到有知识点可留存,有基本信息可查的目的,参考如下: 团队信息 用来记录项目团队的职能划分,职责担当等。当新人入职时,可以通过在知识库中的团队信息,了解团队的组织分工等。这样一方面可以让新员工对团队人员分工有所了解方便日后的交流,另一方面也能让具备较高能力的新员工根据团队组织分工现状提出改善意见等。 图1 团队信息 工作方式 团队需要制定团队内的工作方式,如对开发流程、代码的管理、需求的变更等,团队统一按照要求进行工作。当有新员工加入,可以通过知识库中的工作方式,了解相关流程等进而快速开展工作,同时也减轻了老员工在工作方式上对新员工的培训所带来的消耗。 图2 工作方式 知识管理 知识管理对于项目和团队是最重要的,大部分的产品都需要技术相关的输出整理,无论是基于现有项目进行维护,还是重构,开发新的应用,做知识整理都是不可或缺的。这种必要性在于,当新员工加入后,可以通过知识管理的学习了解项目所用技术框架,进而快速上手工作;当老员工离职,团队因有了知识库对技术、框架、业务等知识的相关管理,可以较好的应对离职所带来的没有backup、没有其他人懂某项技术、没有其他人知道某段业务逻辑等影响;当员工内部转岗或转变业务技术方向时,可以帮助其了解相关知识,有助于更好的帮助提升跨专业技能。 图3 知识管理 更多关于知识库的相关内容请参考需求管理用户指南-知识库。
  • 背景 企业随着业务的扩张,需要新员工不断加入,经常会遇到这样的问题,其开发组长要对每一位新人交代相关的知识点、工作方式以及团队信息等,工作量在短期内激增。在一个项目中,随着时间推移、业务的扩张,项目中的核心成员,如项目经理、开发组长等往往都会面临如下几种情况和挑战: 新员工加入,需要诸多方面的培养(培训),以便能快速进入工作状态。 老员工的离职,导致项目中缺少能了解和掌握关键技术和业务的人员。 员工在工作了一段时间后,对自己的规划有了新的想法,从而想要转换工作方向。 那么,项目负责人应该如何应对这些事件呢?
  • 方案架构 “凤凰商城”示例程序架构 “凤凰商城”示例程序的架构图如图2所示。 图2 凤凰商城技术架构图 示例程序由表1中的5个可以独立开发、测试和部署的微服务组件构成。 表1 凤凰商城微服务组件表 微服务组件 说明 Web用户端服务器(对应样例代码中的“Vote”功能) 业务逻辑:用户可以通过浏览器访问此服务的WebUI。当用户在特定商品上单击“Like”时,服务将用户所选择物品的记录保存在Redis缓存中。 技术栈:Python、Flask框架。 应用服务器:Gunicorn。 Web管理端服务器(对应样例代码中的“Result”功能) 业务逻辑:用户可以通过浏览器访问此服务的WebUI,会动态显示用户端UI上用户单击“Like”的统计数据,此数据来自PostgreSQL数据库。 技术栈:Node.js、express框架。 应用服务器:server.js。 后台订单批处理程序(对应样例代码中的“Worker”功能) 业务逻辑:此服务为后台进程,会监控Redis缓存中物品记录,并将新纪录取出并保存在PostgreSQL数据库中,以便管理端UI可以抽取数据进行统计显示。 技术栈:.net core或者Java(此服务提供两种技术栈实现了同样的功能,可根据需要修改配置选择其中一个作为运行时进程)。 订单缓存 业务逻辑:此服务作为用户端UI服务的数据持久化服务存在。 技术栈:Redis 订单数据库 业务逻辑:此服务作为管理端UI服务的数据源。 技术栈:PostgreSQL “DevOps全流程样例项目”构成 “DevOps全流程样例项目”是一个Scrum类型的模板项目,项目中预置了部分服务的使用模板。项目实践过程中涉及到的产品及服务如下表。 表2 实践涉及产品/服务列表 服务 说明 CodeArts 需求管理 预置3个已规划并已完成的迭代、项目的模块设置、以及若干统计报表。 代码托管 预置代码仓库“phoenix-sample”,存放项目示例代码。 代码检查 预置4个任务 编译构建 预置5个任务。 制品仓库 用于存储通过构建任务生成的软件包。 部署 预置3个应用。 测试计划 功能测试用例库,预置十余个测试用例。 流水线 预置5条流水线。 说明: 购买专业版或企业版CodeArts套餐的用户,创建示例项目后可见5条流水线;购买体验版或基础版CodeArts套餐的用户,创建示例项目后只可见流水线“phoenix-workflow”,升级套餐至专业版或企业版后,需重新创建示例项目才可见5条流水线。 其它组件和服务 统一身份认证 服务 用于管理账号。 容器镜像服务 用于存放构建任务生成的Docker镜像。 云容器引擎 用于软件包部署,与E CS 部署属于两种不同的部署方式。 弹性云服务器 用于软件包部署,与CCE部署属于两种不同的部署方式。
  • 背景信息 CodeArts结合多年研发经验与业界先进的实践提出了一套可操作可落地的敏捷开发方法论:HE2E DevOps实施框架。 图1 HE2E DevOps实施框架 规划和设计 步骤①和②是业务(或者是客户)与技术之间进行产品规划,梳理产品整体脉络,以及进行产品规划实施设计,并控制需求粒度与拆分的过程。 软件开发的本质是为了解决问题,提供用户价值的,而不仅是为了提供功能。影响地图就是用来鉴别用户需求是什么,深层的根因是什么。 用户故事就是目标和需求的载体,以用户的场景来讲故事,便于在客户、业务与开发之间进行信息的传递。在这个过程中,独立的需求条目的堆积,很容易导致只能看到各个需求条目,不能从整个解决方案思考需求。用户故事以用户使用的场景为主线,将大的阶段点,及其细分的活动,以树状的结构进行梳理和展现,既可以看到独立的需求条目,又能够看到整体需求场景。 计划和跟踪、迭代开发 步骤③~⑩是Scrum框架过程,是主要的管理实践。 Scrum定义了一个相对完整的敏捷过程管理的框架。在CodeArts中,将Scrum的框架与团队日常的开发活动,很好的融合起来。主要的过程产物包括产品故事列表、迭代故事列表、潜在可交付的产品增量、以及过程中产生的问题列表;核心的团队活动包括Sprint计划会议、团队每日站会、Sprint演示会议、Sprint回顾会议等会议、以及团队的日常更新。 同时,将Kanban方法与Scrum框架进行了结合,团队借鉴Kanban方法中的精益思想,可视化价值流,发现并解决阻塞与瓶颈,加速价值流交付,并加快反馈回路,持续进行改进。 持续交付 从步骤⑪开始,进入到工程实践,也就是通常说的CI/CD过程。 持续交付以代码配置管理为基础,除了传统意义的代码资产安全与管控、多人并行开发、版本与基线管理外,也体现了团队的协作与沟通。 代码检查(即静态扫描)、自动化的构建、各阶段的自动化测试、以及相应的自动化部署过程,都被有机的串联在流水线上。 除了代码检查、构建、测试、部署等动态的阶段与活动,还有制品管理,以及各级的环境管理,包括开发环境、测试环境、准生产环境,以及生产环境。 持续交付流水线就是将整个持续交付中,都有哪些阶段,分别运行在什么环境,每个阶段执行什么活动,准入与准出的质量门禁,以及每个阶段的输入与输出的制品进行管理。
  • 跟踪项目状态 每日站立会议跟踪任务进度。 迭代开始后,项目组通过每日站立会议沟通每个工作项的当前进展,并对工作项状态进行更新。 使用卡片模式能够简单直观的查看迭代中各工作项的当前状态。 进入“迭代”页面,单击图标,切换到卡片模式。页面中展示了处于每种状态下的工作项卡片,通过拖拽工作项卡片即可更新其状态。 迭代评审会议验收迭代成果。 在到达迭代的预计结束时间前,项目组召开迭代评审会议,展示当前迭代的工作成果。 “迭代”页面提供了迭代统计图表,团队可以方便的统计当前迭代的进度情况,包括需求完成情况、迭代燃尽图、工作量等。 进入“迭代”页面,单击“统计”,即可展开迭代进度视图。
  • 方案概述 产品从规划到上市要经过复杂的研发过程,CodeArts Req提供了基线评审和变更管理能力,实现需求基线-受控变更-变更评审-变更管理的过程化管理,让基线变更如门禁一样,达到阈值才能启动下一步,确保产品研发“做正确的事”。 某公司计划推出一款智能手表,涉及多部门、多团队的协作,且已经过前期的多轮需求沟通与澄清,将研发需求分配到各产研团队。为保障产品如期保质交付,需要确保不同研发生产团队都忠实执行任务,按照既定的需求进行研发落地。这时就需要对需求进行基线管控,基线后的需求不允许随意更改。本文介绍如何通过IPD系统设备类项目来模拟智能手表研发项目进行基线评审管理。
  • 操作流程 模拟案例的基本操作流程如下: 图1 基本操作流程 表1 CodeArts Req缺陷管理实践操作流程说明 流程 说明 步骤一:提交缺陷单 测试人员在环境中发现问题单后,需要在项目中进行创建并提交。 步骤二:根因定位与排期修复 开发人员接到问题单后需要对其进行根因定位和排期修复。 步骤三:回归测试与验收缺陷 开发人员将问题单修复完成后,测试人员需要对其进行回归测试,缺陷单创建人需要对其进行验收。
  • 方案概述 在整个产品生命周期管理中,缺陷管理是非常关键的一环。无论是硬件系统还是软件开发,都难免遇到不计其数的缺陷,如果缺陷管理不善,产品质量势必大打折扣。华为基于多年沉淀的质量运营管理经验,打造出一套行之有效的缺陷管理优秀实践,为团队提供统一、高效、风险可视的缺陷跟踪平台,确保每一个缺陷都被高质高效闭环。 某公司计划推出一款智能手表,研发周期较长,研发过程涉及多个部门、多团队的协作,如何保证缺陷在多个组织间的流转、最终达到有效闭环呢?本文介绍如何通过IPD系统设备类项目来模拟智能手表研发项目进行缺陷管理。
  • 步骤二:在特性树下创建系统特性 搭建好产品特性树后,产品经理Frank需要录入支撑大颗粒度特性实现的详细工作项,也就是SF(系统特性),以开启特性的全生命周期管理。 选择左侧菜单中任意特性集节点,单击右侧“新建SF”,进入新建SF页面。 在新建SF页面输入以下信息,单击“确定”,完成SF的新建。 表3 新建SF信息说明 参数 说明 取值样例 标题 SF的标题,根据需要填写。 智能手表支持骑行实时刷新路径 描述 SF的描述,根据需要填写。 特性背景:智能手表支持实时刷新路径。特性价值:增强产品竞争力。特性详情:无 归属项目 指的是SF的所属项目,默认为当前所在项目。 智能手表 当前责任人 将当前系统特性指派给相应责任人处理。 Frank 所属特性集 指的是SF的所属特性集,默认为当前选择的特性集,支持修改。 智能手表特性树 优先级 指的是SF的研发优先级,可根据需要选择。示例:中。 中 重复执行操作1、2操作,可逐步完善特性树下SF的创建。
  • 方案概述 产品的核心资产就是系统特性,一旦上市系统特性就会不断的增长,Req提供产品全量系统特性管理,通过特性树可以更好管理系统特性,实现产品资产不丢失,让跨代的系统特性快速继承和发展。 某公司计划推出一款智能手表,涉及多部门、多团队的协作,需要保证不同部门(如市场营销、产品规划、研发等)都能对该款智能手表的功能特性有统一的认识,确保研发过程中的每个流程都与产品整体战略相符。本文介绍如何通过IPD系统设备类项目来模拟智能手表研发项目进行特性树管理。
  • 操作流程 模拟案例的基本操作流程如下: 图1 基本操作流程 表1 CodeArts Req特性树管理实践操作流程说明 流程 说明 步骤一:搭建特性树 基于产品特性分类逐步搭建起完整特性树。 步骤二:在特性树下创建系统特性 在基于特性分类的特性集下创建系统特性。 步骤三:系统特性落地研发 通过对系统特性进行分解和基线管控来完成系统特性的落地研发。 步骤四:特性树的版本快照管理和追溯 通过版本快照功能对特性树进行版本管理,消除售前与研发团队之间的沟通差异,助力您更好地管理产品。
共100000条