软工案例分析作业

项目 内容
这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 案例分析作业要求
我在这个课程的目标是 提升工程化开发能力,学习软工知识
这个作业在哪个具体方面帮助我实现目标 促进思考具体软件实力,帮助我今后更好的开发软件

前言

力扣是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。洛谷致力于为参加noip、noi、acm的选手提供清爽、快捷的编程体验,它拥有强大的社区、在线学习功能,可以为不同层次的学生提供多样的帮助。

第一部分 调研与评测

1.软件的基本功能

力扣

主界面(导航)

在主界面中,可以看到各个企业最新发布的信息,还可以看到部分用户讨论的帖子,能够满足各类用户所需要的关注点。

题库(在线刷题)

该界面下每天都会推出每日一题,如果做对有额外的奖励。用户既可以按照默认的顺序依次刷题,也可以筛选不同难度、不同专题的问题进行专项训练。

竞赛(每周竞赛)

力扣与各大企业合作,会定期推出各种种类的竞赛,用户可以免费参与。竞赛限时且实时更新排名,在竞赛中结果优异的用户可以获得特定企业的面试/就职机会。

洛谷

题库(在线刷题)

该界面下用户能够自由选择自己需要的题目,在做题之前可以看到通过率、题目难度以及所属的算法类型,适合ACM选手进行专项突破。此外,用户还可以搜索题目,精确定位到自己想要选择的题目。

比赛(参与比赛)

该界面下用户可以查看当前正在进行的比赛和已经结束的比赛,能够报名参加感兴趣的比赛。

讨论(参与讨论)

该界面下用户可以查看热门讨论,并自由参与自己感兴趣的讨论。对于已经参与的讨论,能够在消息提醒中看到新的评论和回复。

2.软件的使用体验

力扣提供了丰富的题库,并且大多数题目都有用户参与讨论或者发布题解,这对于不熟悉算法的小白非常友好!

提交记录中包含了历次的提交,而且不会由于提交次数过多或者提交时间过于久远而被覆盖或删除,用户可以查看历次的提交,对于我这种不喜欢在本地保存一堆代码的人来说,能够查看到所有的提交记录是一件非常幸福的事情。在这一点上,力扣比蓝桥杯训练网站C语言网要好!
洛谷也提供了丰富的题库,但是语言主要局限于C和C++,这主要是由于面向的对象是ACM选手,对于擅长写其他语言(如Java、python等)的学生不够友好。但是这也无可厚非,毕竟绝大多数的算法书籍中对算法的描述都是用C/C++书写的,对于搞算法的ACM选手而言,主要选择的语言就是C/C++。


对于希望体验限时上机的小伙伴来说,力扣的比赛也是一个很不错的选择。比赛的过程和大一的程设上机类似,会给出样例、数据范围和当前通过的人数,系统会自动实时计算出排名,更新各题目的通过率,可以供希望参加比赛的同学练习和模拟。

3.产品定位

力扣的用户主要集中在30岁以下的年轻人,包括在校学生,IT求职者,IT从业者等。我国绝大部分程序员年龄都不到35岁,超过一半的程序员年龄在23-30岁之间,力扣的用户对准了这部分群体。这部分群体可以概括为以下五类

  1. 希望将来从事IT行业或即将找IT相关工作的学生:还没有参加工作,可塑性很强,希望通过学习掌握编程技术,作为未来工作的敲门砖,同时也想更多地了解未来的职业工作。
  2. 从业时间小于五年的码农:希望提升个人的代码实力,或是对升职加薪有很强的渴望,通过主动学习、不断练习IT技术实现自己的职业成长之路
  3. 兴趣使然的用户:这部分用户的功利性不是很强,希望通过学习了解编程或是掌握一门编程技术,多学一点知识让自己储备更多,技多不压身。
  4. 喜欢挑战的极客:这一部分用户通过不断优化问题的答案追求极致,或参与各类比赛来展示自己的实力,追求更高的排名,挑战自己,获得自豪感。
  5. 有人才需求的企业:企业希望通过力扣平台不断挖掘优秀的IT人才,进行职位投放与精准招聘。

洛谷的用户主要是参加noip、noi、acm的选手以及对代码感兴趣的青年。这部分群体可以概括为以下三类

1.已经具有良好的编程基础、算法基础,已经在国内外知名编程竞赛中获奖并以写代码为乐的年轻人。
2.具备一定的编程基础,了解基础的算法知识,渴望通过刷题来提升自己,尝试冲击ACM、noip等竞赛金牌的学生。
3.刚入门或尚未入门,希望多接触、了解编程,通过编程解决问题、提升代码能力的青年。

4.BUG分析

  • Bug编号:1

  • Bug严重等级:☆

  • 测试环境:Windows 10操作系统,搜狗高速浏览器

  • Bug描述:当光标停留在执行代码和提交按钮上时,按钮消失,但是点击仍然能够成功执行该按钮对应的javascript链接。

  • 详细情况

    使用搜狗高速浏览器,无论是否更新至最新版该Bug都必定出现。推断原因是因为浏览器不支持该按钮所对应的css渲染方案,或者使用了html5等新版本不被该浏览器支持。

    该Bug基本不会对用户的使用产生影响,因为用户往往是看到了提交按钮才会去尝试点击,因此哪怕鼠标移到提交按钮后消失也不影响用户使用。

  • Bug编号:2

  • Bug严重等级:☆☆☆

  • 测试环境:Windows 10操作系统,Google Chrome浏览器(Version=89.0.4389.82)

  • Bug描述:快速切换中英文显示多次以后查看自己的提交记录,发现提交记录几乎都消失了。

  • 详细情况

    同时打开多个窗口,在各个窗口都分别快速点击切换题目以中文/英文显示,然后进入提交记录,发现提交记录被清空,但是统计数据仍然正常。该Bug发生的几率不算太大,在快速点击切换后约有10%的几率会发生这种情况。为了推断出Bug成因,仔细观察切换中英文选项前后的界面后发现,这个按钮并不是简单地把题目的内容给翻译一遍,而极有可能在切换以后把题目直接替换并链接到英文原版力扣的网站上(因为排行榜用户的头像发生了改变),而在面对同时登陆多个端口并频繁切换时会产生没来得及及时将中文版力扣的提交记录嵌入更新到界面中的问题。

    该问题会引起用户的恐慌,担心自己以前的提交记录全部丢失,使用户体验下降。此外,由于用户需要花费时间来尝试解决该问题(例如重新登录、刷新界面等),会浪费用户的时间。

  • Bug编号:3

  • Bug严重等级:☆☆☆☆☆

  • 测试环境:Windows 10操作系统,Google Chrome浏览器(Version=89.0.4389.82)

  • Bug描述:在线测试执行用例的结果与提交评测的结果不一致。

  • 详细情况

    如下图所示,对于该题目,当本地调试时完全正确,然而提交上去评测却是解答错误,在线调试的代码执行结果与提交结果不一致。该Bug可以被稳定复现。推断产生该Bug的原因是,系统在运行完上一次执行的结果以后并没有清空执行的内存,再次运行时会遗留下上次运行所留下的“脏”内存从而导致运行结果错误。作为一个同时支持在线调试和在线评测的平台,力扣应当保持调试平台和在线评测平台的运行环境一致。

    该问题极大影响用户体验,让用户对平台产生怀疑,会直接导致用户对平台的投诉。

5.采访用户

6.量化评价

力扣

项目 描述 评分(满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分)
核心功能 满足用户刷题、提升自我、寻找工作的需要 10
细节 界面美观大方 10
用户体验 用户使用流畅 8(有时候界面有些卡顿)
辅助功能 如竞赛、题解、讨论区 10
差异化功能 与企业合作,提供企业面试机会 10
软件的效能 占用内存 8(占用内存偏多)
软件自适应性 联网/断网,不同屏幕,不同操作系统的使用 6(部分浏览器使用异常)
成长性 记住用户的选择,适应用户特点 10
用户控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 10
整体评价 总体使用满意度 9(较为满意)

结论:非常推荐

洛谷

项目 描述 评分(满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分)
核心功能 满足用户刷题、提升自我、寻找工作的需要 10
细节 界面美观大方 8(前端界面有点简陋,配色不够美观)
用户体验 用户使用流畅 9(有时候评测比较慢)
辅助功能 如竞赛、题解、讨论区 10
差异化功能 提供算法讲解 10
软件的效能 占用内存 8(占用内存偏多)
软件自适应性 联网/断网,不同屏幕,不同操作系统的使用 10
成长性 记住用户的选择,适应用户特点 10
用户控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 8(卡顿时无提示)
整体评价 总体使用满意度 9(较为满意)

结论:非常推荐

第二部分 分析

1.使用此服务的所有功能,估计这个网站做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。

这两个网站都需要大量的前期工作,例如调研用户需求、建立题库、与企业建立合作关系等工作,这些工作计算机大学毕业生往往没有这个能力来做好,需要有专门的团队来完成。

在前期铺垫工作已经全部完成的情况下,预计开发这两个网站需要6人的团队18个月的时间(即108人月的时间),一个可能的分工如下:

项目 工作量
开发所有的页面框架,设置好所有页面之间的跳转与绑定关系(总共有20个页面左右) 3个人6个月(18人月)
部署包括多种语言(C、C++、JAVA、Python等)在内的后端评测系统,实现自动化评测 3个人2个月(6人月)
部署后端数据库,用来存储用户的个人信息、提交记录 3个人2个月(6人月)
前后端对接,尝试初步运行基本功能并调试 6个人1个月(6人月)
拓展包括竞赛在内的多种新功能 3个人6个月(18人月)
美化前端界面,制作好看大方的界面 3个人4个月(12人月)
增加安全保护机制(防止用户hack评测机,前后端通信加密) 6个人2个月(12人月)
进行初步的压力测试、并发测试 6个人3个月(18人月)
用户试用、收集反馈并调整 6个人2个月(12人月)
合计 108人月

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

力扣和牛客网对比,该产品的优点有:
1.功能更加强大。对于做题的界面,力扣支持在线调试,同时还为用户提供了便于书写代码、排版代码、包含代码提示的图形化界面,而牛客网书写代码的窗口几乎就是一个只能粘贴文字的文本框;此外,力扣还会提供企业面试真题、提供多个讨论平台,支持在线模拟面试。
2.输入输出接口较完备。牛客网上的每道题都需要写完整一个程序所需要的部分,包括头文件,主函数,功能函数。这也就意味着数据结构等部分都需要自己去设计,设计的不规范就会影响你的最终程序的质量;而力扣已经将输入输出接口搭建完善,用户只需要补充力扣提供的接口即可。
缺点有:
1.有时题目描述过于简单。对于力扣而言,题目的描述更加偏向简约风,很简练而直奔主题,这对于简单题而言非常好,用户一看就懂,一写就过,而牛客网众多的样例和密密麻麻的样例解释反而有时候会耽误读者的时间;但是对于比较复杂的问题而言,力扣的简约风会让人摸不着头脑,必须要翻阅评论区查看已经做过的人对这道题的理解才能搞懂。

洛谷和北航的OJ系统对比,该产品的优点有:

1.题型分类更加清晰。对于想要系统学习算法的同学而言,通过洛谷可以按照算法类别逐个递进来学习,避免遗漏和重复,强化学习效果,提升学习效率。

2.更新更加频繁。每天洛谷都会更新题库,还会定期举办面向广大用户的比赛,更新频繁,满足用户多样化的需求。

3.氛围更加浓厚。每天有数以万计的用户陪你做题,和你一同分享题解、参与讨论,洛谷还自带打卡机制,这些都能够大大提升用户的学习积极性。

缺点有:

1.界面较为卡顿。在竞赛的提交高峰期,提交界面有时需要加载近5分钟才能出结果。即使是在日常使用时,使用北航的OJ系统服务器响应速度也明显比力扣的响应速度要快。

2.反馈不够及时。对于使用过程中出现的问题,无论是去github上对应的issue区进行反馈,还是在留言板书写反馈,都需要至少5天才能够收到反馈。

在我心目中,力扣由于其定位准确、使用方便、功能强大,是同类产品中的NO.1,洛谷由于其算法齐全、用户群体庞大,也是同类产品中的NO.1。

3.你在第一部分发现的bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?

对于Bug1(提交按钮无法在搜狗浏览器下正常显示的问题),我认为原因主要是测试把关不严,没有尝试在各大主流浏览器(包括搜狗浏览器)下测试。要知道,搜狗浏览器市场占有率为4.72%,根据第四十四次中国互联网发展报告,我国网民人数为8.54亿,那么该浏览器的使用人数超过4000万。而力扣不应该遗漏如此多人使用的浏览器。

对于Bug2(快速切换中英文操作后提交记录消失的问题),我认为这主要是开发人员粗心大意。对于切换中英文这种辅助功能,很可能是在该网站已经上线以后根据用户反馈新增的功能,目的是拓展市场、适应更多人群的需要。但是,新增功能的开发人员为了图省事没有直接翻译,而是想当然的把该网站跳转到英文对应的网址,从而遗漏了用户提交记录可能在切换时没有及时更新的问题。

对于Bug3(在线测试执行用例的结果与提交评测的结果不一致),我认为这主要是在总体设计评测机运行步骤时的疏忽,没有考虑在评测之前先将环境清空成为默认环境,而是保留了上一次运行其他代码的运行环境。

我认为,这些Bug都是因为软件团队事先没有预料到这种情况而产生的,并非故意不修复。

第三部分 建议和规划

1.市场有多大?直接的用户有多少?潜在的用户又有多少?

早在2014年,全球的软件开发者数量达到1850万,其中1100万是专业的软件开发人员,另外750万是开发爱好者。在七年后的今天,程序员的数量只会比当时多不会比当时少,因此可以大胆估计总的市场有超过2000万人。直接用户是处在职场上升期的男性,约为23-25岁,按照比例推算可得直接用户有600万人。潜在的用户是即将毕业、走入职场的大学生,在中国,共有超过700所高校设立计算机专业,相关领域的大学生人数约有40万人左右,因此国内的潜在用户规模约为40万。

2.目前市场上有什么样的产品了?上述产品的定位是什么?上述产品之间呈现什么样的关系,哪些为竞品关系?以及竞争中的各方态势如何?

力扣
目前市场上已有的同类产品主要有牛客网。上述产品的定位是打造一个为全球程序员提供IT技术职业化提升的平台,提供了完善的在线判题服务、学习工具、社区讨论及模拟面试功能,全方位打磨程序员职业所需的核心技能。力扣与牛客网主要是竞争关系,目前两个巨头已经占据了IT技术提升平台市场份额的75%。根据网站流量统计结果,力扣的用户量大致为牛客网的2倍,因此估计力扣在竞争中处于优势地位,约占市场份额的50%,牛客网占据了25%。
洛谷
目前市场上已有的同类产品主要有C语言网。上述产品的定位是为冲击ACM金牌的选手提供系统训练的平台,提供了完善的算法介绍、用户讨论等功能。洛谷与C语言网主要是竞争关系,但是洛谷在竞争中处于绝对优势,占据了该领域大部分的市场份额。

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

力扣的用户主要集中在30岁以下的年轻人,包括在校学生,IT求职者,IT从业者等。我国绝大部分程序员年龄都不到35岁,超过一半的程序员年龄在23-30岁之间,力扣的用户对准了这部分群体。同时也由于年龄更大的程序员其学习动力及精力均有所下降,力扣可能不再符合这部分人IT职业化提升的路径。表面需求是通过刷题来提升自己、找到更好的工作,潜在的需求是让平台提供更多的进入企业的机会。
洛谷的用户主要是学习算法的高中生和大学生,典型的用户可以是这样的:某大学计算机专业的学生小王,年龄21,全日制大学本科在读,已经学习了两年算法,现正努力冲击ACM奖牌,潜在需求是通过该奖牌在未来的就业中取得优势,以及获得学校对于ACM奖牌学生的保研加分。

4.产品的用户群体之间是否存在一定的关系?是否有利用其相互作用二次构成特定用户生态的可能性?产品的子产品,以及其他相关产品之间是否存在一定的关系?是否有利用各个产品特性之间的相互关系二次构成产品生态的可能性?

用户群体之间存在着密切的关系,他们的年龄相似、职业相似、日常爱好相似、思维方式相似,很容易能够通过讨论区把这些特定人群紧密地联系起来,让他们愿意在该平台上分享交流,从而二次构成特定用户生态。产品的子产品大多都是围绕企业招聘、程序员应聘的方面来进行的,因而存在着较为密切的联系。由于企业招聘和程序员应聘是一个需求与供给的双赢过程,因此利用这一特性有可能构造产品生态。

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

我要在当前软件的基础上加上性能剖析和代码风格检查的功能。如果在题库上进行更新,增加ACM、蓝桥杯等试题的题库,尝试去将计算机专业的学生吸引来该网站风险较大,很可能面临吃力不讨好的尴尬境地,因为这部分学生大部分已经有了自己熟悉的平台(例如洛谷、学校的OJ系统),同时由于生态不够好(大部分用户都是求职者而非学生),很难有良好的讨论氛围,形成促进学习的合力;而性能剖析和代码风格检查功能则贴近程序员日常的工作需要,能够较好地利用原有的生态,满足原有用户的潜在需求。

在公司写代码的程序员除了要求写出来代码以外,还要求写出好看的代码、高效的代码,因此加上性能剖析和代码风格检查能够让这些程序员在公司中具有更好的竞争力。目前没有网站做到了这一点,因此该功能具有良好的创新性。

Need 需求

这满足了程序员的潜在需求,能够让他们具备更好的竞争力。根据需求管理的需求分类,该需求属于兴奋需求,一旦完成用户将会明显提升用户的满意度。

Approach 做法

1.对于每个函数,显示被调用的次数;

2.对于每条语句,显示执行该语句的次数;

3.找出程序运行时占用了大部分运行时间的代码块;

4.对于行数过长、空格不规范等地方指出错误并给出改正方案;

5.对于使用到的不安全的函数、在后续版本中可能不再支持的老函数给出相应的警告;

6.对于可能引起歧义的书写格式(如少加括号)给予警告;

Benefit 好处

提升用户满意度,方便用户更好的提升自我。

Competitors 竞争

目前没有类似平台兼具此类功能,具有竞争力。

Delivery 推广

新功能的设计是基于现有的功能进行了拓展改进,是增量开发。另外,新功能无需用户学习新的知识,易于上手。以上两点,保证了不需要用户对于新功能进行从0开始的适应,而是给了用户更好的使用体验。

6.如果你是项目经理,可以招聘6个人,并且有4个月的时间,你认为应该如何配置角色(开发,测试,美工等等) 才能在第16周如期发布软件的改进版本,并取得预想中的成绩。

1人美工,1人开发,3人优化性能,1人测试。对于该功能,由于需要对用户直接展示结果,因此需要1人美工;对于代码风格检测和性能剖析,市面上都有成熟的插件可供使用,只需要移植到网站上即可,因此1人开发足够;由于不能够拖慢原有网页的速度(否则会让用户体验直线下降),因此须有3个人进行优化,尽可能地让添加了该功能以后网页的响应速度不减;由于是用户意料之外的功能,因此只要在不影响原有体验的基础上确保功能基本正常实现即可,不必过分在意遗漏的部分(例如遗漏了部分不好的代码风格),因此只需要1人测试即可。

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

周次 任务
1-3 团队进行必要的技术培训,达成共识并明确分工、制定规范
4-6 美工人员和开发人员需要共同完成Alpha版,测试人员需要完成基础的测试库,优化人员给出初步优化方案
7 对Alpha版进行测试与评估,商讨改进计划
8-10 优化人员根据初步方案开始优化,测试人员对代码进行形式化审查和黑箱测试
11 优化人员提交现有优化方案并给出进一步优化方案,测试人员对现有代码进行测试
12-14 优化人员完成进一步优化,测试人员开始测试
15 发布产品的测试版并收集用户意见,进行进一步的修改、迭代
16 发布正式、稳定版的产品
posted @ 2021-04-08 10:19  如星划过夜空  阅读(57)  评论(2编辑  收藏