华为云用户手册

  • 请求示例 创建地址组,命名为AutoTester746010.580123789,指定ip类型为IPv4,地址集包含:192.168.3.2、192.168.3.40、192.168.3.20-192.168.3.100、192.168.5.0/24。 POST https://{{endpoint}}/v3/b2782e6708b8475c993e6064bc456bf8/vpc/address-groups { "address_group" : { "ip_version" : 4, "name" : "AutoTester746010.580123789", "ip_set" : [ "192.168.3.2", "192.168.3.40", "192.168.3.20-192.168.3.100", "192.168.5.0/24" ], "description" : "test", "enterprise_project_id" : "0aad99bc-f5f6-4f78-8404-c598d76b0ed2", "max_capacity" : 20 } }
  • 响应示例 状态码:201 POST操作正常返回,更多状态码请参见状态码。 { "address_group" : { "id" : "dd18a501-fcd5-4adc-acfe-b0e2384baf08", "name" : "AutoTester746010.580123789", "tenant_id" : "b2782e6708b8475c993e6064bc456bf8", "ip_version" : 4, "max_capacity" : 20, "ip_set" : [ "192.168.5.0/24", "192.168.3.20-192.168.3.100", "192.168.3.40", "192.168.3.2" ], "ip_extra_set" : [ { "ip" : "192.168.5.0/24", "remarks" : null }, { "ip" : "192.168.3.20-192.168.3.100", "remarks" : null }, { "ip" : "192.168.3.40", "remarks" : null }, { "ip" : "192.168.3.2", "remarks" : null } ], "enterprise_project_id" : "0aad99bc-f5f6-4f78-8404-c598d76b0ed2", "created_at" : "2019-06-28T02:06:38.000+00:00", "updated_at" : "2019-06-28T02:06:38.000+00:00", "description" : "test", "status" : "NORMAL", "status_message" : "" }, "request_id" : "f568db7a-2675-4271-8747-3e3f1c6381ba" }
  • 响应示例 状态码:200 PUT操作正常返回,更多状态码请参见状态码。 { "address_group" : { "id" : "dd18a501-fcd5-4adc-acfe-b0e2384baf08", "name" : "vkvgykvsvhjaaaa1", "tenant_id" : "b2782e6708b8475c993e6064bc456bf8", "ip_version" : 4, "max_capacity" : 20, "ip_set" : [ "192.168.5.0/24", "192.168.3.20-192.168.3.100", "192.168.3.43", "192.168.3.2" ], "ip_extra_set" : [ { "ip" : "192.168.5.0/24", "remarks" : null }, { "ip" : "192.168.3.20-192.168.3.100", "remarks" : null }, { "ip" : "192.168.3.43", "remarks" : null }, { "ip" : "192.168.3.2", "remarks" : null } ], "enterprise_project_id" : "0aad99bc-f5f6-4f78-8404-c598d76b0ed2", "created_at" : "2019-06-28T02:06:38.000+00:00", "updated_at" : "2019-06-28T02:14:01.000+00:00", "description" : "xxxxxxxxxx", "status" : "NORMAL", "status_message" : "" }, "request_id" : "5bbd1640-fa68-4362-9a5c-30c4809958e0" }
  • 请求示例 更新id为dd18a501-fcd5-4adc-acfe-b0e2384baf08的地址组,更新名称为vkvgykvsvhjaaaa1、ip地址集和描述。 PUT https://{endpoint}/v3/b2782e6708b8475c993e6064bc456bf8/vpc/address-groups/dd18a501-fcd5-4adc-acfe-b0e2384baf08 { "address_group" : { "name" : "vkvgykvsvhjaaaa1", "ip_set" : [ "192.168.3.2", "192.168.3.43", "192.168.3.20-192.168.3.100", "192.168.5.0/24" ], "description" : "xxxxxxxxxx" } }
  • 需求变更情况下的移动 不接受变更 当一个Sprint的Sprint Backlog和Sprint目标确认后,为了保持团队在很短的时间内,全力以赴的向着Sprint目标冲刺,一般情况下不接受PO提出的需求变更。在很短的周期内,PO是有责任负责整理好Sprint Backlog的,进一步说,PO至少应该整理好接下来1-3个Sprint需要做的Product Backlog,然后按优先级,挑选出最近一个Sprint的Product Backlog形成Sprint Backlog,因此经常性的需求变更建议团队不接受,另一方面也是一个好习惯的养成,促进PO对需求的把控能力。所以这种情况下,团队正常移动看板中的卡片就好。 拥抱变更 完全拒绝需求变更是不现实的,有的时候高优先级的需求一定要满足变更的要求。比如,有市场时效性的,本Sprint不能完成,不能抢占市场先机,但变更需要遵循“NO CHANGE”原则。接到需求变更后,首先不是直接接受或者拒绝,而是先对需求进行分析,分析对当前迭代的影响。一般分析结果为以下几种情况: 无价值需求 与PO沟通协商,对于无价值需求果断拒绝,看板中的卡片不做任何移动。至于这些无价值的需求怎么来的,情况比较多,这里不做讲解了。 变更少,影响小的需求 高优先级的,对Sprint影响小的需求变更,可以柔和接纳,但要评估工作量,做等价交换。简单说,就是把未做的优先级低的需求从看板中替换出来,移动到Product Backlog中,这也是Product Backlog Refinement的过程,然后看板中加入高优先级需求的卡片就好。如果是交换已经产生工作量的需求就需要分情况处理:一种是移回到Product Backlog列,这种情况多于以完成特性需求为目标,更符合敏捷。另外一种是移到Done列,这种情况多见于物理看板中对统计度量数据比较看重的团队,团队需要对工作量进行有效统计。第二种情况在有些电子看板中也可以灵活统计来满足团队需求,那么就可以直接移动到Product Backlog列。 变更多,影响很大的需求 高优先级的,对Sprint影响很大的需求变更,需要停止当前Sprint,重新规划新Sprint。这里的影响很大情况是指当前Sprint中的需求可能再做下去也没有价值,这时果断停止当前Sprint,另外一种情况也可能是变更的需求本身确实需要很大的工作量才能完成,也需要停止当前迭代。这时根据最新的Sprint Backlog布置看板中的卡片就好。
  • 问题分析 如何使用 IAM 来控制权限? 通常一个IAM主账号下,可以创建多个软件开发项目。默认情况下,只有IAM主账号默认可以设置是否能允许子账号创建项目,只有IAM主账号能查看所有项目和成员等。在某些企业场景下,IAM主账号可以通过IAM的细粒度权限管理,设置部分子账号可以代替IAM主账号的设置权限。 项目成员的角色有哪些? 通过项目管理创建的所有项目都支持基于本项目的权限设置,且每一个项目的权限设置相互独立。 在项目管理中,默认项目角色包含以下几大类: 项目管理员:项目的创建者。 项目经理:项目开发管理员。 测试经理:项目测试管理员。 产品经理:项目的需求分析管理者。 系统工程师:项目的架构分析管理者。 Committer:参与项目开发的人员。 开发人员:参与项目开发的人员。 测试人员:参与项目测试的人员。 参与者:参与项目指定工作处理的人员。 浏览者:关注或浏览项目内容的成员。 运维经理:参与项目维护工作的成员。 如何将成员添加到项目并分配角色?
  • 解决措施 需求管理服务使用 统一身份认证 服务(Identity and Access Management,简称IAM)管理整个租户下多项目的统一权限。在单个项目内,基于具体项目设置进行项目内的权限管理。需求管理的权限管理分为两种,分别是云服务级和项目级。 云服务级:服务级的权限通过统一身份认证服务设置。IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。 关于IAM的详细介绍,请参见IAM产品介绍。 云服务级权限详情请参见需求管理云服务级权限介绍。 项目级:项目级的权限通过需求管理服务设置。项目级权限详情请参见项目级权限。 更多关于成员的相关内容请参见管理CodeArts项目级权限。
  • 了解更多:成员迟到的解决方案 对于经常有人迟到的现象,团队成员在回顾会议上可以认真分析原因,重新征求团队成员意见,为什么每日站会的开始时间一定是早晨九点,其它时间是否可以,是否有什么困难,团队成员共同找出问题原因并做出决定。 促进团队成员需要自觉按时到场的意识,尊重别人的意识。会议主持人要按照预先定的时间、地点开始会议,而不管是否还有人没到场。有人迟到不要重新讲解错过的开会内容,否则会传达可以迟到的信号。 对于迟到的人员要有一些惩罚措施,比如红包、做俯卧撑、全体下午茶等。惩罚措施和数量由团队成员事先共同商定。如果是红包,如何支配由团队共同决定。相比别人给你的规则,大家更愿意执行自己提出的规则,守自己的承诺。 如果说惩罚措施毫无约束力,那就把惩罚做到可视化。比如在白板中规划出一个特定区域,每迟到一次就把照片贴上去,次数累加。这个特定迟到的区域是迟到信息的扩大器,让更多的人看到。 对于经常迟到的人需要谈话,试着理解他有哪些问题,是否有真正的困难,关心团队成员,大家一起帮助解决困难。 如果迟到现象严重,可能不是团队能解决的问题了,可以试着从公司政策方面施压,严格执行公司的考勤制度,但其实不符合敏捷的自管理思想,不是真正解决问题的方法。 总结下解决迟到现象应该关注以下因素: 分析原因,关心成员,共同决定。 同一时间,同一地点,准时开会。 有人迟到,不重复同步信息。 建立小惩罚机制。 理解迟到原因,是否有困难。
  • 解决措施 如何玩转站会?按照如下思路学习下。 图2 站会学习思路 理解站会价值 团队每天站着召开的短时间会议称之为每日站会。每日站会是团队对每天工作检视和调整,提前进行自组织。 通过站会团队每个人可以了解全局,知道发生了什么事情,实现冲刺目标的进展如何,对当天的工作是否需要修改计划,有什么问题或者障碍需要处理。每日站会是一个检视、同步、适应性制定每日计划的活动,以帮助自组织团队更好地完成工作。 有些团队认为每日站会是解决问题的,是传统意义上向项目经理汇报状态的会议,其实都是不准确的,或者说误解了它的核心意义和价值。 每日站会对于让团队成员每天集中精力在正确的任务上是十分有效的。因为团队成员在同伴面前当众作出承诺,所以一般不会推脱责任。给团队成员一种精神激励,要对每日的工作目标信守承诺。每日站会还可以保证Scrum Master和团队成员可以快速处理障碍,培养团队文化,让每个人意识到是“整个团队在一同战斗”,一些没有使用敏捷的组织有时候也同样采用每日站会。 归纳站会的价值和意义,以及误解: 图3 站会的价值、意义和误解 明确正确站会 正确的站会应该怎么开呢? 对于每天的工作,为了提前进行自组织,团队成员准时围绕着白板前站立(增加仪式感)。 图4 站会示意图 团队成员在站会上需要轮流发言,回答如下三个问题: 我昨天做了什么?(从上次站会到现在,我做了什么?) 今天计划做什么?(在下次站会之前,我会做什么?) 我遇到了哪些问题和障碍?(哪些问题和障碍阻碍了我的工作或使我的工作放缓?) 这简单的三个问题可以促使团队成员每天都要检视自己的工作、制定自己的工作计划、获得清除障碍的帮助以及对团队做出承诺。如果团队按正确的方式开站会,进行得好的话,可以达到如下效果: 图5 站会目标 共济压力 健康的敏捷团队都会有共济压力。所有的团队成员都承诺要一起完成冲刺的工作。这就使得团队成员之间相互依赖并且对彼此负责。如果一个团队成员连续几天都做相同的事情,并且没有进展,显然缺乏前进的动力,而其它团队成员不能视而不见。因为他未完成的工作会变成其他成员的障碍。 细粒度的协作 在站立会中,团队成员的交流应该快速而且有重点。举例,当一个成员说完今天计划做什么后,另外一个成员可以会说:“哦,原来你今天计划做这个啊,这就意味着我要调整我的工作优先级,没关系,你按照你的计划做吧,我可以调整。很高兴你说了这些。”这种细粒度的协作使得团队成员知道如何及何时仰仗对方。一个敏捷团队应该追求高效、零等待,避免等待浪费。 聚集少数任务 在站会期间,团队中的每位成员都可以知道哪些工作正在进行,哪些工作已经完成。健康的团队应该关注事情的完成,也就是说任务不能一直处在进行中。在站会中,团队需要确认哪几个少数任务是当前的焦点,这样团队就可以尽快把焦点任务做完。换句话说,做完10件事,远比正在做100件事儿更有意义。 每日承诺 在站会上,团队成员需要对团队做出承诺。这样团队成员就知道敏捷交付什么成果并如何保证彼此负责。 提出障碍 其实在敏捷中任何时间都可以提出障碍,但是站会是一个黄金时刻,团队成员可以停下来认真思考“有什么事情阻碍了我或让我的工作放缓了”。 最佳实践和关键点 通过大量实践总结出一些能够帮助开好站会的关键点,也许这些关键点并不是全适用,所以还是要根据现实情况做出合适自己团队的选择和裁剪。这些关键点,称之为“站会18 key”。 站会18key按照人(People)、过程与方法(Procedures and methods)、工具与设备(Tools and equipment)划分,帮助大家记忆和学习。 图6 站会18key Key 1: 主持人 会议主持人(比如Scrum Master,也可以团队成员轮班,轮流感受下站会的节奏)确保会议的举行,并控制会议时间,团队成员进行简短有效的沟通。 Key 2: 两个比萨大小的团队 在《Scrum敏捷软件开发》一书中,作者麦克·科思提出了一个简单的方法用来辨别什么是合适的团队规模,那就是,如果两个比萨够整个团队成员吃的话,那么这个团队的规模比较适合。 因为两个比萨大小的团队跟家庭的规模相似,站立会的目标可以轻松达成。当团队是家庭规模大小时,人们头脑中就很容易追踪到团队中发生的事情。人们可以很容易地记住每个人每天的承诺,以及每个人对于其他成员或团队成果的责任。Scrum中也建议团队规模不要太大,一般为7-9人左右。 最后再强调一点,并不是要求团队一定要按以上18key进行开站会,18key只是在很多实践中总结出来的一些经验,曾经解决过很多问题。对于每个具体团队需要结合实际情况进行选择应用18key。 Key 3: 限制发言 团队外成员也可以参与,但没有发言权。在每日站会中,只有为了实现冲刺目标面全力投入的人应该发言,对于参与者,应该作为旁观者。 Key 4: 预留缓冲时间 建议开发团队在上班时间后的半小时或者1小时后开每日站会。这样可以给例行工作(如查看邮件)提供一些缓冲时间。晚点开会还可以给开发团队一点时间来检查前一天的工作(比如,前一天晚上开始运行的自动化测试工具所生成的缺陷报告)。 Key 5: 同时同地 每日站立会议应尽可能在同一时间、同一地点召开,建议在团队的可视化的任务板前面召开。同一时间和地点也可以有效帮助团队成员形成固有的节奏,不用浪费时间再找地点和确认当天的开会时间。 Key 6: 准时开始 所有的团队成员需自觉按时到场,会议主持人要按照预定的时间按时开始会议,而不管是否有人还没到。对于迟到的人员要有一些惩罚措施,比如缴纳罚金或做俯卧撑等。惩罚措施和数量由团队成员事先共同商定,如果是罚金,如何支配也由团队共同决定。如果团队成员就是不自觉按时到场怎么办?关于更多这方面的解决方案请参考下面的了解更多中的“了解更多:成员迟到的解决方案”。 Key 7: 站立开会 团队成员一定要站着开会,这也是会议的名字叫站立会议的原因。站着开会确实比坐着开会简明扼要,让人更想快一点结束会议,开始一天的工作。坐下容易使人放松,精神不集中,不易控制时间。 Key 8: 强调站会目的 经常强调站会目的,特别适合刚刚启用站会的团队。可以由Scrum Master来强调,如果没有Scrum Master也可以由其它Leader(轮职的主持人也可以)来强调。然后询问团队成员对站会的意见及得到的成果,几次以后,团队成员可能选择目标声明作为每天的度量,在每次站会之后,团队成员对自己的表现做出相应的评价,是一种强有力的自我管理工具。 Key 9: 聚焦三个问题 站会期间,团队成员就说那典型的三个问题(昨天…今天…障碍是…),其它事情不说。只讨论已完工和即将开始的工作,或者在这些工作中碰到的问题和障碍。目的不是向领导汇报工作,而是团队成员之间相互交流,以便共同了解项目情况和共同解决问题。 Key 10: 眼神支持 这是一个好玩的游戏:当一个人站在前面发言时,要求其他团队成员都直视发言人,并进行眼神交流。别让发言人抓到你在看别处。这个游戏帮助发言人的发言简洁,同时可以加强成员对发言人所讲内容的理解。这样可以帮助团队加速完善每日计划。 Key 11:严格时间盒 站会是开发团队的一个时间盒限定为 15 分钟的事件。 时间建议不要太久,对于5-9人的团队来讲15分钟的会议时间足够。 Key 12: 会后讨论 某位团队成员在发言期间,其他人员应认真倾听,如有疑问可简短确认,但不应做过多讨论。如果对某位成员的报告内容感兴趣或需要其他成员的帮助,任何人都可以在每日站立会议结束后即刻召集相关感兴趣的人员进行进一步的讨论。 Key 13: 问题风险跟踪 将站会成员遇到的问题和风险做概要的记录(不必详细,只要说明重点即可,不需要在记录上花费更多的时间),然后保留到知识库,或者方便大家跟踪的地方。此目的是确保这些问题和风险得到了闭环(例如,问题和风险可以会后安排专题讨论、跟踪,直到关闭)。 Key 14: 回顾改善 本身每日站会就是最小化的戴明环(PDCA),另外团队在回顾会议上时也可以对站会开的效果进行回顾,哪些地方做得好,哪些地方做得不好,有哪些改善点可以在下一轮迭代中改善等(站会只是回顾会议中一个回顾点,如果没有问题不用做专题回顾)。 Key 15: 发言棒 站会时可以利用一些小道具来保证会议不会超时。我会找一只笔或者一个娃娃(女生多的团队)作为发言棒给一位成员,让他拿着发言棒陈述完“三个问题”,然后将其交给下一位。我会找一只笔或者一个小物件作为发言棒给一位成员,让他拿着发言棒陈述完“三个问题”,然后将其交给下一位。没有拿发言棒的成员不允许发言。如果有人用时过长,就及时打断,并要求将发言棒传给下一个人。 Key 16: 冲刺待办列表 站会中,成员在发言时可以利用冲刺待办列表来检视当前工作项的完成状态。冲刺待办列表记录了团队成员工作的进展,需要每天更新并跟踪。电子化的冲刺待办列表更能很好的解决异地团队开站会思路不聚集的问题。发言人在回答“三个问题”时,同步可以展示冲刺待办列表给团队。 CodeArts冲刺代办列表演示如下: 图7 CodeArts冲刺待办列表 Key17: 任务看板 在站会期间,通过任务板,团队中每一个人都可以知道哪些工作正在进行,哪些工作已经完成。团队关注事情的完成,一直处于进行中的任务会被发现,成为当前的焦点,这样团队就可以尽快把这些焦点问题解决掉。 Key 18: 燃尽图 燃尽图是将进展和剩余工作情况可视化的有力工具。一般竖轴表示剩余工作量(小时、故事点或工作项个数),横轴表示冲刺时间(一般单位为天)。 图8 燃尽图 开站会时,发言人可以利用燃尽图来做进展讲解。燃尽图让所有团队成员一眼就可以看出冲刺的状态,进展情况非常清楚,看出工作是否在按计划进行,状态是否良好。这些信息可以帮助团队确定是否可以完成预定数量的工作项,并在冲刺早期做出明智的决定。使用燃图易达成如下效果: 高可视性,直观展示进度情况和剩余工作。 快速识别风险。 帮助团队建立信息,了解自己的能力。 了解团队成员工作步调。 了解团队冲刺计划。 和任务墙能非常高效地匹配使用。 关于18key,并不是站立会议时要把所有18key都要执行一遍,这里的18key只是提供了一些参考实践和关键点,18key来源于大量的实践,也解决过团队站会的问题,所以大家在站会遇到了问题时,可以先想到这个18key,然后选择适合自己团队的key。举一个例子,这里有四个key是关于工具的,这些工具都要使用吗?不一定都要使用。敏捷宣言里提到“个体和互动高于流程和工具”,工具是为团队服务的,不是团队的负担,更不能被工具所绑架。所以团队一起选择适合的,才是正确的做法。
  • 问题分析 关于站会的问题大致分为两种场景: 场景一:团队非常清楚应该开站会,认识到站会确实有一些价值,但是对于目前的站会状况不是很满意,如何玩转站会是团队关心的。对于这类的团队,问题的根源在于不是非常清楚站会的核心价值,以及不知道怎么样实践,团队更需要一些具体的措施来帮助他们更好的开站立会议。 场景二:团队在试着开站立会议,不知道站立会议有什么价值,好像开和没开没有什么区别。针对这种情况,是因为团队没有尝到站会的价值带来的好处,团队没有概念,同样缺乏最佳实践。 综上,不管是第一种还是第二种情况,都需要对站会的价值进一步理解,也就是为什么要开站会,它的意义是什么?然后,都需要明确正确的站会应该怎么样开?最后,都需要一些最佳实践和关键点来帮助团队开好站会。
  • 背景 企业的一些项目团队每天都开站会,但是效果不理想,好像是形式化的内容,并没有起到什么实质的作用。比如,开完站会后,成员继续做着手头的工作,成员依然只关心自己的工作,其他人员的工作完全不了解,好像站会并没有带来什么效果。再比如,开站会本身也有很多问题:会议超时、成员迟到、成员注意力不集中等,具体常见问题如图1所示。 图1 站会常见问题 如何正确的开站会?站会的意义在哪里?可以不开站会吗?这些问题一直困惑着不少的团队。
  • 问题分析 首先,相对于传统开发模式的指派开发任务,需要知道为什么在敏捷开发中是领取任务。在敏捷中,不管是敏捷宣言还是Scrum指南,都没有指派(assign)一词,而是使用了一个术语自组织,如下: 最佳的架构、需求和设计出自于自组织的团队(敏捷宣言12项原则)。 自组织团队自己选择以何种方式来完成工作,而不是由团队之外的人来指导(Scrum指南)。 开发团队是自组织的。没有人(即使是Scrum Master)有权告诉开发团队应该如何把产品待办列表变成潜在可发布的功能增量(Scrum指南)。 那么“自组织”是什么呢? 从字面的意思来理解,自组织就是:安排分散的人或事物使其具有一定系统性或组成一个整体,而安排的人就是安排者自己。在敏捷开发中,自组织团队就是具备自我管理、自我驱动、自我学习等能力的敏捷开发团队本身,这样的团队一般具备如下特点: 团队成员自己“拉”工作,不是被动等待领导分配工作。 团队作为一个整体管理工作。 团队仍然需要辅导和指导,但不需要指挥和控制。 团队成员彼此沟通紧密,互通有无。 团队主动发现和提出问题并共同解决。 团队不断提高自己的技能,鼓励探索和创新。 更多关于自组织的相关内容不在本文的范围内,如感兴趣请参阅参考文档。 从敏捷宣言和Scrum指南关于任务的工作方式上来看,在践行敏捷的时候,主要发挥的是开发团队自身的主观能动性,开发团队由原来的控制性转变成了自组织性,而开发任务也就由原来的指派变为了领取。这样的好处是,领取任务就是发挥了人的主动性,而自主性是人们从事创造性和解决问题的动力之一,良好的自我组织能给团队和个人带来高绩效、出色的工作成果以及喜欢的工作环境。另外,每个人都是最了解自己的,也擅长为自己分配任务,相对于传统的指派开发任务所带来的易主观臆断、分配不当等更具有合理性。 然后,回到“计划会议认领任务的时候,有几个任务没人认领怎么办?”这个问题上。 在此之前需要先澄清的一个观点:在计划会议中,不一定非要全部领取完开发任务。在Scrum指南中指出“领取工作在Sprint计划会议和Sprint期间按需进行。”可以理解为,在每日Scrum站会上基于目标领取任务。另外,Mike Cohn也表示过,不建议在计划会议中领取开发任务,这样可能会导致目标由团队变为了个人,进而违背了敏捷的本意,降低了灵活性。 一般来说,开发任务没人认领的原因主要有: 开发任务的难度大:当开发任务比较难以解决,超出了团队大部分成员的能力时,团队成员可能会存在担心加班加点而不愿意认领。 开发任务超范围:当开发任务的内容超出团队成员所掌握的范围时,如开发不会测试,就可能会出现“我是想认领的,但能力有限”的情况。 担心受到他人指责:工作内容存在一定的挑战性,担心由于自己没有做好,导致团队目标没有达成而受到指责。 那么应该如何解决呢?
  • 解决方案 在一个敏捷Scrum团队中,Scrum Master扮演着重要的角色,该角色一部分的作用就是要帮助团队成为自组织型团队,以便让团队能以积极的心态去面对冲刺的开发任务。此外,当出现任务没有人愿意认领的情况时,首先Scrum Master应该帮助团队弄清楚没有人认领的原因是什么再对症下药,下面基于分析中的三种情况分别给出解决措施。 开发任务难度大 对于开发任务难度大的情况,Scrum Master应该组织团队进行有效的任务分解,使用探针Spike技术,探索出解决措施以降低任务的难度,再由团队去认领;或者鼓励技术能力较一般的成员和技术大牛通过结对编程的方式来一同认领任务。 在华为云CodeArts中,可以对该类难度大的用户故事通过子工作项的方式进行拆分,同时在基本信息中通过设置处理人和抄送人的方式以记录结对编程的人员配对情况: 图1 Story内容介绍 除此以外,在每日Scrum站会的时候要留意和了解该开发任务的情况,进行风险评估,如有问题及时帮助协调解决。在回顾会议中,应对该类情况进行分析并能输出基于团队的一套标准工作方式方法,然后将解决方案记录在团队知识库中,华为云CodeArts提供了知识库的功能,可以为团队很好的整理和记录工作方式,如图2所示。 图2 任务认领说明 开发任务超范围 敏捷提倡的团队是跨职能团队,但是团队的跨职能并不意味着一个人能做所有的事情,希望的跨职能团队往往是由掌握多项技能的T型人才(每个成员在一个专业领域具有深度,而在其他领域具有广度)所组成的。首先需要Scrum Master能够和团队整理和维护成员技术矩阵,把个人技能掌握情况对团队公开(知道团队欠缺什么、知道可以和谁学等),然后定期组织技术分享等活动以帮助团队成员学习(主要以学习一项新的技术后的分享方式),这样可以在一定程度上提升成员在冲刺中愿意领取其他任务的热情。另外,还可以由专长成员和意愿成员组队,采用结对编程的方式领取任务,以实现个人技术的扩充。团队成员的T型能力建设,不仅仅能让团队领取任务的时候有更多的选择,也提供了成员的backup能力,减少无人认领的情况发生。此外,同样也需要Scrum Master留意日常评估风险和引导团队回顾该事项并维护团队知识库。 担心受到他人指责 工作内容存在一定的挑战性,担心由于自己没有做好,导致团队目标没有达成而受到指责。Scrum Master应该对团队贯彻以团队为整体的思想,并指导和强调Scrum的价值观,尊重团队的每一个成员的背景、经验,也包括开发任务的选择,还要鼓励成员能有勇气去选择和尝试。在实际的工作中,可以通过在墙上、白板等贴上标语(如“尊重他人”、“只有团队没有个人”等)的方式,让团队从思想意识方面发生转变,慢慢敢于去领取有挑战性的任务。此外,Scrum Master要充分保护好成员对有挑战工作认领的热情。如防止在回顾会议上出现指责和批斗的情况,回顾和总结永远应该聚焦的是做事的方式方法而不是对人的苛刻和指责。
  • 总结 以上三种没有人认领任务的情况,是比较常见的。但在真正的实际项目中,每个公司或团队的情况都不尽相同,无法穷举所有,应具体情况具体分析。比如,一个刚刚转型的敏捷团队,在开发任务的领取上可能会更偏向于半指派半领取的方式。这就好比中国经济一样 “以市场经济为导向,适当进行宏观调控”。但不管这个“调控”的力度如何,都应该鼓励团队成员能积极主动地领取任务,并随着任务的进展情况灵活调整,及时做好风险把控,必要的时候需要其他渠道的协调帮助或相关领导的介入,以保证迭代的目标不受影响。
  • 避免重要需求遗漏的思路 避免重要需求遗漏,首先需要反问一句——为什么这些紧急重要的需求无法更早预见?同样的,需要了解: 具体是哪些外界原因?这些原因是否有共性,有的话,那就针对性处理。 增加的需求有无共性特点?有的话,可以针对性处理。 临时增加有多临时?是否有提高或改善响应能力的空间,如果可以更快调整和响应,使得这些临时需求产生不了什么影响,那么这个问题也就不再是问题了。 既然是常态,为何流程没有做出调整去应对?是调整过流程或工作方式,还是无法解决问题,还是说不知道该怎么调整流程或工作方式去适应?
  • 具体操作方法 具体操作,可以按照事前、事中、事后各个阶段来采取不同的措施处理。 事中的处理 根据具体情况不同,在发现需求遗漏的当时,可以采取如下一些做法: 重要需求遗漏,不紧急:既然不紧急,按照常规做法增加进去即可,但如果经常出现遗漏,就要考虑是否是需求分析和规划的实践做法有问题,才会导致问题持续出现,这种情况,应强化需求结构化管理,从全局出发进行思考和规划,避免因为思考的片面化和局部性导致的遗漏。 重要需求遗漏,紧急:既然是又重要又紧急的需求,那么必然就得调整当前开发工作的顺序,把这个遗漏的重要紧急需求排进去,把工作安排下去;然后就要考虑从需求的优先级和需求的结构化管理两个方面入手复盘,并切实改进,避免类似情况再次发生。 需求遗漏:如果是不太重要的需求遗漏,按照常规做法处理即可;可以根据其紧急程度和影响,决定是否调整工作顺序让这个需求插队;如果这种情况反复出现,那建议可以考虑进行复盘,从需求结构化管理的角度进行分析,并商讨改进措施。 事后的处理 事后其实就是复盘,复盘的关键是要基于盘来推演和分析,这个盘就是事前制定的模型和规范。是有模型有规范,但执行出了问题?还是说这几个需求情况特殊,模型比较简单没有覆盖到这些特殊情况?还是说模型和规范都没问题,就是人员能力不足,导致判断偏差大?只有找到正确的根因,才能够真正有效的解决问题,所以不复盘则已,要复盘就务必要认真严格地进行复盘。 怎么复盘?复盘也是有方法,业界也有相关书籍可供参考借鉴。例如温伯格在《成为技术领导者》中提出的MOI模型就可以用作复盘的一种思路。 M:激励(Motivation),是不是人们没有动力去做这件事情? O:组织(Organization),是不是无组织无纪律、一片混乱,人们不知道自己或别人该做什么? I:想法或创意(Idea/Innovation),是不是缺少如何解决这些问题的点子或创意,不知道有什么办法解决这个问题? 复盘时要注意,受限于能力、经验以及出问题次数多少的影响,可能无法得出一个准确的结论和必然有效的解决方案。此时,一方面需要秉持持续改进的心态,可以先落实当前已经比较明确的改进措施,后续再观察效果,持续复盘、持续改进即可。另一方面也可以先采取一些临时措施。 预留时间:比如,如果确实很难分析清楚为什么总是会遗漏需求,无法进行非常有针对性的处理时,也可以采取较为模糊应对的方式。可以拉取过去一段时间的工作记录,评估这段时间每个迭代的突发需求所消耗的工作量投入,可以取个平均值,然后在后续进行迭代工作安排的时候,固定的预留出一定量的时间,用于应对极有可能会出现的突发需求。 需求拆细:当出现突发需求,导致需要调整工作顺序时,很有可能会因为需求颗粒度大以至于腾挪余地有限,而难以避免突发需求带来的影响,因而还应该尽可能地采取拆细需求的方式,将颗粒度比较大的需求拆分为较小颗粒度的需求,可以增加调整需求工作顺序时的灵活性。 确定要预留多少时间,可以利用CodeArts的Epic-Feature-Story结构,把突发需求汇集在一起,便于统计。例如创建一个特殊的Epic“突发需求”,下一级是为每个迭代创建的Feature,用来承载各个迭代里面具体的那些突发需求(体现为Story),并做好工时的记录,迭代结束后,就可以来计算出现了多少个突发需求、投入了多少工作量了。 图1 规划迭代 也可以采用“模块”字段来辅助记录和统计突发需求的数据。例如,新建一个模块,取名“突发需求”,所有突发需求都标注为这个模块,那么后续就可以基于模块进行筛选或查看报表等方式来统计突发需求所消耗的工作量了。 图2 迭代内容 事前的处理 事前的处理放到最后来介绍,是因为已经出现了问题就需要在当时尽快处理,所以先介绍了事中的处理。但当处理完问题也完成了事后复盘,就需要考虑未来的事前,尽可能的避免问题发生。 简单来讲,事前的话,就是要做好需求的结构化管理和需求的优先级管理,以及做好相关规范的宣导、人员的分配和能力的培养,这样就能够有效的避免或减小突发需求带来的影响了。
  • 改进优先级模型 市场在变化,用户在变化,产品在变化,优先级模型自然也必须跟随着发生变化。可以定期或不定期的安排对需求优先级模型进行复盘分析,找出可以改进或优化的点,并跟进落实。可以是定期开展,例如每个月进行一次复盘,把这个月所涉及的需求都拿出来审视,或者是其中有调整过优先级顺序或者出现过问题的需求拿出来审视均可;也可以是不定期,以问题驱动的方式,比如某天进行了大量需求优先级的调整,那么当天或第二天就可以临时召集一次复盘会议,分析为什么会发生这种情况。 复盘要有好的效果,就必须尽可能的复原问题发生当时的情况,所以前面提到的知识库记录就变得非常重要。复盘会议应提供尽可能多的相关信息以便参会人员了解情况,充分探讨。 复盘过程中,要定位出正确的根因,是模型本身设计有问题(例如要素和尺度),还是取值、加权有问题(比如某类需求的预计收入就是非常难估算),还是过程管理的问题(比如过早进行估算,因为缺乏必要信息,导致估算得出的优先级顺序不准确),并进行针对性地改进。
  • 需求优先级管理四步走 需求优先级的管理,其实是为了帮助需求管理者确定先做哪个需求后做哪个需求,从而可以最大化回报、最小化风险或投入。要做好优先级管理,或者更直接来说是优先级顺序管理,需要做到如下四件事情: 确定优先级模型:优先级看起来像是一个简单直接的值,但实际上它是一个基于多种因素进行综合判断之后得出的一个值,这些因素和判断原则,就是优先级模型。 排定需求优先级顺序:将需求代入优先级模型进行计算,得出每个需求的优先级顺序。 调整需求优先级顺序。 改进优先级模型:如果经常发生需要调整需求优先级顺序的情况,那么应该对这些情况进行一定的复盘分析,如有必要,修正或改进当前的优先级模型,让它可以适应实际情况,以避免调整优先级顺序的情况反复发生;另外就是需求可能已经交付或发布上线,但是该功能的实际用量或价值不吻合预期,则需要反思对这些需求的分析和判断,究竟是分析判断有误还是优先级模型有误,并进行相应的调整。
  • 确定优先级模型 成本收益分析就是最简单的一种优先级模型,重要/紧急的四象限也是一种优先级模型,Kano模型也是一种优先级模型,它们都可以确定需求的优先级顺序。模型可以简单也可以复杂,根据企业实际需要来确定即可。 务必切记优先级模型一开始不应过于复杂,那样会导致优先级管理的管理开销过高,喧宾夺主,反而影响了需求的开发和交付。如果较为简单的模型就可以满足需要,就应该首选使用较简单的模型。企业可以从简单开始,逐渐完善,不需要也不应该在一开始就追求过于复杂的模型。 简单可以体现在考虑的要素更少,比如成本收益分析只考虑两个要素,就比考虑更多要素的模型简单。 简单还可以体现在要素的取值范围更窄或精度要求更低,比如预计利润只要求评估高/中/低,就比要求以万元为单位评估预计利润更简单。
  • 排定需求优先级顺序 比如成本收益分析,可以是把预期市场收入作为收益值,把预期研发投入作为成本值,计算差值,或计算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工作项优先级顺序展示
  • 为什么要进行需求结构化管理? 并不是说任何情况下都需要进行软件项目需求的结构化管理。如果只是事务性质的管理需求,也就是有需求了能记录、能跟踪状态、实现之后不需要继续跟踪、也不需要维护需求与需求之间的关联,那么不需要思考需求结构化管理这个问题。这种情况下,不管是用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是集华为研发实践、前沿研发理念、先进研发工具为一体的研发云平台(更多了解请见参考文档)。以CodeArts为例,在CodeArts中提供了知识库服务。知识库本身是一种以知识库文档为中心,共同创作为手段,依靠众人不断地更新修改为实现的多人协作的工具。可以通过知识库来管理和搭建项目或团队内的信息管理库,以达到有知识点可留存,有基本信息可查的目的,参考如下: 团队信息 用来记录项目团队的职能划分,职责担当等。当新人入职时,可以通过在知识库中的团队信息,了解团队的组织分工等。这样一方面可以让新员工对团队人员分工有所了解方便日后的交流,另一方面也能让具备较高能力的新员工根据团队组织分工现状提出改善意见等。 图1 团队信息 工作方式 团队需要制定团队内的工作方式,如对开发流程、代码的管理、需求的变更等,团队统一按照要求进行工作。当有新员工加入,可以通过知识库中的工作方式,了解相关流程等进而快速开展工作,同时也减轻了老员工在工作方式上对新员工的培训所带来的消耗。 图2 工作方式 知识管理 知识管理对于项目和团队是最重要的,大部分的产品都需要技术相关的输出整理,无论是基于现有项目进行维护,还是重构,开发新的应用,做知识整理都是不可或缺的。这种必要性在于,当新员工加入后,可以通过知识管理的学习了解项目所用技术框架,进而快速上手工作;当老员工离职,团队因有了知识库对技术、框架、业务等知识的相关管理,可以较好的应对离职所带来的没有backup、没有其他人懂某项技术、没有其他人知道某段业务逻辑等影响;当员工内部转岗或转变业务技术方向时,可以帮助其了解相关知识,有助于更好的帮助提升跨专业技能。 图3 知识管理 更多关于知识库的相关内容请参考需求管理用户指南-知识库。
  • 背景 企业随着业务的扩张,需要新员工不断加入,经常会遇到这样的问题,其开发组长要对每一位新人交代相关的知识点、工作方式以及团队信息等,工作量在短期内激增。在一个项目中,随着时间推移、业务的扩张,项目中的核心成员,如项目经理、开发组长等往往都会面临如下几种情况和挑战: 新员工加入,需要诸多方面的培养(培训),以便能快速进入工作状态。 老员工的离职,导致项目中缺少能了解和掌握关键技术和业务的人员。 员工在工作了一段时间后,对自己的规划有了新的想法,从而想要转换工作方向。 那么,项目负责人应该如何应对这些事件呢?
  • 参考文档 《Scrum精髓》,Kenneth S. Rubin 《用户故事与敏捷方法》,Mike Cohn 2019年中国DevOps行业现状报告:中国信息通信研究院、华为云DevCloud、南京大学联合发布 《用户故事实战》,Mike Cohn 《成为技术领导者》,杰拉尔德·温伯格 《复盘+:把经验转化为能力》,邱昭良 Scrum指南(2017-Scrum-Guide-Chinese-Simplified),2017年11月版 Kenneth S. Rubin. Scrum精髓[M].北京:清华大学出版社 Scrum指南2007版 Mark C. Layton. 敏捷项目管理[M].北京:人民邮电出版社 Should Team Member Sign Up for Tasks During Sprint Planning? Lyssa Adkins. 如何构建敏捷项目管理团队[M].北京:电子工业出版社 父主题: 附录
  • 步骤一:启用并创建标签策略 如下步骤仅针对示例中的关键参数进行设置和介绍,其他参数保存默认,更多创建标签策略的详细信息请参见创建标签策略。 以组织管理员或管理账号的身份登录管理控制台,进入Organizations控制台。 进入策略管理页,单击标签策略操作列的“启用”。 在弹窗中勾选确认框,然后单击“确定”,完成标签策略功能启用。 单击“标签策略”,进入标签策略管理页。 单击“创建”,进入创建标签策略页面。 参考如下说明设置标签策略内容,其他参数均可保持默认配置。 参数 示例 说明 标签键 ABC 设置标签策略定义的标签的键。 标签策略仅会对此处设置的标签生效。 标签键的大写合规性 勾选此项 指定标签键的大小写形式来定义合规性。 勾选此项则表示使用标签键的大小写形式进行校验,也就是说为资源添加的标签的键为“ABC”则符合规范,添加“abc”、“Abc”等其他大小写形式的标签则为不合规,标签策略将阻止不合规标签的添加操作。 执行资源类型 ces:alarm 指定执行标签策略检查的资源类型。 勾选此项后单击“添加资源类型”,在弹窗中阅读并勾选确认标签策略存在的风险说明,然后选择资源类型,单击“确定”。 单击右下角的“保存”,标签策略创建成功。
  • 步骤三:验证标签策略 本步骤对标签策略的标签规范管理效果进行验证。 以绑定该标签策略的成员账号登录管理控制台,进入 云监控服务 控制台,创建告警规则并为其添加标签,验证标签策略是否生效。 为告警规则添加标签“ABC”,标签添加成功。 为告警规则添加标签“abc”,界面提示此标签校验不合规,需修改后再次提交,表示标签策略已生效且验证无误。 当您在创建资源时添加不合规的标签,标签策略将阻止标签添加操作,同时资源也无法创建成功; 当您为已创建的资源添加不合规标签时,标签策略仅会阻止标签添加操作,不会对资源产生影响。
  • 准备工作 已创建组织,且组织中至少已加入一个成员账号。具体操作请参见使用Organizations管理多账号。 为账号充值。 Organizations服务为免费服务,使用Organizations服务的相关功能不收取任何费用。 但当您的账号因欠费受限冻结后,将无法在Organizations控制台执行任何写操作,因此您需要确保账号有足够的余额,避免因账号欠费冻结而无法使用Organizations服务的相关功能,如何充值请参见账户充值。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全