案例分析作业

项目 内容
这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 案例分析作业要求
我在这个课程的目标是 初步获得软件工程师的能力
这个作业在哪个具体方面帮助我实现目标 了解市场分析,任务量定位等需求分析流程

案例分析作业

VSCODE体验

使用评测

安装配置

vscode的安装较为简单,直接从官网下载相应版本即可。vscode的配置则相对麻烦,对于C语言需要在setting.json中添加相应的编译器路径,还有一些诸如code runner等插件的配置,总的来说对于新手不是特别友好,好在官方文档比较细致,有step by step的步骤,按照官方文档的操作,还是能够配置好的。

功能特性

从功能上VScode实际体验还是非常不错的,支持高度的定制化。利用typescript和vscode自定义的变量,定制化的粒度非常细,甚至你可以定制某个快捷键在什么条件下触发,比如笔者这里就定制了alt+T快捷键在terminal打开的情况+聚焦到terminal的情况下关闭terminal, 再配置好vim和相应快捷键,全程键盘流,完全不需要鼠标。

同时在setting.json中还能设置各种语言的编译路径,执行命令等各种不同功能。

在代码运行方面,Vscode通过使用code runner插件(给韩老师点赞),或者自己配置launch.jsontask.json方式来配置不同项目的编译路径,编译命令,执行文件等。以下是笔者图像处理课程中之前使用通过mingw构建的opencv库的task文件,非常灵活。

在速度和视觉效果方面,vscode的速度非常快速,基本无延迟,比记事本稍慢,比idea等快很多。在视觉效果方面,vscode的非常踩在我的审美点上,各种切换非常丝滑。

bug发现

bug严重程度使用如下星级表来标识(下同)

严重⭐️级 具体描述
⭐️ 可优化功能,对少部分用户有轻微影响
⭐️⭐️ 轻微缺陷,对部分用户有一定影响
⭐️⭐️⭐️ 重大缺陷,对部分用户影响较大
⭐️⭐️⭐️⭐️ 重大漏洞,严重影响大部分用户使用
⭐️⭐️⭐️⭐️⭐️ 重大漏洞,严重影响几乎所有用户使用

1.智能感知速度较慢

  • bug描述

    创建一个新的文件夹,然后在其中新建一个.cpp文件后,部分头文件报错,vscode在停止输入约一分钟后报错消失。

  • bug复现

    环境:windows10+mingw,使用bits/stdc++.h

    复现频率:稳定复现

  • bug分析

    严重性: ⭐️(轻微影响用户使用,让人不太爽)

    原因: 应该是对于某些头文件vscode需要寻找一段时间

  • 预期改进

    预期增加智能感知速度,毕竟停止输入后一分钟还在报错的话,难免让人有爽。感觉可以在用户输入阶段对某些头文件进行路径搜索。

2.打开同一文件资源占用率高

  • bug描述

    如果使用两个不同的vscode窗口打开同样一个cpp文件,回导致其中C/C++ extension 线程资源占用率过高

  • bug复现

    环境:windows10+mingw

    复现步骤:在桌面建立bug文件夹,其中建立a.cpp文件,分别用vscode打开桌面文件夹和bug文件夹后,再同时打开a.cpp文件,稳定后CPU占用率为17%左右,内存占用1100MB左右。若使用两个vscode的窗口分别打开不同问价夹下不同的c++文件,稳定后CPU占用率为10%左右,内存占用为800MB左右。

  • bug

    严重性:⭐️(基本没有影响,应该没有人无聊到通过不同文件夹打开同一个文件)

    分析:两个code打开不同文件可能需要一些多余的同步操作,资源占用高可以理解。而且使用两个窗口打开同一个cpp文件应该也不是vscode设计的本意,在正常情况下如果已经有一个vscode窗口打开了某个文件后,再选择使用code打开则会直接跳转到已经打开的窗口。

用户采访

对于vscdoe,我们采访了C同学和H同学。

C同学是计算机学院18级的学生,使用vscode写verilog等硬件代码,有丰富的开发经验。

Q:想问一下你平时使用vscode的频率高么,vscode的体验如何

C:编辑器的话我基本只用vscode,为编辑器功能还是比较完善的吧,我比较喜欢的特性就是插件很丰富,作为一个轻量级的开发环境还是挺好用的,而且可以直接用WSL,这个特别方便。

Q:那有啥不足么

C:对一些小众的语言的代码补全或者高亮显示不太完善,比如verilog

Q:这个应该算是插件的问题吧

C:对,但是一些别的编辑器对verilog支持就比较好.比如emacs,sumlime

Q:嗯嗯好的,感谢接受采访~~

H同学同样是计算机学院18级的同学,有着丰富的全栈开发经验

Q:请问你平时都是用什么编辑器和IDE啊

H:vscode、vim、sumlime、visual studio、jb全家桶还有micropython

Q:哇好多呀,那你觉得这些vscode和其他的有什么区别呢

H:主要是感觉比较轻量,打开速度快,并且对文件的修改可以即时显示。。。默认深色背景令人感到愉悦。然后还有一些嵌入式设备的开发适配vscode,甚至必须搭配vscode

Q:哪有什么你觉得不太满意的么?

H:跑代码太麻烦了,配置文件夹很烦人,.vscode

Q:嗯好多,感谢接受采访~

软件评分

软件评分使用如下表格(下同)

总的来说我给这款软件评分为e),下面是具体评分。

类别 描述 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分)
功能 核心功能 10(非常自由的编辑器)
细节 有什么为用户考虑的细节? 6(IDE及格线)
用户体验 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 6(IDE及格线)
辅助功能 一些辅助功能如皮肤等 10(dark皮肤大家都爱)
差异化功能 这个软件独特的功能. 它对用户的吸引力有多大? 10(速度快,简洁,多拓展的编辑器)
软件的效能 占用内存, 启动速度, 内存泄漏情况 8(速度较快,内存较小)
体验 软件的适应性 10(毕竟是微软产品,全平台流程支持)
成长性 记住用户的选择, 适应用户的特点,用户越用越方便 6(不同电脑无法同步)
用户有控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 10
用户自由度 用户对软件自定指的程度 10(没得说,基本所有功能都能自定义)

Visual Studio 体验

使用评测

安装配置

visual studio 的安装同样非常简单,和vscode不同的是visaul studio多了一个installer,可以选择不同的组件下载。安装好后还支持组件的卸载和其他组件的安装。

功能特性

在功能特性上,visual studio体验则更加偏向于大型项目管理。

代码管理方面,支持资源管理器来从逻辑上组织不在同一文件夹下的源代码,头文件,外部依赖,资源文件等也有相应的特殊文件夹来对应。在配置方面更多是图形化的界面,配置的选项也非常丰富。

在自动补全的方面,visual studio 的自动补速度很快,补全信息非常丰富,代码跳转等也非常流畅。

在代码运行调试方面,visual studio功能非常强大,支持不同的监视器组,性能查探器等功能,功能非常强大。

在同步性方面,visual studio的配置跨终端,只要是登录microsoft账号,就能自动同步之前的设置。

在速度方面,visual stuido启动速度较慢,好在启动后速度较为丝滑。

这里配上笔者上学期编译原理课程的代码结构截图.

bug发现

项目未重新build

  • bug描述

    当在项目中某些宏定义内容修改后,需要先清理project,然后再重新编译修改才有效。否则仍然会使用修改前编译的 .exe文件进行调试和运行

  • bug复现

    复现环境:visual studio 2019 + window10 + MSVC

    复现步骤:使用上学期编译原理项目,首先将C0文法的编译器优化级别开到0级别,得到编译后文件opt_0.txt,再将编译优化级别开到3级,得到编译后文件opt_3.txt。清空项目重新编译运行,得到编译后的new_opt3.txt文件,此时发现opt_0.txt和opt_3.txt一致,new_opt3.txt则和opt_3.txt不一致。

    复现频率:稳定复现

  • bug分析

    严重性:⭐️⭐️⭐️(比较影响用户体验,程序行为不一致还要考虑重新生成项目)

    分析:怀疑visual studio为了性能可能有一些缓存机制,所以有些情况下代码更新,可能未必即使更新。

  • 预期改进

    当然是能够支持每次修改后,不需要重新清理project也能使修改有效啦~

账户登录缓慢

  • bug描述

    当在其他电脑登录一个新的Microsoft账号时,需要较长时间进行配置。

  • bug复现

    复现步骤:上学期编译上机时每次登录后都要花费较长时间

    复现频率:稳定复现

  • bug分析

    严重性:⭐️(没啥影响,比较正常)

  • 预期改进

    希望微软大大能做点优化~~

用户采访

用户采访采访了D同学,D同学是软件学院18级的学生,有丰富的项目开发经验.

Q:请问你平时使用vs么,体验如何?
D:挺好的,写C# 很给力,跟unity结合的非常好,自动补全很给力,unity内置函数都能标出来。

Q:那有啥缺点么

D:缺点就是太大了,占硬盘,启动慢

Q:那除了这个vs外,你还有用其他写过c#么,体验如何

D:没,只有写unity用过vs

Q:那你觉得vs和其他的像JB全家桶写代码体验有什么区别呢

D:补全比jb差一点,就是单词写了一半光标移开再回来再续着写的话就没有补全了,其他感觉功能很像,没啥特别大的差别。

Q:好的,感谢接受采访~~

软件评分

总的来说我给的评分是e)非常推荐,下面是具体评分

类别 描述 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分)
功能 核心功能 10(非常专业的IDE)
细节 有什么为用户考虑的细节? 4(界面显示细节比较一般,与vscode差距较大)
用户体验 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 10(完全无干扰,专业!)
辅助功能 一些辅助功能如皮肤等 8(还不错,没有vscode好使)
差异化功能 这个软件独特的功能. 它对用户的吸引力有多大? 10(高度集成,专业)
软件的效能 占用内存, 启动速度, 内存泄漏情况 6(速度一般)
体验 软件的适应性 10(毕竟是微软产品,全平台流程支持)
成长性 记住用户的选择, 适应用户的特点,用户越用越方便 8(支持不同客户端同步)
用户有控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 10
用户自由度 用户对软件自定指的程度 7(略好于主流IDE)

分析

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

对于vscode的话,我认为6人三年能做出来,看了看github库上的vscode的源码,vscode的难度可能在于平台方面还有对插件的支持上,应该是可以的。

对于visual studio我不认为能做出来,visual studio广是对各种平台,编译器支持,内嵌的调试工具这些就够6个人喝一壶的了,visual studio 不算组件,保守估计百万行代码量。

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

vscode的优势很明显,就是高度定制化的编辑器,速度非常快,功能拓展非常方便,而且生态较好。加上对远程代码编写调试和多平台支持,目前应该是第一。

visual studio同样优势明显,代码的组织,分析等功能都非常强大,同类竞品中应该同样也是第一(宇宙第一IDE)。

你在第一部分发现的bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?可以从下面的可能性中选取几个:

对于visual studio 的账户登录还是vscode的智能感知较慢的我觉得可能就是没有必要,这个对于使用用户的影响较小,而且估计工作量不小。visual studio重新buildvscode 打开同一文件资源占用率高可能是由于和某些设计理念理念有了冲突,所以决定不修复。

建议和规划

市场概况

根据 Global Developer Population and Demographic Study 2020指出2020年程序员人数在2690000(两千六百九十一万)。

年份 人数
2018 2390000
2019 2640000
2023 2770000
2024 2870000
2030 4500000

市场现状

  • 市场上的产品

    • 简洁类

      sumbline,notepad++,vim

    • 综合类

      JB全家桶,eclipse

  • 上述产品定位、优势与劣势在那里?

    • 简洁类

      顾名思义,就是简洁~~,本质是一个编辑器,支持高度定制化来完成IDE的工作。

      优势非常明显,就是快,对于单个文件打开非常有优势。缺点也很凸出,就是功能有限,配置插件也非常繁复。

    • 综合类

      综合类定位于大型工程,团队项目管理等功能。优势在于功能完善,稳定性高。缺点在于比较冗余,打开速度等也较慢。

市场与产品生态

产品的核心用户为程序员,年龄跨度在18~60岁之间。

典型用户有以下几种

  • 计算机专业大学生:使用vscode来完成学校的作业和项目,需求是具有美观的UI,快速启动,有一定定制化功能
  • 专业的软件工程师:使用visual studio 进行大型项目开发,需求是能够支持团队协同开发,代码性能,复杂度等具体分析功能,同时支持不同平台的开发。

产品规划

新功能开发

vscode我希望能支持用户自定义代码块组织,以C语言为例,vscode目前是能自动识别出函数、宏定义等内容,然后根据用户设定使用,然而并不支持用户自定划定一个代码块,将其在逻辑上组织在一起。希望能够支持用户选定一段代码,将其也加入。

  • N:对于比较长的代码,单单只是将其划分成若干个函数对于组织代码逻辑是不够的,如果有一个能够支持更加高层次代码结构划分的方式,会让代码开发和阅读都变得更加高效
  • A:用户能够自己选定一段代码将其划分成一个代码逻辑块,或者将多个自动生成的函数划分成一个逻辑块,逻辑块能够自己命名,并且能够整体移动
  • B:使得较长的单文件代码组织更加简洁,高效
  • C:据我所知,目前市面上基本没有此功能的编辑器和IDE,此功能能成为vscode一个亮点,使使用它的程序员得其更加"自由",增加产品竞争力。
  • D:已经有固定的用户群体,只要在vscode里面发个通知,说出了个新功能就行了。

自动生成代码结构

团队规划

1人美工,三人开发,两人测试

每周规划

周数 安排
1-3 用户调研,明确需求,确定设定是实现框架
4~8 完成初版开发
9 进行初版评测,简单测试
10~12 对出版细节和功能进行完善打磨
13~15 测试,晚上版本
16 版本发布
posted @ 2021-04-08 19:06  duckingss  阅读(202)  评论(2编辑  收藏  举报