[技术博客]使用Github进行软工开发管理

[技术博客]使用Github进行软工开发管理

一、介绍

项目 内容
本作业属于北航软件工程课程 博客园班级博客
团队项目博客目录 团队项目:知识路书
团队博客 敏杰开发
代码仓库 Roadmap-Frontend
我在这门课程的目标是 获得成为一名软件工程师的能力
我在本次作业的目标是 总结、分享团队使用Github进行软工开发管理的方法

我是北航软件工程课敏杰开发团队的产品经理,我们团队开发的软件产品为知识路书——图形化文献管理大师。如果您想了解我们开发的软件在做什么,请查看这篇博客,如果您想全面了解我们开发的软件,可以在我们的开发博客目录查看全部的博客,或访问我们的代码仓库。

二、引言

Github是一款目前应用最广的代码管理、项目管理平台,其免费、易用、人性化等特性吸引了全球众多开发者。在软件工程课中,我们应该学会使用项目管理软件来进行项目管理,本文主要介绍了Github网站项目管理的基本方法,包括仓库的配置、工作流、项目管理、工作量统计等功能。可能有很多刚刚接触开发的小白和我之前一样,并没有深入地使用过Github除了代码托管以外的其它功能,那么在看完本文之后,您可以尝试探索使用Github的这些功能,您会发现,好用至极,根本停不下来~。

三、Github开发管理

1. 仓库配置

仓库包含两个特殊分支

  • dev 开发分支
    • 用于合并最新的开发代码
  • prod 生产分支
    • 用于存储生产代码

我们的工作流是:个人开发时由dev分支checkout出来一个新分支例如zwx--new-feature,开发结束后通过代码互审合并到dev分支,完成某一整块的功能后,将dev分支合并到prod分支,并使用github的release功能发布一个新的版本。

分支保护

Github提供了十分方便的分支保护功能,我们可以利用其实现上述的工作流配置。
[技术博客]使用Github进行软工开发管理_第1张图片

  • dev分支
    在仓库的settings中选择branch选项卡,可以添加分支保护规则,我们对dev分支配置规则:只能通过pull request的方式merge到dev,并设置PR需要审核的人数。
    [技术博客]使用Github进行软工开发管理_第2张图片
    这样,我们的工作流被限定为,新分支zwx--new-feature开发完成后,提出merge到dev分支的Pull Request(后文将详细介绍),经过一名其它成员的复审后,合并到dev分支。
  • prod分支
    采用类似的配置方法,但是我们要求至少2人审核后,才能将dev分支的代码merge到prod中。

2. 开发工作流

Issue

在需求分析、任务分解结束后,产品经理将一个大块的功能分成若干小的、可以单人实现的小功能,这些小功能通过Github中的Issue功能分配给特定的开发人员。
[技术博客]使用Github进行软工开发管理_第3张图片
当我们想为某开发人员添加一个Issue的时候,可以用下述这种方式:

  • 编辑任务说明
  • 添加分配人员
  • 设置issue标签,这里的size是我们用来统计工作量的
  • 设置Project和Milestone,这个将在后面介绍
    [技术博客]使用Github进行软工开发管理_第4张图片
    开了新的Issue以后,Github会给被分配到任务的开发人员发电子邮件,push他快去写代码。

Pull Request

在开发人员完成某个Issue的需求后,可以利用Github的Pull Request功能提出代码复审、合并分支的请求
[技术博客]使用Github进行软工开发管理_第5张图片
我们的一个Pull Request如下:

  • 填写实现功能的描述
  • 分配Reviewers,提醒他们审核你的Pull Request
  • 在描述文本框中,输入close #IssueID,可以自动将该PR与Issue关联,当PR被合并后,Issue自动关闭。
    [技术博客]使用Github进行软工开发管理_第6张图片
    [技术博客]使用Github进行软工开发管理_第7张图片
    作为代码复审的人员,通过点击File changed标签页,审核开发人员修改的代码,对其代码提出评论,当认为其通过审核后,在评论中选择Approve,当Approve的人数达到分支保护规则的要求时,就能够合并分支了。
    [技术博客]使用Github进行软工开发管理_第8张图片
    在合并时,Github会自动检测有无冲突,如果有冲突,会要求Resolve conflicts,Github提供了解决冲突的页面,点击Resolve conflicts按钮可以直接在Github网站中解决冲突,提交commit,十分方便。
    [技术博客]使用Github进行软工开发管理_第9张图片
    在冲突解决、代码复审完成后,merge的按钮被允许点击,可以使用Squash and Merge的选项,将这个分支内的所有commit压缩成一个commit进行合并。

3. Project、Kanban、Milestone

Project

Github提供了非常方便的项目管理工具Project,可以使用其管理项目进度,还可以生成燃尽图等总结图表,帮助项目管理人员进行进度监督。
[技术博客]使用Github进行软工开发管理_第10张图片
我们的开发共分为两个阶段,分别开了两个Project,目前alpha的开发项目已经结束,beta的开发项目还在进行中。

Kanban

Github项目管理最重要的功能是看板,点击进入项目后,可以看到如下的看板界面,上面显示着各个功能的开发进度。可以对看板进行设置,让其自动关联Issue,追踪Issue的生命周期

  • 当Issue被创建时,看板的To do中自动出现卡片
  • 当Issue被PR所close后,To do中的卡片自动移入Done
    [技术博客]使用Github进行软工开发管理_第11张图片

Milestone

当创建了一个Project后,Github会自动创建一个同名的Milestone,可以利用Milestone功能生成项目的燃尽图
在创建Issue时,绑定一个Milestone。可以点击Issue标签页中的Milestone按钮,查看所有绑定该Milestone的Issue
[技术博客]使用Github进行软工开发管理_第12张图片
生成燃尽图,参考这篇博客,使用https://www.cnblogs.com/SivilTaram/p/4900457.html网站生成燃尽图,燃尽图如下:
[技术博客]使用Github进行软工开发管理_第13张图片

4. 工作量统计

Github提供了方便且详尽的工作量统计功能,点击Insight标签页可以看到各个维度下的工作量统计数据,对于项目经理等项目管理人员,可以很方便地得到每位开发人员的贡献与进度等信息,帮助其更好地管理团队。
[技术博客]使用Github进行软工开发管理_第14张图片

四、总结

本文主要介绍了Github网站项目管理的基本方法,包括仓库的配置、工作流、项目管理、工作量统计等功能。可能有很多刚刚接触软件工程的小白和我之前一样,并没有深入地使用过Github除了代码托管以外的其它功能,那么在看完本文之后,您可以尝试探索使用Github的这些功能。同时Github还有很多功能是本文没有介绍到的,也是笔者没接触到的,您可以继续挖掘Github的更多功能,并分享给更多人。

你可能感兴趣的:([技术博客]使用Github进行软工开发管理)