2022-北航敏捷软件工程-个人作业-软件案例分析
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2022 年北航敏捷软件工程 |
这个作业的要求在哪里 | 个人作业-软件案例分析 |
我在这个课程的目标是 | 了解并体验软件工程,实现从「程序」到「软件」的进展。 |
这个作业在哪个具体方面帮助我实现目标 | 评测市面上的软件,进行思辨和总结,全面地了解软件工程对软件所产生的影响。 |
我选择评测 CSDN 上的技能树功能,最初上线时间是 2021-9-17,初始仅有 Python 技能树,目前已有 Python 技能树、C 技能树、算法技能树等九个技能树,但均处于内测版。
上述博客中对 Python 技能树的描述如下:
秉承「服务一亿技术人,为 IT 人士打造学习、成长和成功的平台」的理念和愿景,CSDN 今日正式发布 Python 领域「技能树」,一个帮助 Python 领域学习者进行职业成长的一站式学习工具。它能帮助用户系统地浏览关于 Python 领域的各个知识点,做动手练习,并跟踪自己的成长。
软件体验
各个技能树的区别仅在于内容,下面以 C 技能树为例。
首页
首页的界面如下:
顶部栏是 CSDN 相关网站的通用栏。
左侧是一个二级目录,包括 C 语言中的数个大知识点,以及每个大知识点中细分的小知识点。
右侧是两个排行榜以及一个简介,这个简介中对于不同的技能树仅仅是替换关键词,例如把里面的 C 全部换成 Python 就得到了 Python 技能树中的简介。
中间是位置最大的一部分,也是最突出的一部分,罗列了每个大知识点的信息以及对应的小知识点,点击每个小知识点就可以跳转到对应的页面。
小知识点页面
点击一个小知识点进入对应的页面,下面以「C语言发展史」为例:
左侧还是二级目录,只不过进入的小知识点会被显示为绿色高亮。
右侧的三个部分和中间的三个部分有关,我会在接下来说。
中间仍是位置最大的一部分,分为参考资料、练习题、交流讨论三个部分。
参考资料
即上述图中的部分,这里罗列了一些和当前小知识点有关的博客,大部分为 CSDN 为主 (整个评测过程中我没有看到其它平台的),点击就会跳转到对应的博客。
右侧中的「最新收录」会展示最新提交到这里并审核通过的博客。
练习题
界面如下:
这里罗列了一些和当前小知识点有关的练习题,点击跳转到该题目的界面,目前仅有单选题:
选中一个选项后可以进行复制或提交:
答对了可以选择返回练习题列表或进入讨论:
当然,还可以选择「前往 notebook 调试代码」,但这是一个 bug,因此放在后面说。
返回练习题列表后,右侧的学习进度就会发生变化:
同时左侧的目录也会发生变化:
这里并不是通过一道题就会全部变绿,而是百分比式的变化,这里全部变绿是因为只有一道题。我找到了一个有三道练习题的小知识点,答对一道题后效果如下:
对于一个小知识点,只有完成了所有的练习题,才能使用右侧的「提交优质内容 作为学习资料」,将自己的博客提交,审核通过后就可以出现在参考资料中。
交流讨论
界面如下:
点击右侧的「发帖子」可以创建一个帖子:
默认是富文本编辑器,找了好久才发现右上角头像左边可以切换到 Markdown 编辑器,但不支持公式渲染:
这里罗列了一些和当前小知识点有关的讨论,这里点击第二个讨论「Hello World」,界面如下:
这是是一个非常基本的讨论贴模式。右侧可以看到编辑帖子的历史,但不能看具体改了什么。(后面自己创建帖子发现,其实是可以看的,但是只有自己发的帖子才能看)
讨论贴的回复同样支持 Markdown,但不支持公式渲染:
Bug 分析
首先给出 bug 严重性的量化指标:
星级 | 描述 |
---|---|
五星 | 严重影响用户体验,或导致致命性安全性漏洞。 |
四星 | 严重影响大部分用户体验,或导致非致命性安全性漏洞。 |
三星 | 导致大部分用户体验不好。 |
二星 | 导致小部分用户体验不好。 |
一星 | 略微影响极小部分的用户体验。 |
下面的 Bug 发生时的操作系统均为 Windows 10.0.19044.1586,浏览器均为 Microsoft Edge 99.0.1150.39。
「最新收录」链接完全失效
-
可复现性:必然发生。
-
复现步骤:只需将鼠标放在「最新收录」下面的博客标题上。
-
Bug 具体情况描述:鼠标会「点击」的样子,说明点击后会跳转到对应的博客,但实际上并不会跳转。如图所示:
-
Bug 的可能成因:设为超链接,但是没有写跳转地址,或跳转地址出错。
-
Bug的严重性:三星。大部分用户都容易点到「最新收录」这一部分,而这部分的功能完全失效,会使得用户认为这款软件是一个不完善的半成品,逼格一下就降下来了。
-
对于Bug的预期及改进建议:我认为这个地方就是代码有问题,只要想修肯定很好修,就保证原有的跳转功能正常即可。
「最新收录」包含不存在的博客
-
可复现性:特定条件下会发生,不一定每个小知识点都会存在此 Bug,但只要某个小知识点存在此 bug 那对于这个小知识点而言就是必然发生的。
-
复现步骤:进入一个小知识点页面,这里以「C语言发展史」为例。
-
Bug 具体情况描述:「最新收录」中博客均不包含于「参考资料」中,而且有的博客不存在阅读量图标,如图所示:
其中「c语言万物起源」和「C语言的起源、特点与应用」就不存在阅读量图标。
-
Bug 的可能成因:「最新收录」部分和「参考资料」独立,当一个新的博客提交并审核通过时,它们不会被同时添加到「最新收录」和「参考资料」中。
-
Bug的严重性:二星。大部分用户被上一个 Bug 所迷惑,基本不会注意到这个 Bug,少数人可能仍会注意到这个 Bug,他们会继续加深对本软件完善性的质疑。
-
对于Bug的预期及改进建议:把「最新收录」变成对将「参考资料」按提交时间逆序排序的结果,这样就可以避免这样的 Bug,同时减少数据冗余。
交流讨论帖的标题双引号会被错误解析
-
可复现性:必然发生。
-
复现步骤:创建一个帖子,标题里面写双引号。
-
Bug 具体情况描述:首先看一个已经发布的帖子,如下图所示:
容易联想到
"
是双引号,例如我在 Typroa 里面打"
它就会变成双引号。下面我来复现一波:
保存并发布,复现成功:
再编辑,继续发生错误:
再保存并发布,又多了个
&
,它其实是&
符号:以此类推,如果不加更改,标题会越来越长,越来越奇怪。
-
Bug 的可能成因:HTML 解析有误。
-
Bug的严重性:二星。大部分情况标题里不一定存在双引号,但是一旦被用户看到会极大影响美观度。
-
对于Bug的预期及改进建议:内容里面的解析就是正确的,把解析规则改成和内容一样就好了。
「交流讨论」帖子数量显示与实际不符
-
可复现性:特定条件下会发生,不一定每个小知识点都会存在此 Bug,但只要某个小知识点存在此 bug 那对于这个小知识点而言就是必然发生的。
-
复现步骤:进入一个小知识点页面的「交流讨论」部分,这里以「Python简介」为例。
-
Bug 具体情况描述:「交流讨论」旁边显示有 8 个帖子,但实际只有 7 个,如图所示:
-
Bug 的可能成因:「交流讨论」旁边显示的数量是独立存储的,在某种情况下,当一个帖子被删除,它并不会减少。
-
Bug的严重性:二星。大部分用户并不会去数具体的帖子数量,但是一旦发现对不上,会对这个软件的功能性产生极大质疑。
-
对于Bug的预期及改进建议:不要把「交流讨论」旁边显示的数量独立存储,而是通过查询帖子的数量来获取。
选择「前往 notebook 调试代码」显示服务下线
-
可复现性:必然发生。
-
复现步骤:回答题目后选择「前往 notebook 调试代码」。
-
Bug 具体情况描述:点击「前往 notebook 调试代码」后如图所示:
-
Bug 的可能成因:CSDN Notebook 服务下线后并没有取消「前往 notebook 调试代码」这个按钮。
-
Bug的严重性:三星。大部分用户都会去做题,做完了肯定会尝试这个按钮,结果发现功能没了,体验直接下降一大截,是我直接就关掉这个网站了。
-
对于Bug的预期及改进建议:寻找替代品,或删去这个按钮。
「交流讨论」列表的按钮失效
-
可复现性:必然发生。
-
复现步骤:在「交流讨论」列表,点击一个讨论贴的「评分」按钮或「评论」按钮。
-
Bug 具体情况描述:点击后会跳转到对应的帖子,但并不会弹出或跳转到「评分」或「评论」的模块,也就是说点击这两个按钮和直接点击标题效果是相同的,如图所示:
点完后跳转的页面:
-
Bug 的可能成因:跳转后打开对应模块的逻辑有误。
-
Bug的严重性:一星。这个按钮比较小,其实不容易被点到,就算点到了也可能认为是自己点错了或者卡了,影响不是很大。
-
对于Bug的预期及改进建议:点击回复聚焦到回复框,点击评论弹出一个评分框。
无限刷新
-
可复现性:在历史上的某个时间段必然发生。
-
复现步骤:在时间段 2022-03-18 14:40 到 2022-03-18 16:00,只要进入一个小知识点,就会无限刷新,整个网站约等于瘫痪。
-
Bug 具体情况描述:如图所示:
我的另一台 Windows 电脑和另一位同学均出现了相同的 Bug。
-
Bug 的可能成因:网站相关逻辑出现错误。
-
Bug的严重性:五星,网站瘫痪。
-
对于Bug的预期及改进建议:过了这个时间段就好了,希望以后测试做好再上线。
Bug 反馈
已在 gitcode 的 CSDN-技能森林 仓库添加 issue:
用户采访
我采访了欧阳软工班的一位同学,他的需求是备战即将到来的蓝桥杯。
可以看出本软件的不完善,同时也有很多不合理的地方,无法很好解决用户的需求。
优缺点分析
优点
软件的初始想法是很美好的——「搭建一个进行职业成长的一站式学习工具」,罗列出每个领域中的大知识点,将其划分为一个个小知识点,利用 CSDN 上的各种帖子充当其「参考资料」,辅以一定量的练习题,交流讨论区功能,最终再给予用户 CSDN 认证,让用户从一个小白开始,不断成长,并在途中跟踪自己的成长。
每个领域内知识点划分非常细致,且几乎每个小知识点都对应数个参考资料和至少一道练习题。
以上就是我认为这款软件唯二的两个优点。
因此我有充分的理由认为开发成员全去干「知识点划分」和收集相应的博客这些事情了 😅。
缺点
整个流程看起来很美好,但实际根本无法解决用户的问题。
「参考资料」质量极其低下
用户想要学习一个小知识点,主要是通过参考资料,而参考资料来自 CSDN 博客,那 CSDN 博客的质量如何,我想大家懂的都懂。当然,CSDN 上肯定也有很多质量很高的博客,但那终究是凤毛麟角,根本不能保证每个小知识点至少有一篇高质量的博客。
很多收录的资料其质量其质量充其是上课做的笔记,各种不严谨的地方和纰漏层出不穷,依靠这些文章怎么进行职业成长?
举几个例子来看:
21 多个亿,这东西敢叫参考资料?
很大很大很大,是多大?
「练习题」纸上谈兵
掌握一个知识点的评判依据竟然是完成数个 (大部分就一个) 四选项单选题,而且还可以提交多次。这对计算机职业成长简直是风马牛不相及,无论做多少选择题但不写代码,最后还是一个字也敲不出来。
这里特别要说一下算法技能树,这个技能树真的是完全没有意义。对于算法题来说,选择题更是可笑至极。此外,这个软件既然不能提交代码,那它就只能是一个题解索引区。
目前算法技能树仅仅收录了 Leetcode 和蓝桥杯的部分题目,参考资料即为对应题目的题解,然而绝大部分都是超低质量题解。
Leetcode 官网每道题下面那么多优秀的题解,谁跑来这里受罪?
蓝桥杯确实找不到一个比较好的题解聚集地,但至少得保证题解的质量吧?比如:
这题目描述不用公式渲染,代码扔了就走,也不解释一下,而且这题不是有简单的 \(O(n)\) 做法嘛,你放一个根本过不了的 \(O\left(n^2 \log n\right)\) 的逆天做法?
定性和定量分析
我对这个软件的定性评价是 非常不推荐。
这个软件根本无法解决用户的问题,甚至有时候用都用不了。
现在再看看我放在本文开头的,发布贴中对 Python 技能树的描述:
秉承「服务一亿技术人,为 IT 人士打造学习、成长和成功的平台」的理念和愿景,CSDN 今日正式发布 Python 领域「技能树」,一个帮助 Python 领域学习者进行职业成长的一站式学习工具。它能帮助用户系统地浏览关于 Python 领域的各个知识点,做动手练习,并跟踪自己的成长。
不觉得讽刺嘛?
这种软件能服务谁?开发团队是不是觉得把知识点细分后,每个小知识点随便找几个帖子,大家就能学会这个知识点了吗?
如果按照 项目成员对自己产品的期待,我可以说一个期望都没实现吗?
定量分析部分,我借鉴邹欣老师的评分标准:
类别 | 描述 | 评分 |
---|---|---|
核心功能 | 分析三个核心功能,功能设计和质量。 | -3 |
细节 | 有什么为用户考虑的细节? | -3 |
用户体验 | 当用户完成功能时,不干扰用户。 | 0 |
辅助功能 | 一些辅助功能如皮肤等。 | 0 |
差异化功能 | 这个软件独特的功能。它对用户的吸引力有多大? | -3 |
软件的效能 | 占用内存,启动速度,内存泄漏情况。 | 10 |
软件的适应性 | 在联网/断网,大小屏幕,没有鼠标的情况下都可以顺畅操作。和不同平台的软件能流畅协作。 | 8 (手机必须下载 app 才能用) |
成长性 | 记住用户的选择,适应用户的特点,用户越用越方便。 | 0 |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。让用户方便地从错误中恢复工作,快捷操作键可调整。 | 0 |
自选评分项目 | 正确显示相关内容。 | -3 |
总分 | 6 |
软件分析
-
使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间 (团队人数 6 人左右,计算机大学毕业生,并有专业 UI 支持)。
这个软件的功能极其匮乏,还没有我们数据库大作业的工作量大,对于 6 个计算机大学毕业生难度不大,如果不遵从软件工程的规范,只为了「实现所有功能」,那么一周就可以做完。如果按照严格的软件工程的规范,我认为需要一个月的时间。
当然这并不包括补全知识点,添加对应的参考资料、练习题等工作,因为它们并不属于开发团队,所以不在考虑范围内。
-
分析这个软件目前的优劣 (和类似软件相比),这个产品的质量在同类产品中估计名列第几?
与本软件类似的学习平台包括 W3School、菜鸟教程等。也有一些面向特定领域的学习网站,例如 Oi-Wiki 和 CTF-Wiki。
这些平台同样有着细致的分类,有讨论区 (除了 W3School),最重要的是它们的内容有质量保障。 CSDN 技能树相比之下的优势可能只有它有完成进度条,让用户感受到他的进度,但用户的首要需求是学到东西,不是自我感动。
综上,我估计 CSDN 技能树名列倒数第一。
-
从各方面的问题,推理出这个软件团队在软件工程方面可以提高的一个重要方面 (具体建议)。
我认为这个软件的团队需求分析做的太差了,很多地方完全不切实际,急需提高。
-
你在第一部分发现的 Bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?
我认为原因是「测试把关不严,敷衍了事」,请安排专门的测试人员。
建议和规划
市场概况
-
首先市场有多大?
本软件主要使用者是计算机专业的本科生和软件行业的工程师,它们在接触一个新的领域时需要这样一个工具进行学习。前者约有两百万,后者约有 777 万,此外还有一些非计算机专业但是想转计算机的用户通过此软件进行入门。
当然,这样的估计得到的是一个超级松的上界,毕竟很多人并不会不断接触新的领域,因此我估计实际市场大约有 100 万。
-
其次直接的用户有多少?潜在的用户又有多少?
对于本软件的直接用户,应该是指那些真正在使用的用户,而不是仅仅试了试基本功能的用户,如下图所示:
对于 Python 技能树,我认为这样的用户约有 1000 人。
所有技能树加起来,因为一些技能树的使用者较少,且重合的概率较高,我认为约有 5000 人。
对于本软件的潜在用户,所有 CSDN 使用者都可以囊括其中,小白可以用本软件进行学习,大牛可以写参考资料。而对于不用 CSDN 的用户,转来用 CSDN 的数量可以忽略不计。
根据 CSDN 的宣传,有一亿用户。因此潜在用户的数量是一亿吗?我相信真实的用户量只有 CSDN 知道。
市场现状
-
目前市场上有什么样的产品了?
与本软件类似的学习平台包括 W3School、菜鸟教程等。也有一些面向特定领域的学习网站,例如 Oi-Wiki 和 CTF-Wiki。
至于各大 Online Judge,我觉得算法技能树根本不配与它们相比,遂不进行比较。
-
上述产品的定位、优势与劣势在哪里?
W3School 主要提供 Web 技术教程的教程:
菜鸟教程提供 IT 行业各种领域的教程:
OI-Wiki 主要提供算法竞赛的相关知识:
CTF-Wiki 主要提供 CTF 相关知识:
它们的一大优势就是内容质量有保障,排版精美,确保正确性。
其中菜鸟教程允许用户上传自己的笔记,同时也有很多测试题,且可以在线调试相关代码。
W3School 允许在线调试相关代码。
Oi-Wiki 和 CTF-Wiki 都有讨论区功能。
-
上述产品之间呈现什么样的关系,哪些为竞品关系?以及竞争中的各方态势如何?
上述产品中,Oi-Wiki 和 CTF-Wiki 各自专注于独特的领域,和其它产品没有竞品关系。
主要的竞品关系存在于 W3School 和菜鸟教程之间,菜鸟教程覆盖的领域更广,内容也比较全面,有一种「字典」的既视感,更加适合初学者。W3School 主要专注于 Web 端开发。
综合来说,菜鸟教程更加占优势一些。
市场与产品生态
-
这个产品的核心用户群是什么样的人?典型用户是什么样的?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
核心用户群是有「想要学习新领域知识或喜欢撰写教程博客帮助他人」需求的 CSDN 核心用户。
对于前者:
- 学历:正在上本科
- 年龄:20 岁左右
- 专业:计算机相关专业
- 爱好:逛 CSDN
- 收入:无
- 表面需求:学习新领域知识
- 潜在需求:学习过程中记录自己的进度,获得成就感
对于后者:
- 学历:本科
- 年龄:25 岁左右
- 专业:计算机相关专业
- 爱好:逛 CSDN
- 收入:中等
- 表面需求:闲暇之时在 CSDN 上撰写一些自己熟悉领域的教程
- 潜在需求:自己的教程被大家认可,获得认可感
-
产品的用户群体之间是否存在一定的关系?是否有利用其相互作用二次构成特定用户生态的可能性?
存在,他们都是 CSDN 的用户。
实际上,本软件就是帮助 CSDN 构建其独特用户生态的一个方法。
产品规划
-
你要在当前软件的基础上设计什么样的新功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用 NABCD 分析。
将每个小知识点的「参考资料」模块删去,而是改为类似 Wikipedia 的模式。
允许用户提交更改,并由专门的管理人士审核,通过后才会显示。需要支持类似 Git 的版本管理功能。
对于 CSDN 值得信任的核心用户,同时又是某个领域的专家,可以给予其审核对应知识点的内容的权限。
每个页面会特别表明其贡献者。
NABCD 分析如下:
- N (Need,需求):学习者需要更加高质量的学习内容,贡献者需要获得更高的认可感。
- A (Approach,做法):贡献者作为 CSDN 用户,可以对其博客内容进行格式修改后搬运至此。版本管理功能保证了内容的可追踪性和可复原性。
- B (Benefit,好处):只要审核把好关,就可以确保内容的高质量集体被整合在一个页面中,这就解决了学习者最重要的需求。贡献者看到自己的博客现在位于「维基」上面,也会感到更高的认可感。
- C (Competitors,竞争):想要竞争过菜鸟教程,必须要有更高质量和更多领域的内容,利用 CSDN 上庞大的用户量,直接加以正确的引导,并非不可能。当然,如果继续像这样作死下去,一切都是空谈。
- D (Delivery,推广):CSDN 已经由很大的用户量,推广并不是难事。
-
如果你是项目经理,可以招聘 6 个人,并且有 4 个月 的时间,你认为应该如何配置角色 (开发,测试,美工等等) 才能在第 16 周如期发布软件的改进版本,并取得预想中的成绩。
角色 人数 前端开发 2 后端开发 2 美工 1 测试 1 -
请为你的团队设计16个周期每周的详细规划。
周数 任务 1-2 需求分析,撰写规格说明书和设计文档。 3-6 冲刺开发,主要实现版本管理功能。 7 集中测试并修复 bug,细节调整。 8 第一轮发布,收集反馈信息。 9-10 分析反馈信息,对规格说明书和设计文档进行修改。 11-14 冲刺开发,实现全部功能。 15 集中测试并修复 bug,细节调整。 16 第二轮发布,收集反馈信息,并真正投入运营。