zoukankan      html  css  js  c++  java
  • 软件工程-案例分析作业

    软件工程-案例分析作业

    项目 内容
    这个作业属于哪个课程 2021春季软件工程(罗杰 任健)
    这个作业的要求在哪里 案例分析作业
    我在这个课程的目标是 提高工程能力,成为一名真正的软件开发者
    这个作业在哪个具体方面帮助我实现目标 学习经验

    第一部分:调研与评测与分析

    VS Code

    使用体验

    VS Code非常轻便,安装的时候也非常简单,安装完成后,打开是一个非常清爽的界面:

    下面以一个我较长处于的工作场景对vscode的功能进行一个简要的介绍:

    ​ vscode界面上面的菜单栏是一些编辑相关的菜单,最左边的一排是主要的功能区:

    ​ 第一个是可以查看当前的工作目录,目录下的文件和子目录均会以树形的形式显示出来,如果这个工作目录是个git目录,每个文件以及目录都会被标记状态,例如被修改未提交,新创建未追踪等等,这样在进行一些工程开发的时候非常方便。关于git目录下文件的详细信息是在左边第三个图标,它可以将此时修改但未提交的文件全都列出来,点击文件之后会直接在文件中显示修改与删除的内容,类似git diff,这样可以方便的定位修改之后新引入的bug的位置。

    ​ 第二个是搜索,可以在工作区的所有文件中搜索相关的内容,支持正则表达式,支持限制搜索范围(设置包括的文件和排除的文件),非常方便,例如在查找某个函数在哪里被调用,就可以直接搜索,不需要一个文件搜索一次。

    ​ 第四个是远程开发功能,能够使编辑器链接远程服务器,进行开发,包括链接本地的WSL。如下图,vscode远程连接了一个Ubuntu。这是我非常喜欢使用的功能,因为我进程需要使用集群运行代码,如果在本地编辑器写完了,复制过去跑,出现一些bug的话就很麻烦,需要同步两端的修改,复制过来复制过去的。vscode这个功能就可以很方便的直接链接,调试。而且vscode这个功能是基于ssh的,相比于一些其他的ide的远程功能使用ftp,sftp协议,vscode可以实时同步,操作简单。

    ​ 最后,vscode有着非常丰富的插件系统,其对多种语言的支持,都是通过插件实现的。包括第一张图片中代码的格式化与配色方案都是插件完成的。

    ​ 安装好相关的插件与写好相关配置文件之后,可以一键编译运行,一键调试,上面的几个按钮即为暂停,运行,step in,step out,停止。左边可以添加查看,监控线程运行情况,查看断点等等。

    功能性BUG

    以下两个bug都是我在日常使用的过程中发现的。

    BUG1:官方插件崩坏,无法读取配置文件信息
    • BUG发生时的测试环境:

      • Vscode 1.55
      • 官方插件 C/C++,1.2.2
    • BUG的可复现性

      • 这个bug极其恶劣,至今我无法恢复,无法复现,之前也曾经发生过一次,在漫长的时间之后插件突然提示重装,之后自动修复了,但之后不久又发生了一次,这次我无论是重装插件还是清除配置文件重新配置均无法恢复。
    • BUG具体情况描述

      • Vscode提供了一键格式化代码的功能,同时还包括了回车自动缩进的功能,同时我本地配置了在cpp文件中,输入分号自动格式当前行。
      • 但是突然之间,就无法格式代码,显示扩展C/C++无法格式代码"/.../*.cpp"(代码路径),除此之外没有任何报错信息,并且本来设置好的都是Tab缩进视为4个空格,但是现在回车自动缩进就变成了2个空格,在底部状态栏显示的也是正常的四个空格,自己手动输入Tab也是四个空格,之后换行自动缩进出了问题,同时大括号也会错位。

    变成了这种奇怪的样子。在网上多次寻找解决方法,均没有相关方法。

    • BUG分析
      • 关于这个BUG的可能成因,感觉还是我系统的某些环境出现了问题,我曾多次重装插件,调整插件和软件版本,均未解决这个问题。在询问了许多其他同样的vscode重度用户后发现这个bug貌似很罕见,没见过其他人出现过这个bug。
      • 严重性:三星(非常影响用户体验,但很罕见并且可能更多的是由于用户环境所致)
      • 改进建议:无,本人并不会vscode插件开发,也不清楚如何去调试插件,于是也就难以追踪问题。
    BUG2:代码高亮部分渲染出错
    • BUG发生时的测试环境:
      • Vscode 1.55
      • 官方插件 C/C++,1.2.2
    • BUG可复现性
      • 经常发生,频率接近100%。
      • 触发条件:在cpp文件的注释的下方有其他颜色(非灰色)的语句,并且这个注释要作为单独的一行。
      • 复现步骤:找到一个完成的cpp文件,找到任意两条相邻的语句,在其中间插入一个新行并且增加一条注释。
    • BUG具体描述:
      • 单独成行的注释,原本是灰色,但是有部分子串会被染成变量的配色(红色),并且字串位置相对编辑器界面固定,即在行首输入空格,相当于注释向右挪一格,注释被染成红色的部分也会相对注释向左挪移格,即绝对位置不变(x行y列)。

    评分

    • 结论:非常推荐
    类别 描述 评分
    核心功能 分析三个核心功能,功能设计和质量。 10
    细节 有什么为用户考虑的细节? 8
    用户体验 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 5
    辅助功能 一些辅助功能如皮肤等 10
    差异化功能 这个软件独特的功能. 它对用户的吸引力有多大? 7
    软件的效能 占用内存, 启动速度, 内存泄漏情况 9
    软件的适应性 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 9
    成长性 记住用户的选择, 适应用户的特点,用户越用越方便 7
    用户有控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 7
    用户上手难度(自选) 用户是否能很容易的掌握软件的基本用法 4
    • 核心功能 10分

      • vscode有强大的编辑功能,包括强大的代码补全,换行缩进,路径补全,自动索引,显示注释等等
    • 细节 8分

      • 在遇到新文件类型时能自动寻找推荐的插件方便用户意见安装,提供设置搜索功能,方便用户找到需要调整的设置,但是仍会存在提示不完善不清楚的情况。
    • 用户体验 6分

      • 主进程除了打开的时候会出现一个感觉没什么必要的欢迎页显示版本最近使用的工作区等等,别的基本不会对用户产生任何打扰,但是vscode插件繁多,一些常用插件例如python插件java插件,在启动的时候每次都会出现欢迎页面(例如我的工作环境可能会偶尔打开一个python文件或者java文件,这时就不得不关掉弹出的欢迎页,每次打开都会弹出,这对我造成了一定程度的干扰)
    • 辅助功能 10分

      • 由于插件众多,所以vscode的辅助功能及其强大,几乎任何地方都可以定制,包括配色方案,皮肤,甚至文件图标等等。
    • 差异化功能 8分

      • 插件众多,虽然其他同类编辑器或者是大型ide基本也有很丰富的插件市场,但vscode在丰富性上居首位.
    • 软件的效能: 9分

      • vscode作为一个轻量化编辑器,启动速度极快(但是不如vim),小文件启动略弱于window自带的记事本,大文件(10MB以上)的开启速度秒杀没有对这方面进行优化的记事本软件。占用内存较小,但是其中一些官方插件例如c/c++,由于设计问题,在编译的时候会保留大量缓存文件,如果是像我的工作环境需要编译大量单独的.cpp文件,积累下来对硬盘空间的占用还是比较大的,需要手动清理。
    • 软件的适应性: 9分

      • 基本功能不受网络的影响,大小屏幕的适应性都很好,基本可以任意分屏,极多的快捷键使得不用鼠标也可以顺畅使用,更有vim模式,使得基本可以不使用鼠标,具有良好的跨平台运行能力。
    • 成长性: 6分

      • 主进程适应性一般,一些插件可以实现相关功能,例如有一些基于机器学习的代码补全插件,可以学习用户习惯.
    • 用户有控制权: 9分

      • 系统状态在底部状态栏有信息反馈,出错都有错误提示,以及可能的恢复方案。关键操作有确认提示,快捷操作键基本可以设置。
    • 用户上手难度: 4分

      • 用户上手不安装任何插件的vscode非常简单,但这种状态的vscode就仅仅是个高级记事本而已,但是一旦像把vscode配置的十分顺手,需要大量安装插件,并且去寻找相关的配置文件教程,否则难以使用.

    分析

    六人团队制作同样的软件

    ​ vscode实际上并不是一个十分庞大的软件,他的大部分十分强大的功能都由插件提供,其本身则是提供了各种各样的操作接口,供插件开发者调用.但是即便如此,这项工程也不是仅有6个人组成的毕业生可以在短时间完成的.我查阅了相关资料,vscode团队最初之后10个人,后来增加至20人,他们都是经验丰富的程序员,基本都参与过vscode的前身软件的开发,这样的团队也开发了一年多,才在之前的web编辑器的基础上写出了vscode的第一个预览版本.

    ​ 所以如果是一个仅有6个大学生组成的团队,大概的开发时间可能需要3年以上.

    优劣对比

    ​ 在题目中,老师选择了vscode和,Visual Studio这两款软件让我们分析,实际上,vscode更是一个编辑器,而visual studio是一个集成度十分高的大型ide.所以这里的vscode部分的对比更主要的是和轻型编辑器的对比,包括vim,emacs,sublime.

    这张图是我在https://pypl.github.io/IDE.html截取的截至今年4月的ide受欢迎程度排行,可见vscode已经排到了第四名,超过了vim等等.

    vscode相比vim等老牌编辑器最大的优势就是学习曲线遥遥领先,Vscode的使用文档与其他的编辑器相比也是最友好的.vscode还有一大优势就是内置了Terminal,可以让开发者直接在vscode里面运行脚本,而不必切换窗口运行,并且有着非常好用的调试器与git支持,这些都是vim这些编辑器不太容易做到的.

    vscode最大的优点就是丰富且至今仍在快速增长的插件生态,可以在vscode里面直接搜索安装和管理插件,易用性完胜vim.

    vscode仍然是个很年轻的编辑器,相比老牌vim等编辑器需要优化的地方也有很多,例如vscode的性能就比不上vim,emacs.

    vscode在软件工程方面感觉做的非常优秀,因为这是一个开源软件,所以其的整个开发过程都建立于开源之上,每个月vscode团队都会在github上列出每个月会做的事情,可以看到详细的设计,并且可以通过issue等提出自己的建议.

    vscode的排名已经很清楚了,第四.其在功能的强大性方面,确实不如专用ide,如Visual Studio等.

    在软件工程方面的建议:

    ​ 是不是可以再把报错信息出的再详细一点,利于用户自行解决问题,要知道vscode的主要用户就是程序员,都是有很高技术力的,详细的报错信息有利于解决问题,像前面提到的bug1:代码格式化失败只提示一个"插件无法完成格式化",是不是有有点不太够.

    第一部分发现的bug,为何软件团队不能在发布前修复?

    感觉vscode这种bug的形成一般都很复杂,因为插件众多,甚至有可能起冲突,所以非常不方便debug.

    Visual Studio

    Visual Studio是一款专用于c/cpp/c#/.net开发的大型重量级ide,具有极高的集成度,功能非常强大和丰富.

    使用体验

    Visual Studio的功能十分强大、包括了编写,调试,分析,部署等等功能.

    Visual Studio 支持 IntelliSense,基于AI给予代码建议,方便开发者准确地键入变量,无论导航到所需的任何文件、类型、成员或符号声明时的复杂程度如何,都能保证运行速度。

    同时支持CodeLens 帮助开发者轻松找到重要见解,例如对代码所做的更改、这些更改的影响以及是否对方法进行了单元测试。 可一目了然地查看参考、作者、测试、提交历史记录和其他重要信息。

    在结对编程的时候,可以使用 Live Share共同实时编辑和调试。 通过强制每个用户使用一致的编码样式的访问控制和自定义编辑器设置来个性化会话。

    功能性BUG

    BUG1:代码检查函数应用出错
    • BUG发生时的测试环境:

      • Visual Studio 2019
    • BUG的可复现性

      • 这是我去年使用的时候遇到的bug,我已经忘记如何复现了。
    • BUG具体情况描述

      • 记得是在修改某些函数的时候,所有的cin函数都会被ide报错,提示找不到这个函数。
    • BUG分析

      • 关于这个BUG的可能成因:大概是因为函数的修改,导致ide扫描代码内容出现了问题,并且没有及时更新。
      • 严重性:一星(基本不影响用户体验,虽然报错,但可以正常编译)
      • 改进建议:提高ide检查频率?
    BUG2:utf编码以及中文问题
    • BUG发生时的测试环境:

      • Visual Studio 2019
    • BUG的可复现性

      • 在代码中加入中文输出即可复现。
    • BUG具体情况描述

      • vs默认难以更改代码的编码,所以在输出中文的时候就会出现乱码。
      • 解决方法比较困难,需要从犄角旮旯里的某个设置项让vs能够显示“高级保存选项”这个设置,才能够将代码页改成utf-8编码,在调试输出的时候,需要更改注册表才能够修改控制台的默认中文编码。
    • BUG分析

      • 严重性:二星(遇到的时候会很难受,解决方法较麻烦,有的甚至需要额外插件的帮助)
      • 改进建议:默认开启“高级保存选项”这一设置,支持修改控制台编码。

    评分

    • 结论:非常推荐
    类别 描述 评分
    核心功能 分析三个核心功能,功能设计和质量。 10
    细节 有什么为用户考虑的细节? 8
    用户体验 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 9
    辅助功能 一些辅助功能如皮肤等 5
    差异化功能 这个软件独特的功能. 它对用户的吸引力有多大? 10
    软件的效能 占用内存, 启动速度, 内存泄漏情况 4
    软件的适应性 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 9
    成长性 记住用户的选择, 适应用户的特点,用户越用越方便 7
    用户有控制权 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 7
    用户上手难度(自选) 用户是否能很容易的掌握软件的基本用法 8

    分析:

    六人制作同样的软件

    如果只有6个刚毕业的大学生的话,预计开发5年以上,上不封顶。因为VS的功能实在是太强大了太多了,开发整个软件的学习成本,架构重构的成本都会非常高。

    优劣对比

    显然排名第一,由上面那张表格可以看出,VS的受欢迎程度非常之高。

    VS的优势非常之多,号称"宇宙第一IDE",和前文的vscode相比,vs的易用性非常强,对于一个开发者来说,VS安装之后就可以直接使用来进行工程代码的编写编译和运行,但是vscode的话,就需要去学习安装哪些插件,如何编写插件的配置文件使得其能够正常工作.

    VS的缺点也很显而易见,由于功能过于集成,所以整体感觉非常臃肿,内存占用和启动速度都有很大优化空间,在启动一些大型工程的时候,貌似VS每次启动都会把目录下的所有文件都扫描一遍,所以如果你的工程目录下有很多很多文件,例如把图像数据集放进了工程目录中,打开工程的时候甚至能卡死好几分钟,在编译上机的时候大家也能感受到VS的启动速度,“写题十分钟,开机半小时”。
    Visual Studio既不能指定文件的默认编码,也不能批量设置文件编码,只能通过"高级保存选项"一个个的设置,文件多的时候非常让人恼火。

    在软件工程方面的建议

    建议VS优化一下用户体验,过多的工作窗口,单调的配色,这些方面都可以优化。

    第二部分 建议和规划

    市场概况

    编辑器、IDE市场十分巨大,从互联网从业人员到大学生,无人不需要一款优秀的编辑器与IDE。

    几乎所有的程序员都是VS,vscode的直接用户,潜在用户包括所有的在校大学生(任何人都有转码的可能)。根据工信部公布的数据显示,在去年(2020)全年中,我国软件业从业人数平均698万人。即软件有约七百万的直接用户。根据《中国统计年鉴2020》,我国的博士硕士本科生加起来约6450万,就算只有百分之五的在校学生学习相关专业,也有近三百万的潜在用户。

    市场现状

    目前市场上的产品:

    目前市场上的产品基本以及覆盖了轻型编辑器和重型IDE两方面。包括VIM,eclipse,IntelliJ,pycharm,Clion,VS,vscode,sublime,codeblocks。

    产品定位和优劣势和关系:

    vim,vscode,sublime都是轻型编辑器,这些产品都有很丰富的插件市场,但是vscode整体的学习曲线和用户体验都做的比另外两家要好不少。

    eclipse,intellij,pycharm,clion,VS,codeblocks都是集成度很好的大型IDE,eclipse和intellij构成直接竞争关系,就我个人体验上来说,intellij的功能和用户体验都要比eclipse强不少,但是eclipse的最大优势就是这是个完全开源免费的软件,而intellij是商业软件,商用要收取不少费用,所以eclipse依旧被大量使用。pycharm和其他的不构成竞品关系,其主要针对的是python语言,而其他的是java和cpp。clion与VS,codeblocks构成竞争关系,Clion与codeblock我都没有深度体验过,在此不做分析。

    市场和产品生态:

    核心用户群:

    ​ 这些产品的典型用户就是程序员,普遍高智商高收入年轻化,几乎涵盖了全部的学历范围。表面需求就是能够使用这些工具进行工程开发,潜在需求:新人希望这些工具能够更容易上手使用,资深程序员希望这些工具功能强大,总而言之都是希望工具能够匹配他们现阶段的开发需求,带来高生产力。

    产品规划:

    新功能

    我希望在当前软件的基础上加上功能配置出错的分析与日志功能。

    N(Need需求):vscode的插件十分繁多,所以在应用许多插件的时候不可避免的就会产生冲突 ,并且VS和vscode的许多配置都很繁杂,一旦出错难以定位,所以需要这样一个出错分析与日志功能,方便用户自行解决问题,而不是在StackOverflow里疯狂搜索。

    A (Approach 做法):应用程序内部的接口调用(vscode就是通过开发各种接口使得支持各种插件)是不是可以在出错追踪打开的时候写入日志,读取的json配置可以在日志中展示。

    B (Benefit好处/成本):方便用户使用。

    C (Competitors 竞争):现有软件较少开放这一功能。

    D(Delivery 交付):直接进行产品的更新。

    项目规划:

    6个人,1个人美工,2个人测试,3个人开发。

    • 第1-3周:需求分析与功能架构设计。
    • 第4-9周:完成核心功能与界面开发
    • 第10周:Alpha测试,评估易用性。
    • 第11-13周:第二轮迭代开发
    • 第14~15周:beta测试,收集用户意见,bug修复
    • 第16周:正式发布
  • 相关阅读:
    第十六届全国大学智能汽车竞赛竞速比赛规则-讨论稿
    从0到1设计一台8bit计算机
    在 CentOS7 上安装 MongoDB
    sea.js五分钟上手
    自动调试自动编译五分钟上手
    自动调试自动编译五分钟上手
    在react底下安装环境
    在react底下安装环境
    推荐几款好用的云笔记软件
    推荐几款好用的云笔记软件
  • 原文地址:https://www.cnblogs.com/member-re/p/14638651.html
Copyright © 2011-2022 走看看