以VS Code Remote Development相关功能为例,选择一个用例进行需求分析和逆向工程,按课堂要求完成一篇博客文章。
VS Code Remote Development功能
通过vscode得官方文档可以得知,Remote Dev允许用户使用容器、远程计算机或 WSL作为完善开发环境。用户可以做到在同一操作系统上进行开发,或者分离开发环境等。Remote Dev packages中的扩展都可以直接在容器内、WSL 中或远程计算机上运行。总而言之,我们无需在本地搭建繁琐复杂得环境进行开发,甚至无需在本地上保存源代码!这一特点具有便捷、安全的意义,使使用者感觉像在本地运行时一样。其架构如下所示:
vscode remote有许多用例,包括但不限于ssh、live share等。
用例选择--GitHub Codespaces
github是十分常用的远程仓库,通过vscode进行基于远程库的合作开发是十分常见的场景。再次基础上,GitHub提供了codespaces功能。开发者不仅限于通过远程库进行版本管理了,现在甚至可以直接进行远程开发。而vscode也配备了这一remote dev插件。
GitHub Codespaces 为任何项目提供云托管的开发环境。用户可以从Visual Studio Code或基于浏览器的编辑器连接到Codespace。此外,GitHub Codespaces 为开发环境带来了许多好处,这些优势通常是为生产工作负载保留的,例如可重复性和可靠性。GitHub Codespaces 也是可个性化的,允许开发人员自定义。
需求分析
1、创建codespace
可以看到,需求有:创建新的codespace
2、编辑codespace
在codespace初始选项中,需求有,选择模板代码仓库、初始分支、地区选择、机器类型选择等。用户可以根据自己的需要自定义这个空间,类似于华为的云ai平台。当然,可能都是要付费的。
3、进行Codespace code!
可以看到,我们就进入了一个“网页版”的vscode。同样的,如果使用vscode codespace插件,也大差不差。资源管理器中是默认的仓库模板,包含了基本的前端目录,npm包管理,git版本管理等。在这个编辑器上,我们可以编写配置进行debug,或生成页面,添加扩展等,简直和本地使用vscode别无两样。
在此页面的需求有:链接远程环境
当然会有人说,那岂不是可以当作远程的服务器使用。当然可以,但是限时。
4、用例图
逆向工程
-
通信协议和传输方式:远程连接到代码仓库的通信协议和传输方式。可能是SSH、HTTPS等,在使用远程仓库时也有各种连接到github的方式。针对选择的协议和传输方式,需要了解其相关规范和实现细节。例如,如何与远程环境建立链接以及传输数据,如何控制远程环境。
- 身份验证和安全性:在创建codespace时就需要指定用户,在之后用户离开后,研究如何对环境进行保存,以及用户登录后如何回复,如何在远程安全保存代码,防止身份攻击。
- 连接管理和会话保持:在用户远程编辑代码时,需要保持稳定的链接,并考虑自动保存等问题。
- 远程文件系统访问:需要考虑如何实现远程文件系统访问,包括文件的上传、下载和同步等,以便于用户同步代码、扩展、静态资源等。同时研究文件系统访问的协议和API,如SSH文件传输协议(SFTP)等。
- 用户界面和交互设计:分析用户界面的实现,如何连接到远程编辑器并通过浏览器等显示出来。研究如何模拟本地用户的各种具体需求,使用户感觉不到远程本地的差异等。
- 错误处理和故障恢复:研究远程连接中可能出现的错误和异常情况,如连接失败、网络中断等。分析错误处理机制和故障恢复策略,以保证系统的可靠性和稳定性。
- 性能优化:分析远程连接的性能瓶颈和优化点,如减少连接建立时间、优化数据传输速度等。了解并研究相关技术和算法,以提升系统的性能和响应速度。
感想
需求分析是一个好的项目的开始,需求分析越完备,在我看来会产生一下两条问题:
1、软件 Erosion,需求越来越跟不上实际生产的要求。
2、无止尽的新需求,改都改不完。。。
逆向工程是竞品提升的通道之一,也比较关键,但是我不是很懂。
就像最早的电话黑客,分析实现方式,很有极客范!