高软作业4:从需求分到软件设计

ttttttx / 2023-05-30 / 原文

作业4:从需求分到软件设计

  • 以VS Code Remote Development相关功能为例,选择一个用例进行需求分析和逆向工程,按课堂要求完成一篇博客文章。
  • https://code.visualstudio.com/
  • https://github.com/microsoft/vscode

1. 需求分析是软件工程中的一个阶段,它主要的目的是识别、分析和明确需求,以便开发人员能够更加清晰地了解用户的真实需求,并设计出满足这些需求的软件系统。

2.VS Code Remote Development 是 Visual Studio Code 的一个扩展插件,它提供了一种便捷的远程开发模式,使得开发者可以在本地使用 Visual Studio Code 编辑器与远程计算机或容器进行开发调试,而不需要在本地安装对应的运行环境和依赖库,极大地提高了编写代码的效率。

VS Code Remote Development 支持多种远程开发方案,包括:

  1. 通过 SSH 连接到远程服务器进行开发。

  2. 在容器内部进行开发,例如 Docker 容器。

  3. 使用 WSL(Windows Subsystem for Linux)进行 Linux 应用程序开发。

该插件使用 code-server 提供远程开发的功能,可以使开发者在浏览器中使用 Visual Studio Code 编辑器,并且可以同步本地的 VS Code 的配置和插件,使用起来非常方便。用 VS Code Remote Development 时,开发者只需要安装 VS Code 以及相应的远程开发插件,然后使用它来连接到远程开发环境即可,无需在本地安装任何额外的依赖。该插件具有快速轻松的属性,强调了跨平台、同步设置以及兼容性等,这些都是开发者在进行远程开发时需要考虑的方面。

3.本人选用VS Code Remote Development的调试代码功能

需求分析如下,调试代码功能主要需要满足如下需求

  1. 要能通过SSH等方式远程连接服务器
  2. 要能建立远程工作区
  3. 开发者可以在vscode本地上传代码文件(或是编辑代码文件)
  4. 开发者可以本地进行远程调试

用例提取:

System: VS Code Remote Development
Actor: VS Code User (Usually Developers)
User Cases:
  UC1: Remote connection to server
  UC2: Setup remote workspace
  UC3: Upload/Edit code file to workspace
  UC4: Remote debugging

 4.其次进行逆向工程分析

在对以上4个用例进行逆向工程时,可以考虑用例的实现细节和技术方案。

4.1 对于远程连接至服务器用例,可以进行以下分析:

  1. 通信协议和传输方式:
    • 逆向工程需要确定用于远程连接的通信协议和传输方式。常见的选择包括SSH、RDP、HTTPS等。
    • 针对选择的协议和传输方式,需要了解其相关规范和实现细节,以便理解数据传输和连接建立的过程。
  2. 身份验证和安全性:
    • 逆向工程需要研究远程连接时的身份验证机制,如用户名密码验证、SSH密钥验证等。
    • 研究协议和实现中的安全性措施,如加密传输、防止中间人攻击等。
  3. 连接管理和会话保持:
    • 研究如何管理远程连接和会话的生命周期,包括连接建立、断开、重连等。
    • 理解远程连接中的会话保持机制,确保用户可以持续地进行远程操作。
  4. 远程文件系统访问:
    • 逆向工程需要研究如何实现远程文件系统访问,包括文件的上传、下载和同步等。
    • 研究文件系统访问的协议和API,如SSH文件传输协议(SFTP)等。
  5. 用户界面和交互设计:
    • 分析用户界面的实现,包括连接配置界面、连接状态的显示等。
    • 研究用户交互的实现方式,如输入连接信息、处理用户操作等。
  6. 错误处理和故障恢复:
    • 研究远程连接中可能出现的错误和异常情况,如连接失败、网络中断等。
    • 分析错误处理机制和故障恢复策略,以保证系统的可靠性和稳定性。
  7. 性能优化:
    • 分析远程连接的性能瓶颈和优化点,如减少连接建立时间、优化数据传输速度等。
    • 了解并研究相关技术和算法,以提升系统的性能和响应速度。

4.2针对建立远程工作区这一用例的逆向工程分析,可以考虑以下方面:

  1. 用户界面需求:
    • 分析用户界面,确定用户界面元素,如打开远程工作区的命令按钮、工作区管理器等。
    • 确定用户界面与其他相关组件或类之间的交互关系。
  2. 远程工作区类:
    • 分析远程工作区类的属性和方法,如打开远程工作区、同步文件、执行远程命令等。
    • 确定远程工作区类与其他相关类之间的关联关系,如远程连接类、文件同步类等。
  3. 文件同步功能:
    • 分析文件同步功能的实现方式,如通过SSH协议传输文件、使用rsync等。
    • 确定文件同步类的属性和方法,如上传文件、下载文件、检查文件变化等。
    • 考虑文件同步类与远程工作区类之间的交互关系,以确保远程工作区中的文件与服务器上的文件同步。
  4. 命令执行功能:
    • 分析远程服务器上执行命令的实现方式,如通过SSH远程执行命令、使用远程终端等。
    • 确定命令执行类的属性和方法,如执行命令、获取命令输出等。
    • 考虑命令执行类与远程工作区类之间的交互关系,以实现在远程服务器上执行命令的功能。
  5. 错误处理机制:
    • 考虑远程工作区类和相关类的错误处理机制,以处理连接错误、文件同步错误、命令执行错误等。
    • 确定错误处理类的属性和方法,如捕获和处理异常、显示错误信息等。

4.4针对远程调试这一用例的逆向工程分析,可以考虑以下方面:

  1. 用户界面需求:
    • 分析用户界面,确定用户界面元素,如启动远程调试的按钮、调试器面板等。
    • 确定用户界面与其他相关组件或类之间的交互关系。
  2. 远程调试类:
    • 分析远程调试类的属性和方法,如启动调试会话、设置断点、监视变量等。
    • 确定远程调试类与其他相关类之间的关联关系,如远程连接类、调试器类等。
  3. 断点设置和命中:
    • 分析断点设置和命中的实现方式,如在远程服务器上设置断点、监控调试信息等。
    • 确定断点设置类和断点命中类的属性和方法,如设置断点、检测断点命中等。
    • 考虑断点设置类和断点命中类与远程调试类之间的交互关系,以实现在远程服务器上的断点调试功能。
  4. 变量监视和调试信息显示:
    • 分析变量监视和调试信息显示的实现方式,如在远程服务器上获取和显示变量值、调试信息等。
    • 确定变量监视类和调试信息显示类的属性和方法,如监视变量、显示调试信息等。
    • 考虑变量监视类和调试信息显示类与远程调试类之间的交互关系,以实现在远程服务器上的变量监视和调试信息显示功能。
  5. 错误处理机制:
    • 考虑远程调试类和相关类的错误处理机制,以处理连接错误、调试错误等。
    • 确定错误处理类的属性和方法,如捕获和处理异常、显示错误信息等。

通过逆向工程分析,可以确定这些用例所涉及的类、属性、方法和它们之间的关系,从而进行系统设计和实现并提供可靠和高效的远程连接、远程编辑、远程调试等功能。