BUAA_2021_SE_Case_Analysis
案例分析作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 案例分析作业 |
我在这个课程的目标是 | 通过课程学习,完成第一个可以称之为“软件”的项目,同时了解软件工程中用到的方法,确定自己的职业目标 |
这个作业在哪个具体方面帮助我实现目标 | 学习业界经典软件,找到软件工程之法 |
学号后四位 | 5044 |
在本次作业中,我选择微软公司两款"显示代码"的工具进行横向对比。
1. 调研与评测
首先,我们先看看微软展示这两款产品的一个页面
可以看到,这两款产品目标用户的最大的区别就是:Linux用户
- 对于Visual Studio 则完全不支持linux,
- 而Visual Studio Code 则是全平台支持,下文我将详述体验报告。
1.1 Visual Studio Code
首先,本人是这款软件的重度用户,几乎每天都至少在一个平台上打开这款软件,这款软件几乎成了我的第二备选的文本编辑器[为什么是第二呢,因为第一可能是windows下的记事本或是linux下的vim]
它的安装程序体积十分小,在windows平台上甚至不到70MB,这丝毫不影响它的强大之处
打开软件,非常明显,微软特征:
如果我们什么插件都不安装,那左边应该没有下面几个图标,他所能做的,也就是打开一个文件,然后改一改,或是打开一个文件夹,然后改一改里面的文件,然后保存。
听起来它和我们平时所用的记事本没什么区别对不对,知识加了一个深色/或是浅色的皮肤,看起来更有逼格hhhhhh
但是,当我们打开它的扩展商店时,我们会被它数不胜数的插件震撼到
是的,它的功能强大,完全是取决于他有十分良好的生态链,商店中除了一些核心插件是由微软自身研发以外,其余都是由活跃的社区开发者所维护,这就像是编辑器界的iPhone一样,单独一个没有网络,没有app的iPhone,它除了打电话发短信拍照片,几乎什么都做不了,而一旦连接网络,它几乎可以做你想做的任何一件事情。
此外,当我们打开一种没有插件支持的文件类型的时候,微软会在右下角弹窗,让你安装一个插件,以便更好地进行编辑。
Visual Studio Code 是一款开源软件,也就意味着,我们每个人都可以投入到它的开发中,如果我们发现其存在bug,可以随时在其github页面上提出issue,当然,你也可以直接修改代码,并向微软提出pull request,通过后,你的代码也将进入下一个版本。
Visual Studio Code 提供了代码调试,编译,运行的接口,但它本身并不包含这些功能,插件也不包含,而它的调试编译,运行,连接远程主机等操作,全靠的是插件调用你本机配置好的环境,也就是说,如果你本机配置环境出现问题,你什么都没法做。许多初学者安装了它之后又卸载了,是因为使用它需要具备一定的基础知识,你得知道你想用它干什么,才能更好的把他当作一个工具去实现你得目的。
同时由于它是一款开源软件,自然就能又跨平台运行的能力,理论上,你有合适的编译器,你甚至可以把它移植到你自己写的cpu平台上,再移植一些插件过去。
关于bug:由于有时候我也搞不清到底是插件还是编辑器本身的问题,在我使用中,我发现了以下两个问题:
- 在每次版本更新后的第一次打开,有很大概率[!=100%]出现语言插件失灵的情况
- 在WSL2 REMOTE环境下,Java插件选择的JDK版本失效,还得靠ubuntu的update-alternatives --config java进行配置
以上使我在日常使用中发现的问题
在我大二时,采访过大一的同学,为了完成数据结构作业,让我推荐编辑器,由于他之前使用过Visual Studio,我就推荐了VSCode,在他试用的前提下,我得到了一些反馈
- 他主要为了使用这款编辑器完成数据结构的作业[C语言]
- 他实际使用了C/C++插件
- 他在初次配置编译器和调试器时遇到了很大的麻烦,和他之前使用的VS不同,VSCode时基于命令行的运行,所以他必须配置好路径[或环境变量]
- 但在成功配置好后得到的反馈是:好用,轻量化,不卡,简单
也就是说,VScode作为一个编辑器来说,是很好的的,虽然vscode在官方给了一些文档指引(https://code.visualstudio.com/docs),但是初学者很少有人愿意去看英文的原文文档,再加上插件繁多,不可能每个插件都有那么简明的指引。但是它核心要用户做的是,打造一个你自己的工作空间,每个人可能有每个人不同的工作,而你使用Vscode去打造一个最适合你的工作环境就OK了。Vscode给你提供的东西很多,即使没有提供,你也可以自己创造。因为它的一切都是开放的,你在作为一个用户的同时,你也是一个开发者。
最后给个评价:好
1.2 Visual Studio
这时就来说说微软老牌的IDE Visual Studio。本人使用的是2019版本
它被称为:宇宙最强IDE。倒也不负其名,光看看它完整安装所需要的磁盘空间就知道它有多牛了
曾经有个说法:你在安装VS的时候,把所有的勾全勾上,那就没有什么不能写的东西了。
这句话是真是假我不知道,但是,这句话很明显,说明了它和VSCode定位不一样,这两个东西基本上没有可比性。在说Vscode的时候,我更多的是说它能编辑,而其他的东西就是为了编辑进行服务的,为了你更好的编辑,就像我现在在写博客一样。而VS就是为了开发一个程序,一个项目而生的,看看它的界面:
看起来和Vscode有点像,但是感觉按钮是不是多了不少,自带的东西多了不少。
我们打开Vscode只需要新建一个文件,而打开VS则需要新建一个项目或者导入一个已将创建好的项目
从本质来说,VS更侧重项目的开发于管理,VScode更专注"编辑"
由于我本人仅在编译课程中用过十几小时的此软件,接下来介绍一下本人发现的一些"bug"
- 自动补全习惯非常反人类,居然不是enter[或许是feature]
- 微软老声常谈的汉字编码问题,都nm2021年了,还在用GB2312,命令行运行汉字都是乱码[如果不经过调整]
不可否认,VS在开发Win32[64]应用程序时,有着举足轻重的地位,特别是这款IDE已经发行了二十余载,肯定是积淀了一些东西,但是对于平时不怎么开发window应用,主力机是linux的我来说,它的存在好像就没那么必要,与其请个爷回家供着,不如使用更人性化的Jetbrain IDE,开发C/C++就用CLion,开发Jvm相关就用idea,开发python项目就用pycharm
VS它最大的优点就是能让一个人快速投入开发之中,对于windows应用来说,环境不那么多变,你也无须考虑什么,只需要安装VS,把勾都点上,等条走完,就可以开始开发了,而无需考虑那么多开发无关的事情,比如woc,xxx怎么找不到,xxx怎么出问题等等。
最后给个评价:也很好 但是并不适合我个人。
2.分析
2.1 预估时间
- 针对这两个软件,如果不考虑[普通]学生的成长和外界高人指点,我觉得没有十年脑血栓问不出这问题
- 如果仅靠六个本科生,给他三五十年怕是都难以开发出像VScode这样的软件,微软和全世界的开发者,用了6年时间做出现在这样,靠六个[普通]大学生那应该比较难。
- VS同理,VS技术团队,二十多年开发的一款软件,是几个大学生几个几年能搞出来的么?
2.2 排名打分
- VSCode
同类产品:sunlime,vim,notepad++,记事本等
体积:不大
插件生态:巨多
缺点:难以在命令行<无gui环境下>运行
打分:9.8/10
排名:前1 - VS
同类产品: Jetbrains IDE
体积:大
功能:较全
使用便捷性: 方便,但不够人性化
独特处: 用于windows应用开发
市场占有率:高
打分:9.5/10
排名:和jetbrans 很难比,目标客户有重叠,但不完全一致
2.3 建议
Vscode
社区化已经足够好了,但是对于不同国家,不同语言的用户来说,参与体验就没有那么好了,提高了使用者的门槛。VS
安装过于臃肿,可选项应该再多一些,同时将一些操作做的更加人性化,同时修复一些历史遗留性的问题。
2.4BUG分析
- Vscode
- 使用语言包的人不多,且该bug可以容忍,故修复优先级不高
- 插件bug
- VS
- 开发团队对于用户调研不够充分
- 历史遗留问题
3. 建议和规划
针对VScode
- 市场概况
- 市场很大,每一个会编辑文本的用户都是潜在的用户
- 直接的用户就是已经安装了的用户,潜在的用户是正在使用其他编辑器/IDE的用户,或将来从事可能有关编辑文本相关的工作的人。
- 市场现状
- 市场已有vim sublime notepad++ 记事本等产品
- 上述产品大多是free软件与开源软件,定位是希望定制自己的编辑器的用户,以开发人员居多
- 市场与产品生态
- 典型用户
- 计算机相关从业人员
- 计算机专业学生
- 自由开发者
- 其他可能使用编辑器的人员[论文写作者等]
- 典型用户
- 产品的子产品多由产品的用户进行开发,同时产生产品生态链
- 现在用户也是潜在的开发者
- 产品规划
- NABCD
- N:用户往往需要自己安装工具链,对于一些新手用户很不友好,我们需要一个tutorial插件来帮助新手用户快速入门,并帮助他们完成一些简单的工具链配置
- A:通过不同系统的包管理插件和一些文档来实现
- B:对新手用户更加友好,同时简化了工具链配置
- C:许多同类编辑器都没有此功能
- D:能将一大部分潜在客户直接变成客户
- 大约需要三个开发,一个测试,两个文案
- NABCD
周数 | 规划 |
---|---|
1 | 立项 |
2 | 需求分析和调研 |
3 | 功能设计 |
4 | 外观设计 |
5 | 文案编写 |
6-11 | 程序编写 |
7-12 | 单元测试 |
13 | 整体测试 |
14 | 加入内容 |
15 | 回归测试 |
16 | 发布BETA版本 |
BUAA_2021_SE_Case_Analysis的更多相关文章
随机推荐
- nasm astrcmp函数 x86
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export as ...
- Android Kotlin 数据驱动模板
Android开发人员文档: 数据绑定入门 数据绑定库 生成的绑定类 布局和绑定表达式 1. 搭建环境build.gradle:app apply plugin: "kotlin-kapt& ...
- 人物传记:Mila Fletcher:如何勤于思考抓住关键?
Mila Fletcher于2007年毕业于耶鲁大学,她是一名真正意义上的法学博士,在校期间获得了马歇尔奖学金,毕业后曾在美国多家知名律师事务所任职,目前就职于星盟全球投资公司,专注于帮助公司和客户提 ...
- C++单链表反转、两有序链表合并仍有序
1 #include<iostream> 2 3 struct Node 4 { 5 int data; 6 Node *next; 7 }; 8 9 typedef struct Nod ...
- MapReduce原理及简单实现
MapReduce是Google在2004年发表的论文<MapReduce: Simplified Data Processing on Large Clusters>中提出的一个用于分布 ...
- java 判断是否存在路径,不存在自动创建(兼容 window 和 linux)
1 private void createPath(String path){ 2 String os = System.getProperty("os.name"); 3 Str ...
- TERSUS无代码开发(笔记03)-常用快捷键
常用快捷键 1.a 普通行为元件调用 2.b 判断输入的值是什么值 3.c 有条件的传值处理 4.e 输出元件 5.f 传值或流程 6.t 输入元件 7.p 调用元件查询 8.x 判断是否有输入值 图 ...
- Java 8 中Sort排序原理:
总的来说,java中Arrays.sort使用了两种排序方法,快速排序和优化的合并排序.Collections.sort方法底层就是调用的Arrays.sort方法. 快速排序主要是对那些基本类型数据 ...
- Go中的if-else判断
目录 go中的if-else判断 一.语法 go中的if-else判断 一.语法 if 条件 { //符合上面条件的执行 } else if 条件{ //符合上面条件的执行 } else { // 不 ...
- nacos服务注册与发现之客户端
服务注册 1.1 NamingService.registerInstance的方法为客户端提供的服务注册接口 1.2 客户端通过调用NamingService.registerService上报到n ...