案例分析作业

项目 内容
这个作业属于哪个课程 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:能将一大部分潜在客户直接变成客户
    • 大约需要三个开发,一个测试,两个文案
周数 规划
1 立项
2 需求分析和调研
3 功能设计
4 外观设计
5 文案编写
6-11 程序编写
7-12 单元测试
13 整体测试
14 加入内容
15 回归测试
16 发布BETA版本

BUAA_2021_SE_Case_Analysis的更多相关文章

随机推荐

  1. C++算法代码——阿克曼函数

    题目来自: 题目描述 阿克曼( Ackmann) 函数 A(x, y) 中, x, y 定义域是非负整数, 函数值定义为: 输入 输入两个数,表示m和n. 两个数均不超过10. 输出 输出一个数,表示 ...

  2. SSL (Secure Sockets Layer)

    本文转载自SSL (Secure Sockets Layer) TLS简介 The Transport Layer Security (TLS) protocol aims primarily to ...

  3. 【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?

    问题描述 App Service访问的APIM已配置内部虚拟网络(Internal VNet)并拥有内网IP地址.App Service与APIM都在相同的虚拟网络(VNET)中.App Servic ...

  4. TERSUS无代码开发(笔记07)-简单实例手机端后台逻辑开发

    提交申请逻辑开发 1.添加父级对象引用(从父级对象中获取前端输入框的值) 1.设计数据库表(表名和字段名称不能用中文) 2.设计置数据库主键(可设联合主键) 3.传值形成数据实列处理 4.服务器端处理 ...

  5. IDEA SVN 使用

    转: IDEA SVN 使用 一.上传项目到 SVN VCS -> Import into Version Control -> Share Project(Subversion) 点击 ...

  6. 剑指 Offer 56 - II. 数组中数字出现的次数 II + 位运算

    剑指 Offer 56 - II. 数组中数字出现的次数 II Offer_56_2 题目详情 解题思路 java代码 package com.walegarrett.offer; /** * @Au ...

  7. springboot源码解析-管中窥豹系列之EnableXXX(十)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...

  8. day1_安装及建立数据库和表

    #第一份数据库及表create database library; use library; create table book( id int primary key, book_name char ...

  9. C# 应用 - 封装类访问 Mysql 数据库

    个人经历的项目主要都是用 Postgresql 或 Oracle 数据库,本文非原创,从他处整理而来. 1. 库类 mysql.data.dll using MySql.Data.MySqlClien ...

  10. WPF 基础 - 资源

    为了避免丢失和损坏,编译器允许我们把外部文件编译进程序主体.成为程序主体不可分割的一部分,这就是传统意义上的程序资源,即二进制资源: WPF 的四个等级资源: 数据库里的数据 (仓库) 资源文件 (行 ...