项目 内容
课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接
作业:BUAA软件工程结对编程项目作业 作业要求
课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力
作业目标 个人软件案例分析作业
教学班 周五上午006班

第一部分

安装并部署软件

visual studio code 安装

visual studio code 是一款轻量级的代码编辑IDE,安装十分简单,仅需要到官网选择下载对应的安装包,打开安装包后根据安装步骤一步一步操作即可。安装包需要选择对应系统,笔者使用的是windows系统因此选择Windows x64,并且版本有Stable和Insider两种,其中Stable是目前发行的版本最新的最稳定的版本,Insider是为对外发行的测试版本。这里选择Stable版本下载

下载安装后,打开vscode,这个时候vscode应该只是一个普通的编辑器,如果要作为开发环境开发相应语言的工程,需要安装相关语言的插件以及学会配置编译的快捷方式。以python为例,需要在左边的扩展窗口里搜索python插件,使vscode能支持python语言的检错。

这时候仅是让vscode支持了python语言的基本检错,而并不能编译运行python,需要编写相关的json配置文件,才能指定vscode执行相关的编译运行工作。json配置文件的写法网上有很多,这里仅做展示。配置文件写在当前工作区的./.vscode/文件夹下,就可以使vscode自动编译运行当前文件夹下的python文件。

visual studio 安装

visual studio是一款强大的IDE软件,与vscode的轻便不同,visual studio要比vscode要复杂,vscode很多相关配置文件是需要自己设定自己实现,而visual studio大部分都已经将配置文件给你配好了,只需要安装就行了。而且对于编程新手来说,visual studio会更适合,不仅不需要进行过多的配置,而且还具有debug,性能监测,优化编译生成等各种各样便捷开发者的功能。但同时,既然功能强大那必然会造成程序的复杂度,因此和vscode相比会显得笨重,而且不大美观。

安装visual studio也很简单,在官网选择相关版本下载installer即可。笔者选择的是2017版本的visual studio

打开installer,选择要安装的语言支持包,之后安装,这里以选择c语言为例

安装完visual studio后,不用像vscode那样需要配置多种插件才能支持编译运行,直接就可以创建工程进行程序编写。

体验软件功能

1.使用10–30分钟这个软件的基本功能(请上传使用软件的照片)

visual studio code 使用

使用vscode编写一个简单的python语言,输出从0-99的整数,并使用配置的任务自动运行:

可以观察到,vscode不仅外观简洁美观,并且在安装了python语言插件后,他可以自动为你识别语法,并且提供相关的语法检查和语法提示,以及自动补全功能,并且还会告知你相关函数的声明内容。在按下Ctrl+Shift+B后可以根据先前配置的json文件,一键运行python程序。

visual studio 使用

下面是我结对编程使用visual studio编写过程中的一个截图,是在对写好的代码进行单元测试。

visual studio的功能十分强大,不仅有相关语言的自动补全,代码提示,断点调试,而且还能进行各种性能测试,单元测试等等,各种配件都可以一键安装,不用像vscode样还需要写相关json,这对于刚刚接触这方面的新手来说确实是非常方便。

2.描述使用这个产品的过程,解决了用户的问题么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么?

这两款IDE,总的来说都解决了用户的基础需求:编写代码并能够运行调试。这两款软件在各方各面都各有不同,也有不同的优缺点:

  • 界面上:

    • 在界面的简洁美观方面确实要吊打visual studio几条街,vscode的基本界面就是代码和资源管理,并且没有过多其他的装饰,
    • visual studio的各种信息提示栏太过于繁琐,即使能够关闭,但关闭后看起来仍是不如vscode简洁。
  • 数据量:
    • vscode非常轻量级,都是用户需要在让用户自己去手动配置。
    • visual studio由于功能非常强大,当你安装一个语言支持包后,就会将该语言支持包的各种调试工具,测试工具都统统给你下载了,虽然非常适合不知道装啥的新手,但是会占用大部分空间,并且减慢启动速度。
  • 功能:
    • 功能上这两者都表现的很优秀,虽然vscode的功能相对visual studio来说要少一些,但是也基本满足了用户的需求。并且vscode必要时也可以自己配置。
  • 准确度:
    • 由于vscode的大部分功能都由插件来提供,但是插件有官方的,有开源的,各种版本的插件很可能造成各种各样的不兼容问题,因此在使用上难免会出现一些冲突的问题。
    • visual studio的功能大部分都是由官方实现的,标准比较统一,因此错误率会低一些。
  • 用户体验:
    • 个人认为,大部分新手可能会喜欢visual studio,毕竟功能齐全也不用进行过多的配置,编程爱好者可能会喜欢vscode,毕竟美观以及轻量。而大工程的开发者可能选择visual studio会多一些,因为大工程配置可能比较复杂,用vscode不一定能够配置得来,并且相关的测试功能visual studio也比较强大。

3.对产品有什么改进意见?

总的来说vscode和visual studio的体验感还是不错的,希望这两个产品能够持续了解用户的需求,了解用户在使用时遇到的各种问题,并且能够在一定周期内进行修复和更新,提供新功能满足需求。

希望visual studio能够做一些优化,尽可能解决数据量大带来的笨重的问题,并且希望能够将界面设计的更加美观一些,显得不那么复杂。

测评并找bug

Bug 1:vscode退出时不提示保存可能会触发的问题

vscode在退出窗口时,如果窗口中有未保存的文件,vscode并不会提示保存,而是将你编写一般的程序默默的保存到了工作区缓存区中(并没有保存到原文件中)。这样当然有好处,就是当程序因莫名原因崩溃退出时,你编写一般的文件并不会丢失,再次打开vscode并打开上一次编辑的工作区或文件夹(注意必须是上一次编辑该文件的文件夹或工作区)便能够恢复自动保存的文件。

但是如果是你忘记保存文件,然后默默的点击了关闭窗口,然后再使用vscode打开另一个文件夹下的文件。那么当你再下一次打开vscode时,并不会再次帮你打开你上次忘记保存的那个文件的工作区。而你在磁盘下用其他编辑器打开该文件时并不是你最新修改完的文件。因此当你要找你之前写一半的文件时,你必须得用vscode再次打开同一工作区才能恢复。但是你如果忘了具体的工作区是哪个,那可能就会比较麻烦。

例如上图,笔者打开了在/week5/目录工作区下打开并编辑了test.txt文件,关闭vscode后用vscode打开/week5/test2/output.txt的文件,这时候你的test.txt文件并没有保存到磁盘,如果你能记得之前是使用/week5/文件夹工作区编辑的文件,那么还能找回文件,但如果你忘了而是打开了根目录/工作区,那么并不能恢复test.txt,而要找到原工作区不一定非常简单,如果目录结构非常复杂,那么可能需要一个一个尝试,会非常麻烦。

因此vscode可以完善一下这方面的功能,比如在主界面展示有未保存文件的工作区目录,以便用户方便的找回忘记保存的文件。

Bug 2:vscode使用系统自带的终端时存在吃字符的情况

当没有安装vscode的终端插件时,使用的是默认的系统终端。但是如果终端中存在的信息达到一定数量时,可能会存在吃字符的情况。比如使用vscode终端运行刚刚编写的简单python程序(输出0-99),当运行了几十次后,想往上翻看之前的运行结果,很可能会在中间某个地方看到某一次的运行结果的字符被吞了:

例如上图,在终端的某个位置,发现59这个结果不见了。这个bug曾经困扰了我很多次,比如在调试程序时,程序输出结果较长,想要往上翻翻输出的结果时却发现结果不见了,误以为是自己程序写出了bug。但使用了系统自带的终端后就没有问题了。因此这个bug虽然复现率并不高,但是造成的用户体验却并不好。

Bug 3:visual studio的部分自动补全存在bug

例如下图所示。使用visual studio写switch语句。当第一次进行自动补全时,可以将switch自动补全显示,但当第二次想要对switch变量进行修改时,按下自动补全的回车后,光标却自动跳到了后边的地方,需要重新输入才行,非常不方便。

我认为这个地方可能是某个功能和自动补全冲突了,因为可以观察到一开始出现的switch_on是红色字体的,可能这里存在某种提示功能,但我尚不明白此处是什么功能,导致第一次自动补全不能正常进行。并且这个bug是稳定复现的,用户体验不佳。

第一部分结论

  • vscode:非常推荐
  • visual studio:好,不错
  • 下表每项满分5分
visual studio code visual studio
核心功能 5.0 5.0
辅助功能 4.3 4.8
用户体验 5.0 4.0
美观 4.8 3.8
软件可拓展性 4.5 4.4
可成长性 4.3 4.0

第二部分

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

我认为,无论是visual studio code也好,或者是visual studio也好,这两个软件都是十分强大的IDE软件,具有极其复杂的功能也丰富的语言支持包。如果说仅是完成基本的特定语言的编辑器+编译器的功能,带有自动补全和语法识别,那么应该需要1年的时间,但是要完成像vscode和visual studio这样具有超级良好的可扩展性(可以新增语言支持包,新增各种插件),估计需要2-3年时间慢慢规划,设计,优化。并且像visual studio要支持如此多的功能(包括性能测试等),其最终编译生成的项目大小肯定非常大,那么肯定还需要花费一定时间进行代码的优化,算法的设计等,使软件占用的资源尽可能的低,以增加用户体验。

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

visual studio code

作为轻量级的开源的代码编辑器,vs code具有各种强大的优势:软件轻量又功能齐全;具有各种自由化自定义的设置;插件编辑器分离,能够自主开发插件自主使用。市面上同样也有各种各样的轻量级IDE,但大多数IDE仅支持少数甚至一种语言,并且没有自定义设置的功能,例如有Dev C++用于c++的编写,Eclipse支持Java的开发。这些IDE和vs code相比最大的劣势在于不能够支持多语言。同时vscode的外观也是吊打了他们几条街。因此我觉得他能在业界内排第一

visual studio

visual studio作为专业级的代码编辑IDE,他和vscode一样能够支持多种语言的编写,并且对于每一种语言他都具有丰富的功能供开发者开发。相比之下其他的IDE虽然功能也足够强大,但是也只是局限于一小部分语言,例如JetBrain的IDEA支持Java的开发;PyCharm支持python程序的开发。这些IDE虽然也具有和visual studio的同等功能,但是只支持小部分的语言,因此我认为在支持范围方面,visual studio还是能排到业界第一。但即使这样,在编写特定的语言时,我还是比较喜欢选择一些专门的IDE来编写代码。毕竟visual studio的过于笨重的框架以及各种令人难以理解的菜单栏名称有时候实在令人劝退,选择一些较为轻量级的对特定语言的专门的IDE反而更加舒适。

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

对于visual studio,我建议软件团队可以花费更多的时间研究下怎么优化代码框架以及优化算法,使软件在具有强大的功能的同时也不显得太臃肿。现在市面上的各种专业型IDE都具有一个普遍的问题为软件太过于臃肿,不仅占用磁盘空间,而且每次运行也要占用大部分内存,效率不高。如果visual studio能够把臃肿的缺陷改掉,使其轻量而且运行速度加快,那肯定能够成为专业级IDE界内的一大清流。

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

对于vscode关闭时没有提示保存文件的bug,我认为是对用户需求掌握不好,对用户的操作行为习惯不了解造成的;我理解设计人员的初衷,默认将文件保存到缓冲区而不提示用户保存其实是一种友好的设计,他不仅方便了不习惯按ctrl+s的用户,同时也解决了莫名崩溃会导致的文件丢失的问题。但是设计团队可能忘记考虑了如果使用vscode重新打开了新的工作区,文件依旧没有被保存到磁盘的问题。而且缓冲区和工作区是一一绑定的,用户如果找不到原来的工作区,那就找不到原来的文件。虽然触发这个bug的操作并不是用户的常规操作,但是设计团队也应该做些考虑。

对于vscode的终端吃字符的bug,我认为是测试把关不严,敷衍了事,没有注意在特殊的配置或环境下测试造成的,因为我尝试问过其他同学,对于装了bash或者适用linux或者mac系统的同学在使用vscode上并没有这样的问题,而我在使用系统自带的powershell也不会有这样的问题,唯独vscode使用系统默认shell时会频频出现。因此我觉的测试人员估计没有尝试多平台测试,而没有发现这样的小bug

对于visual studio的自动补全bug,我认为也是测试把关不严,敷衍了事,没有注意在特殊的配置或环境下测试。因为我怀疑触发此bug是因为自动补全功能和某种其他的功能冲突了导致的(虽然我也不知道那个其他功能用意何在)。测试员可能没有对这一冲突做测试,从而导致了这个bug的产生。

第三部分

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

代码编辑IDE这个市场还是非常大的,21世纪是一个信息时代大数据时代,那么计算机的发展必定会成为科技发展的一大主流,接触代码的人肯定会越来越多。而且不仅仅是程序员会接触到代码,各种分析工程师,其他行业也会通过编写小程序的方式来完成他们的工作。因此程序员的数量必然是超级多的,在国内少则几百万多则上千万,这里还不包括职业专业不是程序员的一些业余码农。因此,开发一款好用的IDE软件必然能够收到这个市场的极度欢迎。

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

在上一个部分已经大概介绍了这两个产品的优势和劣势了,也比较了市场上的各种同类产品的优劣势。vscode的优势在于轻量并且可拓展性高,visual studio的优势在于支持多语言且功能丰富。但visual studio和其他同类产品(IDEA,Pycharm等)相比的劣势在于臃肿且菜单栏提示表意不清楚。对于vscode的直接竞争产品我认为是在Mac系统上的xcode,同样也具有轻量级的特点以及界面美观的优点,这两个产品的相似度很高具有较大的竞争力。

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

这两个产品的核心用户必然是程序员,但是程序员也分为:初学者程序员;专业程序员;业余程序员。

  • 对于初学者程序员(大部分年龄较小,学历和我们相似,专业多种多样以理工科为主),会偏向于选择功能多而且高度自动化(即不用太多的自定义设置如visual studio)的IDE,毕竟初学者什么都不懂,如果什么功能都要初学者自己去配置,那他必然会恨死这个IDE。但也有部分兴趣爱好较强的初学者,学习能力较高,他可能会不喜欢visual studio的臃肿,会喜欢选择轻量级的vscode
  • 对于专业的程序员而言(大部分年龄为大学毕业,职业为专业的码农,包括设计师等),会偏向于选择具有较多功能的IDE(visual studio),毕竟功能多在做开发时候会更加方便一些,不会因为配置环境的问题而头疼许久。
  • 对于业余爱好的程序员(年龄各个阶段都有,学历较高),首先他们对于IDE的需求就不需要那么专业,好用就行。并且对这方面有爱好,那么他们会偏向于选择轻量级可拓展性高的产品(vs code)。

功能:你要设计什么样的功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用NABCD分析.

如果我是vscode的项目经理,我可能会想要设计一键自动配置环境的功能。对于使用vscode编写特定语言的代码时,由于vscode仅是一个编辑器而已,用户需要自行安装插件,设置json才能使vscode支持自动编译运行的功能。

这对于专业人士可能都只是小case,但对于初学者而言,并不了解json格式和原理,更不了解需要安装什么样的插件,这样使用vscode可能会有些许困难。因此希望能够设置一个一键配置环境,根据用户需要的语言以及让用户指定工作区后,对该工作区做一键配置。因为圈住新用户就能够进一步扩大软件影响力。

  • Need:解决初学者不了解json格式和json原理的问题,方便初学者自动配置对某一种语言支持的环境
  • Approach:可以对一些常用语言,收集一些比较好用的用户json配置,以及一些好评率高的插件,作为自动配置的基础
  • Benfit:能够圈住新用户群,扩大软件影响力,体验感更佳
  • Competitors:同型IDE由于只支持少数语言,因此对少数语言的环境配置可能会做到非常友好,如果自动配置功能能够实现,必然能够在这一功能上和这些同型软件同台竞技
  • Delivery:在完成这一功能后,可以将该软件向各个初学者机构做推广,圈住更多的初学者。

【BUAA软工】软件案例分析的更多相关文章

  1. “深度评测官”——记2020BUAA软工软件案例分析作业

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

  2. BUAA软件工程:软件案例分析

    BUAA软件工程:软件案例分析 Author:17373015 乔玺华 项目 内容 这个作业属于哪个课程 2020计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析博客作业 我在这个 ...

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

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

  4. [BUAA2021软工助教]案例分析作业总结

    目录 一.作业链接 二.优秀作业推荐 A+作业推荐 A作业推荐 三.总结 所有案例分析总结 特色与优点 问题与建议 不同类产品案例分析Bug汇总 CSDN问答社区.Stack Overflow.Seg ...

  5. [2017BUAA软工助教]案例分析小结

    BUAA案例分析小结 一.作业要求 http://www.cnblogs.com/jiel/p/7631784.html 二.统计数据 总人数 神策数据 博客园博客 必应词典 30 1 12 17 三 ...

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

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

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

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

  8. BUAA2020软工作业(五)——软件案例分析

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

  9. BUAA软件工程个人作业-软件案例分析

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

随机推荐

  1. P1996_约瑟夫问题(JAVA语言)_可能是最简单的解法了!

    思路:使用队列模拟. 判断是否为出圈的数.如果不是,把数加入队列尾部:如果是,输出并删除. 题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数 ...

  2. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  3. java例题_34 用指正对三个数排序

    1 /*34 [程序 34 三个数排序] 2 题目:输入 3 个数 a,b,c,按大小顺序输出. 3 程序分析:利用指针方法. 4 */ 5 6 /*分析 7 * 指针方法的本质是按地址传值,将a,b ...

  4. Spring笔记(三)

    Spring AOP 一.AOP(概念) 1. 什么是AOP 面向切面编程(方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高了 ...

  5. Java学习之this关键字的使用

    •区分成员变量和局部变量 public class Person { String name; int age; public void set(String name,int age) { this ...

  6. 201871030103-陈荟茹 实验二 个人项目―《D{0-1}KP问题》项目报告

    项目 内容 课程班级博客链接 班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 1.理解掌握软件设计的过程中的各个环节2.掌握github的使用,将自己的项目上传至githu中 这个作业 ...

  7. Java 使用 Maven BOM 统一管理版本号

    一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号.如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将变得十分麻烦.为了 ...

  8. JavaScript课程——Day01

    1.网页由三部分组成: 1.1.HTML:超文本标记语言,专门编写网页内容的语言.(结构) 1.2.CSS:层叠样式表.(样式) 1.3.javaScript:网页交互的解释性脚本语言,专门编写客户端 ...

  9. 1.5.1- HTML之相对路径

    网页需要图片,首先需要找到它.实际工作中,通常新建一个文件夹专门用于存放图像文件,这时插入图像,就需要采用"路径"的方式来制定图像文件的位置.路径可以分为相对路径与绝对路径. 相对 ...

  10. SpringBoot自定义配置以及IDEA配置提示

    本篇文章将会讲解在springboot项目中如何实现自定义配置以及在IDEA或者Eclipse中实现配置项提示,就像spring的配置提示一样 想要做到这点其实非常简单 1.添加依赖 <depe ...