BUAA2020软工作业(五)——软件案例分析
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 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:
- VS的代码静态检查延迟非常高,有时它会提示我们缺少了某个头文件,需要我们手动添加,但是当添加了以后VS要过很长时间才会取消这个提示。在我们的结对作业中,我就感受到了这种高延迟的不便,如图:
在我添加了这个UILine头文件后,这个vector里面的UILine还是会报错,只有切换一下文件才会变成正常格式。这里并不是我的电脑比较卡,我的mac有16G内存,属于性能比较高的那种了。所以VS在代码静态检查的效率方面还有待优化。
- 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软工作业(五)——软件案例分析的更多相关文章
- BUAA2020软工作业——提问回顾与个人总结
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- BUAA2020软工作业(四)——结对项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力,团队协作能力 这个作业在哪 ...
- BUAA2020软工作业(二)——对软件工程的初步理解
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...
- [福大软工] W班 软件产品案例分析
作业要求 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1300 评分细则 第一部分 调研,评测 (3 ...
- BUAA2020软工作业(三)——个人项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...
- BUAA2020软工作业(一)——谈谈我和计算机的缘分
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- BUAA软件工程_软件案例分析
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 软件案例分析 课程目标 培养软件开发能力 本作业对实现目标的具体作用 对案例进行分析以学习软件开发的经 ...
- 2020BUAA软工个人博客作业-软件案例分析
2020BUAA软工个人博客作业-软件案例分析 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分 ...
- [软工作业]-软件案例分析-CSDN
[软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...
随机推荐
- Docker(40)- docker 实战三之安装 ES+Kibana
背景 参考了狂神老师的 Docker 教程,非常棒! https://www.bilibili.com/video/BV1og4y1q7M4?p=16 es 前言 es 暴露的端口很多 es 十分耗内 ...
- 7-31 堆栈操作合法性 (20 分) PTA
7-31 堆栈操作合法性 (20 分) 假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该 ...
- Golang入门学习(五):异常处理
文章目录 2.5 错误处理机制 2.5.1 基本说明 2.5.2 入门示例 2.5.3 自定义错误 2.5 错误处理机制 2.5.1 基本说明 Go语言追求简洁优雅,因此并不支持传统的try-catc ...
- NLP与深度学习(四)Transformer模型
1. Transformer模型 在Attention机制被提出后的第3年,2017年又有一篇影响力巨大的论文由Google提出,它就是著名的Attention Is All You Need[1]. ...
- 【C++基础教程】第二课
一,上次的课后练习答案 1,输出1+2=3 2,输出2 2.25 2.25 2.25 3,第一空iostream或bits/stdc++.h 第二空main(),main(void)或main(int ...
- springboot:@ConditionalOnProperty根据不同时机注入不同实现的bean
一.引言 在开发中经常会碰到这样的情形,一个接口会有不同的实现,但在开发中都是基于接口的注入,那么怎么根据不同的需求注入不同的类型就是一个值得考虑的问题.在注入属性时常用的两个注解是@Autowire ...
- 致Python初学者,Python常用的基础函数你知道有哪些吗?
Python基础函数: print()函数:打印字符串 raw_input()函数:从用户键盘捕获字符 len()函数:计算字符长度 format(12.3654,'6.2f'/'0.3%')函数:实 ...
- PHP中的文件系统函数(二)
这次我们来学习的是一些不是太常用,但却也非常有用的一些函数.它们中有些大家可能见过或者使用过,有一些可能就真的没什么印象了.它们都是 PHP 中文件系统相关操作函数的一部分.存在即合理,或许只是我们的 ...
- Shell系列(27)- 条件判断之两个整数比较
两个整数之间比较 Liunx中,都是字符型,但是加了数值比较的选项,所以自动将他们转换成了整数型进行比较,不需要对这些参数进行变量转换或者重新声明 测试选项 作用 整数1 -eq 整数2 判断整数1是 ...
- PHP 合并2个链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. <?php class ListNode{ var $val; var $next = NULL; ...