- 以VS Code Remote Development相关功能为例,选择一个用例进行需求分析和逆向工程。需要的参考网站如下:
- https://code.visualstudio.com/
- https://github.com/microsoft/vscode
一、需求分析
需求分析是软件工程中的重要步骤,它是确定和理解软件系统所需功能和性能的过程。在需求分析阶段,软件工程师与客户或用户密切合作,收集和明确软件系统的需求,并将其转化为可操作的规范,为后续的设计和开发提供基础。
VS Code Remote Development 是 Visual Studio Code的一个功能扩展,可以让用户进行远程开发,包括远程编辑、调试代码等功能。VS Code Remote Development可以让用户进行远程代码的编辑等开发工作。
分析其工作的整个流程,可以明确他的整个功能需求主要是以下几个方面:
- 远程连接至服务器:用户通过VS Code远程连接插件,与远程服务器建立连接。
- 文件传输:用户能从本地计算机上传或者下载文件及文件夹到远程主机。
- 建立远程工作区:用户在本地的VS Code界面中打开远程工作区,可以编辑、调试和运行远程服务器上的代码。
- 远程调试:用户可以使用VS Code的调试功能,在远程服务器上进行代码运行和调试。
另外的非功能需求如下所示:
- 高可靠性:要保证数据传输的稳定性和正确性,避免消息丢失。
- 安全性:现在网络安全是必须要考虑的一个问题,应该采用必要的安全措施来保护安全性,比如身份验证以及消息加密等
- 高性能:客户和服务器之间的通信应该要流畅且相应速度快,不影响客户的操作。
我们从其中抽取用例分析如下:
- 系统:VS Code 远程开发系统
- 用户: VS Code 用户
- 抽象用例:
- 远程连接服务器
- 文件传输
- 建立远程工作区
- 远程调试
我们得到的用例图如下所示:
二、逆向工程
逆向工程是指通过对产品、系统或设备进行分析和研究,以了解其内部结构、工作原理和设计特点的过程。
查询资料,VS Code Remote Development插件包括了两个部分即客户端和服务器端两部分,客户端负责与用户交互,并将请求发送到远程服务器,服务器负责处理请求并把结果返回。
在官方网站上面也有一个原理图如下:
我选取的是远程连接到服务器的用例,对于这个用例,进行了以下分析:
- 连接前:
- 通信协议和传输方式
- 由上面的图和查阅的资料也可以知道VSCode采用的是SSH连接的方式
- 针对SSH连接,SSH建立连接的过程主要分为下面几个阶段:
- SSH协议版本协商阶段:客户端通过TCP三次握手与服务器的SSH端口建立TCP连接。服务器通过建立好的连接向客户端发送一个包含SSH版本信息的报文来协商
- 密钥和算法协商阶段:服务器端和客户端分别发送算法协商报文给对端,服务器端和客户端利用Diffie-Hellman密钥交换算法,主机密钥对等参数,生成共享密钥和会话ID。
- 认证阶段:客户端向服务器端发送认证请求,请求中包含用户名,认证方法,密码或密钥。服务器端对客户端进行认证,如果认证失败,则向客户端发送失败消息,其中包含可以再次认证的方法列表。
- 会话请求阶段:服务器等待客户端请求。认证完成后,客户端想服务器发送会话请求,服务器处理客户端请求。
- 交互会话阶段:客户端将要执行的命令加密发送给服务器。服务器收到后,解密命令,执行后将结果加密返回客户端。
- 身份验证和安全性
- 这个其实在上面SSH的连接过程中已经体现,连接的时候就会进行用户名和密码的验证才会进行后面的操作。
2.连接过程中:
- 连接的管理和会话保持:研究如何管理远程连接和会话的生命周期,包括连接的建立和断开。
- 错误处理和故障恢复
- 研究远程连接中可能出现的错误和异常,如连接失败和网络中断。
- 分析错误处理机制和恢复策略以保证系统的高可用性和稳定性。
三、 总结
需求分析和逆向工程是软件开发和系统设计过程中的两个关键概念,它们在不同的阶段和目的下发挥着重要的作用。通过对VS Code Remote Development相关功能的需求分析可以确保开发团队和用户之间的沟通准确无误,避免误解和偏差,最终得到用户满意的产品。通过逆向工程,开发团队可以获取关于已有系统的深入信息,为改进、集成或替换系统提供依据。这也是我们以后的工作中经常要做到的地方,所以这次实验也让我熟悉了整个流程,受益匪浅。