案例分析作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 案例分析作业要求 |
我在这个课程的目标是 | 初步获得软件工程师的能力 |
这个作业在哪个具体方面帮助我实现目标 | 了解市场分析,任务量定位等需求分析流程 |
案例分析作业
VSCODE体验
使用评测
安装配置
vscode的安装较为简单,直接从官网下载相应版本即可。vscode的配置则相对麻烦,对于C语言需要在setting.json
中添加相应的编译器路径,还有一些诸如code runner等插件的配置,总的来说对于新手不是特别友好,好在官方文档比较细致,有step by step的步骤,按照官方文档的操作,还是能够配置好的。
功能特性
从功能上VScode实际体验还是非常不错的,支持高度的定制化。利用typescript和vscode自定义的变量,定制化的粒度非常细,甚至你可以定制某个快捷键在什么条件下触发,比如笔者这里就定制了alt+T
快捷键在terminal打开的情况+聚焦到terminal的情况下关闭terminal, 再配置好vim和相应快捷键,全程键盘流,完全不需要鼠标。
同时在setting.json
中还能设置各种语言的编译路径,执行命令等各种不同功能。
在代码运行方面,Vscode通过使用code runner插件(给韩老师点赞),或者自己配置launch.json
和task.json
方式来配置不同项目的编译路径,编译命令,执行文件等。以下是笔者图像处理课程中之前使用通过mingw
构建的opencv
库的task文件,非常灵活。
在速度和视觉效果方面,vscode的速度非常快速,基本无延迟,比记事本稍慢,比idea等快很多。在视觉效果方面,vscode的非常踩在我的审美点上,各种切换非常丝滑。
bug发现
bug严重程度使用如下星级表来标识(下同)
严重⭐️级 | 具体描述 |
---|---|
⭐️ | 可优化功能,对少部分用户有轻微影响 |
⭐️⭐️ | 轻微缺陷,对部分用户有一定影响 |
⭐️⭐️⭐️ | 重大缺陷,对部分用户影响较大 |
⭐️⭐️⭐️⭐️ | 重大漏洞,严重影响大部分用户使用 |
⭐️⭐️⭐️⭐️⭐️ | 重大漏洞,严重影响几乎所有用户使用 |
1.智能感知速度较慢
-
bug描述
创建一个新的文件夹,然后在其中新建一个.cpp文件后,部分头文件报错,vscode在停止输入约一分钟后报错消失。
-
bug复现
环境:windows10+mingw,使用
bits/stdc++.h
复现频率:稳定复现
-
bug分析
严重性: ⭐️(轻微影响用户使用,让人不太爽)
原因: 应该是对于某些头文件vscode需要寻找一段时间
-
预期改进
预期增加智能感知速度,毕竟停止输入后一分钟还在报错的话,难免让人有爽。感觉可以在用户输入阶段对某些头文件进行路径搜索。
2.打开同一文件资源占用率高
-
bug描述
如果使用两个不同的vscode窗口打开同样一个cpp文件,回导致其中C/C++ extension 线程资源占用率过高
-
bug复现
环境:windows10+mingw
复现步骤:在桌面建立bug文件夹,其中建立
a.cpp
文件,分别用vscode打开桌面文件夹和bug文件夹后,再同时打开a.cpp
文件,稳定后CPU占用率为17%左右,内存占用1100MB左右。若使用两个vscode的窗口分别打开不同问价夹下不同的c++文件,稳定后CPU占用率为10%左右,内存占用为800MB左右。 -
bug
严重性:⭐️(基本没有影响,应该没有人无聊到通过不同文件夹打开同一个文件)
分析:两个code打开不同文件可能需要一些多余的同步操作,资源占用高可以理解。而且使用两个窗口打开同一个cpp文件应该也不是vscode设计的本意,在正常情况下如果已经有一个vscode窗口打开了某个文件后,再选择使用code打开则会直接跳转到已经打开的窗口。
用户采访
对于vscdoe,我们采访了C同学和H同学。
C同学是计算机学院18级的学生,使用vscode写verilog等硬件代码,有丰富的开发经验。
Q:想问一下你平时使用vscode的频率高么,vscode的体验如何
C:编辑器的话我基本只用vscode,为编辑器功能还是比较完善的吧,我比较喜欢的特性就是插件很丰富,作为一个轻量级的开发环境还是挺好用的,而且可以直接用WSL,这个特别方便。
Q:那有啥不足么
C:对一些小众的语言的代码补全或者高亮显示不太完善,比如verilog
Q:这个应该算是插件的问题吧
C:对,但是一些别的编辑器对verilog支持就比较好.比如emacs,sumlime
Q:嗯嗯好的,感谢接受采访~~
H同学同样是计算机学院18级的同学,有着丰富的全栈开发经验
Q:请问你平时都是用什么编辑器和IDE啊
H:vscode、vim、sumlime、visual studio、jb全家桶还有micropython
Q:哇好多呀,那你觉得这些vscode和其他的有什么区别呢
H:主要是感觉比较轻量,打开速度快,并且对文件的修改可以即时显示。。。默认深色背景令人感到愉悦。然后还有一些嵌入式设备的开发适配vscode,甚至必须搭配vscode
Q:哪有什么你觉得不太满意的么?
H:跑代码太麻烦了,配置文件夹很烦人,.vscode
Q:嗯好多,感谢接受采访~
软件评分
软件评分使用如下表格(下同)
总的来说我给这款软件评分为e),下面是具体评分。
类别 | 描述 | 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分) |
---|---|---|
功能 | 核心功能 | 10(非常自由的编辑器) |
细节 | 有什么为用户考虑的细节? | 6(IDE及格线) |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 | 6(IDE及格线) |
辅助功能 | 一些辅助功能如皮肤等 | 10(dark皮肤大家都爱) |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 10(速度快,简洁,多拓展的编辑器) |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 8(速度较快,内存较小) |
体验 | 软件的适应性 | 10(毕竟是微软产品,全平台流程支持) |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 6(不同电脑无法同步) |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 10 |
用户自由度 | 用户对软件自定指的程度 | 10(没得说,基本所有功能都能自定义) |
Visual Studio 体验
使用评测
安装配置
visual studio 的安装同样非常简单,和vscode不同的是visaul studio多了一个installer,可以选择不同的组件下载。安装好后还支持组件的卸载和其他组件的安装。
功能特性
在功能特性上,visual studio体验则更加偏向于大型项目管理。
代码管理方面,支持资源管理器来从逻辑上组织不在同一文件夹下的源代码,头文件,外部依赖,资源文件等也有相应的特殊文件夹来对应。在配置方面更多是图形化的界面,配置的选项也非常丰富。
在自动补全的方面,visual studio 的自动补速度很快,补全信息非常丰富,代码跳转等也非常流畅。
在代码运行调试方面,visual studio功能非常强大,支持不同的监视器组,性能查探器等功能,功能非常强大。
在同步性方面,visual studio的配置跨终端,只要是登录microsoft账号,就能自动同步之前的设置。
在速度方面,visual stuido启动速度较慢,好在启动后速度较为丝滑。
这里配上笔者上学期编译原理课程的代码结构截图.
bug发现
项目未重新build
-
bug描述
当在项目中某些宏定义内容修改后,需要先清理project,然后再重新编译修改才有效。否则仍然会使用修改前编译的 .exe文件进行调试和运行
-
bug复现
复现环境:visual studio 2019 + window10 + MSVC
复现步骤:使用上学期编译原理项目,首先将C0文法的编译器优化级别开到0级别,得到编译后文件opt_0.txt,再将编译优化级别开到3级,得到编译后文件opt_3.txt。清空项目重新编译运行,得到编译后的new_opt3.txt文件,此时发现opt_0.txt和opt_3.txt一致,new_opt3.txt则和opt_3.txt不一致。
复现频率:稳定复现
-
bug分析
严重性:⭐️⭐️⭐️(比较影响用户体验,程序行为不一致还要考虑重新生成项目)
分析:怀疑visual studio为了性能可能有一些缓存机制,所以有些情况下代码更新,可能未必即使更新。
-
预期改进
当然是能够支持每次修改后,不需要重新清理project也能使修改有效啦~
账户登录缓慢
-
bug描述
当在其他电脑登录一个新的Microsoft账号时,需要较长时间进行配置。
-
bug复现
复现步骤:上学期编译上机时每次登录后都要花费较长时间
复现频率:稳定复现
-
bug分析
严重性:⭐️(没啥影响,比较正常)
-
预期改进
希望微软大大能做点优化~~
用户采访
用户采访采访了D同学,D同学是软件学院18级的学生,有丰富的项目开发经验.
Q:请问你平时使用vs么,体验如何?
D:挺好的,写C# 很给力,跟unity结合的非常好,自动补全很给力,unity内置函数都能标出来。Q:那有啥缺点么
D:缺点就是太大了,占硬盘,启动慢
Q:那除了这个vs外,你还有用其他写过c#么,体验如何
D:没,只有写unity用过vs
Q:那你觉得vs和其他的像JB全家桶写代码体验有什么区别呢
D:补全比jb差一点,就是单词写了一半光标移开再回来再续着写的话就没有补全了,其他感觉功能很像,没啥特别大的差别。
Q:好的,感谢接受采访~~
软件评分
总的来说我给的评分是e)非常推荐,下面是具体评分
类别 | 描述 | 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分) |
---|---|---|
功能 | 核心功能 | 10(非常专业的IDE) |
细节 | 有什么为用户考虑的细节? | 4(界面显示细节比较一般,与vscode差距较大) |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 | 10(完全无干扰,专业!) |
辅助功能 | 一些辅助功能如皮肤等 | 8(还不错,没有vscode好使) |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 10(高度集成,专业) |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 6(速度一般) |
体验 | 软件的适应性 | 10(毕竟是微软产品,全平台流程支持) |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 8(支持不同客户端同步) |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 10 |
用户自由度 | 用户对软件自定指的程度 | 7(略好于主流IDE) |
分析
使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)
对于vscode的话,我认为6人三年能做出来,看了看github库上的vscode的源码,vscode的难度可能在于平台方面还有对插件的支持上,应该是可以的。
对于visual studio我不认为能做出来,visual studio广是对各种平台,编译器支持,内嵌的调试工具这些就够6个人喝一壶的了,visual studio 不算组件,保守估计百万行代码量。
分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?
vscode的优势很明显,就是高度定制化的编辑器,速度非常快,功能拓展非常方便,而且生态较好。加上对远程代码编写调试和多平台支持,目前应该是第一。
visual studio同样优势明显,代码的组织,分析等功能都非常强大,同类竞品中应该同样也是第一(宇宙第一IDE
)。
你在第一部分发现的bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?可以从下面的可能性中选取几个:
对于visual studio 的账户登录
还是vscode的智能感知较慢
的我觉得可能就是没有必要,这个对于使用用户的影响较小,而且估计工作量不小。visual studio重新build
和vscode 打开同一文件资源占用率高
可能是由于和某些设计理念理念有了冲突,所以决定不修复。
建议和规划
市场概况
根据 Global Developer Population and Demographic Study 2020指出2020年程序员人数在2690000(两千六百九十一万)。
年份 | 人数 |
---|---|
2018 | 2390000 |
2019 | 2640000 |
2023 | 2770000 |
2024 | 2870000 |
2030 | 4500000 |
市场现状
-
市场上的产品
-
简洁类
sumbline,notepad++,vim
-
综合类
JB全家桶,eclipse
-
-
上述产品定位、优势与劣势在那里?
-
简洁类
顾名思义,就是简洁~~,本质是一个编辑器,支持高度定制化来完成IDE的工作。
优势非常明显,就是快,对于单个文件打开非常有优势。缺点也很凸出,就是功能有限,配置插件也非常繁复。
-
综合类
综合类定位于大型工程,团队项目管理等功能。优势在于功能完善,稳定性高。缺点在于比较冗余,打开速度等也较慢。
-
市场与产品生态
产品的核心用户为程序员,年龄跨度在18~60岁之间。
典型用户有以下几种
- 计算机专业大学生:使用vscode来完成学校的作业和项目,需求是具有美观的UI,快速启动,有一定定制化功能
- 专业的软件工程师:使用visual studio 进行大型项目开发,需求是能够支持团队协同开发,代码性能,复杂度等具体分析功能,同时支持不同平台的开发。
产品规划
新功能开发
vscode我希望能支持用户自定义代码块组织,以C语言为例,vscode目前是能自动识别出函数、宏定义等内容,然后根据用户设定使用,然而并不支持用户自定划定一个代码块,将其在逻辑上组织在一起。希望能够支持用户选定一段代码,将其也加入。
- N:对于比较长的代码,单单只是将其划分成若干个函数对于组织代码逻辑是不够的,如果有一个能够支持更加高层次代码结构划分的方式,会让代码开发和阅读都变得更加高效
- A:用户能够自己选定一段代码将其划分成一个代码逻辑块,或者将多个自动生成的函数划分成一个逻辑块,逻辑块能够自己命名,并且能够整体移动
- B:使得较长的单文件代码组织更加简洁,高效
- C:据我所知,目前市面上基本没有此功能的编辑器和IDE,此功能能成为vscode一个亮点,使使用它的程序员得其更加"自由",增加产品竞争力。
- D:已经有固定的用户群体,只要在vscode里面发个通知,说出了个新功能就行了。
团队规划
1人美工,三人开发,两人测试
每周规划
周数 | 安排 |
---|---|
1-3 | 用户调研,明确需求,确定设定是实现框架 |
4~8 | 完成初版开发 |
9 | 进行初版评测,简单测试 |
10~12 | 对出版细节和功能进行完善打磨 |
13~15 | 测试,晚上版本 |
16 | 版本发布 |