软工第二次作业-软件案例分析

项目内容
这个作业属于哪个课程2023年北航敏捷软件工程
这个作业的要求在哪里软件案例分析
我在这个课程的目标是了解并实现从”程序“到“软件”的转变
这个作业在哪个具体方面帮助我实现目标学习软件工程软件案例分析与客户调研

软件评测

概述

VCS又名源代码管理(SCM)系统,旨在让开发人员、设计人员同时开发一个项目。它能够确保每个人都可以访问最新代码,并同步自己的修改。而github和gitlab是目前国内外主流的两个代码托管平台。本文将针对中国高校学生对比这两个代码托管平台的功能,比较它们的优劣。由于gitlab英文的社区版的CI需要绑定信用卡,为了全面的对比两个平台的优劣,使用gitlab针对中国地区推出的极狐gitlab和github进行对比。

软件基本功能

代码托管

gitlab和github均能够正常的存储代码,并且能够追踪记录并控制用户对代码的修改,方便用户查看修改的内容,能够在线创建分支。

存储空间上,github官方没有给出对公开仓库大小的限制,但是建议仓库大小不超过1GB,强烈建议不超过5GB,gitlab对于免费用户有5GB的存储空间,超过5GB之后项目将被锁定

 

并且通过ssh连接可以正常的push/pull代码,实现本地和远程代码库的交互

 

均可以在线创建分支,并且gitlab支持从任意的提交创建分支,而github只支持从当前已有的分支上创建分支

github 通过pull request功能,gitlab通过merge request 功能可以实现在线的分支合并,合并的过程中可以清晰的看见两个分支的冲突,以方便实现合并

gitlab:

github:

其中gitlab的合并功能更加清晰,方便使用

开发时使用的功能

作为一个高校学生,以上代码托管的功能已经足够,但是如果作为选修了北航《软件工程》的学生,并且将要进行敏捷开发(逃,那么gitlab 和 github一些方便开发的功能更值得关注

持续集成

持续集成 (CI) 是一种需要频繁提交代码到共享仓库的软件实践。 频繁提交代码能较早检测到错误,减少在查找错误来源时开发者需要调试的代码量。 频繁的代码更新也更便于从软件开发团队的不同成员合并更改。根据《构建之法》当中的定义,如果代码托管对于一个代码托管平台是一个基本功能,那CI的功能我认为就是拉开差距的核心功能。

  • github的CI:

    可以通过Yaml文件配置GitHub Actions 工作流,使其在存储库中发生事件(例如打开拉取请求或创建问题)时触发,每个工作流可以包含一个或多个作业,每个作业通过脚本运行,可以定义每个作业运行的runner,此runner可以使用官方的runner(每个月有3000min的免费时间,其余时间付费),也可以在本地配置runner,将服务器或者PC作为执行作业的runner,同时可以通过可视化平台关注工作流程。

    官方的Runner

  • 个人PC的Runner(本地环境为M1芯片的MacBook,操作系统为macos12.4)

  • 可视化工作流程文件

  • gitlab的CI

    gitlab的CI也是通过yaml文件配置,拥有更复杂语法的同时也拥有更加强大的功能,不同的是gitllab需要配置自己的runner(配置过程相较与github的),或者付费使用shared runner

  • gitlab还有一个比较方便的小功能,可以通过设置yaml下载artifacts

  • issues

    两个网站都可以通过创建issue来进行讨论、发布计划和完善开发

    gitlab:

  • github:

     其中github的标签更加完善,可以更好的进行分类

  • 统计功能

    gitlab和github都拥有基础的统计功能,gitlab作为商业团队使用更多的工具,统计功能更加完善,不过统计功能可以通过外接脚本来完善

    gitlab

  • github

采访其他用户

被采访者chenrt是6系大四的大佬,同时也是去年罗杰软工的选课同学,开发经验十分丰富,同时此人是个狼灭,熟悉网络攻防的内容。我选择采访他主要有几点原因,第一,他开发经验丰富,对于gitlab和github都有十分频繁的使用。第二,去年在其团队开发的过程当中,使用了gitlab作为管理工具。第三,他有成熟的个人博客和开源项目,对于github使用娴熟。

chenrt作为经验丰富的开发者和开源项目的管理者对于两个网站的评价都比较高,认为这两个网站的基础功能都比较完善,另外github的action 和 gitlab的CI都是亮点。

其中github有一些ui的小问题,而gitlab的社区版也不如企业版,另外作为github的深度使用者,认为github在创建仓库以及仓库分类上能做的更好。

BUG分析和提交

测试环境与复现情况:

严重性等级定义:

等级描述
⭐️⭐️⭐️⭐️⭐️致命性系统、安全故障,严重影响网站的安全性和用户体验
⭐️⭐️⭐️⭐️较严重的系统、安全故障,严重影响网站的安全性和用户体验
⭐️⭐️⭐️一般系统、安全故障,较严重影响网站的安全性和用户体验
⭐️⭐️UI等方面的bug,与安全性无关,比较影响用户体验
⭐️UI等方面细节性的bug,与安全性无关,基本不影响用户体验
  • GitHub 搜索功能缺失

    bug严重程度:⭐️⭐️

    基本环境和复现情况:操作系统macos 12.4 浏览器chrome 110.0.5481.177 稳定复现

    bug具体情况描述和复现步骤:

    github搜索Mars时只能找到含有Mars的代码,但是无法查找文件

    bug分析:

    • 可能的成因就是没有把文件名作为搜索范围

    • 该功能缺失不影响安全性,但是比较影响用户体验

    bug建议:

    建议搜索时增加文件名的搜索

  • gitlab合并时的错误

    基本环境和复现情况:操作系统macos 12.4 浏览器chrome 110.0.5481.177 稳定复现

    bug严重程度:⭐️

      

    在合并分支时选择立即合并,如果此时本地的runner没有打开分支会合并失败

    bug分析:

    • 可能的原因是后段对于合并成功的判断条件有误

    • 该功能缺失不影响安全性,基本上不影响用户体验

    改进建议:增加runner没有正常启动的特判条件,用户在此选择立即合并可能就是想要跳过CI的过程

  • gitlab网站使用时崩溃

    bug严重程度:⭐️⭐️⭐️⭐️

    基本环境和复现情况:操作系统macos 12.4 浏览器chrome 110.0.5481.177 随机情况,不能稳定复现,但在我使用的一天之内出现了两次

    在本人进行bug测试的时候,点击pipeline详情时出现过两次崩溃现象,一次chrome 浏览器内存泄露,我强行关闭了浏览器,一次网站崩溃,一次网站直接奔溃(如上图),两次崩溃均能保证网络连接正常

    bug分析:有可能是后端在向前端发包的时候炸了缓存,或者是服务器稳定性不够

    bug建议:个人感觉是后端向前端发包的方式有问题,可以优化前后端发包

软件分析

工作量分析

由于gitlab和github已经成为了相当成熟的VCS平台,并且商业性极高,所以6人左右的团队几乎不可能开发出如此完善的平台。但是我查阅了github的发展历史,发现github的最初版本于2007年10月1日开始开发,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。网站于2008年2月以beta版本开始上线,如今的开发工具以及开发条件进一步提升,但是由于之前的三个都是技术界的大牛,所以我评估开发类似具有基本功能的网站需要两个月。

软件质量分析

  1. github 2021年就拥有了7300万开发者,而gitlab至今也有3000万注册用户,100w活跃用户,从用户量和仓库数量等分析,这两个网站基本都可以排到同类网站的前三

  2. 与gitlab相比较,github的安全性较差,而安全性恰恰是代码管理平台非常看重的一点,github现在已经被微软收购,应该着重提升这一方面,而事实上,github也发发布了安全性悬赏,按照不同的级别给予发现者奖励

    同样gitlab也有自身的问题,个人感觉第一次使用gitlab的时候还是遇到了一些问题,就是侧边栏的菜单太复杂有很多可以修改的地方,例如这个CI/CD的设置可以直接包含在CI/CD的模块

建议和规划

市场概况

  • 几乎所有的开发者都需要一个代码托管平台,所以VCS的市场几乎就是全世界的开发者

  • 直接的用户就是所有的开发者,潜在的用户是将会学习开发的人,或者需要保存某些特定文件的需要一个仓库的工作者

市场现状

  • 代码托管平台非常之多除了这两个网站还有Coding.net、Google Code等,国内有gitee等

  • github主要定位是开源项目,而gitlab定位主要是开发大型项目的企业用户,github的优势在于仓库数量多、用户多,有大量的开源项目,并且通过链接到第三方网站也能实现方便的团队开发,最大的劣势是国内的网络访问不好(不过作为一个计算机学生应该学会科学上网),且这个问题由于防火墙的原因几乎不可解决。gitlab的优势主要在于进行大型项目开发时CI/CD、安全性、统计等方面的优势,劣势就是核心功能收费较贵,而在国内gitee的优势就是国产化做得好,劣势在于开源不方便以及核心功能比不上gitlab等网站。

  • github 和 gitlab在世界上几乎有绝对的优势,而gitee在国内也有一定的用户量。

市场与产品生态

  • github 和 gitlab的核心用户群都是计算机、软件行业的从业者,典型的用户就是公司的开发者,高校学生等,从本科生到教授等学历都可能是核心用户,需求可能如下

    用户需求
    本科生一个代码管理仓库,有良好的开源生态,能够学习并分享项目
    资深开发者一个代码管理仓库,方便大型项目的开发,具有良好的安全性
    公司高层一个安全牢固的代码仓库,保存公司的核心技术
    大型公司需要推广自己的产品,需要一个拥有足够用户的社区,例如google公司
  • 本科生极有可能转变为公司高层或者资深开发者,如果他从学生时代就养成习惯使用某代码托管平台,那么极有可能一直使用,并且随着其收入和需求的增加,更可能购买高等级的产品

  • 放在github上托管的代码现在已经能够外接gitlab的CI进行持续集成,同时github还能够使用其他CI工具,各种产品之间很可能有相互合作

产品规划

  • 对github可以开发出一个OJ的功能,专门放在信息竞赛社区

    • Need:广大参与信息竞赛的选手需要管理自己的代码,以进行复习、clone学习其他选手代码的需求,针对不同的比赛题目需要实现版本管理、评测、反馈结果等功能

    • Approach:依托github的代码管理功能,可以连接到其他网站(codeforce等)的题目,让选手能够在github上直接做题,开发自己的评测系统锁定用户

    • Benefit:已有的Oj平台,例如洛谷等基本没有版本管理功能,需要选手自己做版本管理,但是在本地写代码的过程中很多时候会忘记自己改了哪里,导致bug一直无法修复的问题,而使用github的版本管理可以清晰的看到对代码的修改,并且可以方便自己在本地搭建评测

    • Competitors:竞争者主要是主流的Oj平台,以及可能同时推出该功能的其他VCS平台,我方的优势就是抢占先机,先占领这一块蓝图

    • Delivery:推广问题对于github网站并不困难,可以直接在社区中发布新功能上线的消息

  • 团队招聘

    前端美工1人,测试两人,后端开发评测机3人

  • 计划

    周数任务
    1开会讨论确定需求,写出功能设计文档
    2-6各部分人员全力开发,力求一个可以使用的Alpha版本
    7-8进行第一阶段的测试,修复bug
    9发布Alpha版本给用户使用,收集用户反馈信息
    10-15周根据用户反馈信息进行Beta阶段的开发,同时进行测试
    16周发布beta版本,使用ZBB等方法尽量完善程序

评分

总体来讲十分推荐github和gitlab两个VCS平台,根据我自己的使用和他人的评价给出一些定量的描述

类别描述githubgitlab
安全性代码仓库的安全性以及权限管理45
基本功能代码管理以及,分支管理等功能55
用户界面界面的简洁性,以及用户体验54
核心功能持续部署等功能45
个性化个性化定制主题,个性化设置33
适应性在联网/断网,大小屏幕,没有鼠标的情况下都可以顺畅操作,和不同平台的软件能流畅协作55
总分2627

总分:github 26分;gitlab27分

评价:非常推荐

评分备注:满分5分,良好4分,及格3分,不满意2分,十分不满1分]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值