软件工程第二次作业——CSDN技能树分析

软件工程第二次作业——CSDN技能树分析

项目 内容
这个作业属于哪个课程 2023年北航敏捷软件工程社区-CSDN社区云
这个作业的要求在哪里 个人作业-软件案例分析-CSDN社区
我在这个课程的目标是 了解软件工程方法论,提高工程能力以及团队协作开发能力,总结软件开发经验
这个作业在哪个具体方面帮助我实现目标 学习市场上软件的设计优点,总结其存在的不足。

在互联网时代下,我们能从网上找到海量的学习资料,然而这些资料的质量却良莠不齐,大部分资料没能系统地讲解某一领域的知识。本文分析的 CSDN 中的技能树版块(以下简称技能树)正是旨在打造一个IT人系统学习的平台。

文章目录

  • 软件工程第二次作业——CSDN技能树分析
    • 一、调研,评测
      • 1.软件评测
        • (1).基本功能使用
          • 首页
          • 知识点页面
        • (2).使用体验
          • 总体描述
          • 功能优缺点分析
        • (3).改进意见
        • (4).用户调研与采访(加分项)
        • (5).定性和定量评价
      • 2.Bug分析和提交
        • (1).测试环境
        • (2).功能性Bug
          • 讨论帖快捷评分、评论按钮失效
          • 用户编写中的笔记丢失
          • 没有对学习资料提交进行验证
        • (3)Bug 反馈(可选加分项)
    • 二、分析
          • 1.使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
          • 2.分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?
          • 3.从各方面的问题,推理出这个软件团队在软件工程方面可以提高的一个重要方面(具体建议)。
    • 三、建议和规划
      • 1.市场概括
      • 2.市场现状
      • 3.市场与产品生态
      • 4.产品规划

一、调研,评测

1.软件评测

在本节中,笔者将描述技能树的功能使用体验,分析技能树是否解决了用户的问题,其在数据量/界面/功能/准确度上存在的优缺点,对产品提出改进意见,分享笔者对其他软工班级学生的调研采访,并最终给出对该软件的评价。

(1).基本功能使用

以下以技能树的python板块为例进行评测。

首页

软件工程第二次作业——CSDN技能树分析_第1张图片

进入首页,其设计与作者所想的树或知识图谱的形式并不相同,而是类似于电子书,在左侧导航栏显示目录,共分为章和节两层。根据学习情况会用不同深浅颜色的叶子标注。

中间栏共可切换四个功能:知识点学习情况总览(目录)、用户定下的学习目标(立Flag)、知识点速查手册(速查手册)、用户已达成的学习目标(达成Flag)。

右侧包括相关技能链接、用户学习和贡献榜、技能树介绍。

总体来说首页UI设计简洁明了,用户可以快速阅览该技能涵盖的知识点以及自己的学习情况,并可以通过点击章节名轻松开始学习。

知识点页面

软件工程第二次作业——CSDN技能树分析_第2张图片

知识点页面布局与主页类似。

中间栏展示该页面的主要功能,包括:练习题、参考资料、交流讨论、我的笔记、专栏课程五个部分。

  • 练习题

    罗列一下和当前知识点相关的习题,python板块中只出现了选择题,在选择选项后系统会给予反馈。

软件工程第二次作业——CSDN技能树分析_第3张图片

  • 参考资料

    由各个博主编写的相对完善和清晰的课程资料,用户也可以尝试编写并提交博客作为新的课程资料。

软件工程第二次作业——CSDN技能树分析_第4张图片

  • 交流讨论

    由其他用户编写的公开讨论贴,用户可点击进入查看详情、参与讨论、评价帖子等。
    软件工程第二次作业——CSDN技能树分析_第5张图片

  • 我的笔记

    用户个人编写的私密笔记,点击可进入查看详情,点击全部笔记将跳转至用户私密空间。
    软件工程第二次作业——CSDN技能树分析_第6张图片

  • 专栏课程

    该模块给用户提供付费课程的入口,用户可点击查看课程详情,并选择是否购买课程。

知识点页面的右侧提供给用户一个编写笔记的区域,支持markdown格式编写,同时支持用户选择公开(发布在交流讨论模块)或私密(发布在我的笔记模块)发布。

(2).使用体验

总体描述

技能树项目成员是这么描述该项目的。

它能帮助用户系统地浏览关于一个技术领域的各个知识点,做动手练习,并跟踪自己的成长。CSDN 的这个新功能进一步推动了它的宗旨 — 为 IT 人士打造学习,成长和成功的平台。

技能树能够很好的帮助新手系统的学习知识。

可见,该项目的初衷是为了提供初学者一个系统学习专业知识的平台,让初学者免于淹没在良莠不齐的学习资料和培训中。然后实际使用下来,给人感觉这个平台更适合于有一定基础,想对知识点进行查漏补缺的老手。

功能优缺点分析

软件在以下方面存在一定的优缺点

  • 数据量

    • 优点

      • 技能树节点内容充分,涵盖该领域内绝大部分基础知识。
      • 存在大量讨论帖和用户笔记,为用户提供较好的交流学习渠道。
      • 参考资料后往往会有一些拓展资料,帮助学有余力的用户了解更多专业知识。
    • 缺点

      • 题目量过少。很多章节提供的练习题难以支撑起大量的基础知识,对于初学者而言,缺少一定量的训练,对其基础的巩固往往会存在影响。而软件仅以练习题的完成情况判定章节的掌握程度,这显然是极其不合理的。
        软件工程第二次作业——CSDN技能树分析_第7张图片

      • 题型单一。在python技能树中只存在单选题,然而我们知道对于编程语言的学习,实践是不可或缺的,缺少编程题有碍于用户技能掌握能力。(该问题在后续java技能树等项目中有所改善)

  • 界面

    • 优点

      构建之法第12章——用户体验中有提到:

      很多软件设计者把用户界面等同于给领导汇报的工作成绩单,所有的功能都争先恐后地出现在用户面前,唯恐用户没有注意到。但是用户往往会被繁乱的界面弄得晕了头,无所适从。

      • 该项目界面布局简洁美观,仅将用户主要使用的少数几个功能在页面中呈现,随着用户的点击再逐步展示更多的功能。
      • 页面中的非文字型标志意义明确,如颜色不同的叶子(知识点掌握程度)、皇冠(vip课程)、难易度标志等,避免用户对此感到意义不明,从而影响使用体验。
      • 用户可以根据需要,收缩侧边目录,调整笔记框所占页面的比例。
      • 页面并没有像国内某些网站那些,充斥着大量广告,仅有右上角一个区域向其他技能树引流。
    • 缺点

      • 界面和功能设计与**"技能树"这一概念差距较大。技能树应该是在计算机科学**这一背景下,对各个技能的前后继关系进行可视化。也就是说,用户不光能从技能树的节点学习知识,还能通过节点的链接关系了解技能之间的联系。

      • 练习题界面设计不佳。很多练习题将大量文字和代码粗暴地堆积在页面内,初学者面对这样大量的文本往往会心生排斥感,不愿意看完题目。
        软件工程第二次作业——CSDN技能树分析_第8张图片

  • 功能

    • 优点
      • 技能树基本涵盖初学者进行新技能学习的基本需求,如:知识讲解、题目练习、笔记记录、交流讨论等。
    • 缺点
      • 技能树几乎没有考虑用户学习时可能使用的细节功能,如:习题和知识点的收藏功能、错题本功能、搜索功能等。
      • 部分参考资料内容过长时,由于内容右侧没有滚动条,需要大量滚动鼠标滚轮,使用体验相当差。
  • 准确度

    • 优点

      • 笔者抽做的几道练习题均未发现技术性错误,在一定程度上能够帮助用户掌握知识点。
      • 大部分参考资料中的知识准确,确保用户不会接收错误知识而误人子弟。
    • 缺点

      • 参考资料和练习题关联性低。一些练习题中会出现用户尚未学习的知识点。

      • 讨论区内容没有严格审核,存在不少质量较低的水贴,影响用户的使用积极性和学习效率。
        软件工程第二次作业——CSDN技能树分析_第9张图片

基于以上多种因素考虑,该产品基本解决了用户存在的核心问题,初步完成了项目的初始设想,即:

帮助 IT 领域学习者进行职业成长的一站式学习工具。 帮助用户系统地浏览关于一个技术领域的各个知识点,做动手练习,并跟踪自己的成长。

但是就实际使用体验而言,该网站的参考资料是其他用户撰写,从内容质量和准确度、内容连贯性上,比起菜鸟教程仍有很大的提升空间。而对用户使用的细节功能上,该网站并没有仔细进行打磨,比起专职做学习的软件(如猿题库、百词斩等),在真正学习使用时会显得格外不便。

(3).改进意见

以下将针对功能优缺点分析中提到的缺点给出改进意见。

  • 增加练习题题量,适当添加编程题。确保用户对知识不会只停留在纸上谈兵,通过实际编写程序提高熟练度。
  • 优化习题布局,控制其难度由简到难。避免让初学者直接面对大量文字和代码,而打击用户学习和练习的积极性。
  • 考虑用户会使用到的细节功能。添加题目、帖子、知识点收藏功能,错题本功能,知识点搜索功能等,优化用户使用体验,避免其花费大量时间在整理、查找等杂务上。
  • 适当调整知识点顺序,保证知识点的连贯性,加强知识点与习题的关联性。
  • 加强对参考资料和用户发表内容的审核,避免资料和讨论区质量的良莠不齐,对网站形象造成不良影响。

(4).用户调研与采访(加分项)

采访对象为欧阳老师班级的一名同学,因为对方是笔者室友,在交流上没有太多顾虑。且对方正在学习后端相关知识,是这方面的初学者,属于技能树的核心用户。


可见,技能树在基本功能上能大体满足用户需求,但是在对提升用户使用体验的一些细节上仍然存在着改良空间,最终他也并不推荐使用这款软件。

(5).定性和定量评价

技能树整体使用下来,只能说大体上可以满足用户的基本需要,初学者确实能通过该软件入门某一技能。同时简洁美观的UI设计,让用户能轻松使用其主要功能。

但是就参考资料的质量、练习题的合理性、细节功能的全面度、功能的创新性而言,技能树都或多或少和市场中的其他替代品存在一定差距,比如菜鸟教程等。

按照 项目成员对自己产品的期待,技能树确实可以做到**“帮助用户系统地浏览关于一个技术领域的各个知识点”,为用户提供了一个可以“系统学习一门技术的”平台。但是在“做动手练习,并跟踪自己的成长”这一方面却不尽人意。同时对于“怎样证明自己获得了足够的技能”这一点,技能树只是简单根据选择题**的通过情况判定,这实在难以让人认同。

最后根据该评分标准进行定量评价:

描述 评分(满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分)
核心功能 核心功能的设计和质量 4(知识点和资料完善,但习题质量不佳)
细节 为用户考虑的细节 1(有笔记功能,但其他细节几乎没有考虑)
用户体验 当用户完成功能时,不干扰用户 6(界面设计简洁,无弹窗广告)
辅助功能 一些辅助功能如皮肤等 1(没有特殊的辅助功能)
差异化功能 软件独特的功能 -2(没有独特的功能)
软件的效能 占用内存、启动速度 8(启动速度较快,没有大量占用内存)
软件自适应性 联网/断网,不同屏幕,不同操作系统的使用 8(各平台使用情况基本一致)
成长性 记住用户的选择,适应用户的特点,用户越用越方便。 1(仅记录用户的学习情况)
用户有控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 -3(几乎没有提示,进入已通过的习题后每次都会弹窗提示已完成,体验较差。笔记功能不支持快捷键)
社区文化 讨论区是否活跃,讨论质量是否合格 4(讨论区有很多帖子,但是部分帖子质量较低)

最终评分:28/100,不合格

基于上述工作,我对该软件的评价为不推荐,如果确实有需求,完全可以使用市场上其他替代品(如菜鸟教程)。

2.Bug分析和提交

首先给出对Bug严重性分析的量化指标:

等级 具体描述
略微影响用户体验
⭐⭐ 较大影响用户体验
⭐⭐⭐ 一定程度的系统故障;一定程度的安全漏洞;严重影响用户体验
⭐⭐⭐⭐ 严重系统故障;严重安全漏洞;严重影响用户体验
⭐⭐⭐⭐⭐ 致命性系统故障;致命性安全漏洞

(1).测试环境

  • 操作系统:Windows 10 (10.0.19044 内部版本 19044)
  • 浏览器:Microsoft Edge 110.0.1587.56

(2).功能性Bug

讨论帖快捷评分、评论按钮失效
  • 可复现性:必然发生

  • 复现步骤:

    • 进入任意技能树的任意知识点;
    • 点击进入交流讨论区;
    • 点击任意帖子下方的评分或回复按钮。
  • 描述:

    • 市场上很多知名软件(bilibili,知乎,微博等)该按钮意义通常为快捷进行回复,技能树UI界面设计之初应该也是这个目的,但是发布的版本还未完善该功能。

软件工程第二次作业——CSDN技能树分析_第10张图片

  • 技能树的讨论帖按钮表现如下图,点击回复按钮后并没有出现评论界面,而是直接跳转到帖子,即这两个按钮属于多余设计,功能并不完善。

    软件工程第二次作业——CSDN技能树分析_第11张图片

  • Bug分析

    • 可能成因

      • 项目组设计了讨论组的评分和回复两个快捷按钮,但是最终可能出于时间等各方面原因,没有实现预期功能就将软件发布了。
      • 测试把关不严,对这两个按钮没有进行适当测试。
    • 严重性

      评价指标 等级 理由
      系统功能 ⭐⭐⭐ 两个按钮缺失功能,一定程度上影响使用
      安全性 无安全性隐患
      用户体验 ⭐⭐ 用户有大量使用该功能的情况,这将导致用户不得不进行更多繁琐的操作才能进行评价或回复

      综合以上描述,该Bug星级为⭐,略微影响用户使用。

  • Bug改进建议

    • 点击评分弹出包含五个星星的评分框,点击回复类似其他软件向下弹出其他用户评论以及评论编写框。
用户编写中的笔记丢失
  • 可复现性:必然发生

  • 复现步骤:

    • 进入任意技能树的某知识点;
    • 在右侧笔记区域进行编写;
    • 点击其他知识点或关闭页面;
    • 再次返回该知识点,已编写的内容会消失。
  • 描述:

    • 用户尚未发布的笔记,在关闭或切换页面后,将会全部消失,并且过程中软件不会给出任何警示。

    软件工程第二次作业——CSDN技能树分析_第12张图片

  • Bug分析

    • 可能成因

      • 项目组没有特别考虑用户使用时的细节,没有设计保存功能,也没有在页面跳转时提示用户保存。
      • 可能出于时间等问题,没有将功能设计全面。
    • 严重性

      评价指标 等级 理由
      系统功能 ⭐⭐⭐ 笔记功能设计不完善,没有全面考虑用户使用时会发生的各种情况
      安全性 无安全性隐患
      用户体验 ⭐⭐⭐⭐ 若用户编写的大量笔记这样付之东流,将严重影响用户使用体验,同时也将很大程度上打击用户学习的积极性,对软件的好感度

      综合以上描述,该Bug星级为⭐⭐⭐,严重影响用户使用。

  • Bug改进建议

    • 笔记编写框下方添加保存按钮,每隔一定时间为用户自动保存一次。
    • 在用户切换或关闭页面时,自动为用户保存或提示用户手动进行保存。
没有对学习资料提交进行验证
  • 可复现性:必然发生

  • 复现步骤:

    • 进入任意技能树的某知识点;
    • 点击「参考资料」并翻阅到最下方;
    • 点击「提交参考资料,PK现有内容」输入任意符号。
  • 描述:

    • 尽管提交框提示需要提交URL地址,但是软件并未对用户输入的内容进行格式验证,输入任何字符均会显示提交成功,并且网站并不限制提交次数。

      软件工程第二次作业——CSDN技能树分析_第13张图片

  • Bug分析

    • 可能成因

      • 前端表单进行数据读入时,没有进行格式化验证,导致用户无论输入什么内容都会将其提交至服务器。
    • 严重性

      评价指标 等级 理由
      系统功能 不涉及系统功能
      安全性 ⭐⭐⭐⭐ 存在安全隐患,通过此漏洞可以大量提交垃圾信息,影响审核人员进度,甚至导致系统崩溃
      用户体验 ⭐⭐ 用户可能在不知情的情况下提交了错误链接,一定程度上影响使用体验。

      综合以上描述,该Bug星级为⭐⭐⭐,一定程度上存在安全漏洞,且影响用户使用。

    • Bug改进建议

      • 在发送数据到后端前,前端可以对读入信息进行正则表达式匹配,只有匹配通过后才会发送数据到后端。

(3)Bug 反馈(可选加分项)

软件工程第二次作业——CSDN技能树分析_第14张图片

二、分析

1.使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
  • 在有专业UI支持的情况下,鉴于该网站功能并不复杂,主要任务量将会是在资料的收集和整理上,如果抛开这个工作量,估计时间将会在14周左右(如果算上资料收集和整理,那工作量将会大很多)。

  • 以下为大致工作计划

    周次 具体任务
    1 任务分工与用户调研
    2~3 用户需求分析,编写并审核设计文档
    4~7 编码实现相关功能
    8 代码复审,进行各单元及功能测试
    9 发布alpha版本,收集用户反馈和建议
    10~12 根据反馈情况进行beta版本开发,包括Bug修复和功能调整
    13 发布beta版本,收集用户反馈和建议
    14 网站正式上线,运维人员维护网站
2.分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?

笔者使用过的类似软件有菜鸟教程,W3school,下面比较技能树对比这两个网站的优劣之处。

  • UI界面
    • 排名:技能树>菜鸟教程≈W3school
    • 技能树界面简洁,功能明确。
    • 菜鸟教程和W3school界面美观度较差,但功能也比较明确。
  • 内容丰富度和准确度
    • 排名:菜鸟教程>W3school>技能树
    • 技能树作为新兴网站,资源量相较其他两个网站较少,且有部分描述不准确的资料。
  • 讨论区活跃度
    • 排名:技能树>菜鸟教程>W3school
    • 技能树有CSDN的用户基数,讨论区比较活跃。
    • 菜鸟教程有用户笔记功能,但没有设定单独的讨论区。
    • W3school没有设计响应功能。
  • 学习辅助
    • 排名:菜鸟教程>技能树>W3school
    • 技能树有少数习题,但多数和资料关联性差,且只有选择题。包含笔记功能。
    • 菜鸟教程有较为符合资料的习题,同时有大量编程实例。
    • W3school没有设置相应习题。

综上所述,对三个软件排名为:菜鸟教程>技能树>W3school

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

根据上述分析,我认为该软件团队可以在用户需求分析多做提高。根据项目成员对自己产品的期待,该软件并没有做到为用户提供高质量的学习资料,包括参考资料的质量良莠不齐,练习题设置不当等问题。同时也没有考虑多种细节,导致用户在实际使用该软件学习技能时,可能会有各种各样的问题影响使用体验。如果团队能更充分地进行用户需求分析,并完善用户使用时需要的各种功能,我相信技能树会更能吸引用户。

三、建议和规划

1.市场概括

  • 市场有多大?
    • 除计算机专业外,大量工科专业也会学习C语言、python等编程语言。教育部2021年教育统计数据显示,工学在校生数超过600万
    • 根据工信部统计,截止2020年,我国软件业从业平均人数高达 698 万人
    • 根据CSDN创始人蒋涛在2021年的演讲,CSDN活跃用户3000多万
    • 因此不难估计市场用户会在十万级到百万级
  • 直接的用户有多少?潜在的用户又有多少?
    • 根据讨论区的活跃度简单分析,所有技能树模块的直接用户(实际使用技能树学习的用户)总和应该不超过10万
    • 潜在用户(包括在校大学生,CSDN用户等)数量会很大,根据上述数据,数量将在数十万甚至上百万

2.市场现状

  • 目前市场上有什么样的产品了?
    • 菜鸟教程、W3school、LeetCode、洛谷、CS-DIY-WIKI等。
  • 上述产品的定位、优势与劣势在哪里?
    • 上述产品的定位主要分为两类:
      • 教程类:菜鸟教程、技能树、W3school
      • 练习类:LeetCode、洛谷
    • 优势
      • 技能树有CSDN的庞大用户基数作为潜在用户,同时能依靠CSDN已有的大量博客为用户提供较为完整的资料。
    • 劣势
      • CSDN社区名声较差,可能会因此难以吸引站外用户。
      • 相比LeetCode、菜鸟教程等网站,技能树没有提供用户编写、运行代码的工具,这对技能学习是严重欠缺。
  • 上述产品之间呈现什么样的关系,哪些为竞品关系?以及竞争中的各方态势如何?
    • 教程类、练习类同类中呈竞品关系(技能树、菜鸟教程、W3school之间,洛谷、LeetCode之间),由于练习类网站需要教程类网站的内容作为前置知识,因此两类之间一定程度上呈互补关系
    • 目前来看,尽管菜鸟教程更受用户信赖,但技能树可以吸引CSDN社区用户,综合来说菜鸟教程在其中略占优势。而W3school相对来说名气较小,用户量少,更显颓势。

3.市场与产品生态

  • 这个产品的核心用户群是什么样的人?典型用户是什么样的?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
    • 软件业从业人员
      • 一般为本科生或研究生学历
      • 年龄在20岁到40岁之间
      • 专业为计算机相关专业
      • 爱好不定
      • 一般有稳定收入
      • 表面需求是通过这些网站对技能查漏补缺,潜在需求是参与社区讨论,提升自我。
    • 在读学生
      • 本科生或研究生在读
      • 年龄在18岁到25岁左右
      • 专业大部分为计算机相关专业,少数为其他会使用计算机的各类理工科专业
      • 爱好不定
      • 一般没有收入(或实习生收入)
      • 表面需求是学习相关技术,潜在需求是通过学习激起对计算机科学的热情。
  • 产品的用户群体之间是否存在一定的关系?是否有利用其相互作用二次构成特定用户生态的可能性?
    • 从业人员是学生的后继,在读学生毕业后很有可能进入软件行业工作。
    • 在读学生会经常向毕业学长咨询学习方法,如果能给从业人员留下很好的印象,他们会更愿意向学弟学妹推荐该网站,甚至在社区里建立长期交流沟通的关系。而在读学生又会带动身边的同学使用,从而形成用户生态。

4.产品规划

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

    • 开发代码编写调试工具,增加编程练习题。
      • Need:编程学习需要实践,纸上谈兵难以掌握。
      • Approach:与相关产品协商合作,直接调用其API,降低开发难度。
      • Benefit:用户使用后会明显的意识到自己对该技能更加理解和掌握,提高网站对用户的吸引力。
      • Competitors:相关竞品(如菜鸟教程,W3school等)该功能比较简陋,甚至没有设计。可以提高网站竞争力。
      • Delivery:CSDN有大量用户访问,因此着重在站内推广即可。
  • 如果你是项目经理,可以招聘6个人,并且有4个月的时间,你认为应该如何配置角色(开发,测试,美工等等) 才能在第16周如期发布软件的改进版本,并取得预想中的成绩。

    角色 人数
    前端 1
    后端 3
    测试 1
    美工 1
    • 增加代码调试功能主要工作在于该工具的研发,而前端界面不用做大量更改。因此开发主力需要集中在后端,配置3人进行后端开发,1人进行前端修改。
  • 详细规划

    周次 具体任务
    1 任务分工与需求分析
    2~3 编写并审核设计文档、接口规格
    4~8 编码实现相关功能
    9~10 代码复审,进行各单元及功能测试
    11 发布alpha版本,收集用户反馈和建议
    12~14 根据反馈情况进行beta版本开发,包括Bug修复和功能调整
    15 发布beta版本,收集用户反馈和建议
    16 正式发布网站,运维人员维护网站

你可能感兴趣的:(软件工程)