2020BUAA软工个人博客作业-软件案例分析

17373010 杜博玮
项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 个人博客作业-软件案例分析
我在这个课程的目标是 学习软件工程,培养工程开发能力、团队协作能力,开阔视野
这个作业在哪个具体方面帮助我实现目标 通过案例分析更好的体会软件工程原则在实际应用的展现

本次作业我选择了VS和VS Code进行分析。

VS与VS Code在我的学习中占据很重要的地位。VS Code轻量,便捷,易拓展;VS则是全面而复杂。在日常生活中我的很多C/C++程序、python脚本等都是使用VS Code编写的,同时大多数大型项目都是借助于VS来完成的。

VS和VS Code都是微软旗下相当有名的产品,有着相当不错的口碑。同时两者也有着很多的共同点与差异。因此我准备选择这两个软件来进行对比分析。

第一部分 调研、评测

Visual Studio:

主要功能介绍:

我们在VS的官网上可以看到微软对VS的介绍:更快地进行代码编写。 更智能地执行操作。 使用同类最佳 IDE 创建未来。VS是一个基本完整的开发工具集,包括UML设计工具、集成开发环境(IDE)、代码管理工具等,基本上从初始设计到最终部署,项目的整个过程都可以通过VS来实现。在官网的功能介绍位置,微软给出了这几项主要功能:开发、分析、调试、测试、协作、部署。这些功能的组合可以支撑一个团队完成一个项目开发的完整流程。

下面是我借助VS进行这次结伴项目的开发、调试等流程的截图。

开发操作:

调试操作:

除了VS强大而广泛的功能,它也支持相当多种类的项目开发。从简单的C/C++、Python等语言的控制台程序,到Unity开发、UWP应用开发、Web开发、甚至Visual Studio扩展开发、Office加载项开发、数据存储与处理等相当多的项目它都能支持。这种繁杂程度,实在使人难以想象。

此外,从上面的图片中,我们可以发现,我为我的界面设置了自定义的背景。这种功能则得益于VS强大的插件功能。尽管VS已经几乎做到了全能,但是必然还会存在一些没有实现的有需求的功能。借助他人的插件或者自己编写的插件,可以让你的VS体验更上一层楼。

对这一软件的使用体验:

Visual Studio在使用过程中给人的感觉就像是一个精密的数控机床,各项功能都在这里,你尽可能去干,反正你想要的东西我这里都有。代码格式不好?VS这里有排版功能。怎么优化项目性能?VS有性能测试帮你解决。项目设计图做出来了之后呢?VS帮你根据UML图直接生成代码。Git使用好难,VS自带GUI的git版本控制系统。你简直想不到VS所不能做到的事情。

然而想做到这一点可不是那么轻松的,VS为这个全家桶付出的可不少。一个仅仅安装了C++组件的VS安装下来就是7GB以上,一个完全版的VS会占用几乎30GB的硬盘空间。而打开这个VS需要接近1分钟的时间(机械硬盘)。仅仅打开一个项目,不进行任何操作的VS也会占用500MB以上的内存空间。这种代价不可谓不大。

与此同时,对于这种大型软件,VS给用户的使用指引却少的出奇。如何指引新手?微软的答案是让跨域新手门槛的人指引新手。遇到问题后,我们基本上不能从VS所提供的信息中获取解决方法,只能通过官方的文档,或者是掉过这个坑的前人的博客,或者是通过StackOverflow解决。

优缺点评价:

优点:功能丰富、强大,支持拓展。

缺点:模块化还是不够细致,基本上没有人会使用所有的功能。使用指引缺乏,上手难度很高。

改进意见:

希望能够针对上述缺点进行改进,增加安装时的选项,以去掉一些不常用的功能;增加对新手的指引,同时优化各功能的布局。

VS Code:

主要功能介绍:

在VS Code的首页上,微软将这一软件定义为新一代的免费开源的代码编辑器。

微软着重重视它的五项功能

IntelliSense,VS Code的代码补全功能相当智能,在我的体验中我感觉它是强于VS的补全功能的。

编辑器内调试。VS Code尽管是一个代码编辑器,但是它同样可以直接在编辑器中调试代码。在我看来,更方便的是它甚至还记录了当前执行函数的前几层函数,并可以查询前几层函数的各个变量的值,这使得调试极为方便。

内置的git服务。VS Code与VS一样,均内置图形化的git工具。

可以拓展。这是VS Code的精髓所在。可以说数以百万计的拓展就是VS Code的核心。我们可以通过安装中文插件汉化界面,我们可以通过安装python插件使VS Code支持python,我们也可以通过npm插件运行npm脚本,我们还可以安装debugger for chrome插件以便于web开发,我们甚至还可以安装插件来美化代码字体、改变背景、在代码内插入Emoji。

下面是我上个学期使用VS Code进行编译器的开发的使用图:

对这一软件的使用体验:

VS Code用起来真的很爽,其中很大一部分原因要归功于它的清爽。不同于VS,打开后我们只能看见界面上密密麻麻的按钮,以及长达一个屏幕的快捷菜单,这很难让人有种安心的感觉,反而是感到无穷的压力。VS Code则是几乎不会有按钮,它的设置主要是在项目文件夹内的json文件中设定的,我们配置好项目后就可以直接面向清爽的文本编辑画面编写代码了。一个VS Code的大小不过500MB,我们完全可以将其放于固态硬盘之中,软件10秒启动,一般情况下占用内存34MB。与VS相比VS Code就是一个小虾米。

在编写过程中,对于那些用惯了Vim等编辑器的程序员,他们完全可以借助插件来变更编辑器的快捷键方式,真正做到海纳百川,让所有人感受写代码的愉悦。

然而,真正入门VS Code时你依然不能放松警惕。因为VS Code的json配置也可以劝退不少的新人。VS可以做到一键生成hello world程序,而VS Code各种参数都需要你去配置。尽管网上有比较多的教程,但是如何去综合这些教程还是要看你自身的能力了。

此外,尽管插件是VS Code崛起的重要一环,但是插件同样也会给VS Code提供不小的挑战。如果安装了太多的插件,VS Code就会退化成VS,臃肿不堪。同时很多第三方提供的插件质量良莠不齐,BUG较多。而且即使拥有了必要的插件,VS Code也不会像专业的IDE一样悉心帮你安排项目的一切,最终的情形还是依赖于你自己。

优缺点评价:

优点:轻量,便捷,可扩展能力很强。

缺点:上手难度还是比较高,插件质量无法得到保障。

改进意见:

希望加强对于共享插件的监督,及时剔除功能重复的插件,严格保证插件的质量,增加对配置文件的说明,提供一种图形化的配置方案。

BUG描述:

想要找到VS和VS Code的BUG实在不是个容易完成的操作。这两个软件毕竟已经是经过了严格的开发部署的产品。下面简单介绍一下我所发现的问题。

VS:

1 在解决方案的属性中,一个很重要的属性是附加依赖项。它默认是从父类或项目默认设置继承的。如果你将它去掉并应用之后,再次编辑附加依赖项,你会看到从父类或项目默认设置继承的选项会被勾上。这意味着不去掉这个勾,编辑之后的附加依赖项会重新从父类或项目默认设置继承。

2 在代码补全上,我们输入一个变量名称,VS的代码补全可能会将其认定为一个宏,此时如果你输入'.'字符,代码补全可能会直接认定你输入的是这个宏,而自动进行了代码补全,很不方便。

VS Code:

1 VS Code自带的终端的显示行数存在上限。我们知道,VS Code是调用的windows下的powershell作为终端的,而powershell的终端显示行数存在上限。在我的电脑上是3000,但是在一些情况下很容易输出超过这一上限,从而只能通过文件输出来解决这一问题。

2 VS Code将文件夹从工作区删除后给出的提示会无预兆增加。此后在添加一个文件夹到工作区后再次删除,提示会进一步增加。

评分:

visual studio visual studio code
核心功能 9.5(确实很全面) 10.0(对编辑器的实现很完美)
辅助功能 9.0(确实很全面) 8.0(与VS的全面相比有些欠缺)
用户体验 6.0(有些繁琐) 9.5(体验很舒服)
差异化功能 9.5(与同类相比更加全能) 10.0(与vim等编辑器相比非常强劲)
软件的效能 4.0(真的很差) 9.5(真的很好)
客制化服务 8.0(插件比较完善) 10.0(插件相当完善)

visual studio:平均分7.67,总评d,好,不错

visual studio code:平均分9.5,总评e,非常推荐

第二部分 分析

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

对于visual studio,6个计算机大学毕业生,并有专业UI支持的团队应当完全无法完成。微软公司于1993年推出Visual C++1.0,此后不断升级,直到VS 2019.这是一个巨无霸企业经历了近30年完成的项目,功能相当繁多,根本不是这种团队可以完成的。

对于visual studio code,团队可能需要6年左右的时间来开发一个不带任何插件的版本。这主要是因为团队的经验问题。6个计算机大学毕业生的经验会使完成项目的时间极大程度地拖延。

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

visual studio的能力几乎可以同JetBrains全家桶相当。而Eclipse的项目配置、软件效能方面均与VS有很大差距。个人估计VS的质量是足以排名第一的。

VS Code则因其强大的插件支持与同类相比更强一些。我估计它也足以称第一

我们可以看到上述IDE的热度榜,visual studio遥遥领先,VS Code则远超Vim、Sublime Text等编辑器,冲到了第四的位置,足以证明这两个产品的强度。

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

对于VS:

第一个BUG可能是因为从父类或项目默认设置继承是一个相当常用的选项,几乎不会有人去去掉这一选项,因此测试把关不严,没能发现这一问题。

第二个BUG应当比较常见,但是没有修复的原因很有可能是开发人员粗心大意。毕竟VS Code中是没有这个BUG的。

对于VS Code:

第一个BUG是windows的powershell自身的问题,应当是因为对用户需求掌握不好。

第二个BUG我在此前的版本中没有发现,应当是新版本出现的BUG,我认为是测试把关不严,敷衍了事,没有发现这一BUG。

第三部分 建议和规划

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

    代码编辑器和IDE的市场相当广大,所有的程序员以及计算机专业的学生还有业余爱好者都是潜在的用户。

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

    经过这么多年的发展,市场上存在大量的IDE和文本编辑器。

    对于IDE,存在着IDEA,Pycharm等JetBrains全家桶、Eclipse等。JetBrains全家桶优势在于专注于一个方面,软件精致而好用,缺点在于不够全面,跨语言的项目不容易处理,同时价格也很昂贵。Eclipse的优势在于用户基础大,功能也比较全面,缺点在于相当臃肿。

    对于文本编辑器,存在着Apple Xcode、Vim等,因为我是win10系统,没有使用过Apple Xcode,但是Apple Xcode也同样是轻量级的文本编辑器,缺陷在于不像VS Code一样跨平台。Vim优势在于更为轻量化,且拥有不小的用户基础,缺点在于界面不如VS Code美观,插件种类也不如它丰富。

  • 作为新的项目经理,这个产品的核心用户群是什么样的人,典型用户长什么样?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?

    核心用户群是程序编写者人群。

    典型客户既有我们这类学生,学历不够高,年龄较小,专业为计算机,几乎没有收入。或者业余爱好者,他们学历、年龄、收入都很难确定,但是他们的需求与学生相似,都更希望界面美观、功能完善。他们可能会厌倦臃肿的VS,而去拥抱简洁、舒适、轻量的VS Code。

    也有专业的程序员,学历高、年龄较大、出自计算机专业、收入高。他们更需要的是专业的IDE,需要更加支持团队项目的软件。因此更容易选择全面、专业的VS。

2020BUAA软工个人博客作业-软件案例分析的更多相关文章

  1. 2020BUAA软工个人博客作业

    2020BUAA软工个人博客作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 学 ...

  2. 初窥构建之法——记2020BUAA软工个人博客作业

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 完成一次完整的软件开发经历并以博客的方式记录开发过程的心得掌握 ...

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

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

  4. [BUAA软工]第一次博客作业---阅读《构建之法》

    [BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  5. [2017BUAA软工]第三次博客作业:案例分析

    第三次博客作业:案例分析 1. 调研和评测 1.1 BUG及设计缺陷描述 主要测试博客园在手机端上的使用情况. [BUG 01] 不能后退到上一界面(IOS) 重现步骤:打开博客首页中任意博文,点击博 ...

  6. BUAA 软工 个人博客作业(一)

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 通过阅读<构建之法>大致了解软件工程 这个作业在哪 ...

  7. [2017BUAA软工]第一次博客作业

    一.一些疑问 看书看得比较慢,暂时只思考了以下几个问题,有些自问自答,不知道符合不符合要求…… [1] 第一章中书上提到了这样一个例子: “如果一架民用飞机上有需求,用户使用它的概率是百万分之一,你还 ...

  8. [敏捷软工团队博客]Beta阶段事后分析

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的问题是:现在的软工课程的作业分布在博客园.GitHub上,没有一个集成多种功能的一体化 ...

  9. 软工个人博客作业Week 1

    问题1:在瀑布模型中提到模型,模型(模拟版本)和原型有什么不同,如果与原型有同样的功能,那为什么称之为模型?如果没有同样的功能,又是怎么测试那些程序的? 问题2:怎样才能高效率的广泛而深入地了解用户的 ...

随机推荐

  1. 【MyBatis】几种批量插入效率的比较

    批处理数据主要有三种方式: 反复执行单条插入语句 foreach 拼接 sql 批处理 一.前期准备 基于Spring Boot + Mysql,同时为了省略get/set,使用了lombok,详见p ...

  2. (5)java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Boot简介

    ​Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式进行配置,从而使开发人员不再需要定义样板化的配置 ...

  3. 干货!基于SpringBoot的RabbitMQ多种模式队列实战

    目录 环境准备 安装RabbitMQ 依赖 连接配置 五种队列模式实现 1 点对点的队列 2 工作队列模式Work Queue 3 路由模式Routing 4 发布/订阅模式Publish/Subsc ...

  4. CTFd+ubuntu service搭建等待更新

    CTFd是一款基于Apache2.0的协议的开源CTF平台,最新版本目前为1.20.该平台功能强大,基本上能够满足目前的CTF竞赛需求,同时,该平台提供了强大的插件功能,可以自己进行插件开发实现自己的 ...

  5. javascript LinkedList js 双向循环链表 Circular Linked List

    javascript LinkedList: function Node(elem, prev, next) { this.elem = elem; this.prev = prev ? prev : ...

  6. centos7 发送邮件

    yum install sendmail mailx sharutils mutt libreport-plugin-mailx -y yum update libreport-plugin-mail ...

  7. ES增删改查

    了解了一下python对es 7.5的操作,记录下,不难: #!/usr/bin/env python # -*- coding: UTF-8 -*- from settings import Con ...

  8. python在iis获取header

    #print os.environ['QUERY_STRING']#print os.environ['HTTP_HOST'] #print '---------------------------- ...

  9. YbtOJ#903-染色方案【拉格朗日插值,NTT,分治】

    正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/3 题目大意 两个长度为\(n+1\)的序列\(a,b\) \(a_i\)表示涂了\(i\)个 ...

  10. Windows下Vim插件管理器Vundle的安装以及使用简介

    Vundle下载 从GitHub clone仓库 cd %USERPROFILE% git clone git@github.com:VundleVim/Vundle.vim.git %USERPRO ...