[I.2] 个人作业:软件案例分析
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2025年春季软件工程 |
| 这个作业的要求在哪里 | [I.2] 个人作业:软件案例分析 |
| 我在这个课程的目标是 | 在实践中熟悉软件工程的各个环节,提高合作能力与编程素养 |
| 这个作业在哪个具体方面帮助我实现目标 | 通过对具体软件项目的分析提高实践能力,加深对课本的理解 |
我分析的软件是 GitHub,横向对比了 GitLab 和 Gitee 。
第一部分
调研,评测
1、软件使用
由于 GitHub 集成了非常丰富的功能,无法在 10~30 分钟的时间内全部接触到,因此主要使用了代码管理与版本控制功能以及搜索功能。



在使用过程中,我创建了一个新的仓库,尝试了分支创建、PR、issue相关功能。GitHub的代码管理功能相当完善,可以满足个人开发者对于项目代码管理的基本需求。
2、软件分析
GitHub 在官网的产品描述为 Build and ship software on a single, collaborative platform。进一步来说,GitHub 是一个基于 Git 版本控制系统的代码托管与协作平台,主要功能是为开发者提供高效的代码管理和团队协作环境。GitHub是全球最受欢迎的代码托管平台之一,平台上有丰富的项目可以供我们参考学习。
-
在数据量/界面/功能/准确度/用户体验的优缺点?
GitHub 作为全球最大的代码托管平台,具有数据量大、功能强大、社区活跃等优点,但在大文件存储、搜索能力和用户体验方面存在不足。在数据量上,GitHub 托管了海量开源项目和私有仓库,具备完善的 Git 版本管理,但单个仓库大小有限,大文件存储受限。界面设计简洁直观,支持 Markdown,适合开发者使用,但文件管理较不便,移动端体验一般。在功能上,GitHub 提供分支管理的强大工具,但代码审查较基础。在准确度方面,GitHub 代码搜索支持语法查询,但搜索能力相对较弱,推荐系统不够智能。在用户体验上,GitHub 提供免费版本,社区活跃,但复杂的界面与功能对新手不太友好。
3、改进意见
- GitHub集成了丰富的功能,但对于初学者而言,有时很难理解较为复杂的UI界面,难以找到自己想要的功能。GitHub可以尝试引入一些新手引导来帮助初学者快速上手,让初学者可以简单快捷的学会基本功能。
- GitHub 上的开源项目多且丰富,但是相对落后的搜索与推荐功能妨碍了用户对于有效信息的获取,这是对宝贵资源的浪费。GitHub 应当更新搜索算法,让用户可以更加方便的获取有效数据。
4、评测意见
e) 非常推荐
Bug 分析和提交
1、搜索频繁429
测试环境为web端,浏览器为 Firefox 136.0.1(32 位)。如果当前处于未登录状态,并且使用了梯子(为了保证稳定的访问)时,使用搜索栏搜索时访问可能会被拦截。

发生频率:经常发生(25次测试中19次发生)
Bug分析:
bug出现的原因可能是 GitHub对于未经过身份验证的搜索请求速率限制过大,加之梯子可能引起的IP共享导致访问频率异常。这可能并非程序错误,但是软件的运行结果确实与用户期望不符,而且一些同类软件(如Gitee)在相同环境且没有认证的情况下可以正常访问,因此应当将其归类为bug。
这里使用微软的Bug严重性的量化指标:
| 级别 | 描述 |
|---|---|
| Critical | 系统完全崩溃或功能无法使用,影响到大量用户或核心操作 |
| High | 功能故障,但可以通过某些工作绕过,影响到部分用户 |
| Medium | 不影响核心功能的Bug,通常是用户体验的细节问题 |
| Low | 界面或视觉上的小问题,通常是轻微的改进或优化 |
按照此标准,这个bug影响到了用户对搜索功能的使用,但是可以通过登录、多次尝试等办法绕过,因此应该归类为High 。
2、搜索
测试环境不变。在使用搜索功能时,搜索的结果往往不尽如人意,具体表现为搜不准、搜不全。
-
搜不准
![]()
在这次测试中,搜索内容为“北航计算机网络”,但是在正常的搜索结果之后出现了大量的无关内容。这些内容与搜索相关程度低,不应当作为搜索结果。正常情况下,用户期望的搜索结果不应该包含无关内容(宁缺毋滥),比如:
![]()
-
搜不全
![]()
在这次搜索中,搜索的关键字从“北航计算机网络”改为了“北航计网”,搜索时提供的信息变少了,但是能正确匹配的搜索结果却变多了。这也就意味着如果要进行全面的搜索可能需要将各种表达方式组合起来试一遍,比如“buaa计网”、“BHU计算机网络”等,大大降低了用户搜索内容的效率。
按照Bug严重性的量化指标,这个bug并非功能故障,但影响了用户体验,应当归类为Medium。
第二部分
1、工作量分析
由于GitHub功能十分丰富,难以估计实现其全部功能的工作量,因此只分析实现代码管理与搜索功能的工作量。
由于大学生一般没有相关项目的开发经历,因此无法使用书上的经验公式。这里使用三点估算法(PERT 估算)来预估项目时间。
$$
E = (Best + 4 × Expect + Worst) / 6
$$
| 功能模块 | Best | Expect | Worst | 最终估计(按1/4月取整) |
|---|---|---|---|---|
| 代码管理 | 7 个月 | 8 个月 | 12 个月 | 8.5 个月 |
| 代码搜索 | 6 个月 | 7 个月 | 10 个月 | 7.25 个月 |
| UI/UX 设计 | 1.5 个月 | 2 个月 | 3 个月 | 2 个月 |
| 前端开发 | 2 个月 | 3 个月 | 4.5 个月 | 3 个月 |
| 服务器架构 | 1.5 个月 | 2 个月 | 3.5 个月 | 2.25 个月 |
| 测试 & 维护 | 2 个月 | 3 个月 | 4.5 个月 | 3 个月 |
但是各个功能模块的开发是可以并行的,因此完成整个项目的开发大概需要1年左右的时间。
2、软件质量分析
与GitLab、Gitee等平台相比,GitHub最显著的优势便是其拥有的庞大的开发者社区和丰富项目资源。GitHub 拥有最大、最活跃的开源社区,而 GitLab 等则更侧重于私有仓库与企业级应用。庞大的用户基数与稳定的服务证明了GitHub优秀的软件质量,在与同类软件的比较中,GitHub可以排在第一位。
由于 GitHub 的用户群体多样而复杂,因此开发团队应当充分考虑到不同类型用户的需求,完善诸如搜索等基本功能,进一步提高用户粘性。
第三部分
1、市场现状
GitHub 的注册用户数超过 4000 万,其中活跃用户超过 3000 万。GitHub 的潜在用户包括全球范围内的开发者、教育机构、企业团队和所有需要版本控制的个人或团队,潜在用户群体可能仍有数千万。
GitHub与竞品的对比:
| 维度 | GitHub | GitLab | Gitee |
|---|---|---|---|
| 定位 | 全球最大的开源代码托管平台,适合开源项目和中小型团队 | 完整的 DevOps 工具链,适合企业级开发和 DevOps 管理 | 主要面向中国市场,专注于代码托管与项目协作 |
| 主要用户群体 | 开源开发者、个人开发者、小型到中型开发团队 | 企业团队、开发者、大型企业及 DevOps 需求者 | 中国开发者、企业团队、开源项目开发者 |
| 优势 | - 强大的开源社区支持 - 丰富的集成和插件支持 - 全球化的用户基础 |
- 完整的 DevOps 支持 - 企业级功能如权限管理和审计 - 支持自托管 |
- 针对中国市场优化,国内访问速度快 - 支持中文界面和社区 - 提供企业解决方案 |
| 付费模式 | 免费(开源)/收费(私有仓库、企业版) | 免费(开源)/收费(企业版、自托管版) | 免费/收费(企业版、自托管版) |
2、市场与产品生态
GitHub功能复杂,面向多种用户。单就代码管理功能来说,GitHub的核心用户是个人开发者(学习者)、软件开发团队等,这里仿照课本塑造典型用户:
- 典型用户 1:个人开发者小张
| 名字 | 小张 |
|---|---|
| 性别、年龄 | 男,25岁 |
| 职业 | 软件开发工程师 |
| 知识层次和能力 | 本科计算机专业,熟悉多种编程语言(如Python、JavaScript) |
| 生活/工作情况 | 在互联网公司工作,主要负责后端开发,正在通过GitHub学习新技术 |
| 用户偏好 | 上网、学习新技术、参与开源项目 |
| 典型场景 | 查找并贡献到开源项目,提交代码,参与讨论 |
- 典型用户 2:团队开发经理王女士
| 名字 | 王女士 |
|---|---|
| 性别、年龄 | 女,35岁 |
| 职业 | 技术团队经理 |
| 知识层次和能力 | 硕士计算机科学,拥有10年开发经验,精通团队协作工具 |
| 生活/工作情况 | 负责带领10人团队进行项目开发,使用GitHub进行团队的代码管理和协作 |
| 用户偏好 | 代码管理、团队协作、项目管理 |
| 典型场景 | 使用GitHub管理团队的项目,处理合并请求,审查代码 |
- 典型用户 3:开源贡献者李先生
| 名字 | 李先生 |
|---|---|
| 性别、年龄 | 男,28岁 |
| 职业 | 自由职业者,开源项目贡献者 |
| 知识层次和能力 | 本科计算机科学,精通Python、Ruby等多种开发语言 |
| 生活/工作情况 | 全职参与多个开源项目,分享技术博客,喜爱通过GitHub参与全球开源社区 |
| 用户偏好 | 上网、学习、分享技术,参与全球开源社区 |
| 典型场景 | 提交Pull Request到热门开源项目,和全球开发者交流 |
这些核心用户群体是紧密联系的。个人开发者和开源项目贡献者通过平台提升技能和参与技术共享,企业用户通过使用GitHub进行项目管理并支持开源,推动平台的商业化。技术博客作者与开发者社区也紧密合作,共享知识和经验。自由职业者则通过GitHub的开源项目和企业需求获得工作机会。
3、产品规划
GitHub现有的功能已经相对完善,加入新的功能可能并不是很能吸引用户眼球。基于前文的分析,考虑引入先进的搜索技术来搭建一个新的搜索系统。
| 方向 | 内容 |
|---|---|
| N (Need) | GitHub目前的搜索功能无法满足用户高效、精准地查找项目、代码和讨论的需求,需要一个智能化、个性化的搜索功能 |
| A (Approach) | 基于NLP和机器学习技术进行语义化、个性化搜索,并提供多维度过滤器,优化代码片段、项目文档、问题等的搜索 |
| B (Benefits) | 提高搜索效率、准确性,提供个性化的搜索结果,增强开发者体验,提升社区互性 |
| C (Competition) | 现有的代码搜索工具如Sourcegraph、Kite等,GitHub的优势在于与平台功能深度集成,能提供更全面的搜索果 |
| D (Differentiation) | 通过集成多个搜索维度(代码、文档、讨论等),结合语义搜索和机器学习技术,提供比现有工具更精准、更个性化的搜索体验 |
在招募6名成员后,团队一共有7成员,人数与课程小组的人数类似,可以参考课程项目的成员组成进行分工:
| 角色 | 人数 | 任务 |
|---|---|---|
| 项目经理 (PM) | 1 | 负责整体项目规划、进度管理、需求分析和团队协调 |
| 开发人员 (Dev) | 5 | 负责系统架构、功能开发、前后端集成、性能优化、Bug修复等 |
| 测试人员 (QA) | 1 | 负责编写测试用例、执行功能测试、压力测试、回归测试,确保软件质量 |
16周开发阶段划分:
| 阶段 | 时间周期 | 主要任务 |
|---|---|---|
| 详细需求分析与设计 | 第1-2周 | - 确定改进版本的核心功能和目标 - UI设计原型设计及评审 - 技术选型、架构设计、数据库和API接口规划 |
| 开发基础功能与初步集成 | 第3-5周 | - 构建系统基础框架,前后端核心功能开发 - 初步集成和单元测试 - UI设计调整 |
| 功能完善与中期测试 | 第6-9周 | - 实现剩余功能模块,系统集成测试 - 编写并执行测试用例,发现并修复bug - UI设计调整和用户体验优化 |
| 性能优化与用户反馈整合 | 第10-12周 | - 压力测试、性能优化 - 收集用户反馈,调整系统功能和界面 - 回归测试,确保新旧功能兼容 |
| 最终完善与发布准备 | 第13-15周 | - 最终功能调整,bug修复 - 开发文档和用户手册编写,兼容性和验收测试 - UI优化 |
| 发布与后续支持 | 第16周 | - 版本发布,确保系统上线 - 提供技术支持和后续维护 |




浙公网安备 33010602011771号