Individual assignment:Analysis of Software Examples

Individual assignment:Analysis of Software Examples

Leostar

代码仓库管理系统

项目 内容
这个作业属于哪个课程 2024年北航敏捷软件工程
这个作业的要求在哪里 个人作业:软件案例分析
我在这个课程的目标是 学习敏捷软件工程开发的知识,锻炼工程能力
这个作业在哪个具体方面帮助我实现目标 通过各种现有软件的案例分析,评测,总结并体验软件工程的原则在实践中的种种体现,学好软件工程,帮助我们在实践中做得更好

第一部分 调研,评测

本次作业选择代码仓库管理系统GitCode

软件评测

软件使用

登录

这里是笔者已经使用过一些功能后的界面,如果初次登陆会与下图略有不同

查看项目

我的所有项目

项目内部细节

查看组织

我的所有组织

组织内部细节

查看个人主页

查看Issue

设置

软件分析

基本流程:通过主页右上角的加号图标新建项目、组织或者代码片段(组织内部可以新建项目)

  1. 项目:可通过三种方式创建新项目
  2. 组织:按照要求新建组织
  3. 代码片段:按照要求新建代码片段

管理代码:每个仓库提供ssh或者https克隆到本地,也可直接下载。本地通过git提交推送可以完成远程仓库的更新。并且提供邀请成员合作,讨论Issue解决方案等功能。

对于普通的代码仓库管理系统而言,需要满足存储代码,多人协作,版本管理,组织管理等功能。所以该软件能够解决用户的需求

其他评价

数据量:

  • 优点:服务人数多,”一亿人的安全代码仓”
  • 缺点:代码量大时导入仓库和推送时较慢

界面

  • 优点:简洁干净,没有广告,可以专注于自己的事务
  • 缺点:除个别功能不能在第一时间找到外暂无明显缺点

准确度

  • 优点:搜索结果比较准确
  • 缺点:搜索开源项目没有排序功能,例如佳匹配,最多Star,最多forks

用户体验

  • 优点:中文版整体汉化程度很高,可以选择不同语言,体验较好
  • 缺点:部分用户认为Issue也应该翻译成英文,其它一些用户对界面不够满意

改进意见

  1. GitCode是CSDN为开发者提供的开源项目创新服务平台,这两者是否可以联系更紧密一些呢?例如GitCode主页可以加上一个直接访问CSDN的链接,就像CSDN主页提供直接访问GitCode的快捷入口一样
  2. 多关注一下用户反馈里的issue,一百多条反馈都没人处理
  3. 搜索项目式添加最佳匹配,最多Star,最多forks的过滤器,并且搜索页面底部应该明确能跳转到第几页,而不是只能往前一页和后一页,如果想要回到第一页很困难

用户调研

采访的同学来自6系另一位软工班级的木同学,采访截图如下

采访原因:他们的软工大作业有代码管理的需求,也需要这样一个代码仓库托管平台

使用的实际产品:GitCode

遇到的问题:

  1. 仓库的README文件渲染有问题,不能正常显示图片和公式
  2. 搜索项目或者用户时,底部没有选择第几页的标识,只有回到上一页或者下一个的按钮。例如搜索名叫helloword的用户时结果数目99+,但是无法标识当前结果为第几页,想要回到某一页只能自己手动计数。

亮点:

  1. 对中文用户友好,并且支持多种语言
  2. 没有推广广告,界面整洁

需要改进的地方:

  1. 优化markdown语法渲染的问题
  2. 优化搜索界面,在底部添加计数器标识当前页并跳转其他页。

评测结论

d) 好,不错

Bug 分析和提交

bug 严重等级 标准
⭐⭐⭐⭐⭐ 致命性系统故障,能导致系统完全崩溃,或者引发严重的数据丢失,以及对安全性造成严重威胁
⭐⭐⭐⭐ 严重系统故障,虽然不会导致系统完全崩溃,但仍可能引起重要功能的错误或者数据损坏
⭐⭐⭐ 较大系统故障,可能会引发一些功能性的问题,但通常不会对系统的整体稳定性产生重大影响
⭐⭐ 不影响正常运作的系统故障,对系统的影响较小,可能是一些界面上的错别字、格式问题或者不太明显的功能缺陷。
非系统故障,一些不影响系统功能和用户体验的小问题,或者是一些细微的视觉或者交互问题

测试环境

操作系统:Windows 11 家庭中文版

浏览器环境和版本:Google Chrome 版本 122.0.6261.112(正式版本) (64 位)

Bug1 无法从github导入项目

可复现性及具体复现步骤

必然发生

具体描述:

  1. 主页右上角加号点击新建项目,在弹出的界面选择导入项目

  2. 点击从URL导入仓库,输入你想导入的github仓库地址,例如https://github.com/ozan-oktay/Attention-Gated-Networks.git,然后点击最下方的**新建项目**,显示**正在导入 **

  3. 提示导入成功,回到仓库查看,该仓库为空,没有导入任何数据,证明此功能无效

  4. 笔者又尝试了GitHub上的其他公开仓库,比如https://github.com/Issam28/Brain-tumor-segmentation或者https://github.com/himashi92/VT-UNet都会出现这样的问题

  5. 如果从第二步开始点击从GitHub导入,根据提示我们需要输入自己的个人权限令牌(可以根据他给的链接跳转到GitHub获取),输入成功后当前网址会失效,笔者尝试数次都是同样的结果(所以这其实是两个bug,不管从GitHub或者输入url都不行)

bug分析

可能成因:我认为他们根本没有实现这个功能,只是前端比划了一下。或者是准备做这个功能(因为前端已经做出来了),但是后端的具体实现一直没有时间完成。

严重性:⭐⭐⭐

  1. 系统功能:该bug会影响正常的导入功能
  2. 安全性:不会有严重的安全泄露问题
  3. 用户体验:较差,感觉受到了欺骗

发现的 bug,为何软件团队不能在发布前修复?我认为他们知道这一问题,但是他们敷衍了事,认为这个功能不重要。

BUG 改进建议:此处正常行为应该自动将需要导入的远程仓库导入到新创建的仓库。

如何实现?写一个正常地导入远程仓库的程序,将远程仓库的地址换成用户输入的地址。

Bug2 Markdown渲染bug

可复现性及具体复现步骤

必然发生

具体描述:

仓库的README文件不能展示公式甚至图片。

步骤:

  1. 本地git仓库中新建README文件,里面内容大致如下(docker.png是同目录下的图片):本地渲染效果大致如下
  2. 通过git命令将更新后的文件推送至远程仓库
  3. 远程仓库看到的README文件实际效果为可以清楚地看到公式渲染失败,图片未显示,但是如果在这个界面点击README.md文件去查看具体的文件内容,会出现图片在这个界面能够正常显示,但是公式仍不行。

为什么说这是一个bug而不是feature?对于公式而言,姑且可以认为它的功能缺失不完善,不支持渲染公式。但是对于图片来说,点开具体文件能够渲染图片,但是在仓库主页不行,表现得不一致,所以这里是一个bug。

bug分析

可能成因:对于图片来说,我猜想的原因是,不支持相对路径,只支持绝对路径(所以必须通过图床这样的方式),并且项目主页的渲染代码和文件内部的渲染代码没有同步;对于公式,他们根本没有实现这个功能。

严重性:⭐⭐

  1. 系统功能:该bug会影响显示图片,公式等功能
  2. 安全性:不会有严重的安全泄露问题
  3. 用户体验:较差,无法通过常用的方式展示自己仓库的简介图片等

发现的 bug,为何软件团队不能在发布前修复?我认为他们知道这一问题,并且修复过,但是开发人员粗心大意,仓库主页的渲染代码没有同步;渲染公式这一功能没有实现。

BUG 改进建议:正常的行为应该是远程仓库渲染和本地渲染一样,能够展示出图片和公式。

如何实现?将仓库主页的渲染逻辑和md文件内部的渲染逻辑保持一致;新增渲染公式的功能。

Bug 反馈

第二部分 分析(参考 8.6 节对工作的估计,和 14.1 节软件工程的质量)

工作量分析

  • 功能范围定义和规划:需求收集,功能规划;与利益相关者进行沟通,确定平台的所有功能和需求,并将它们分解成可执行的任务。1个月

  • 技术栈选择和环境搭建,UI设计:评估不同的技术选择,进行原型开发和技术验证,并搭建好开发和测试环境,以及原型设计、用户研究、UI设计。1-2个月

  • 后端开发:包括数据库设计、API开发、业务逻辑开发等。4-6个月。

  • 前端开发:包括界面开发、交互设计、前端逻辑开发等。6-8个月。

  • 测试与质量保证:包括单元测试、集成测试、用户验收测试等。2-3个月。

    此外还需要不断地迭代反馈,因此估计这个项目大概需要一年半以上的时间。

软件质量分析

  1. 分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?

    和同类产品GitHub相比:

    优点:

    1. 语言:完全支持中文,并且还提供其他语言(目前翻译不完善),适合中文社区,在中国访问更快
    2. 社区:针对中国开发者的需求进行了一些定制化的功能和服务,比如集成了国内常用的开发工具、社区支持CSDN等,更好地适应了中国开发者的使用习惯

    缺点:

    1. 搜索界面:不支持页数跳转,只能一页一页地跳转
    2. 渲染:markdown渲染问题,不能正确显示图片和公式
    3. 邀请链接:不能通过邮件或者账号直接邀请对方加入仓库,而是只能生成链接再手动发给对方
    4. 导入:不支持从其他仓库平台导入代码

    在同类产品中,能排第三或者第四(其他产品有Github, GitLab, Gitee, GitLink等)

  2. 从各方面的问题,推理出这个软件团队在软件工程方面可以提高的一个重要方面(具体建议)。

    1. 重视用户建议和反馈,我在提issue反馈的时候发现GitCode官方帮助文档有一百多条待解决的issue
    2. 实事求是,不能敷衍了事,前端的导入代码功能应该和后端的导入保持一致,不能只做前端不管后端了

第三部分 建议和规划

  1. 市场现状

    1. 市场概况:市场有多大?(直接用户有多少?潜在用户又有多少?)

      直接用户有大约250万人(GitCode目前用户数量超245万,已有33万余个项目及近5万个组织入驻)。

      潜在用户还包括国内社区其他未使用GitCode的用户,大概有500万人(中国程序员数量大概七百多万)。

    2. 竞争产品:目前市场上有什么样的竞争产品?

      竞争产品包括其他的代码仓库管理平台,例如

      1. GitHub, 全球最大的基于 Git 的代码托管平台之一,被广泛用于开源项目协作和商业软件开发。它提供了强大的版本控制功能,包括分支管理、Pull Request(PR)审查、问题跟踪等。GitHub 也提供了丰富的社区功能,用户可以在平台上发现、贡献和共享开源项目。
      2. Gitlab, 以Git为核心的完整的DevOps平台,提供了代码托管、CI/CD、问题追踪、代码审查等功能。
      3. Gitee, 中国的一个代码托管平台,与 GitHub 类似,提供 Git 代码仓库托管服务以及问题跟踪、代码审查等功能。Gitee 在中国用户中较为流行,尤其受到国内开发者和企业的青睐,因为它能提供了更快的访问速度以及与国内其他开发工具的集成。
      4. Gitlink,一个新兴的代码托管平台,致力于提供更简洁、更高效的代码协作体验。它着重于简化工作流程和提高团队协作效率,通过直观的界面和易用的功能,吸引了一部分开发者和团队的关注。
    3. 产品定位:上述产品的定位、优势与劣势在哪里?以及竞争中的各方态势如何?

      1. GitCode
        • 定位:一个相对较新的代码托管平台,定位于为开发者和团队提供简洁、高效的代码管理和协作环境。
        • 优势:有庞大的社区CSDN支持;汉化程度高,适合中文用户
        • 劣势:功能上有缺陷,例如导入项目,搜索界面的filter等;没有引入AI新技术,其他平台例如Github引入了copilot新功能,Gitee也引入了Gitee AI;没有针对特定群体,例如Gitee还开发了针对特定群体的版本,例如高校版和企业版
      2. GitHub
        • 定位:GitHub 是全球最大的基于 Git 的代码托管平台,定位于开源社区和商业软件开发。
        • 优势:拥有庞大的开源社区和丰富的开源项目资源,提供强大的协作工具和第三方集成支持,广泛应用于全球范围内的软件开发。
        • 劣势:对于一些企业用户来说,可能缺乏一些企业级的功能和定制选项。
      3. GitLab
        • 定位:GitLab 是一个完整的 DevOps 平台,定位于为开发团队提供端到端的代码管理和协作解决方案。
        • 优势:提供了完整的 DevOps 功能,包括代码托管、CI/CD、问题跟踪等,同时支持企业版和自托管选项,适用于各种规模和需求的组织。
        • 劣势:相对于 GitHub,在开源社区和项目资源方面可能稍显不足。
      4. Gitee
        • 定位:Gitee 是中国的代码托管平台,定位于为中国开发者和企业提供快速、稳定的代码托管服务,同时提供与国内其他开发工具的集成。
        • 优势:在中国用户中有较高的市场份额,提供了更快的访问速度和与国内其他工具的无缝集成,受到国内开发者和企业的青睐。
        • 劣势:在国际市场上的影响力相对较弱,缺乏全球化的开源社区资源。
  2. 市场与产品生态

    1. 这个产品的 核心用户群是什么样的人?典型用户是什么样的?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?

      核心用户群是企业的程序开发人员。

      典型用户以计算机或者软件工程专业为主的技术人员,或以科研任务为主的高校教师,学生等。学历较高,专业多以计算机相关或者软件工程专业为主,年龄主要在20-40之间,爱好编程,收入相对较高。表面需求是需要代码仓库平台为自己的工程做版本管理和存储,潜在需求包括职业晋升,升学,完成科研任务,论文等。

    2. 产品的用户群体之间是否存在一定的关系?如果有,则是否能利用这些关系构成特定的用户生态?

      产品的用户群体都是计算机工程或者相关科研任务相关的用户,可以利用CSDN中文开发者社区,提供讨论计算机技术的平台,构建开发人员为主的用户生态。

  3. 产品规划

    1. 你要在 当前软件的基础上 设计什么样的新功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用 NABCD分析

      设计新功能基于AI的智能代码建议和改进建议

      • Need(需求):在软件开发过程中,开发者经常需要面对代码的优化和改进。然而,有时候对于一些复杂的代码结构或性能问题,开发者可能需要更多的指导和建议。因此,提供一个智能的代码建议和改进建议功能可以帮助开发者更轻松地优化代码、提高代码质量。
      • Approach(方法):设计一个基于机器学习和静态代码分析的智能代码建议和改进建议功能,通过分析代码结构、性能指标,为开发者提供个性化的建议和优化方案。
      • Benefit(好处):用户可以通过使用智能代码建议和改进建议功能来快速发现代码中的问题和潜在的优化空间,提高代码质量、性能和可维护性。同时,这个功能还能提高开发效率,减少用户在代码优化方面的工作量。
      • Competition(竞争):相较于其他代码托管平台,添加智能代码建议和改进建议功能的软件将提供更智能、更个性化的代码优化建议,为用户提供更丰富的功能和更好的用户体验。
      • Delivery(交付):通过主页的公告通知用户新功能的上线,同时在CSDN社区提供教程,视频等指导用户如何使用这一新功能。还可以提供一定的奖励机制鼓励用户使用新功能,在这一阶段可以通过收集反馈迭代优化新功能。
    2. 如果你是项目经理,可以招聘 6个人,并且有 16周 的时间,你认为应该 如何配置角色(开发,测试,美工等等)才能在第 16 周如期发布软件的改进版本,并取得预想中的成绩。

      1名项目经理Project Manager:负责项目规划、进度管理、资源协调和沟通等工作,确保项目按时交付

      2名全栈工程师:负责新功能的设计、开发和测试。每个开发工程师应具备前后端开发的能力,能够独立完成任务,同时还要负责美工等。

      1名后端工程师:负责后端系统的设计和开发,包括数据库设计、API开发等

      1名前端工程师:负责前端界面的设计和开发,确保用户界面的友好性和响应性

      1名测试工程师:负责测试计划的制定、测试用例的编写和执行,确保软件质量和稳定性

    3. 请为你的团队设计 16 个周每周的详细规划。

      1. 1周:确定项目目标、范围和需求;制定项目计划和时间表;配置开发环境和工具;明确每人的分工角色
      2. 2-3周:收集用户需求;完善新功能的设计和功能规划;确定技术实现方案和架构设计
      3. 4-6周:设计和实现后端系统的数据库结构;开发后端系统的核心功能和业务逻辑;进行后端系统的单元测试和集成测试
      4. 7-9周:开发前端界面的基本框架和布局;实现前端界面的主要功能模块;进行前端界面的初步测试和调试
      5. 10-11周:将前后端功能集成到一个完整的系统中;进行系统集成测试和用户验收测试;修复和优化已发现的问题和Bug
      6. 12-13周:进行系统性能优化,提高系统的稳定性和响应速度;完善功能细节,优化用户体验;准备文档和用户指南
      7. 14-15周:进行最后的系统测试和性能优化;解决项目中的剩余问题和Bug;准备发布软件的改进版本
      8. 16周:发布软件的改进版本,并进行宣传和推广;监控发布过程,确保软件的稳定性;收集用户反馈和意见。
  • Title: Individual assignment:Analysis of Software Examples
  • Author: Leostar
  • Created at : 2024-03-17 10:37:47
  • Updated at : 2024-08-01 15:39:18
  • Link: https://leostarr.github.io/2024/03/17/8Individual assignment:Analysis of Software Examples/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments