软件工程个人博客作业-软件案例分析:VS与VS Code

项目 内容
本作业属于北航 2020 年春软件工程 博客园班级连接
本作业是本课程个人项目作业 作业要求
我在这个课程的目标是 提高软件开发能力、团队协作能力
这个作业在哪个具体方面帮助我实现目标 提高软件分析能力

第一部分 调研

1 VS/VSCode简介

微软公司有两个代码编辑器:Visual Studio、VS Code,它们的目标用户,主要功能有何不同?为何要有两个编辑器和开发环境?

  从本人角度去看,Visual Studio能够为编程人员提供一套完整的语言环境,包括编码、测试、代码分析和度量以及发布,软件开发的一套流程都可以在这款软件上实现,我认为它的目标用户应该是开发项目级软件的团队或个人。此外,Community,Professional和Enterprise三种版本也适应了不同群体的需要。下面是从官网截下的三种版本简介:

  VS Code则是一个轻量级、跨平台、可个性化拓展的开发工具。最广受褒奖的是VS Code的开源插件,这些插件很好地满足了个性化的需求,比如编写Markdown文档可以安装“Markdown ALL in One”插件,编写python脚本可以安装“python”插件以及其他辅助插件等等。此外,内置的git也让版本管理变得十分方便。我认为它面向的用户应该是轻量级开发的小团队和个人编程爱好者。下面是官网的软件简介:

  两个编译器的存在是为了满足不同人群的不同开发需要。举例来说,如果想要利用WPF框架开发window界面程序(本次结对项目作业),在VS Code中不知从何处下手,需要十分费劲地搜索开发的环境依赖与插件、可用的模板等,而使用Visual Studio可以很轻松地创建一个WPF应用项目,直接就能够进行开发;但如果只是想要调试一份C++算法题的程序呢?VS Code中只要有“C/C++”插件,创建一个新的.cpp文件即可开始编码,而Visual Studio需要经历“新建项目->解决方案->源代码->新建项”,才可以开始编码,步骤繁琐的同时还会带来许多冗余文件。

2 软件体验

使用10–30分钟这个软件的基本功能(请上传使用软件的照片)描述使用这个产品的过程,解决了用户的问题么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么?对产品有什么改进意见?

  1. 使用Visual studio 2019 Community进行WPF应用开发

      在使用Visual Studio进行开发的过程中,直观体验是十分顺手,更具体的描述是:代码补全完善、调试功能齐全、项目管理清晰、界面美观大方、各种工具应有尽有。当遇到错误、警告时,可以快速定位到有问题的代码行,并提供完善的官方文档解答,非常人性化。

      其中存在一点界面上的不足是,解决方案资源管理器作为项目管理最重要的栏目,个人直觉是点击关闭后会停靠在侧栏,再次点击还能够弹出。而Visual Studio中的处理是直接关闭,没有提示,不熟悉的用户还需要到上方工具栏中逐一寻找才能在“视图”中找到并还原,体验不是很好。虽然资源管理器上有“自动隐藏”按钮,但是点击后又会带来尺寸的变化,且只要不操作就会自动隐藏也会带来重复的点击操作。

      (还有一个建议是,希望能少吃一点C盘空间。

  2. 使用VS Code进行C++编程

      编写C++程序时有内置代码高亮,如果缺少相关插件VS Code还会给予提醒,只需傻瓜式点击即可安装。编码完成后,使用快捷键Ctrl+Alt+N即可编译运行。此外,为了展现VS Code插件的优越性,本人还展示了Todo Tree插件的使用。通过Todo Tree,可以很直观地展示程序中未完成、待修改以及其他标注事项。

      此外,内置的git也可以很直观地展示版本差异

      总之,VS Code的使用体验非常棒,这也是得到业界认可的。无论是代码高亮、界面设计、还是开源插件,都很好地满足了轻量级开发的需要。美中不足的一点是,代码补全和查错的反应速度有点慢,有时已经修改好的错误,在对应代码行的红色波浪线还是会停留一会。建议对代码补全和查错这两个功能进行性能优化优化(如果是插件的影响,也可以通过官方渠道将主要编程语言的开源插件收录并进行优化)。

3 功能性bug

按照描述的bug定义,找出至少2个功能性bug。用专业的语言描述(每个bug不少于40字)

  1. Visual Studio中CPU使用率的bug

      在使用性能探查器的CPU使用率分析功能对程序进行分析时,CPU使用百分比能正常显示,但各个函数的CPU使用率详细分析结果无法显示,取而代之的是出现“在所选时间范围内没有代码运行”字样,没有任何错误或警告提示(经测试,该bug与程序无关,且重装或修复Visual Studio无法解决)。

  2. Visual搜索栏不显示下划线bug

      在代码编辑界面使用Ctrl+F打开搜索界面,输入带有下划线的名称进行搜索,在搜索框中不显示下划线,但能够匹配对应的段落。

4 评价

经过这么多工作,你一定有充分的理由给这个软件下一个评价.请选择一个结论。除了定性的结论,是否能有定量的结论(就像最近比较时髦的手机评测那样,跑个分),如何定量地评价一个软件?

经过调研工作后,我的总体评价是:

  • VisualStudio: d)好,不错
  • VS Code: e)非常推荐

定量评价:

类别 Visual Studio VS Code
功能 核心功能 9 9
细节 8 8
用户体验 7 9
辅助功能 8 10
差异化功能 8 8
软件效能 9 9
体验 软件适应性 10 10
成长性 9 7
用户有控制权 10 8

第二部分 分析

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

  对于Visual Studio这个迭代了20余年的IDE老怪物来说,团队6个人开发到支持其所有功能的程度难于登天。首先需要完成基本编辑器的核心功能,支持代码编辑、项目管理等基础功能;然后需要完成对各语言环境的支持,如C++,.Net桌面开发等等,并完成项目编译、调试、测试等基本开发功能;之后是辅助工具诸如代码分析、性能分析以及插件实现。综合这些工作应该需要3-5年甚至更长的时间开发。

  VS Code已经开源,理论上完成时间与网速相关(/狗头)。拥有开源项目的指导,VS Code的开发速度应该能加快速度,估计开发时间在1年左右。但是数以万计的开源插件的开发就是不可衡量的了,还需要依靠热心网友的支持,或者对现有插件做移植。

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

网上查到的排名信息如下:

  可以看到,VS高居榜首,VS Code也在大步向前。

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

  Visual Studio为开发者准备的功能十分齐全,但也有不少身边的用户反映:看着C盘被占用的空间心在滴血,最后在某些课程项目完成后,为了缓解C盘空间而卸载VS。所以,我认为可以在储存空间方面进行提高,适当地将一些功能作为可选项,或是删除、压缩某些功能,减小系统盘的占用量。

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

  对于CPU使用率的Bug,在微软开发者社区中的问题由于信息不足已被关闭。

2020-03-23-14-58-23.png

  在询问结对伙伴这个问题后,他找到的解答是:“开发者员工称这个问题是Windows的问题,大概是1903版本破坏了VS一直使用的ETW profiling功能”。

2020-03-23-15-11-40.png

  对于搜索栏无法显示下划线的Bug,我在开发者社区或其他网站上都没有看到类似问题,猜测可能是问题出现范围小,开发者没有注意到,所以我向开发者社区报告了这一问题

2020-03-23-15-52-34.png

-----------------(2020.3.24更新)

开发者社区的回复速度也太快了,真的很用心。经过VS installer的修复之后,问题被解决了。

第三部分 建议和规划

首先,市场有多大?潜在的用户有多少?

  在“第二部分 分析”一栏中有列出,据今年三月的最新数据,Visual Studio占IDE市场份额的24.08%,居高不下,VS Code占6.49%,有明显的上升趋势。Visual Studio面向大小型开发团队、个人开发者、学生等群体,其潜在用户还有编程初学者、需要编程的实验人员等,以及其他平台的开发人员;VS Code作为跨平台的轻量级IDE,其文本编辑功能配合插件也十分受众,其潜在用户可能有文字工作者、进行轻量开发的编程爱好者等。

目前市场上有什么样的产品了,它们的优势劣势在哪里?和它直接竞争的产品在那里?

目前市场上与Visual Studio这种工程级别IDE竞争的产品有:

  • Eclipse
    • 优点:很适用Java,更新速度快,插件功能强大
    • 缺点:大工程的内存、CPU消耗大
  • IntelliJ IDEA
    • 优点:对重构的优越支持,GUI简洁易用
    • 缺点缺乏技术文章,同一页面只支持单工程开发
  • NetBeans
    • 优点:人性化,功能强大
    • 缺点:界面设计存在不足
  • ……

此外,VS Code作为轻量级编辑器,其竞争对手有:

  • Sublime Text
    • 优点:体积小、运行快,内嵌python解释器,主流前端开发工具
    • 缺点:收费闭源,同时编辑多项目存在缺陷,多插件影响使用
  • Atom
    • 优点:bug修复迅速,稳定,插件生态圈发展快
    • 缺点:启动速度慢,技术不成熟
  • ……

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

  我认为可以设计“编程初学者支持”功能,作为VS/VS Code的插件或可开关的功能选项。这个功能是为了解决编程初学者编码困难的需求(Need),现有的IDE或代码编辑器只支持代码补全、高亮等编码基本辅助功能,或是对编码风格的提醒约束,但这款功能可以为编程初学者提供相关语言的编码提示或知识的深入引导(Approach),比如编写二维数组遍历时,可给出不同遍历顺序造成的性能影响;使用容器时,给出其他可选容器的使用方法等等。该功能可以有效地帮助编程初学者熟悉相关语言的编程知识,了解性能更高的编程方式以及规范的编码技巧(Benefit),从而让软件能够吸收编程初学者用户,扩大市场,在从事IT事业人员迅速增长的环境下占据有利地位(Competitor)。同时,高影响力的发布会和成熟的官方平台也可以让用户更快地了解我们的功能,进一步扩大传播(Delivery)。

参考

posted @ 2020-03-23 22:27  kingkongk  阅读(619)  评论(2编辑  收藏  举报