团队协作:从需求到代码实现指南

1 概述
1.1 背景介绍
DevOps 是一种结合开发(Development)和运维(Operations)的软件开发和运维实践,旨在通过自动化、协作和持续改进,缩短开发周期,提高交付效率和质量。
软件开发生产线(CodeArts)是华为云提供的一站式 DevOps 平台,即开即用,随时随地在云端交付软件全生命周期,覆盖需求下发、代码提交、代码检查、代码编译、验证、部署、发布,打通软件交付的完整路径,提供软件研发流程的端到端支持。CodeArts 作为华为云的 DevOps 平台,为企业提供了一套完整的工具链和实践方法,帮助企业快速实现 DevOps 落地,提升软件开发和运维的效率与质量。通过 CodeArts,企业可以构建自动化、协作化和持续改进的 DevOps 文化,适应快速变化的市场需求。
1.2 适用对象
企业
个人开发者
高校学生
1.3 案例时间
本案例总时长预计 60 分钟。
1.4 案例流程

说明:
① 登录开发者空间-云主机;② 打开浏览器访问 CodeArts,购买 CodeArts,在 CodeArts 项目中,进行需求管理操作,创建代码仓库及分支;③ CodeArts IDE 安装 CodeArts Check 代码检查插件,代码开发,代码检查;④ 提交、推送代码,合并代码分支。
体验完整案例请点这里👉️👉️👉️团队协作:从需求到代码实现指南
2 实践准备
2.1 购买 CodeArts
进入华为开发者空间工作台界面,点击打开云主机 > 进入桌面连接云主机。如果还没有领取云主机进入工作台界面后点击配置云主机,选择 Ubuntu 操作系统。

本案例中,使用华为云 CodeArts 作为云上开发平台,完成需求管理、代码托管、代码检查,所以首先需要购买 CodeArts,如果您已购买 CodeArts,请直接进行步骤 2.2 创建用户。
在开发者空间-云主机桌面,双击软件开发生产线。

单击立即使用按钮,根据提示登录华为云账号,勾选同意服务声明,单击立即开通。

提示恭喜!您已开通成功,即完成了 CodeArts 服务的购买。

2.2 创建用户
软件开发是多个角色共同协作,确保软件开发项目的顺利进行和高质量交付,所以我们需要先创建几个用户。
登录统一身份认证服务IAM,单击创建用户,依次创建三个用户 Maggie、Chris、Billy,自定义设置用户初始密码,其他配置项保持默认,单击下一步。

在加入用户组(可选)页,不做配置,直接单击创建用户。
在操作确认弹窗中,按照提示填写验证码等信息,单击确定完成用户创建。

2.3 创建 CodeArts 项目
返回CodeArts首页,单击立即使用。

CodeArts 预置了多个项目模板可供选择,每个模板适用不同的场景:
IPD-系统设备类:涉及到软硬件配套开发,产品需求相对固定,开发周期长,一般为 6~9 个月,多采用瀑布模式。适用于嵌入式软件场景,比如通信设备、汽车、家电、消费电子等涉及到软硬件复杂产品。
IPD-独立软件类:软件可独立部署销售,多采用敏捷开发,客户需求变化频繁、快速规划、敏捷发布,交付周期一般为 2~3 个月甚至更快。适用于 IT 应用及平台类软件,比如 ERP 软件、CRM、数据库、网管软件等。
IPD-自运营软件/云服务类:以微服务为作战单元小步快跑,快速规划持续交付,发布频繁,交付周期 23 周左右甚至 35 天,多采用 DevOps 敏捷模式。适用于云服务开发,微服务架构,自运营软件场景居多,比如公有云、互联网应用软件。
Scrum:增量迭代式的业界敏捷研发流程,通过迭代计划会议、每日站会、迭代回顾、验收会议来进行简单高效的研发管理。适用于迭代式增量的软件开发。
看板:轻量、灵活和简单的团队协作方法,它将项目的需求、缺陷和任务可视。适用于任何行业、任何团队、任何角色高效协作。

CodeArts 也提供了一些示例项目,供开发者熟悉使用:

根据模板的介绍,本项目以 Scrum 模式进行迭代开发,每一周为一个周期,进行项目进度模拟,下面演示创建项目的具体操作。
未创建过项目的用户,直接在项目模板中选择 Scrum,单击选用。

创建过项目的用户,单击新建项目。选择 Scrum 项目模板,单击选用,进入新建项目页。

自定义输入项目名称(如:Test_Item_Demo),其它保持默认即可,单击确定。

自动进入到新建的项目下。

2.4 添加项目成员
由产品负责人项目创建者为团队成员创建账号,并将成员添加到项目中;
本案例项目涉及一些项目角色(部分可缺省,这里仅为示例),为了方便介绍,本文档中每个角色对应一个人(可以是同一人),具体如下表:
进入创建 CodeArts 项目,单击导航 设置 > 成员管理 页面。
在成员视图页签中,单击添加成员 > 从本账号导入 IAM 用户。

在弹框中勾选步骤 2.2 中创建的 3 个用户,单击下一步。

为每一个成员在项目角色下拉列表中,依次为 Maggie 设置项目经理角色,Chris 设置开发人员角色,Billy 设置测试人员角色,单击保存。

最终添加完成所有项目成员并分配完成角色后,可在成员管理列表查看分配结果呈现。

3 项目管理与规划
CodeArts需求管理服务为团队协作提供高效支持,其功能涵盖多项目管理、敏捷迭代及任务管理等。
通过本章节,您将了解产品负责人和项目经理如何管理需求规划、迭代规划以及跟踪项目进度。
3.1 管理需求规划
使用思维导图的形式管理项目需求规划,将工作项的层级结构 Epic > Feature > Story > Task 展示出来,各层级工作项类型代表的含义如下表所示;
在规划页面依次创建 Epic、Feature、Story、Task,并填补相应的内容(全部内容自定义填充,本案例不提供详细内容填充);
进入创建 CodeArts 项目,单击导航 工作项 > 需求管理,选择规划页签,单击规划 > 思维导图规划。

自定义输入思维导图规划名称(如:Test_Item_Project_Plan),单击确定。

自动进入创建的规划,单击 Epic 列的+号,自定义输入 Epic 名称(如:演示项目 Demo),单击回车键,完成 Epic 创建。

创建完成后展示如下:

鼠标悬浮在 Epic 卡片上,单击插入子节点图标

,进行 Feature 创建。

自行填写 Feature 内容(以下图片内容仅为示例),创建结果如下:

同样,鼠标悬浮在 Feature 卡片上,单击插入子节点图标

,进行 Story 创建,并自行填写 Story 内容(以下图片内容仅为示例),创建结果如下:

同样,鼠标悬浮在 Story 卡片上,单击插入子节点图标

,进行 Task 创建,并自行填写 Task 内容(以下图片内容仅为示例),创建结果如下:

各节点均可通过单击标题,进入工作项详细页面,可进行描述信息补充,状态及负责人设置,附件上传和属性等内容修改,修改完毕后保存即可生效。
3.2 管理迭代规划
CodeArts 支持敏捷迭代开发、迭代计划和时间线清晰展现项目进展。本章节进行迭代创建、规划及任务分配。
创建迭代:进入创建 CodeArts 项目,单击导航 工作项 > 需求管理,选择迭代页签,单击

图标,自定义输入迭代名称(如:迭代一、迭代二、迭代三、迭代四),设置计划时间,单击确定,完成迭代创建。

规划迭代:单击未规划的工作项,在待规划列表中,勾选 Story/Task,在页面底部单击编辑 > 添加字段,在字段名称下拉列表中选择迭代,并在字段值下拉列表中选择对应的迭代,单击保存。

在迭代列表中,单击刚刚规划的迭代,可以看到上面选择的 Story/Task 已经纳入这个迭代。

分配 Story/Task:在迭代列表中,单击某个迭代,选择一个或多个 Story/ Task,参照规划迭代的方式,将字段处理人的值设置为对应责任人(如可分配给开发人员 Chris),单击保存。

3.3 跟踪项目状态
迭代开始后,项目组通过每日站立会议沟通每个工作项的当前进展,并对工作项状态进行更新,使用卡片模式能够简单直观的查看迭代中各工作项的当前状态。
每日跟踪任务进度:在迭代列表中,单击某个已规划的迭代,切换到卡片模式,页面展示如下:

页面中展示了处于每种状态下的工作项卡片,根据项目实际进展在每日站立会议上,通过拖拽工作项卡片即可更新其状态,操作效果如下:

迭代评审会议验收迭代成果:在到达迭代的预计结束时间前,项目组召开迭代评审会议,展示当前迭代的工作成果,迭代页面提供了迭代统计图表,团队可以方便的统计当前迭代的进度情况,包括需求完成情况、迭代燃尽图、工作量等。进入迭代页面,单击统计,即可展开迭代进度视图,页面效果展示如下(刚创建的项目和迭代不方便展示,这里用历史迭代做展示):

4 代码开发
CodeArts代码托管服务提供基于 Git 的在线代码管理服务,包括代码克隆/提交、分支管理等功能,本案例中模拟简单的代码开发全流程,包括:代码仓库和分支的创建、代码克隆、开发、检查、提交及合并代码分支。
4.1 下载样例代码
本案例为没有准备项目代码的开发者准备了样例代码。
在开发者空间-云主机桌面,单击鼠标右键,选择 Open Terminal Here,打开终端,输入以下命令,回车执行。
执行完成后,代码会下载到桌面的 E-Commerce-Java 文件夹下。

4.2 创建仓库管理代码
进入创建 CodeArts 项目,单击导航代码 > 代码托管 > 新建仓库。

新建方式选择普通新建,单击下一步。

自定义输入代码仓库名称(如:Test-Demo-Vue),其他配置项保持默认,单击确定。

创建完成如下图所示:

4.3 修改、检查、提交代码
代码托管服务支持多分支开发,并为分支合并建立了可配置的审核规则,当一个开发者发起一次分支合并请求时,仓库成员都可以参与到评审中,让更多的人参与到代码审视中,以确保合并代码的正确性。
本样例项目中采用分支来进行代码的开发。首先由开发人员 Chris 在代码仓库中创建分支,并进行代码开发,然后开发人员 Chris 在代码仓库中提交分支合并请求,项目经理 Maggie 评审通过后合并分支至主干。

4.3.1 创建代码分支
仓库创建完成,会有一个默认分支 master,即主线。一般而言,作为项目经理应该建议:不直接在 master 分支上进行代码开发,而是统一采用功能分支+合并请求的方式,并且每一个功能分支的代码,必须经过团队的其他成员评审后,才可以进行合并。本案例以实现商品详情需求为例展开演示操作。
单击导航工作项 > 需求管理,选择迭代页签,本次迭代待实现 Task,并将 Task 的状态修改为进行中。

单击导航代码 > 代码托管,找到刚刚创建的仓库,单击仓库名称进入代码仓库,选择代码页签,选择分支页签,单击新建分支。

自定义输入分支名称(如:product_details),关联工作项选择待实现的 Task,单击确定,完成分支创建。

4.3.2 代码克隆
在代码仓库中,单击克隆/下载,选择用 HTTPS 克隆,复制代码仓库的 HTTPS 地址。

在开发者空间-云主机桌面,单击鼠标右键,选择 Open Terminal Here,打开终端,输入以下命令,回车执行。
说明:仓库地址用上面复制代码仓库的 HTTPS 地址。

克隆代码需要用户鉴权,在提示输入 Username 和 Password 时,输入云端仓库的 HTTPS 用户名和密码(获取和设置方式见下图),执行完成后桌面上会出现与仓库名称相同的文件夹,证明代码已经克隆成功。

4.3.3 代码开发
在开发者空间-云主机桌面,双击打开 CodeArts IDE for Java,单击打开工程,选择桌面上克隆的仓库文件夹,单击打开。

打开工程后,单击左下角 master,在弹窗中选择步骤 4.2 中创建的 product_details 分支。

开发者可在该分支上开发及调试代码,考虑案例时间及可操作性,我们直接将步骤 4.1 中下载的代码,复制到仓库文件夹下,模拟代码已经开发完成。

4.3.4 代码检查
在 CodeArts IDE for Java 中,单击右上角的扩展,打开插件市场,输入 CodeArts Check 搜索出 CodeArts Check 代码检查插件,单击安装。

安装成功后,单击立即重载进行插件刷新。

项目重载需要 3~5 分钟,请耐心等待,待项目重载完成,即完成代码检查插件的安装。CodeArts IDE for Java 中单击鼠标右键,选择 CodeArts Check 项目检查进行代码检查。

检查完毕后,单击 IDE 下方的 CodeArts Check 菜单(若您的 IDE 下方找不到该菜单,是被折叠了,单击…即可找到),可以看到整体的项目的代码质量情况。

开发者根据代码检查结果和项目实际情况修改代码,本案例中不继续展开。
4.3.5 代码提交
项目代码在本地检查及调试无误后,即可将代码提交到云端仓库中。
在 CodeArts IDE for Java 中打开终端,执行以下命令,设置你的 git 身份标识。
说明:命令中的 Your Name 和you@example.com用自己的用户名和邮箱替换。

单击左侧菜单栏的源代码管理,按如下操作提交和推送代码:
保存更改到本地仓库:单击变化列表上的
号图标;
提交代码:在提交信息中填写本次代码实现的功能(本案例用实现商品详情 API 交互联调功能举例,提交信息填写 fix #工作项编号),单击 Commit;
推送代码:单击上方更多操作图标
,选择 Pull,Push > Push。

根据弹框提示输入步骤 4.3.2 克隆代码时使用的 HTTPS 用户名和密码,并回车。
进入创建 CodeArts 项目,单击导航代码 > 代码托管,找到 4.2 中创建的仓库,单击仓库名称进入代码仓库,选择代码页签,分支切换到 product_details 分支,可以看到代码已经提交到云端仓库的 product_details 分支。

单击导航工作项 > 需求管理,选择迭代页签,可以看到在代码提交信息时关联的工作项(这里是商品详情 API 交互联调),状态已经由进行中变为已解决。

4.3.6 合并代码分支
开发人员发起合并请求,将 product_details 分支代码合入 maser 分支。
在代码仓库中,单击合并请求 > 新建合并请求。

源分支选择 product_details,目标分支选择 maser,单击下一步。

填写标题(可自动带入),根据实际人员分工编辑选择合并人、检视人和审核人,本案例中为了方便可以选择自己,单击新建合并请求。如果源分支不再使用,可同时勾选合并后删除分支。

本案例中,合并请求的评审人与合并人均是自己。因此可评审合并请求内容,并在评审通过后完成分支合入。
进入代码仓库后,选择合并请求页签,可找到由开发人员创建的合并请求,单击该请求,查看合并请求详情。

依次单击检视门禁中的检视通过,审核门禁中的通过,并可在页面中留下评审意见,最后单击右上角的合入。

待合入完成,切换到代码页签,可以看到 product_details 分支中的代码已经合入 master 主分支。

至此,团队协作:从需求到代码实现指南全部完成。
4.4 反馈改进建议
如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
评论