项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 软件案例分析作业
我在这个课程的目标是 进一步提高自己的编码能力,工程能力
这个作业在哪个具体方面帮助我实现目标 学习其他软件的优点和不足,并吸取经验
其他参考文献 《构建之法——现代软件工程》第二版

一、写在前面

本次作业我选择了微软公司的两个代码编辑器:Visual Studio、VS Code来做评测。为什么选择这两款软件呢?是因为这两款软件非常热门,一个是Windows上最强大的编译器,一个是一款便捷好用的跨平台编辑器。

Visual Studio(简称VS)是美国微软公司的开发工具包系列产品,是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。通俗的讲,是一款编译器。

VS Code,表面上看就是在VS后面加了个Code,但是它和VS的本质截然不同。VS Code是美国微软公司的一个项目:运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。通俗地讲,VS Code是一款编辑器,也就是说它的本质是用来写代码的,而不是做调试和开发的。

但是,和其他文本编辑器(Atom,Sublime Text等)类似,VS Code也有丰富的插件库。通过这些插件的配置,我们也可以在VS Code中实现代码的编译运行调试功能。

二、调研,评测

1. Visual Studio

Visual Studio(简称VS)是美国微软公司的开发工具包系列产品,是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。通俗的讲,是一款编译器。

使用VS运行一个demo的截图:

和相关的集成开发环境(CodeBlocks,Clion)相似,直接在代码编辑好后一键运行即可。图中可以看到VS是用的独立的控制台进行运行。

数据量

VS软件很大,使用基本功能大概就需要几个G的空间,是因为它集成了很多功能,有着很完备的调试系统和测试系统。

界面

VS的默认界面看起来很乱,尤其是调试的时候,可能是因为功能多的缘故。但是我认为功能多和界面美观二者不冲突。这方面可以对比JB公司的Clion。我在日常中绝大部分时间使用Clion,不仅界面美观,而且个人感觉调试功能不输VS。

如图,VS的调试界面:

如图,Clion的调试界面:

可以看到Clion在调试时会把各个变量的信息打在变量出现的响应位置,看起来更加清晰。而且Clion有自带的console,在运行程序的时候不会再弹出一个控制台,也改善了使用体验。这就是为什么我一直喜欢用Clion的原因。

功能和准确度

功能方面,VS最强大的编译器的称号实至名归,功能丰富程度方面是任何其他IDE不能比的。

关于VS的几个bug:

  1. VS的代码静态检查延迟非常高,有时它会提示我们缺少了某个头文件,需要我们手动添加,但是当添加了以后VS要过很长时间才会取消这个提示。在我们的结对作业中,我就感受到了这种高延迟的不便,如图:

在我添加了这个UILine头文件后,这个vector里面的UILine还是会报错,只有切换一下文件才会变成正常格式。这里并不是我的电脑比较卡,我的mac有16G内存,属于性能比较高的那种了。所以VS在代码静态检查的效率方面还有待优化。

  1. VS的Live Share插件可以说是非常难用了,有以下几个特点:首先延迟非常高,链接上去大概要2-3分钟,而且有可能连上去也看不到对方的文件,而且有的时候写着写着代码突然就断连了,这样之前写的东西都白费了,不知道是不是需要代理服务器的原因,但是使用起来非常不方便就是了。而且有这么个神奇的现象:刚进共享窗口的时候,参加者的视角会随着分享者的滚动而滚动,也就是说你的鼠标滚轮是没有用的,分享者的视角滚动也会影响你。这个现象只能通过手动切换到另一个文件再切换回来才能解决。

2. Visual Studio Code

VS Code,表面上看就是在VS后面加了个Code,但是它和VS的本质截然不同。VS Code是美国微软公司的一个项目:运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。通俗地讲,VS Code是一款编辑器,也就是说它的本质是用来写代码的,而不是做调试和开发的。

但是,和其他文本编辑器(Atom,Sumlime Text等)类似,VS Code也有丰富的插件库。通过这些插件的配置,我们也可以在VS Code中实现代码的编译运行调试功能。下面是我用VS Code的C/C++插件编译运行一个C程序demo的图片:

数据量

和VS比起来,VS Code就算是轻蝇量级的了,整个软件只有几百MB,插件也非常小,并且对所有系统都支持(VS只能在Windows上用)。

界面

从上面图片可以看到VS的UI十分干净整洁,使用起来方便,没有VS的花里胡哨的功能,是我比较喜欢的编辑器的类型。

功能和准确度

VS Code只是一款编辑器,所以功能也不是特别丰富,在这方面是比不过VS的。由于平时我使用的不是特别多,所以也没有发现什么bug或是使用不方便的地方。

三、分析

以下问题只针对VS和其中发现的bug来谈。

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

既然有专业UI支持,那么我们只考虑后端开发问题。首先VS的功能十分强大,目前我使用了大概两个月的时间,个人估计只使用了其中不到1/3的功能,包括代码编写,调试和单元测试等。因为之前写过类C文法编译器,以我个人的经验来看,对于一种语言,写一款内置编译工具大概就需要一个多月的时间,还不能说写的有多好。再加上调试工具,测试框架,以及对于计算机大学毕业生而言相关新知识的学习,我感觉实现最基础的功能就得用一年的时间。其他的功能例如代码分析,静态检查等也需要很久的时间才能开发出来,对于一种语言,开发时间至少在三年以上,何况VS还集成了多种语言。所以说Windows上的最强IDE的称号VS实至名归,需要很多资深开发专家组成团队取开发,想要一个6人的大学毕业生团队开发出来几乎是不可能的事情。

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

优点:VS的优点就是功能非常全面,可以用来做几乎所有的开发,这里我们和Jetbrains公司的软件进行对比,JB公司对于每一种语言都设计了一款对应的IDE,所以说综合性不是很好,VS一个软件包含了所有的功能,我们只需要有选择性地安装即可。

缺点:VS的缺点也是功能太全面了,对于大部分用户来说,一些功能几乎是用不到的,但在安装的时候也会被安装进去,这就显得VS的软件十分庞大,所以对于大部分用户来说会转向VS Code或者Clion(本人Clion玩家)。这就造成了软件普及型不是特别好。

如果要我排名的话,Clion > VS Code > VS。

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

开发一个VS Lite版,像JetBrains公司那样对于每种语言针对性地实现一个软件,此外,UI也要能简则简,这样可以很大程度上减小软件体积,增加用户数量。

四、建议和规划

1. 这个软件市场有多大?潜在的用户有多少?

VS是这个世界上最出名的IDE,所以市场规模是世界性的,潜在用户包括大中小软件开发企业的工程师。但是应该没有太多学生使用,因为它太专业了,在我了解的范围内,大多数同学偏爱VS Code。

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

  • Eclipse:免费开源的Java编辑器和IDE,有很好的插件机制,支持各种各样的扩展和插件。最初是一个Java IDE。现在扩展到支C/C ++,Java、Peri、PHP、Python、Ruby以及更多的语言。
  • Code:: Blocks:免费开源的自由软件,是一款支持高度定制跨平台IDE,并坚持所有平台上执行始终如一地的效果。对于经常在不同平台切换的开发人员而言,非常方便。它支持三种语言C、C ++和Fortran语言。优点是体积小,小型开发和学习足够用了。缺点是功能不完备,并且UI界面太丑。
  • Xcode:Xcode是Apple出品的Mac OS X下的集成开发环境。内置一系列的工具集用于为iPad,iPhone和Mac的应用开发。Xcode是一个单窗体界面,在这个界面中控件可以很容易地与实现代码进行连接。支持AppleScript、C/C ++、Java、Swift 和Objective-C。优点是没有竞争对手,开发ios和mac os应用必备,比较容易市场化。缺点是对语言和windows应用开发支持的少。
  • JetBrains:JB公司旗下有Clion,Pycharm,Idea等多款应用,每个应用支持一种语言。优点是对于一种语言的开发者来说不需要装太多的东西,体积小,并且UI界面美观,比较受青年开发者的喜爱。缺点是集成性不够好,不能一个软件使用多种语言。

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

目前VS的核心用户是资深软件开发工程师,年龄30岁以上,学历本科以上,专业是软件开发,收入年薪20万以上。

作为项目经理,我会开发一个Lite安装模式,略去大部分的不常用功能进行安装,保证正常使用。同时我会优化UI界面,使VS更年轻化。这样的话学生党以及对UI美观程度要求比较高的年轻用户也会选择进行VS使用。这样可以拓展用户群体,使VS在市场上有更好的发展前景。

BUAA2020软工作业(五)——软件案例分析的更多相关文章

  1. BUAA2020软工作业——提问回顾与个人总结

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  2. BUAA2020软工作业(四)——结对项目

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力,团队协作能力 这个作业在哪 ...

  3. BUAA2020软工作业(二)——对软件工程的初步理解

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...

  4. [福大软工] W班 软件产品案例分析

    作业要求 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1300 评分细则 第一部分 调研,评测 (3 ...

  5. BUAA2020软工作业(三)——个人项目

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...

  6. BUAA2020软工作业(一)——谈谈我和计算机的缘分

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  7. BUAA软件工程_软件案例分析

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 软件案例分析 课程目标 培养软件开发能力 本作业对实现目标的具体作用 对案例进行分析以学习软件开发的经 ...

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

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

  9. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

随机推荐

  1. Docker(40)- docker 实战三之安装 ES+Kibana

    背景 参考了狂神老师的 Docker 教程,非常棒! https://www.bilibili.com/video/BV1og4y1q7M4?p=16 es 前言 es 暴露的端口很多 es 十分耗内 ...

  2. 7-31 堆栈操作合法性 (20 分) PTA

    7-31 堆栈操作合法性 (20 分)   假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该 ...

  3. Golang入门学习(五):异常处理

    文章目录 2.5 错误处理机制 2.5.1 基本说明 2.5.2 入门示例 2.5.3 自定义错误 2.5 错误处理机制 2.5.1 基本说明 Go语言追求简洁优雅,因此并不支持传统的try-catc ...

  4. NLP与深度学习(四)Transformer模型

    1. Transformer模型 在Attention机制被提出后的第3年,2017年又有一篇影响力巨大的论文由Google提出,它就是著名的Attention Is All You Need[1]. ...

  5. 【C++基础教程】第二课

    一,上次的课后练习答案 1,输出1+2=3 2,输出2 2.25 2.25 2.25 3,第一空iostream或bits/stdc++.h 第二空main(),main(void)或main(int ...

  6. springboot:@ConditionalOnProperty根据不同时机注入不同实现的bean

    一.引言 在开发中经常会碰到这样的情形,一个接口会有不同的实现,但在开发中都是基于接口的注入,那么怎么根据不同的需求注入不同的类型就是一个值得考虑的问题.在注入属性时常用的两个注解是@Autowire ...

  7. 致Python初学者,Python常用的基础函数你知道有哪些吗?

    Python基础函数: print()函数:打印字符串 raw_input()函数:从用户键盘捕获字符 len()函数:计算字符长度 format(12.3654,'6.2f'/'0.3%')函数:实 ...

  8. PHP中的文件系统函数(二)

    这次我们来学习的是一些不是太常用,但却也非常有用的一些函数.它们中有些大家可能见过或者使用过,有一些可能就真的没什么印象了.它们都是 PHP 中文件系统相关操作函数的一部分.存在即合理,或许只是我们的 ...

  9. Shell系列(27)- 条件判断之两个整数比较

    两个整数之间比较 Liunx中,都是字符型,但是加了数值比较的选项,所以自动将他们转换成了整数型进行比较,不需要对这些参数进行变量转换或者重新声明 测试选项 作用 整数1 -eq 整数2 判断整数1是 ...

  10. PHP 合并2个链表

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. <?php class ListNode{ var $val; var $next = NULL; ...