软件案例分析
项目 | 内容 |
这个作业属于哪个课程 | |
这个作业的要求在哪里 | |
我在这个课程的目标是 | 学习与掌握软件工程的理论与应用实践,学习如何工程化地构建软件 |
这个作业在哪个具体方面帮助我实现目标 | 分析几个具体的软件,全面了解软件工程的原理在软件开发中的作用,思考成功/失败的软件为什么成功/失败。 |
这次作业主要评测CSDN的技能树功能,参照其项目成员对其产品的期待,并将其与提供和它类似功能的软件对比,分析其功能能否达到项目开发者和用户的期望。
第一部分 调研,评测
软件评测
软件使用
分别在网页端和Android App试用了技能树的主要功能,包括完成题目,讨论区,笔记(Markdown编辑器)和参考资料等。
产品评价
是否解决了用户的问题?
部分解决,根据(14条消息) 技能树发布的新闻稿_SoftwareTeacher的博客-CSDN博客中提到的项目开发者对软件的期待,技能树功能完成了基础的“帮助用户学习”的功能,但是在功能实现细节上还有欠缺,有待打磨。技能树功能整合了一些教程资料和自测题目,并且可以直观地显示学习的进度(通过“树”上的“树叶”颜色)。但是新闻稿中提到的一些功能实现并不完整或者没有实现(也可能是我没找到,但是用户找不到的功能至少也说明入口位置不合理):
通过测试以验证自己对技能的掌握,题目类型单一,几乎只有单选题(后面的付费题目不清楚是不是这样)。
让用户可以在平台上执行完整代码,看到效果,比如通过JupyterNotebook,没有实现或者入口不明显(也可能是我没付费)。
知识点相关的资料:“{博客, 问答, 代码, 视频,… } ”,其实还是只有传统的文字资料和问答。
很多功能需要付费,限制了我能测试的内容,但是不提供试用功能让用户了解是否需要这个产品感觉不是很合理。
软件在数据量/界面/功能/准确度上各的优缺点
参考资料的质量大部分有待提高,功能有一些不是很完整,界面上可能也有一些可以归类为bug的问题,准确度(资料)有一些有问题。
比如C语言技能树第一篇关于C语言发展史的参考资料质量较高也较为详尽。
但是C语言全局变量和局部变量的参考资料较为不准确。
程序结尾的全局变量可以使用extern引用,关于全局变量首字母大写的内容没有找到(全局常量应该全部大写),用全局变量实现多返回值不是很好,全局变量的缺点的分析可能不太准确。
C语言头文件部分甚至有链接到其他网站的广告:
用户体验
除了过多的付费项目外,用户体验尚可。
产品改进意见
给非付费用户更多的可以试用的功能,当前不付费可以试用的功能非常有限,无法体验产品的全貌,用户也无法评估产品是否对自己有帮助,可能会导致用户付费意愿降低。
提高“参考资料”的质量,丰富其内容形式,不仅仅局限于常规的文本资料,以达到新闻稿中项目成员对项目的期待。
提高练习题的质量,不仅局限于单选。
实现在线执行代码的功能或者如果实现了可以将入口放在更为明显的位置,并和技能树整合。
用户调研
采访对象:在另一个软工班的室友
试用产品栏目:golang技能树,因为这位室友不会golang,所以选择这个栏目以模拟新用户的行为,他可能为了完成课程也需要学习golang。
他对产品的整体评价是“不错”,各个功能入口也可以较容易地找到,但对过多的(从goroutine开始)的收费项目可能表示了些许不满。
他用chatgpt生成了评价并发给了我:
这可能是一次失败的用户调研。
结论
a) 非常不推荐
b) 不推荐
c) 一般
d) 好,不错
e) 非常推荐
c)一般,可以在一定程度上解决用户的问题,但是和同类产品相比无明显优势,在一些细节上还有待打磨,资料和题目质量还有待提高。
Bug分析和提交
Bug严重性指标
严重性依次递减
严重(功能破坏,不能正常运行)
中等(部分功能损坏,对使用造成障碍)
一般(功能缺失,或者有待改进)
测试环境
web端:
Windows 11 家庭中文版 22H2 22621.1265
Microsoft Edge 版本 110.0.1587.46 (正式版本) (64 位)
移动端:
Android 13 MIUI 14.0.4
Web端参考资料部分缺少滚动条
严重性:中等
如图参考资料右侧缺少滚动条,如果遇到比较长的资料,比如(20条消息) C语言发展史-C语言概述-CSDNC技能树,定位会非常艰难,只能依靠鼠标滚轮,用户体验较差。
但是使用移动端浏览器打开发现是有滚动条的,可能是开发者在调试时Web端的体验可能有所忽视,相同的控件能在移动端浏览器正常使用就没有进一步测试在pc浏览器上的表现。
参考资料部分代码高亮缺失
严重性:一般
参考资料部分的代码内容没有高亮(检查了C,Python和其他技能树的内容,确定是普遍问题),但是练习题和讨论区的代码内容都有正常高亮。考虑到参考资料都大多使用markdown编写,可能是markdown渲染问题。通过检查元素发现代码被渲染成如下html:
n = int(input("请输入一个整数:"))
fact = 1
i = 1
while i<= n:
fact = fact*i
i = i + 1
print("n!={}".format(fact))
<code class="prism language-python">n <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"请输入一个整数:"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
fact <span class="token operator">=</span> <span class="token number">1</span>
i <span class="token operator">=</span> <span class="token number">1</span>
<span class="token keyword">while</span> i<span class="token operator"><=</span> n<span class="token punctuation">:</span>
fact <span class="token operator">=</span> fact<span class="token operator">*</span>i
i <span class="token operator">=</span> i <span class="token operator">+</span> <span class="token number">1</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"n!={}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>fact<span class="token punctuation">)</span><span class="token punctuation">)</span>
</code>
发现已经完成了词法分析,为每个token配置了class,所以大概是css配置的问题(不太确定)?
这可能是开发者不太重视细节的表现(毕竟没有高亮不影响正常使用),没有进行充分测试,但是确实是个会影响用户体验的bug(其他地方高亮都正常,就这里没有)。
一些可能算不上bug的细节问题
pc端浏览器markdown编辑器即使打开全屏,编辑和预览也分为两个tab,而不是通常的左右分屏,使得这个全屏功能仅仅是个等比例放大,用户体验不佳。
移动端的在交流讨论区不能发布讨论,只能回复,且回复不能使用markdown(pc端可以发布讨论,且回复可以使用markdown),移动端编辑文本确实不太方便,功能和pc端有区别可以理解。
Bug改进意见
技能树产品已经上线运行,大概不太可能有一些breaking bug出现,但是上述影响用户体验的小问题还是很多的,但是修改可能需要投入一些精力和资源。
Bug反馈
第二部分 分析
工作量分析
使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
我估计大约需要14周。
周次 | 任务 |
1 | 团队组成,明确角色分工 |
2~3 | 需求分析,学习与准备相应技术 |
4~9 | 产品实现,App,Web,后端同步进行,使用跨平台框架可能可以节省时间 |
10~13 | 测试与调试,接受反馈并改进 |
14 | 产品上线 |
技能树产品的功能比较常规,主要涉及的功能包括文本展示,答题,讨论区。很多部分如markdown编辑和渲染都有现成的组件,所以可能我估计的时间较短,比较大的阻碍可能是团队成员不熟悉框架和工具。搜集足够的资料、题目(方式可能是邀请csdn的用户)可能会花费更多时间。使用跨平台框架(如flutter,maui)或者直接在移动端嵌入webview可能可以节省时间,但是需要测试并保证在不同平台上的用户体验。
软件质量分析
软件估计排名
试用了牛客网,leetcode的相似功能,并且也参考了一些互联网上的免费教程,得出以下结论:
互联网上的免费教程如果仔细寻找,通常可以找到质量较高的教程(例如Learn C++ – Skill up with our free tutorials (learncpp.com),从cpp基础到智能指针,右值引用,模板等高级内容均有涉及,且也有题目,排版也比较清楚,以及Go),但是更偏向于技术细节,一般没有交互式的题目。
牛客网,leetcode的教程相对比较偏向于针对求职,和csdn技能树功能类似,软件用户体验上也类似,也存在一些小bug(比如牛客网App的题目代码排版有的挤在了一起)。
可能除了求职外,csdn技能树等类似产品并不是学习新技术的首选,但是csdn技能树对求职的需求并没有针对性。
排名可能就目前状况而言,在同类产品中较为靠后。
改进意见
增加在测试上的投入,如上面提到的bug大概率是缺乏测试导致的,而不是技术问题。
加强对内容的审核,提高资料内容的质量,可能需要规范获取和提交内容的流程(因为教程可能大部分由csdn一些用户提交)。
第三部分 建议和规划
市场概况
直接用户可能包括计算机科学,软件工程以及相关专业的学生以及毕业生,求职者,或者在职需要快速学习新技术的技术人员,潜在用户可能包括一些非相关专业的,但在工作中需要使用相关技术的人员(比如Python的应用范围非常广,例如希望学习用脚本自动化股票操作的股民)。综合而言,市场较大,面向人员范围较广。
市场现状
目前市场上存在不少同类产品,如上面提到的牛客网和leetcode,甚至还有不少免费的产品,就主观而言,我认为csdn技能树相对于其他产品缺乏杀手功能,其“题目、问答、在线运行代码”的功能在解决用户痛点上不是很突出,相对一些免费的产品没有突出的优点(比如C++ 测验 | 菜鸟教程 (runoob.com),提供了教程和测验和在线代码执行功能,如下图)
牛客网和leetcode的相似功能对求职有更强的针对性。
在各类似产品均可以实现相近功能(题目,资料,讨论区,笔记)且用户体验差别不大可以基本满足用户需求的情况下,csdn技能树可能需要更为独特的功能来与其他产品竞争(相对免费产品,提供其做不到的功能,增加用户付费意愿,相对其他产品,提供自己独特的优势)。
市场与产品生态
核心用户群
学历:可能集中在大学本科或更高。
年龄:18-35
专业:计算机相关
爱好:可能多种多样
收入:0(学生)~ 计算机相关专业收入
需求:学习新技术,完成学业或者完成工作
用户群体之间的关系
考虑产品的两个重要的用户群体,计算机相关专业的学生和从业人员,从业人员可能具有更多学生所需要的专业知识或者求职就业信息,那么可以考虑基于既有的讨论问答模块提供例如付费问答的服务。
与其他相关产品的关系
CSDN的GitCode可能可以提供在线代码执行的功能,可以与技能树功能集成,让用户可以看到代码执行的结果(其实(17条消息) 技能树发布的新闻稿_SoftwareTeacher的博客-CSDN博客已经有提到,但是貌似并没有实现)
产品规划
实现功能
拓展当前技能树的树结构为图结构,当前树的边仅用来描述知识模块与子模块的关系(比如Python-基础语法-函数),拓展后图的边还应该可以描述联系(比如Python,Java,Go的函数闭包的异同),知识的依赖关系(比如要学习Python Web应用开发可能依赖于html,css,javascript,Python装饰器等知识),组成知识云图并且显示出来,扩展逐步点亮技能树的功能为点亮知识云图,直观地显示用户的学习进度。类似于
(图示软件为Obsidian,图源网络)
NABCD分析
NABCD | 分析 |
Need | 学习技术并证明自己真的掌握了此技术 |
Approach | 使用每节内容后的题目和逐步点亮的知识云图 |
Benefit | 知识云图直观地展示了用户对技术的掌握程度,且梳理了其间的联系,方便且美观 |
Competitors | 类似软件没有提供相似的功能 |
Delivery | CSDN拥有巨大的用户群体,遇到技术问题很容易导航到CSDN |
开发角色配置与规划
如果你是项目经理,可以招聘 6个人,并且有 4个月的时间,你认为应该 如何配置角色(开发,测试,美工等等) 才能在第16周如期发布软件的改进版本,并取得预想中的成绩
美工/前端 2人
后端 1人
质量保证,测试 1人
内容创建和管理 1人
如何实现美观的知识云图是产品的关键,这是美工/前端的工作,有了程序还需要填充内容(资料、题目等)这需要额外的一个人来审核与管理。
周次 | 任务 |
1~2 | 需求分析,用户调研 |
3~8 | 功能开发,美工设计,测试开发 |
9 | alpha测试,总结反馈,修改需求 |
10~12 | 继续完善功能,并进行充分测试 |
13 | beta测试,总结反馈,修复bug,逐步冻结功能 |
14~15 | 最终完善功能,充分测试 |
16 | 发布与宣传 |
由于没有进行过实际的项目管理,上面的项目规划内容可能是对《构建之法》一书的照葫芦画瓢或是纯属个人臆测。