项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任建) |
这个作业的要求在哪里 | 软件案例分析要求 |
我在这个课程的目标是 | 掌握软件开发的方法论和诸多技术,与同学合作开发出好的软件 |
这个作业在哪个具体方面帮我实现目标 | 从成功的软件中借鉴经验并分析它的问题 |
作业正文 | 如下 |
一、上手体验
Visual Studio
当我们使用Visual Studio创建一个新的C++控制台应用解决方案时,除了自动生成的项目文件夹以及demo .cpp文件外,还会自动生成.vs文件夹和一些配置文件。在之前的使用中我并未对这些自动生成文件给予关注,而本次通过观察和查阅资料了解到它们的作用:.vs目录用来存储当前用户在解决方案中的工作配置,包括VS关闭前的窗口布局、最后打开的选项卡、调试断点等信息。帮助用户再次打开VS时找回熟悉的感觉;工程中各个项目对文件的引用依赖关系、项目的虚拟目录等则记录在项目的.vcxproj文件中,并由工程的唯一指定入口.sln文件统一管理。这些XML文件在繁多的代码文件中为用户建立起“工程”的抽象层次。而.pdb,.obj,.ilk等二进制文件则是在C/C++项目编译链接过程中提供辅助或生成的。在不同的编译器选项中,部分文件将做出相应的改变。
VS对于软件开发的理解是top-tier的:抽象层次的建立,中间过程的拆分,体现的是对软件开发的break-down思想。Solution-Project-Code三位一体,使软件开发变得十分平滑。同时,“Solution”的命名时刻提醒着开发者:“你们正在为解决一个问题做出贡献”;对内(Debug)/对外(Release)的“两个面孔”,包含着VS对软件工程实践方法的最佳探索——当开发者在Debug版中完成了复杂的调试及测试后,切换至Release版本,同时打开编译器优化设置(Let it Roam),使生成的.exe效率大幅提升——合人机之力为一体,软件开发俨然变得有了仪式感。
此外,VS社区在提供丰富的框架可供随时选择更换的同时还在被无数的插件所完善着,这些插件为开发者提供许多便捷的功能,而好的插件可以填补VS本身在某些方面的遗漏与欠缺——it's a real open community!
Visual Studio Code
Visual Studio Code的轻盈是在打开的一瞬间定义的:相较于VS的初始页面“Start Page”带来的条理性,VS Code的“Welcome”选项卡则显得轻松而友好——无论你使用JavaScript,Python还是依赖Azure或Docker进行开发;无论你是Vim的狂热粉丝又或是Sublime的“一生推”,VS Code都能使你一键feel home。这使其成为轻便IDE的同时又成为功能强大的Notebook。使用VS Code写程序简直不要太快——打开文件夹,new file一个文件,编码,在内置命令行运行。丰富的插件和launch.js的自由配置又使针对各种语言的调试在简单配置后变得很容易。
VS Code的界面设计非常清爽。用户能看的主视图上包含所有必要的模块,并且尺寸恰到好处:使用频率最低的“创建远程窗口”和“创建分支”被放到左下角的两个非常小的按钮上,左侧的tool bar使用图形简单明了地提供所有必要功能,而剩下的部分则全部留给代码和命令行,且整个界面没有可以随意移动的区块——在VS Code,终于不用担心组件窗口被鼠标托着乱飞了。
VS Code借助丰富的插件资源亦能成为辅助开发的利器。编写和预览markdown、阅览图片文件都可在VS Code内通过插件实现。支持切屏使得文件编辑变得更为轻松。
此外,仅通过简单的ssh配置和相应插件,VS Code便可以实现远程开发,使用户可以在不使用可视化桌面的前提下以可视化的方式编辑远端文件结构。这无疑为部署在服务器上的软件的开发带来了巨大的便捷,扩展了IDE的生态圈。我使用了VS Code的Remote-SSH插件连接至校内的服务器。
评测总结
VS的庞杂繁复使得它成为复杂软件开发的大杀器,而VS Code的简洁轻盈使得它成为小项目及日常练手时的不二之选。二者”谁更方便“的问题是辩证的:当我们只是”写着玩“,或者在刷OJ时,我们并不希望还要花费一定的时间打开IDE并登录账号,也不需要任何额外的配置文件。我们所需要的只是一个装有MinGW或Clang的电脑,和一个内嵌命令行、搭载快速联想插件的notebook;而譬如当我们在给LeetCode网站开发一个展示所有题目例程的运行过程的功能时,我们需要的是一个能够支持框架、能屏蔽掉编译链接过程、能快速编写单元测试、支持性能分析、能辅助进行有效项目管理、能使模块衔接更为流畅的大型IDE来使我们更多地关注软件功能是否能满足用户需要。对使用范围的准确定位和开放性使得这两款产品在各自的领域成为不可替代的经典。两个软件都非常推荐。
量化评分
类别 | VS | VS Code | VS得分 | VS Code得分 |
---|---|---|---|---|
核心功能 | 面向大型软件开发提供全面的核心功能 | 面向小规模开发。原生支持功能不多,主要依靠插件配置 | 10 | 7 |
辅助功能 | 原生辅助功能一般,难以配置;插件质量参差不齐 | 提供了diff,zen mode等不错的辅助功能;轻松实现远程连接 | 6 | 10 |
界面 | 模块齐全,但容易误操作 | 简洁清爽,没有多余的模块 | 7 | 9 |
用户体验 | 不易上手,但上手以后对效率的提升巨大 | 对如文档等代码周边任务有较好的支持 | 9 | 9 |
功能性bug
- VS在打开新工程时并不能总是从上一次打开的文件目录开始搜索,有时会回到一个C盘的默认目录中。
- 之前在安装Live Share插件时,由于下载速度较慢中断下载后再启动VS时无法找到启动路径。使用Visual Studio Installer修复后可正常启动。
改进意见
VS在添加引用依赖时操作较多,可添加一个教程或图形化地展示工程的依赖库并支持拖拽添加。
二、分析
使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
VS功能繁多,且需要开发团队具有非常好的编译基础。6人中至少一半是相关方向的硕士毕业生的情况下开发时间估计在4-5年;VS Code工程量相对少,估计2-3年可完成。
分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?
同作为C/C++的大型IDE,VS相比于Jetbrains的CLion对内存的压力小,运行比较流畅。且集成测试、图形调试等核心功能,以及文档编辑和git支持等辅助功能都较好;但VS在跨平台方面没有CLine做得好,且MSBuild的可扩展性不如CMake。
同作为前端IDE工具,VS Code较Sublime在大文件读写上有很大优势,且原生支持更多代码编辑功能。但在社区支持和插件数量上不及Sublime。
VS和VS Code可以说是目前全球最流行的两个开发环境,如今二者支持的开发语言正在不断扩大,且开始引入AI辅助开发(Visual Studio IntelliCode)。有望确立新的杀手功能,进一步扩大优势。二者在同类产品中应该都在前位(1-3)。
从各方面的问题,推理出这个软件团队在软件工程方面可以提高的一个重要方面。
在结对编程的模块对接时因VS对依赖项的添加和各种配置没有引导导致花费了较长时加尝试了很多方法。建议通过网站或程序内引导给予用户更多使用时的支持,使软件更易上手。如此可收获更好的口碑。
三、建议和规划
市场规模
根据埃文斯数据公司(Evans Data Corporation)的统计,2018年全球便已经有2300万软件开发人员,并预计在2033年将达到2770万。而使用主流编程语言编程的人还包括在校学生和许许多多的其它行业从业人员。他们都是VS和VSCode的潜在用户。可见,这一市场规模庞大且在呈增长趋势。
改进功能及核心用户群
如今机器学习和分布式计算等领域仍然火热,而这些领域的研究都依赖远程服务器的支持。如果我作为新上任的项目经理。会将注意力主要放在改善VS跨系统适应性以及远程开发的稳定性上。所面向的核心用户群为年龄在20到40岁的高校及企业中需要进行远程开发的研究人员/工程师。他们在要求核心功能的稳定性之外还对界面有着较高的要求。因此UI的优化也是十分重要的,这一点可以通过问卷形式征集用户在使用过程中遇到的不便有针对性地改善。