项目 | 内容 |
---|---|
这个做业属于哪一个课程 | 2021春季计算机学院软件工程(罗杰 任健) |
这个做业的要求在哪里 | 案例分析做业要求 |
我在这个课程的目标是 | 进一步提高工程化开发能力,积累团队协做经验,熟悉全栈开发流程 |
这个做业在哪一个具体方面帮助我实现目标 | 结合实际的软件开发案例,了解现有软件功能特性与不足,并对其开发周期进行评估 |
自互联网诞生之日起,全世界的程序员与编程爱好者们便逐渐联合起来,自发地造成了一个个的社区和论坛。在搜索引擎尚未充分发展普及起来以前,问答型网站无疑成为了程序员们解决平常生产的各种bug的一个圣地。面对那些一个个一言难尽的神奇Bug,即使是在互联网已经充分发达的今天,要想在网上寻找到本身满意的答案,这些网站也依然是许多资深程序员的第一首选。html
这其中,最具表明性的即是Stack Overflow,这个于2008年就已创立且一直繁荣延续至今的问答平台。而在国内,目前较为有名也有CSDN旗下的开发者互助问答社区,以及号称『中文版 Stack Overflow』的Segment Fault。不过,虽然说是找bug的平台,但这些问答网站自己是否也存在一些至今还没有解决的Bug呢?借着本次案例分析做业的契机,我也对这三个网站展开了时长近1月的深度调研,试图努力找到这些几乎立于『Bug之巅』的网站们本身的阿克琉斯之踵。前端
也顺便体验一把你问我答的快感吧vue
做为一个专门面向程序员的问答网站,其所有的功能也理所固然地应当围绕问答的整个流程加以展开。而问答的本质其实也是内容,在知识付费、全民阅读的今天,如何可以精准高效地筛选出用户想要看到的内容并以其喜闻乐见的形式呈现给用户也是这些问答网站绕不过去的一道必答题。所以,『功能体验』这一环节也将主要围绕提问、回答、讨论、评价、查询与推荐这几部份内容加以展开。python
首先是Stack Overflow。做为目前程序员行业内无人不知、无人不晓的问答平台,Stack Overflow在各方面都几乎是无可挑剔。后面的全部问答网站也基本上是对它进行的拙劣模仿与本土化改造。进入网站后,其首页的内容以下:c++
然而这密密麻麻的英文,对于一个非英语母语的人而言,第一眼看过去不说头大但也多少是有点震撼的。特别是要想从这些信息中筛选出对本身有用的内容,就显得更为不易。不过,只要适应了英文的环境,当语言再也不成为阻碍因素后,应该说Stack Overflow的页面仍是很是清晰明白的。程序员
那么,为何有的问题是黄色背景,有的则是白色背景呢?算法
这确实有些反直觉,答案是:黄色背景的问题包含那些你已经watched
的Tag,而白色背景的则是你Ignore
或者并不关注的Tag。也就是说,经过背景色的设置,Stack Overflow但愿你可以把更多的注意力放在你关心的那些tag对应的问题上;但同时,它也但愿你可以经过浏览那些白色背景的问题了解一些你以前可能未曾了解过的领域内容。大概,这就是属于程序员的浪漫了吧。数据库
对于每一个问题,首页中都会列出这个问题的得票数,回答数与浏览量,同时在右下角标记出它最新的提问/回答动态,能够说基本上展示了每一个问题最核心的内容。编程
经过首页的Ask Question
按钮便可进入提问页面,页面内容以下:segmentfault
能够看到,Stack Overflow支持基本的markdown语法,而且提供实时渲染功能和使用教程说明,对新手很是友好;同时Stack Oveflow还支持在提问的同时基于标题自动检测类似问题是否已存在;若存在的类似问题过多,它会向你发出警告,请你详细地说明你的问题。
不过,美中不足的地方在于,Stack Overflow对于类似问题的评估彷佛很大程度上基于字符串的匹配而非语义或关键字层面的理解和对齐。之因此有此猜想,是由于当我将标题起为why do we use virtural function in c++?
时,它会对我发出『类似问题过多』的警告,而且第一条推送竟然是Why do we use printf() function in C++?
这个其实跟咱们想问的问题相差甚远的问题。而当我把标题改成A problem concerning about virtual function in c++
时,不只不报『类似问题过多』的警告,并且推荐的类似问题也随之大幅改变。但事实上,这两种文法都比较宽泛,而且其推荐关注的核心应当是virtual function
与c++
而不是why do we ***
或者problem concerning
这样。
为了更好地体验Stack Overflow,感觉其社区的活跃程度,同时也为了方便我调查这个网站的bug,我在该网站上提了这样一个问题:
结果,没想到第一时间就有很是活跃的社区大佬给了我回复,这位jonrsharpe
用户不只帮助我从新修改了问题内容自己,同时也给出了一个连接,而且给个人问题投了-1
票[捂脸]。
不过其实这几位用户都是经过网站的评论功能向我提供了他们的建议,而非真正意义上的回答。
那么Stack Overflow上一个真正意义上的回答是什么样的呢?请看如下案例:
这是一个好久之前提问的一个关于使用python查找全部后缀为.txt
的文件的很是简单的问题(然而如今Stack Overflow上基本没有这么简单的问题了):
它排名第一的回答长这样:
从长度上看,这个回答看起来并无什么特别之处,固然Stack Overflow上比它更详细的回答也是数不胜数。但真正让笔者感到吃惊的在于这个回答左侧投票数下方的那个『钟形按钮』。点开以后,内容以下:
这里竟然详细地记录了这条回答在给出以后所经历的全部的评论和修改信息!而且修改者也并不必定是回答者本人,而是任何其余人均可以(但必需要经过同行评审)。
从这一条很是普通的提问与回答中,其实咱们就能够看出Stack Overflow在问答社区领域无可撼动的王者地位:
这些,其余的问答社区能不能作呢?固然能,由于这并无什么技术上的门槛。但它们有没有必要去作呢?恐怕没什么必要,由于它们压根就不可能有Stack Overflow这样的会员基数:仅仅一个普普统统的问题的一条回答就被这么多人评论和修改过,这放在其余的问答网站(包括后面要介绍的两位)那都是不可想象的。
至于评价功能,Stack Overflow所采用的这种声望值+投票的策略,客观上确实成功地筛选出了那些高质量的问题,有效地提升了提问者的检索效率,避免了一样的问题被屡次提问。但另外一方面,咱们也须要看到,这其实也同时抬高了回答者的门槛——由于如今已经很难再找到容易被解答的问题了,这对于刚刚加入这一社区的程序员菜鸟们恐怕不是一个好消息。
在问题检索部分,Stack Overflow同GitHub同样,支持一些复杂的基于正则的高级检索功能,以下图所示:
这些功能包括根据tag检索、筛选相应的用户数、回答数以及问题的分值等等,这也使得Stack Overflow能够根据用户的具体需求提供更为精准的问题筛选与推荐功能。
但另外一方面,这些高级检索自己的语法相对较为复杂,在客观上也提升了使用者的门槛。
所以,经过上述分析咱们能够看出,Stack Overflow总体面向的仍是程序员中的资深群体:不只从页面设计到内容布局以及功能支持,都透露着一股浓浓的程序员风;并且其在使用上也有必定的门槛,刚刚入行的菜鸟级程序员可能会望而却步,而仅仅将其看成Bug界的搜索引擎使用。
评测环境:Windows10.1901系统+Chrome89.0.4389.114浏览器(下同)
Bug严重性评估表格(下同):
星级 | 描述 |
---|---|
★★★★★ | 系统功能性故障,如发生服务器崩溃或数据丢失等问题,结果不可逆,严重影响用户体验 |
★★★★ | 系统功能性故障,如发生服务器异常等问题,结果可恢复,较严重地影响大部分用户体验 |
★★★ | 系统设计缺陷,如数据不一样步等问题,较轻微地影响大部分用户体验 |
★★ | 系统设计缺陷,一般不易发觉,较轻微地影响小部分用户体验 |
★ | 界面设计不足,有必定主观性,对少部分用户较小地影响用户体验 |
Stack Overflow的bug确实比较少,这也一样归功于其完善的问答机制。正如我以前在其上的提问中所言,对于网站自身的bug,Stack Overflow专门提供了https://meta.stackoverflow.com/questions/tagged/bug这一页面供用户进行反馈,该页面内容以下:
能够看到,许多以前用户反馈的bug如今都已经处于status-completed
的状态,这就意味着该Bug已经被修复;而剩下,基本上都是一些Stack Overflow认为无足轻重(钻牛角尖)的内容了。不得不说,这一点Stack Overflow的的确确作的很好,也是充分发挥了其自身问答网站这必定位的长处。
下面是一些目前仍然存在的,被我发现的但在Stack Overflow方面看来可能『无足轻重』的bug。
可复现性:稳定复现
具体状况:
如上图所示,当一个用户所持有的各种徽章数多到必定程度时,在其每一个回答的右下角的profile部分,最右边的徽章数目就会溢出,致使没法看到该用户铜质徽章的数量,而只能进入该用户主页才能看到。
成因分析:
该问题的出现应当是由于Stack Overflow设置的这一窗口的大小是固定的,而且以后再未进行调整。因而当社区中出现大佬级用户后,原有的窗口大小就容不下了。大概这就是有钱人的烦恼吧。
严重性:★★
改进建议:从新设定用户的窗口大小,或支持自适应大小匹配。
可复现性:稳定复现
具体状况:
如上图所示,当搜索问题时输入的字符数过多时(本此测试达到了2^20量级),查询结果处就会出现溢出现象,即字符直接越过了页面右侧的广告栏并超出了边界。
成因分析:
这一方面说明Stack Overflow没有像通常的搜索引擎那样对输入进行必要的截断,同时也没有考虑到会有用户输入这么长的字符串的状况;但另外一方面,其实这也偏偏证实了Stack Overflow对本身的搜索引擎颇有信心,根本不担忧因输入过长致使服务器崩溃的现象出现。
严重性:★★
改进建议:直接将容许输入的字符的最大长度设为一固定值便可;或者当待查询内容过长时,对于搜索结果做人为的换行处理。
可复现性:稳定复现
具体状况:
如上图所示,editing-help
页面下拉至底部时,左侧不会覆盖底部黑色内容,右侧则会;两边不对称,显得不太美观。
成因分析:
一样是前端页面在设计时没有将右侧窗口嵌入白色界面部分所致。
严重性:★
改进建议:前端界面进行优化处理便可。
可复现性:稳定复现
具体状况:
如上图所示,主页右上的achievements窗口在没有achievements时,文字紧贴边界,丝毫没有任何页边距所言,确实很很差看;但对于程序员而言,或许无碍大局。
成因分析:
一样是前端页面在设计时没有充分细致地加以考虑所致。
严重性:★
改进建议:前端界面进行优化处理便可。
what's this?
靠边界太近,不太美观可复现性:稳定复现
具体状况:
如上图所示,主页左侧的What's this?
太过靠近页面边界,显得不太美观。
成因分析:
一样是前端页面在设计时没有充分细致地加以考虑所致。
严重性:★
改进建议:前端界面进行优化处理便可。
定性来讲,我对Stack Overflow的评价是 e) 很是推荐
。相比于接下来即将登场的两大问答网站而言,Stack Overflow不管是从用户、回答的质量仍是各项功能的设计上都堪称完美。我在找它的bug上也是花费时间最长,且所获成果最少的。
定量来讲,基于邹欣老师给出的评分标准给分以下:
描述 | 评分 | |
---|---|---|
核心功能 | 分析三个核心功能,功能设计和质量。 | 10 |
细节 | 有什么为用户考虑的细节? | 10 |
用户体验 | 当用户完成功能时,不干扰用户 | 10 |
辅助功能 | 一些辅助功能如皮肤等 | 8(声望、颜色、投票等) |
差别化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 9(社群与高质量的内容是吸引力的核心) |
软件的效能 | 占用内存, 启动速度, 内存泄漏状况 | 10 |
软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的状况下均可以顺畅操做. 和不一样平台的软件能流畅协做 | 5(毕竟是外网,多少不太方便) |
成长性 | 记住用户的选择, 适应用户的特色,用户越用越方便 | 8(问题类似度算法有待完善) |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操做有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工做, 快捷操做键可调整。 | 10 |
内容质量与社区繁荣度 | 问答话题的平均质量,每一个问题的平均响应时间,总的浏览量等 | 10 |
总分 | 90 |
与Stack Overflow不一样,CSDN的问答社区显然不是CSDN旗下的主打产品。其问答首页以下图所示:
能够看到,页面的入口首先必需要从上方的『问答』按钮点击进入,而『首页』则几乎看不到关于问答社区的相关内容。在进入该页面后,也一样能够看到目前最新的问题,但与Stack Overflow相比,首先左侧多了『频道』这一子版块,其次每个问题缺乏了votes
这一属性;而且彷佛也不像Stack Overflow那样利用背景颜色的区别筛选出用户可能感兴趣的问题和可能不感兴趣的问题。
那么CSDN为何不这么作呢?
由于没有这个必要。在这个社区里,基本上过上几分钟才会冒出一个新的问题,也就是说问题自己产生的密度就不高;那么若是CSDN再去采用推荐筛选机制的话,可能用户在较长一段时间看到的都是相同的几个问题,那么这样的效果或许反而还不如直接展现目前『最新』或『最热』的问题给用户的体验更好。
一样经过问答首页的『提问题』按钮便可进入到提问页面,该页面的内容以下:
能够看到,与Stack Overflow的内容板块相比,CSDN问答社区的内容异常简单:
不过CSDN有一点与Stack Overflow相似,那就是都支持类似问题的搜索:
可是CSDN的类似问题是以浮动弹窗的形式展示,所以会遮盖住『内容』中的上半部分,这会对用户体验带来必定的不利影响;而另外一方面,CSDN的类似问题匹配算法作的要比Stack Overflow更好。不管是如何理解C++中的虚函数?
仍是关于C++中虚函数的问题
,CSDN匹配的类似问题都基本相同,且显然是基于关键词等语义信息而非如何
、为何
这些无关的语法信息。
最终我提了这样一个简单的有效问题:
截至博客发布之时,尚未获得任何人的回复,连个吐槽的都没有。
在CSDN社区中我主要体验的是其回答功能,提问的功能接下来我还会在后文的软件评测部分有所说起。与Stack Overflow相比,CSDN里的新手问题明显要多的多,好比下面的这个问题:
能够看到,这个问题应该是任何一个通过大一程设课程训练的人都可以解答的关于c语言基础的问题。这样的问题基本上如今已经不可能在Stack Overflow上出现了。由于后者并不鼓励这种彻底能够本身解决的问题被提到网站上,这被认为是一种公共注意资源的浪费。
此外,咱们还能够看到,这位题主甚至都没有使用『代码块』将他想问的代码给包裹起来,而是直接将其复制粘贴到内容区中;而且答主所提的问题与其相应的代码行为有较大误差,让人不明因此。
对此,这是个人回答:
题主本人却是在个人回答后很快地给予了回复。但显然按照题主的意思,这里的scanf
并不能知足他的需求(并且还写错了);此时因为已经有官方的技术专家团给予了解答,所以我最后只是简单地加以评论,指明了正确的解决方案,就幸运地被题主标记为了『已采纳』,甚至还得到了点小收益。那么专家团究竟回答了什么呢?下面就是这位『专家』的回答:
那么,这位CSDN社区的所谓『技术专家团』成员所给的答案真的解决了题主的问题了吗?你们能够仔细地看一下,我认为显然是没有的,他只是纠正了题主scanf
的错误用法而已。以后这位专家也就再也没有出现过了。
经过这一案例,咱们能够发现,CSDN问答社区的总体质量和用户水平要远远低于Stack Overflow;即使是它所谓的专家团亲自下场,也依然无济于事,只是丢脸丢得更大了而已。
此外,CSDN社区不支持其余人对原有的回答进行编辑和修改,此外也不支持对原问题的评论功能,所以也就没有Stack Overflow相应的日志记录等页面了。
至于评价功能,首先在首页界面,咱们就能够看到CSDN并无votes
这一信息,其次它的做者的声望值、荣誉、徽章等信息也都没法在首页看见,惟一能够获取用户对问答的反馈的渠道就是每一个问题下的那个小小的点赞按钮。这也在客观上决定了CSDN社区里的各类问答呈现出一种泥沙俱下的局面。
在查询和推荐部分,CSDN问答社区的功能就更显贫乏了。
首先,CSDN不支持对问答板块单独的搜索内容,其搜索引擎直接面向全站。因而,就会出现如下神奇的现象:
看到这个推荐结果,我不由怀疑这真的是一个面向程序员的问答网站吗?为何这么又红又专?
其次,CSDN也不支持按照tag
进行针对性过滤。要想针对性地查询某个方向的问题,CSDN只能在其首页左侧的『频道』中进行选择。也就是说,以前在提问页面所出现的tag
惟一的做用就是告诉你这个问题可能涉及到哪些内容;但若是你想知道某个内容都有哪些问题的话,那对不起,你只能经过这几个固定的频道进行选择了。
评测环境与Bug严重性表格可参见Stack Overflow的相关内容。
许多在功能性设计上存在的问题可参见上文功能体验中的相关部分,这里就再也不做为bug一一列出了。
除了先天在功能设计上的缺陷外,CSDN社区还存在着如下bug:
可复现性:稳定复现
具体状况:
经过问答首页右侧的『用户榜』能够看到当前采纳榜排名最高的前几位用户的信息:
注意到这里有一位名叫oyljerry
的用户,采纳榜单显示他的回答共有1644次被采纳。然而在点进这位用户的主页后,却发现:
这位用户的总的问答数竟然只有2条!而他回答的问题更是一个也没有!
很难想象排行榜中那么高的采纳数到底是怎么产生的,至少按照其主页的回答数来看,这位用户平均每一个回答的问题被采纳次数应该是正无穷才对。
另外一方面,就我本人而言,首页信息栏上显示个人回答数为4:
点进去以后,主页里显示个人有效回答又只有2条:
这还没完,以前因为找bug的须要(详情可搜索xss攻击),我在CSDN社区提了一些很奇怪的问题,并在这些问题下面作了不少回答,这些能够从『个人提问』中看到:
固然,后来由于审核缘由,这些回答和提问都被断定为『无效内容』而被官方屏蔽了(这点CSDN动手得倒挺快)。可是问题来了,首页信息栏里的4条回答究竟是怎么算出来的?不管加不加上这些非法的回答,都不该该是4条啊?
成因分析:
CSDN的后端数据库应该没有作到正确的同步,而且对于这些回答数的计算也没有在官方给出一种有效的断定方式,所以最终致使了这一现象的产生。
严重性:★★★
改进建议:从新设计合理的统计算法,后端数据库从新设计相应的数据模型,从而确保各处数据一致性。
可复现性:稳定复现
具体状况:
如上图所示,当使用CSDN的搜索功能时,首先其默认的搜索范围是全站,所以要想专门搜索『问答』相关的内容,就必需要到『更多』中加以选择。
但尴尬之处在于,从『更多』到『问答』,这中间有一段不能忽视的距离。所以,只要用户试图直接将鼠标『更多』移动到『问答』上,那么这个弹出的浮动窗口就会直接中途消失!
所以,用户的惟一选择,就是在点击『更多』后,老老实实地把鼠标垂直向下移动,然后再移到『问答』按钮的位置上。这极易带来用户使用体验的大幅降低。固然,或许也可从侧面证实『问答』版块是有多么的不受待见了。
严重性:★★
改进建议:增长弹出窗口的停留时间,或者从新调整该窗口的布局以与用户的使用习惯兼容。
尽管单就这里列出来的bug数而言,CSDN问答社区看上去甚至要比Stack Overflow还要少,但这并不表明CSDN就比人家厉害了。毕竟不少功能上的先天性不足没有被放到这里的bug列表中,而是直接在以前的功能体验部分就介绍过了。
这就比如一个天生坐轮椅的人跟一个后天脚踝扭伤的人炫耀他历来走路都不会扭到脚同样,毫无心义可言。
定性来讲,我对CSDN问答社区的评价是 c) 通常
。也就是除非你无事可作,否则刻意去上面看的话,很难学到什么东西;但若是你在百度的时候无心中搜到一个排名很高的来自该社区的回答,那么点进去看看或许对你也是有帮助的。
定量来讲,基于邹欣老师给出的评分标准,给分以下:
描述 | 评分 | |
---|---|---|
核心功能 | 分析三个核心功能,功能设计和质量。 | 6(及格万岁的可爱麻雀) |
细节 | 有什么为用户考虑的细节? | 7(简单粗暴就是最好的) |
用户体验 | 当用户完成功能时,不干扰用户 | 7(广告可很多) |
辅助功能 | 一些辅助功能如皮肤等 | 7(有样学样,但没学到精髓) |
差别化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 7(CSDN是吸引力的源泉) |
软件的效能 | 占用内存, 启动速度, 内存泄漏状况 | 10 |
软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的状况下均可以顺畅操做. 和不一样平台的软件能流畅协做 | 10 |
成长性 | 记住用户的选择, 适应用户的特色,用户越用越方便 | 8(中规中矩) |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操做有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工做, 快捷操做键可调整。 | 10 |
内容质量与社区繁荣度 | 问答话题的平均质量,每一个问题的平均响应时间,总的浏览量等 | 7(见上文分析) |
总分 | 79 |
Segment Fault(又称思否,下文两词同义)也是一家国产的小有名气的问答网站,从它的名字就能够看出,这家公司创立之时的野心绝对不小:但愿打造一家中国的Stack Overflow。那么时至今日,它是否真的作到了呢?从我目前的调查来看,很遗憾,答案是尚未;但好消息是与CSDN相比,思否作的仍是比较不错的。
其主页以下图所示:
哦不对,这张彷佛不该该做为一个问答社区的主页,因而真正的问答主页以下图:
因而可知,思否与CSDN同样,近年来也有逐渐将问答版块降格,向全平台内容社区转型的趋势。但至少人家骨子里仍是一个问答社区,因此从这张界面图上看,能够发现思否与CSDN、Stack Overflow相比,有以下特色:
tag
,无固定频道,能够根据tag
搜索;votes
版块,这点与CSDN保持一致;仍是经过首页的『提问题』按钮,进入提问页面:
能够看到,与Stack Overflow和CSDN相比,思否的提问页面显然是有优有劣。
先说优势:
所见即所得
与Markdown
两种不一样的写做方式,兼容性很强;再说缺点:
目前我在思否上提了这样一个问题:
截至博客发布,也仍是没人理我,连个吐槽的都没有。
不过对于问题,思否支持『关注』、『收藏』、『点赞』这几个传统技能,仍是比CSDN作的要完善很多的。
在Segment Fault中,总体上问答内容的质量要介于Stack Overflow与CSDN二者之间,基本上也找不到CSDN中那种过于简单的新手问题。找了一下子以后,我最终找到了这样一个与python相关的还算简单的问题:
能够看到,与CSDN中相比,提问者的素养明显高了不少:将其所提问题涉及到的代码用代码块包裹了起来,极大地加强了可读性;同时问题的内容描述得也很是清楚,让人一看就能明白他想要问什么。
事实上,在这以后,这位题主还经过思否中的『评论』功能进行了自问自答:
能够说,这个答复基本上算是很详细地给出了原问题的一个最优解。所以,我后面的回答仅仅只是提供了一个参考文档,而且结合题主的原模型作了一点针对性的补充。
个人回答以下:
目前,该回答既没有被采纳,也没有获得任何反馈;大概是题主本人已经再也不关心这个问题了吧。
据此可知,在思否中,也一样较完善地支持了问答相关的基本功能,包括提问、回答、评论、点赞/踩、收藏、关注等。此外,与Stack Overflow同样,思否也容许其余用户对现有回答进行编辑,而且在审核后决定是否修改有效——这也确实是思否的一大亮点。固然,因为客观缘由,思否并不支持像Stack Overflow那般把全部的修改记录都公开给用户,但可以支持用户的自由修改,对于问答社区而言,已是很是难能难得的一件事了。
查询方面,思否也是只提供了一个统一的面向全平台的查询接口,固然这能够理解为其想要进一步为它新增的那些其余功能作推广,积累流量。不过好在『问答』版块在思否这依然占据着举足轻重的地位,所以搜索后能够直接选择查找问答栏目下的相关话题。
但遗憾之处在于,这里思否也一样不支持类似问题推荐系统,即用户没法在搜索框中键入的同时得到系统自动为其推荐的最类似问题的信息,这一点可能要稍逊CSDN一筹。
此外,在点击首页右方的相应标签后,便可进入该标签对应的子问题页面:
这里明显能感受到比首页的信息密度大了许多,而且得票
信息也可以呈现出来;但话又说回来,既然有这个属性,为什么再也不首页就展现呢?
评测环境与Bug严重性表格可参见Stack Overflow的相关内容。
虽然Segment Fault总体上给人的观感明显要好于CSDN,可是它的Bug却出人意料的多,并且还有很多Bug的重要程度至关之高,说实话这是我一开始没有料到的。
可复现性:较难复现
具体状况:
其实xss攻击是我在拿到本次案例分析做业后第一件想干的事,这点细心的读者在我以前的内容中或许就已经能够窥知一二(提示:Stack Overflow中的提问、CSDN中的非法问题)。但为何到如今才终于提到它呢?由于以前的两个网站,我在屡次尝试后所有都以失败了结,甚至在CSDN中付出了帐号被冻结一天的代价。而到了Segment Fault这里,我本人也没有成功。
但讽刺的是,当我在它的问答中搜索有关内容时,却找到了这样一个问题:
而在这个问题的下面,居首的有这样一条答复:
再一看日期,竟然就是今年3月份的事!
也就是说,在Segment Fault这里,xss攻击是能够实现的!而一旦能够实现,就意味着这个网站可能会出现一些很是可怕的漏洞,甚至会出现用户隐私泄露的状况(具体内容感兴趣的同窗可自行百度xss攻击),后果将不堪设想。
但遗憾的是,这位答主至今还未回复个人评论,因此我也不知道具体的实现方式,反正能够确定不是通常的法子。
成因分析:
多是思否在前端页面的处理或者是先后端的通讯部分没有进行很是细致的处理,以致于出现了xss攻击的漏洞。
严重性:★★★★
改进建议:从新复查先后端代码,确保覆盖了全部与xss攻击有关的漏洞测试。
可复现性:稳定复现
具体状况:
实验证实,当在首页的搜索框内键入的字符串长度超过8167时,网页就会崩溃,显示的反馈信息以下:
相似的状况也在Stack Overflow与CSDN中均进行过测试,前者不只不会报错,并且不会截断字符,但最后的反馈结果会略显不美观;后者则会直接采用截断的方式进行处理,避免了过长字符串的溢出。
而到了思否这里,则是什么都没有作,只要搜索长度大于8167,页面就崩溃了。
成因分析:
前端没有对输入的长度进行检查,后端在收到前端传来的字符串后也没有及时作出检验进行异常的处理,最终致使了网页的奔溃。
严重性:★★★
改进建议:增长对搜索输入字符串长度的限制——尽管通常不多有用户会输入如此长的字符,但对于一家成熟的网站而言,数据溢出仍是一个必需要考虑的问题。
可复现性:稳定复现
具体状况:
从问答首页点击右侧标签窗口中的『管理』按钮,便可进入标签页面;在该页面的输入框中输入超长标签后,页面效果以下:
能够看到,在『建立标签』提示框中,输入的字符串直接溢出到窗口以外,覆盖了原有的一部分已关注标签,极大地影响了页面美观程度,影响力用户体验。
成因分析:
前端没有考虑到标签长度过长的状况,既未对此加以限制,也未对此进行渲染效果的优化。
严重性:★★
改进建议:可限制标签的最大长度,从而从根源上杜绝此类现象的发生。
可复现性:稳定复现
具体状况:
在上文提到的标签管理页面,将鼠标移至任意一个已关注标签上时,便可弹出该标签的一些基本信息,注意到这里显示的vue.js
标签的关注人数为136897人。
但同一时刻,当咱们点击该标签进入到该标签对应的问答页面中,能够看到vue.js
的实际关注人数为136938人:两边的数据并不一样步。
成因分析:
不难发现,前者的关注人数小于后者;据此推断,前者的关注人数应当是用户在最后一次对该标签进行更改时(即点击关注/取消关注)该标签对应的关注人数,然后者则是该标签此时的最新关注人数。即,这里出现了数据一致性异常的问题,推测多是思否为了实现方便,将关注人数做为用户关注标签的一个属性加到了用户这一侧的信息列表中,而再也不对其进行实时更新,故而致使了用户界面查看标签信息时出现了更新滞后的问题。
严重性:★★★★
改进建议:从新设计后端数据模型,将该关注人数设置为该标签实时的关注人数;前端在每次查询时应直接获取到该标签相应的最新关注人数属性,而非直接去用户的标签列表中调相关信息。
可复现性:稳定复现
具体状况:
仍是在上文提到的标签管理页面,当向文本框中输入字符'<'
时,就会自动忽然弹出建立标签的窗口;特别地,若此时用户的输入包含用双引号""
引出的相关内容,则该部份内容会直接神秘消失。效果以下:
首先输入hello"world"
:
接下来键入'<'
字符,则会马上弹出建立标签的窗口:
且弹出窗口中再也不包含"world"
信息。
成因分析:
多是思否在标签建立这里设置了一些不为用户所知的正则匹配算法,致使了当用户输入某些特殊字符时,就会被系统默认为执行了某种操做,甚至致使数据丢失现象的出现。
严重性:★★★★
改进建议:检查与建立标签相关的先后端逻辑,看看是否有哪里的实现存在一些欠考虑的问题;如真是官方有意如此,则应在用户能够看到的地方加上必要的说明,以帮助了解相关的逻辑和原则。
可复现性:稳定复现
具体状况:
点击问答首页右上角的我的头像,从弹出的窗口中选择『个人主页』,从而进入用户的我的主页:
在我的主页中点击左侧『关注了X人』按钮,便可弹出上图中的相关页面。
在搜索框中键入字符,便可匹配到类似用户的信息。但此时有以下问题:
成因分析:
其余两个网站都不支持这里的搜索式添加关注,显然是考虑到了搜索效率太低带来的负面影响,要从技术层面上解决,可能须要优化字符串匹配的底层实现算法等问题;至于大写字母没法输入,推测可能又是系统自行设定的某种不为用户所知的约束,但这确实让人以为有些莫名其妙。
严重性:★★★
改进建议:使用更高效的搜索算法,或者直接把这个功能砍掉——由于看不出在这里加个搜索框对于一个问答软件而言的意义何在。
可复现性:稳定复现
具体状况:
在每一个问题页面下方,都有一个『撰写回答』的版块,用户能够在这里键入他们对这一问题的回答。注意到这里有一个黄色的提示框,告诉用户也能够使用评论功能。这个提示框右上角有个'x'
按钮,彷佛说明这个提示框能够关闭;但事实上是,不管你怎么疯狂地点击这个'x'
,提示框都没法关闭——这显然客观上会对用户的回答体验形成必定程度的干扰。
成因分析:
应该是在前端页面设计时,没有与后端作好正确沟通:后端或许本就不但愿关闭这个提示框,但前端却提供了一个看似能够关闭的组件,进而引起了没必要要的误会。
严重性:★★
改进建议:从新设计前端页面便可。
思否虽然bug比较多,但总体的使用体验上仍是要略胜CSDN一筹的。所以定性来讲,我对其的评价是 d) 好,不错
。对于一个中文编程开发者而言,若是在语言上存在必定障碍的话,那么思否或许是Stack Overflow一个不错的替代品。
定量来讲,基于邹欣老师给出的评分标准,给分以下:
描述 | 评分 | |
---|---|---|
核心功能 | 分析三个核心功能,功能设计和质量。 | 8(中规中矩的简洁) |
细节 | 有什么为用户考虑的细节? | 7(小问题有点多) |
用户体验 | 当用户完成功能时,不干扰用户 | 8(广告有但很少) |
辅助功能 | 一些辅助功能如皮肤等 | 8(简洁大气的UI) |
差别化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 10 |
软件的效能 | 占用内存, 启动速度, 内存泄漏状况 | 10 |
软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的状况下均可以顺畅操做. 和不一样平台的软件能流畅协做 | 10 |
成长性 | 记住用户的选择, 适应用户的特色,用户越用越方便 | 8(中规中矩) |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操做有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工做, 快捷操做键可调整。 | 10 |
内容质量与社区繁荣度 | 问答话题的平均质量,每一个问题的平均响应时间,总的浏览量等 | 8(见上文分析) |
总分 | 87 |
基本信息:
田同窗(非本人),也是1806计算机学院的一员,有着极为丰富的程序开发经验。
选择缘由:
一方面,田同窗的编程开发经验丰富,在极客问答方面有着较其余人更为多样化的需求;另外一方面,田同窗曾屡次在计算机学院的水群里鼓励你们去Stack Overflow上提问,给我留下了极为深入的印象。
主要需求:
通常是遇到没法本身解决的问题才会上Stack Overflow搜索答案,如今也已不多在上面回答问题。
使用产品:
Stack Overflow为主,其主要功能包括提问、回答、查询等均充分体验过
附采访文字记录以下:
问答网站前端的页面搭起来应该并不难,如今也有了Vue这样比较简洁方便的框架,再加上专业UI的支持。所以,我认为该类型网站的几大核心难点主要有:
假设目前这些核心功能都须要咱们从零开始实现的话,那我认为至少须要6个月,也就是24周的时间。其中市场调研+需求设计1个月,这四大类功能的实现和测试各1个月,UI设计这期间同步进行,最后一个月用于产品总体的集成测试与封装上线。
但这只是一切的开始,要想真正构建一个同Stack Overflow同样繁荣的问答社区,那我认为就毫不是一年半载的光景了,也不是一个纯技术的问题了。
与CSDN问答社区和Segment fault相比,Stack Overflow在用户群体规模、问答内容质量等各方面基本上都处于碾压的水平。可能惟一美中不足的就是它的UI设计的比较复古,如今来看可能显得有些过期,致使用户的阅读体验(特别是非英语母语选手)可能会相对低一些。
因为问答社区的类似产品不少,故这里仅考虑Stack Overflow(SO)、CSDN问答社区(CSDN)与Segment fault(SF)这三者之间的相对排名,以下表所示(针对国内用户群体而言):
功能 | 软件排名 |
---|---|
问答内容质量 | SO>SF>CSDN |
社区规模 | SO>SF>CSDN |
内容编辑器功能与美观程度 | SF>SO>CSDN |
软件响应速度(问题搜索与推荐) | CSDN>SF>SO |
UI界面美观度 | SF>CSDN>SO |
用户学习曲线难度 | CSDN>SF>SO |
整体使用体验 | SO>SF>CSDN |
经过上述分析,我认为Stack Overflow团队目前亟需增强的可能正是它的前端UI界面设计方面。相比于其余后起之秀,Stack Overflow的UI太过简陋,且文字信息量较高,密度较大,看久了确实容易引发人心理不适,形成过分疲劳。
所以,我但愿Stack Overflow可以在这方面做进一步的优化,具体策略以下:
而CSDN的主要问题则在于各方面功能设计的都不太细致,固然这可能与其用户的总体质量有关;具体而言,我认为其最须要增强的应该是提问与问答页面的布局设计和功能升级,具体策略以下:
思否的主要问题在于一些细节上的进一步推敲,这些内容能够参见上文功能评测的相关bug部分。从总体上讲,思否对于国内用户而言的使用体验应该是至关不错的。
对Stack Overflow而言,UI相关的Bug我以为软件团队应该是知道了也不修复,由于这应当是属于设计风格的问题。毕竟Stack Overflow关注的是内容自己,对于界面这种细枝末节的东西,它彷佛并不在乎。
至于徽章数溢出,显然一开始软件团队并无料到会有这么一天;而输入溢出,则是由于正经常使用户每每不会作出这样的举动,Stack Overflow也就不会收到这样的反馈,因而这一Bug也就被搁置了。
至于国内的两家网站,我认为这些bug他们并不知道,甚至到如今都不知道;或者知道了,但由于缺乏人手故而始终未能修复。由于归根结底,这两位都缺乏有效公开的用户使用反馈机制,没法像Stack Overflow及时收集平台自己存在的问题并进行有效处理。
目前整个IT问答领域的市场空间基本能够认为是现有的程序员的数量,即IT从业者的数量。下图展现了国内从事软件和信息技术服务业的从业人数2011-2018年的变化趋势。因而可知,其近几年的增速彷佛有放缓的趋势,但总的规模依然保持在600万这一量级之上。据此推断,则全球的IT从业者人数应当在2000万人左右,这便是问答领域的潜在用户数量。
另外一方面,假设一家正常的从事问答网站软件开发的公司其市场占有率为30%,那么也就基本能够拥有500万左右的用户数,假设这些用户每日平均产生5w个问题,那么一年下来社区仅新增问题数就将达到千万以上的规模。然而截至目前,Stack Overflow上总的问题数也才不过21,052,841个,至关于理想状况下2年的新增问题数。而Stack Overflow自08年创立之日起,距今已有13年之久,理论上的问题数至少也应该达到6千万个。所以,综上所述,目前就连Stack Overflow总的市场占有率也最多不可能超过15%,这就意味着其未来还有着极大的发展空间。
至于国内的这两家网站,发展空间就更大了。但问题在于国内的开发者是否广泛具备这样进行公开有深度的交流的意愿,以及是否愿意经过问答而非论坛或其余形式进行,则依赖于两家公司的推广宣传策略与营销手段是否到位了。
目前市面上的问答社区产品可谓是鱼龙混杂,产品质量良莠不齐。既有像Stack Overflow这样的超级巨头,也有一些名不见经传的创业型问答平台,还有一些像CSDN问答社区这样依托于其博客等内容平台搭建而成的附属问答子平台。
从产品定位的角度来看,Stack Overflow以问答社区为核心,面向资深的IT从业人员群体,其核心盈利方式主要依靠广告投放与企业招聘合做等形式;CSDN问答社区依托CSDN博客发展,面向国内的IT从业人员(包括小白),其核心盈利方式为广告投放;Segment Fault以问答社区起家,但如今也有向全平台转型的趋势,彷佛有打造体系化的知识内容分享平台的意愿,其核心盈利方式除广告外,还有精品课程、付费专栏等形式,相对而言要更为多元。
相较而言,Stack Overflow的主要优点在于其自身问答内容的高质量与高用户规模,但其劣势主要体如今可能缺少比较合理的变现渠道,所以其盈利能力应该较弱,而更加侧重于公共服务属性。CSDN的主要优点在于其依托CSDN博客平台实现用户和内容的聚合,且大量投放广告,故而无需担忧盈利的问题;但其劣势在于自己内容的质量堪忧,且用户规模相对而言并非特别大。Segment Fault位于两者之间,一方面它的内容质量要好于CSDN,但不如Stack Overflow,用户基数也一样;但另外一方面它没有CSDN那样的博客平台做为依托,相对而言在国内的名气不如CSDN那么大,故而盈利能力应该也与之大致持平或是等而下之。
总的来讲,这些问答平台互为竞争关系,目前Stack Overflow在竞争中处于领头羊地位;其他平台则互相不相上下,且主要针对国内市场。
在百度指数上搜索CSDN
关键字,能够获得以下地域、年龄与性别分布:
由此可知,在国内,有相同需求的用户群体基本具备以下共同特征:
进一步的,若考虑Stack Overflow等问答平台的核心用户,则其典型用户画像以下:
属性 | 特征 |
---|---|
年龄 | 18~22岁 |
专业 | IT相关专业 |
学历 | 大学本科 |
收入 | / |
表面需求 | 解答专业课程学习中遇到的问题 |
潜在需求 | 接触到相关领域的顶级专家精英、拓宽知识面 |
人均消费水平 | 5-15(美)元/月 |
属性 | 特征 |
---|---|
年龄 | 20~28岁 |
专业 | IT相关专业 |
学历 | 大学本科、研究生、博士 |
收入 | 10w(美金)左右 |
表面需求 | 解答平常生产开发中遇到的工程问题 |
潜在需求 | 接触到相关领域的顶级专家精英,了解潜在个体升值空间 |
人均消费水平 | 15-50(美)元/月 |
属性 | 特征 |
---|---|
年龄 | 28~38岁 |
专业 | IT相关专业 |
学历 | 大学本科、研究生、博士 |
收入 | 30w(美金)左右 |
表面需求 | 回答领域相关各种问题、积累我的声望 |
潜在需求 | 精准招募行业内相关人才 |
人均消费水平 | 50(美)元/月以上 |
在二次构成用户生态方面,我的认为,问答网站们或可考虑提供面向企业的咨询服务,从而为相似用户b、用户c这样的有必定经济能力的子群体搭建专门的信息交流平台,帮助系统性解决企业生产开发过程当中可能遇到的各种问题,并从中收取必定量的中间费用。
对于Stack Overflow而言,但愿可以提供一个相似博客分享的内容平台,进一步整合现有的问答平台中的各种信息,从而为开发者提供一个系统化的学习交流环境,进一步促进社区的繁荣。
Need需求
现有的Stack Overflow各个问题彼此独立,内容相对零散;用户很难经过一个问题了解其背后设计的技术本质。
Approach作法
提供一个系统的博客内容分享平台,帮助整合现有的问答平台中的各种信息。
Benefit好处
知足用户需求,丰富相关功能,进一步提升竞争力。
Competitor竞争
与各种内容分享平台展开竞争,利用自身庞大专业的程序员用户群体可对其实现降维式打击。
Delivery推广
可与Google等搜索引擎合做,提供相关博客的查询接口;同时在初期也可像知乎同样,采用邀请制的方式保证内容的质量,确保核心用户不所以流失。
对于CSDN和思否而言,二者均已像这样的全内容平台迈进,所以博客分享或许再也不是下一阶段的功能重点。不过考虑到国内用户的一些特征,两者能够考虑实现一个在线IDE的编程体验平台,对于某些提问中的场景进行简单的在线仿真演示。
Need需求
CSDN和思否上存在一些相对容易的问题,这些问题能够借助在线编程平台更好地加以演示。
Approach作法
模仿Leetcode、洛谷等,搭建这样一个在线评测实验平台便可。
Benefit好处
知足用户需求,丰富相关功能,进一步提升竞争力。
Competitor竞争
提供全新的特点功能,进一步彰显自身的独特性与权威性,吸引更多的新用户。
Delivery推广
可与Leetcode、洛谷等编程平台合做,也可与知乎等内容平台合做,在其上进行合理引流推广。
第一个月:4人负责后端开发,2人负责后端测试,力求搭建完善的后端内容数据系统。
第2、三个月:2人负责前端UI界面设计,2人负责先后端API交互,2人负责先后端测试,确保先后端通讯无误。
第四个月:1人负责部署,2人负责集成测试,1人负责市场推广,1人负责界面美化,还有1人灵活调度,以备不虞。
第1周:进行市场调研,肯定各部分功能与设计的风格、学习相应技术栈知识。
第2周:市场部门进行整体的需求汇报、肯定目标用户群体;技术部门集体学习完毕,完成开发环境的搭建和配置。
第3周:各组开始细化分工,前端整理设计所需素材,搭建基本布局;后端设计各种数据模型,绘制数据流图。
第4周:开始前期框架搭建,美工完成主要UI设计;后端同步开发。
第5周:先后端实现功能1,周末开会总结。
第6周:先后端实现功能2,测试功能1,周末开会总结。
第7周:先后端实现功能3,测试功能2,周末开会总结。
第8周:完成功能基本测试,发布测试版,进行市场调研,搜集市场反馈。
第9周:整理市场反馈,进行项目目标和设计调整。
第10周:先后端完善功能一、2,美工进行设计修改。
第11周:先后端完善功能3,测试功能一、二、3,周末开会总结。
第12周:先后端加入功能4,最终完成一、二、3的测试。
第13周:完成功能基本测试,发布测试版,进行市场调研,搜集市场反馈。
第14周:整理市场反馈,因为时间紧张,仅选取重要且实现不太复杂的需求,制定后续项目任务。
第15周:先后端、美工简单修订,进行测试和部署。
第16周:完成部署,进行市场发布。