软件案例分析

软件案例分析

项目 内容
这个作业属于哪个课程 班级博客
这个作业的要求在哪里 作业要求
我在这个课程的目标是 系统地提升软件工程能力
这个作业在哪个具体方面帮助我实现目标 通过分析软件理解软件工程的原则的重要性

本次作业我选择进行分析的是VS和VS Code,

第一部分 调研, 测评

VS和VS Code平时使用的比较多了,它们的区别和定位也是比较明显的。下面详细说明我在体验过程中发现的这两款软件的区别以及优缺点。

VS

VS是一个大而全的IDE,它具备着开发企业级项目的能力,有着丰富而复杂的功能以及配置选项,可以满足绝大多数需求,并且支持扩展程序开发。它本身提供的功能已经十分完善,能带给开发者完整的项目工作流支持,从版本控制,代码调试,到单元测试以及部署,各种功能一应俱全,而且调试等功能极为强大,最让我喜欢的是Edit and Continue和调试时执行流变更,可以极大的提高调试程序的效率,这是在别的IDE上体验不到的。这些能力让VS被许多人称为“宇宙最强IDE”。

不过相比于其他IDE,VS也有不少让我不喜欢的地方,希望VS能够在未来改进。

首先是它的项目文件管理,经典的VS工程是将项目文件和配置信息都写入.sln等文件中,它的实际项目结构和文件系统中的结构是不同的,这很容易导致项目文件管理混乱,而且VS生成的中间文件也是“到处都是”。 虽然VS后来支持了CMake项目,但是它的配置能力就远不如原生的VS工程强大了,希望VS能够进一步加强对CMake工程的支持。

此外还有版本控制,这一点我认为没有JetBrains的CLion做的好。虽然它们都能在代码变动后用颜色标记出有改动的行,但是CLion可以点击颜色标记并显示出具体的差异内容,对效率有很大提升,而VS没有这样的功能,并且对于颜色的刷新也很不及时,比较令人失望。此外VS的文件编码,换行符,以及Tab键等常用的设置也远不如CLion的方便。

使用VS开发C++程序

image-20200325194034999

VS的bug

VS支持了Linux的远程开发,应该是基于GNU工具链的,但是我在尝试了几个项目后(QuEST,ElmerIce等),发现调试功能对许多项目(主要是复杂的工程)是不能正常使用的,VS只能在控制台报出并不清晰的错误信息。

或许Linux不是VS的重心,但是CLion的远程调试成功率要高得多。

VS Code

VS十分强大,但对于开发小项目和小程序来说可能过于“臃肿”,不过我认为这是它因强大而不能避免的。

在这一方面,就可以用VS Code来代替。VS Code是一个扩展性很强,易用的代码编辑器。

它启动迅速,功能简洁,不但具备一个文本编辑器应有的所有功能,丰富的插件支持让它可以解决各种各样的需求。并且VS Code支持远程编辑,这是我最喜欢的功能,VS Code通过远程服务器实现这一功能,这让它有着原生编辑器的体验,插件基本都可以完美支持,然后打开VS Code的Terminal窗口,上面写代码,下面敲命令调试,真是完美!

VS Code是我用过的所有文本编辑器中最好用的,不过在一些细节上和其他编辑器还有不足。

我遇到最明显的一点是查找和替换功能,相比之下,Notepad++的查找和替换可以自由切换模式,从文本比较到转义模式到正则模式,选择查找范围也更加自由,VS Code的查找和替换虽然也不弱,但在用户体验上就显得比较原始了。

使用VS Code开发C++程序

image-20200325193819153

VS Code的bug

我遇到两种SSH远程编辑不能正常使用的情况:

一种是环境变量冲突。VS Code应该是基于bash程序在远程服务器进行各种操作的,因此在链接建立的过程中会加载用户目录下的.bashrc文件。在一次使用中,我再.bashrc中加载了Intel Parallel Studio的环境变量,导致VS Code的SSH服务器不能正常启动,远程编辑无法使用了。虽然修改.bashrc后可以修复问题,但是VS Code的报错信息比较令人迷惑,定位错误花了不少时间。

此外glibc的版本过旧也会导致无法使用,这一点是比较令人悲伤的,glibc作为Linux系统的核心程序,不能随便升级(否则可能导致sshd等关键程序崩溃,是高危操作),希望VS Code能多支持一些版本吧。

因glibc版本问题无法启动

image-20200325193749070

此外我遇到过远程SSH上安装插件无效的情况,不过重装几次就好了,这次没有复现这个bug。

评价

VS: 好,不错 (4/5)

VS Code:非常推荐(5/5)

评分表(总分满分100,单项满分10分)

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

第二部分 分析

项目周期估计(团队人数6人左右,计算机专业大学毕业生,有专业UI支持)

VS

VS的第一个版本发布于1997年,现在已经是一个庞大的软件,我认为6人团队在有限的时间内是不能完成开发的。VS现在稳定两年迭代一个版本,如果6个毕业生完成一个版本迭代的开发,我猜测需要8年以上的时间才能取得同样的进展。

VS Code

VS Code 部分Contributors (来自Github

image-20200325213409089

从VS Code项目在Github上的统计来看,贡献者中有25个人有1万行以上的代码贡献,其中23个人依然活跃,可以认为VS Code有大约23个核心开发者,考虑VS Code的核心开发者能力高于毕业生水平。猜测6人毕业生在全面指导下需要大约6年时间完成现在程度的VS Code。

软件优劣对比

排名(来自https://pypl.github.io/IDE.html,通过Google下载页面访问量统计)

Rank IDE Share Trend
1 Visual Studio 24.08 % +1.2 %
2 Eclipse 17.26 % -4.1 %
3 Android Studio 16.7 % -0.6 %
4 Visual Studio Code 6.49 % +2.0 %
5 pyCharm 6.0 % +1.8 %
6 NetBeans 5.84 % -0.9 %
7 IntelliJ 5.38 % +0.6 %
8 Xcode 4.55 % +1.1 %
9 Sublime Text 3.91 % -0.1 %
10 Atom 3.34 % -0.4 %

通过排名可以发现Visual Studio是使用量最高IDE。它在使用上没有致命的缺陷,同时有着十分强大的功能,而且Community版本免费,相信可以保持着Windows与C++,C#平台的市场占有率。

而代码编辑器中VS Code处于王者地位,并且还在急上升。它既美观又易用,插件丰富扩展性强大,同样有一点很重要的,免费。这些特性让它打败所有的竞争对手。

软件工程方面的建议

VS

在实际使用过程中,VS很容易出现“奇怪”的bug。应该很多同学都遇到过,VS突然就无法编译/无法允许/代码高亮错误/Error信息错误的情况,然后重新新建一个项目就又正常了。

我也遇到过这类情况,但是没有实锤是VS程序层面的bug,因为VS的配置十分复杂,构建流程也相应的比较复杂,可能很多时候因为不知道具体情况而无法通过修改配置来解决问题。

希望VS能够在项目复杂度和开发易用度上建立一条更加平滑的曲线,让更多初学者能够更稳定的学会VS的使用,而不会遇到难以解决的问题。

在第一部分发现的bug,为什么不能修复?

VS Code

VS Code对于SSH有一个troubleshooting的文档,其中介绍了很多种情况的解决办法,主要是依赖于用户通过修改系统的配置或者环境来解决问题。因此我认为这是软件团队有意不修复。

VS Code作为一个MIT协议下的软件,没有义务对使用者提供任何的维护保证和功能性保证。因此我认为,出现一些棘手的但是是由不同运行环境造成的bug,VS Code团队倾向于让用户把自己的环境变得能够运行VS Code,而不是VS Code主动去适应各种各样的环境,这应该是一个开源软件维护团队的成本所限制的。

第三部分 建议和规划

这个软件有很多可以提高的部分,如果你是新上任的项目经理,如何提高从而在竞争中胜出?

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

    Daxx的分析显示,2023年全球会有2700万的软甲开发者。VS和VS Code作为支持大多数类型项目的开发工具,能够在这个数量级的市场上去竞争潜在用户。

    the number of software developers in the world

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

    与VS竞争的产品:

    • Eclipse

      • 优点:对Linux有良好的支持
      • 缺点:运行缓慢,编程和配置复杂
    • IntelliJ, PyCharm,Android Studio等JetBrains系IDE

      • 优点:代码提示和重构功能更加智能
      • 缺点:大型项目启动缓慢(索引缓慢)
    • NetBeans

      • 优点:占用系统资源少
      • 缺点:代码提升功能较差
  • 作为新的项目经理,这个产品的核心用户群是什么样的人,典型用户长什么样?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?

    核心用户群:软件工程师和相关专业学生。

    学历:大学本科及以上

    年龄:青年为主

    爱好:技术宅,喜欢钻研更多的功能。

    收入:较高于平均水平。

    表明需求:提高工作效率的软件。

    潜在需求:界面美观,操作舒适。

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

    内嵌的插件开发套件。

    因为使用该软件的大多都是程序员,所以如果有新的需求出现,用户是可以自己开发的。虽然VS和VS Code支持插件开发,但是需要配置额外的开发环境,成本较高。这个功能有助于进一步满足用户的需求,可以提高用户粘性和满意度,如同经久不衰的Vim和Emacs。

    • N(Need):定制化的功能
    • A(Approach):开发插件或扩展
    • B(Benefit):满足用户的独特需求
    • C(Competitors):比其他软件更容易满足用户需求,更加易用
    • D(Delivery):除日常更新宣传,可以在开发者社区进行宣传
posted @ 2020-03-26 00:00  哪里有只喵  阅读(225)  评论(2编辑  收藏  举报