软件工程-案例分析作业
案例分析作业——VS Code 与 VS
本文以VS Code为主,VS为辅进行案例分析。
Part1: VS Code
一、调研与评测
1.软件功能
Visual Studio Code是一款免费开源的现代化轻量级Editor(代码编辑器),能支持几乎所有主流的开发语言。除了能支持常规Editor的功能,还跨平台支持Win、Mac 以及Linux,针对网页开发和云端应用开发做了优化,并支持插件扩展,有开源的插件生态,功能丰富,主题多样......以下是VS Code的常用功能:
- 语法高亮、语法检查
- 智能代码补全
- 自定义快捷键
- 括号匹配和颜色区分
- 代码分段
- 代码对比 Diff
- 文件编码(检测与转换)
- 正则查找和替换
- Git
VS Code使用截图
前端代码编辑:
LaTex编辑:
python编辑:
2.使用体验
VS Code的定位:编辑器+代码理解+调试。
VS Code的基本功能简洁而全面,作为一个Editor绝对称得上优秀。VS Code与Notepad++相比,都属于轻量级编辑器,打开速度极快。此外前者的界面更优美,而且可以自定义主题。虽然作为文本编辑器,其功能略逊与Notepad++,但在各种插件加持后其功能的丰富性远超Notepad++。VS Code的各式各样的插件能满足不同类型用户的需求,比如支持LaTex编辑、支持远程服务器开发等等。如此有潜力的Editor谁不喜欢呢?
此外VS Code也有不弱的代码理解+调试功能,也许比不上JB家族的重量级IDE,不过毕竟VS Code的定位并非IDE,用于轻量级开发也足够。
至于缺点,VS Code的一部分插件的质量不太行,插件开发门槛确实比较低。不过毕竟是用爱发电,也不能要求太高。
总体来说:免费、自由度高、功能丰富、性能好。
3.Bug分析与改进意见
两个Bug发生时的测试环境:
- VS Code Version: 1.55.0 (user setup)
- Electron: 11.3.0
- Chrome: 87.0.4280.141
- Node.js: 12.18.3
- V8: 8.7.220.31-electron.0
- OS: Windows_NT x64 10.0.18363
Bug评级标准:
- 一星:发生频率低,对用户体验影响很小
- 二星:发生频率中等,对用户体验影响很小
- 三星:发生频率高,对用户体验影响很小
- 四星:发生频率低,对用户体验有一定影响
- 五星:发生频率中等,对用户体验有一定影响
- 六星:发生频率高,对用户体验有一定影响
- 七星:发生后对用户造成巨大损失
Bug1:Follow link(参考自该issue)
-
问题描述:在HTML中对链接进行跟踪时,若链接中含有空格,则无法通过点击
Follow link
打开被连接文件(无空格则正常)。 -
可复现性:稳定复现。
-
复现步骤:将鼠标指针移动至链接上即可。
-
正常情况(无空格的链接)
-
非正常情况(有空格的链接)
-
-
Bug分析
- 评级:二星——会在前端开发中发生,不过不影响正常开发,因为快捷键(ctrl + click)仍有效。
- 可能成因:对链接进行分析跟踪时没有考虑链接中有空格的情况,或者考虑空格会与程序其他地方冲突。
- 改进建议:一个小小的细节问题,建议在不影响程序其他地方正常运行的情况下,在相关的GUI部分增加对链接中空格的判断。
Bug2:menu disappears(参考自该issue)
-
问题描述:VS Code在进行窗口化时会对菜单栏进行合并,但当窗口大小处在合并的临界点时,合并栏
...
会消失 -
可复现性:稳定复现。
-
复现步骤:将VS Code窗口化并横向缩小,直到菜单栏最右侧的一栏(比如
Help
)消失但合并栏...
没有出现。-
菜单栏无合并情况
-
菜单栏临界情况(此时合并栏
...
没有出现,Bug发生) -
菜单栏合并情况(此时合并栏
...
出现,Bug消失)
-
4.总结与评价
这么良心的Editor,还可以白嫖,那当然是 e)非常推荐。
类别 | 描述 | 评价 | 评分(满分10分,及格4分,很差-3分) |
---|---|---|---|
核心功能 | 分析三个核心功能,功能设计和质量。 | 功能丰富、设计人性化、质量有保障(后台是微软) | 9 |
细节 | 有什么为用户考虑的细节? | 按键描述详细(基本描述+快捷键) | 8 |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告) | 使用起来清新简洁,顶多检查更新 | 9 |
辅助功能 | 一些辅助功能如皮肤等 | 丰富的主题设置 | 9 |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 缺啥补啥、要啥有啥 | 10 |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 体量轻,运行流畅 | 9 |
软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 支持远程开发,跨平台 | 8 |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 能根据喜好调整设置,不过没有学习功能 | 7 |
二、分析
Q1:使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
首先本人认为没有一定的开发经验是无法构思出VS Code这样优秀的架构的,也很难做到如此精益求精。
当然,假设团队拥有这样的能力,只考虑核心功能的开发:
- 对软件进行定位,并分析用户需求:一周
- 软件设计:两周
- 具体编码:三周
- 集成测试:一周
- Bug修复:两周
估计完成核心功能需要约九周的时间,之后便进入代码的更新与维护阶段。
Q2:分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?
本人认为VS Code核心的精简与扩展的丰富是这个软件最大的优势,无论是在Editor中还是在IDE中都是如此。VS Code与其他Editor(Sublime、Atom等)相比绝对能名列前茅(个人认为能排第二);而相比较于其他IDE(VS、JetBrains家族等)功能确实不够强大,但本人认为排在第三是没问题的。
Q4:你在第一部分发现的bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?
本人认为更大的可能是软件团队不知道这两个bug。首先这两个bug虽然能稳定复现,但相对来说发生的概率不高(尤其是第二个),软件团队可能很难在测试时发现。
不过VS Code作为一个开源项目,其开发团队维护积极(可以从活跃的GitHub社区中看出来),如果发现bug一定会有所反馈(实际上他们也确实将相关的issue_bug1和issue_bug2添加了bug
标签)。
三、建议和规划
1.市场概况
首先市场有多大?其次直接的用户有多少?潜在的用户又有多少?
VS Code虽然从定位上来说更偏向于Editor,但它仍然占据IDE的一部分市场。总体来说,VS Code既占据了Editor市场又占据了IDE市场。据Statista的数据,全世界将VS Code作为IDE的开发者有1400万,而全世界约有2400万开发者,也就是说至少还有1000万的潜在用户。
2.市场现状
目前市场上有什么样的产品了?上述产品的定位、优势与劣势在哪里?上述产品之间呈现什么样的关系,哪些为竞品关系?以及竞争中的各方态势如何?
目前市场上流通的IDE和Editor各式各样,这里只列举个人认为相对主流的IDE和Editor。
IDE市场:
- JetBrain家族:比如PyCharm、IntelliJ IDEA、WebStrom等,每一个产品的定位都不同,比如PyCharm用于开发Python,不过它们都是重量级IDE,功能强大、智能、好用,比如代码检查和智能补全等,但是资源占用也多。
- “宇宙第一IDE” Visual Studio:定位:大而全。VS支持的语言广泛,如Visual C#、Visual C++等;同时功能强大,比如领先于业界的版本控制系统VSS、使用Visual Studio.NET自动化模型自动执行测试过程等。不过也存在一些缺点,比如版本兼容性弱,VS 2017下开发的代码在VS 2019中可能无法编译。
- Eclipse:支持插件扩展,更新速度快,功能强,但性能较差,尤其是安装插件多的时候。
Editor市场:
- Sublime Text:支持插件扩展,并且是开源的、跨平台,功能丰富,比如Goto Anything、支持命令终端等,不过要长期使用需要付费。
- Atom:支持插件扩展,开源免费,定期更新,可信赖,跨平台,且具备通用性。同时也存在一些缺点,如性能略逊一筹。
以上产品都可以用于工程开发或学习用途,所以基本呈竞争态势。根据PopularitY of Programming Language排名可以看出各软件的受欢迎程度:
3.市场与产品生态
这个产品的核心用户群是什么样的人?典型用户是什么样的?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
核心用户群自然是计算机相关专业的学生或者从事计算机工作的开发者。
典型用户A:
- 学历:高中(本科未毕业)
- 年龄:二十岁
- 专业:计算机科学与技术
- 爱好:编程
- 收入:1500 / 月(来自父母)
- 表面需求:有一个能帮助完成平时编程作业的IDE
- 潜在需求:使用的IDE要简单、方便、免费,容易上手
典型用户B:
- 学历:硕士
- 年龄:三十岁
- 专业:计算机科学与技术
- 工作:后端开发
- 收入:12000 / 月
- 表面需求:有一个功能丰富、高效、美观的IDE
- 潜在需求:IDE能支持远程开发、高效协作
产品的用户群体之间是否存在一定的关系?是否有利用其相互作用二次构成特定用户生态的可能性?
以学生和工作者之间的关系举例:学生习惯VS Code的使用后,这种习惯可能会延续到工作中;而从事计算机工作的人员可能发博客谈自己使用VS Code的感受,当刚接触编程的学生看到这类博客后很可能去尝试使用VS Code。
4.产品规划
你要在当前软件的基础上设计什么样的新功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用NABCD分析。
本人希望为VS Code添加Bug反馈功能。
- Need:当发现VS Code的bug时,若想反馈需要登录GitHub社区并提出issue,这样反馈者可能还要先阅读相关的issue格式要求,当然也有可能直接提出一个不规范的issue。相比较而言,直接在VS Code中反馈bug更方便直接。
- Approach:当需要进行Bug反馈时,VS Code自动读取本地环境信息,反馈者授权登录GitHub并提供Bug相关的必要信息,比如可复现性、复现步骤等,VS Code的官方社区自动生成Bug反馈的issue。当该issue有更新时直接在反馈者的VS Code中提醒。
- Benefit:Bug反馈更方便,有利于反馈者和官方更高效地交流。
- Competitors:Bug反馈功能更趋向于功能的扩展,能改善用户的体验,对核心竞争性功能没有本质提高。
- Delivery:在更新公告和使用向导中加入Bug反馈功能的使用方法。
如果你是项目经理,可以招聘6个人,并且有4个月的时间,你认为应该如何配置角色(开发,测试,美工等等) 才能在第16周如期发布软件的改进版本,并取得预想中的成绩。请为你的团队设计16个周期每周的详细规划。
人员配置:3人功能开发、2人测试、1人交互界面开发。
时间(周数) | 规划 |
---|---|
1 | 调研用户需求,收集用户意见,统计需要改进和扩展的功能 |
2 | 对功能进行筛选,确定需要实现的功能 |
3 | 进行代码架构设计和交互界面设计 |
4 | 初步实现Bug反馈信息提交功能,进行单元测试,同时进行交互界面开发 |
5 | 初步实现issue自动生成功能,进行单元测试,同时初步完成交互界面开发 |
6 | 将所实现的功能进行集成,并进行集成测试 |
7 | 进行Bug修复 |
8 | 初次部署,在社区中完成第一次Beta测试 |
9 | 收集用户使用反馈,讨论需要改进的功能 |
10 | 对需要改进的功能进行修改,并进行单元测试,持续三周(1/3) |
11 | 对需要改进的功能进行修改,并进行单元测试,持续三周(2/3) |
12 | 对需要改进的功能进行修改,并进行单元测试,持续三周(3/3) |
13 | 重新进行集成测试 |
14 | 进行Bug修复 |
15 | 再次部署,在社区中完成第二次Beta测试 |
16 | 新版本上线 |
Part2: Visual Studio
一、调研与评测
1.软件功能
Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile等。其功能举例:
- 领先于业界的数据库工具
- 强健而灵活的软件建模
- 高效的体系结构指导
- 关键测试功能
- 集成的源代码控制
- ......
VS使用截图
2.使用体验
VS的定位:大而全的IDE。
VS的界面比VS Code复杂的多,菜单栏与JetBrain家族有的一拼,不过这也暗示了其功能的强大。从启动速度上来说,虽然没有VS Code迅速,但相比于本人使用的IntelliJ还是可以接受的(其实在本人电脑上,各种情况下VS都比IntelliJ要快一点,当然这也有可能是本人在IntelliJ上安装了一些插件的原因)。对初学者(比如本人)而言,平时会用到的功能也就IDE的那些基本功能,比如语法检查、智能联想、编译调试等等。但如果是职业开发者或对VS有一定的熟悉后,能用到的功能应该会丰富起来。
至于缺点,本人曾尝试过,用VS 2017开发的项目在VS 2019下编译起来会出现一定的问题,配置了好长时间都没有搞定,兼容性还存在一定的问题。此外的缺点还有缺少智能化的快速修复、体量太大(随随便便就十几个G)等。
总体来说:提供免费版、功能大而全。
3.Bug分析与改进意见
使用过程中未发现Bug。
改进意见:提高不同版本的兼容性,比如对VS 2017开发的项目,读取其相关的配置文件,再根据当前VS版本对项目的配置进行修改。
4.总结与评价
可以白嫖的强大IDE,本人的评价是 e) 非常推荐。
类别 | 描述 | 评价 | 评分(满分10分,及格4分,很差-3分) |
---|---|---|---|
核心功能 | 分析三个核心功能,功能设计和质量。 | 功能大而全、质量有保障(后台是微软) | 9 |
细节 | 有什么为用户考虑的细节? | 暂未找到 | 5 |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告) | 没有不必要的干扰 | 9 |
辅助功能 | 一些辅助功能如皮肤等 | 有几类基本的主题 | 7 |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 对经验丰富的开发者来说吸引力大 | 8 |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 体量大,不过运行速度可以接收 | 7 |
软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 初次使用需要联网登录 | 8 |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 能根据喜好调整设置,不过没有学习功能 | 7 |
二、分析
Q1:使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
本人认为6人左右规模的团队很难做到将IDE做到VS这种程度。假如?没有假如。
Q2:分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?
根据PopularitY of Programming Language排名,VS能排第一。但本人只使用过VS的冰山一角,根据本人自身的使用体验来说,VS在本人内心的排名为第二。
三、建议和规划
1.市场概况
该部分可参考VS Code的市场概况部分。
2.市场现状
该部分可参考VS Code的市场现状部分。
3.市场与产品生态
这个产品的核心用户群是什么样的人?典型用户是什么样的?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
核心用户群与VS Code类似,只是由于VS的功能相对复杂,对初学者有些不太友好。
典型用户C:
- 学历:硕士
- 年龄:三十岁
- 专业:计算机科学与技术
- 工作:Android应用开发
- 收入:15000 / 月
- 表面需求:有一个功能强大、高效的IDE
- 潜在需求:IDE有全面的测试功能
4.产品规划
你要在当前软件的基础上设计什么样的新功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用NABCD分析。
本人认为VS的功能已经足够全面,能开发Windows应用、移动应用、游戏、Web应用等,不容易再增加新的建设性功能。
Part3: VS Code与VS的比较
- 定位:VS Code的定位偏向于Editor;而VS的定位则是IDE。
- 应用场景:VS Code主要用在一些轻量级开发上,比如一些简单的网页的开发;而VS则可以用于重量级开发。
- 功能:VS Code的核心功能见上文,此外的功能主要依赖于扩展插件;而VS本身自带丰富而完善的功能,可以进行开发Android、IOS、Windows等平台的应用。