作业4:从需求分析到软件设计
作业要求:
- 以VS Code Remote Development相关功能为例,选择一个用例进行需求分析和逆向工程,按课堂要求完成一篇博客文章。
- https://code.visualstudio.com/
- https://github.com/microsoft/vscode
VS Code 的全称是 Visual Studio Code,是一款开源的、免费的、跨平台的、高性能的、轻量级的代码编辑器。它在性能、语言支持、开源社区方面,都很出色。
一、需求分析
VS Code是一款轻量级的跨平台代码编辑器,但是在平台上存在各种插件,可以扩展出很多功能,满足用户多样化的需求。
目前,VSCode 远程开发支持下列三种主要模式:
- Remote SSH:通过 SSH 连接到 Linux 服务器的远程开发;
- Remote Container:容器中的远程开发;
- Remote WSL: WSL 环境下的远程开发。
Remote Development就是VS Code上的一款插件,它允许开发者将容器、远程计算机或 Windows Subsystem for Linux (WSL) 作为完整的开发环境。该插件使得用户能够:
在部署到的同一操作系统上进行开发,或者使用比本地机器更大、更快或更专业的硬件。
在不同的远程开发环境之间快速切换,并安全地进行更新,而不用担心影响用户的本地计算机。
从多台机器或多个位置访问现有的开发环境。
调试在其他地方运行的应用程序,例如客户站点或云中。
等等。
所有以上的功能,并不需要在本地开发环境有源代码。通过 VS Code Remote Development,轻松连接上远程环境,在本地进行开发。
远程开发扩展的名称是 Remote Development,它实际上是一个扩展包(Extension Pack),由 Remote-SSH、Remote-Containers、Remote-WSL 以及 Python 四个扩展组合而成,除了 Python 主要用于功能支持外,其他三个扩展功能是很明显的。
对于以上功能进行需求分析,从功能性需求、非功能性需求两方面分析。
功能性需求:
远程连接至服务器:用户通过 VS Code 远程连接插件,与远程服务器建立连接。
建立远程工作区:用户在本地的 VS Code 界面中打开远程工作区,编辑、调试和运行远程服务器上的代码。
远程调试:用户使用 VS Code 的调试功能,在远程服务器上进行代码运行和调试。
非功能性需求:
安全性:采用必要的措施保证远程连接的安全性,以防信息泄露
高可靠性:防止数据在传输过程中出现问题,比如数据传输失败或者传输了错误的数据
性能:用户在使用远程开发时应该感觉像在本地一样,因此远程服务器的响应速度要快。并且主要工作是在远程进行的,本地占用的资源应当尽可能少
二、逆向工程
为了更好地理解 Remote Development 功能是如何实现的,可以进行逆向工程,对代码库进行分析,以确定其实现细节。
首先,在查看代码前,先了解 VS Code 的插件开发机制和插件架构。VS Code 使用 Electron 作为底层框架,并使用 TypeScript 进行开发。其中,插件可以访问 VS Code API 来扩展编辑器的功能。
然后,阅读 Remote Development 插件的源代码并进行分析。Remote Development 插件包括客户端和服务器端两部分。客户端负责与用户交互,并将请求发送到远程服务器。服务器端则负责处理请求,并返回结果给客户端。
在客户端的实现中,可以看到 Remote Development 插件使用了 Visual Studio Code 中提供的 Terminal API 来创建终端窗口,通过 SSH 隧道将本地计算机的端口转发到远程计算机上,并使用 sshfs 和 rsync 等工具进行文件同步。客户端还支持在远程服务器上进行远程调试。对于容器方式的连接,插件使用了 Docker API 来管理容器。
在服务器端的实现中,Remote Development 插件实现了一个名为 "vscode-remote-server" 的 Node.js 应用程序。该程序会监听客户端的请求,并在收到请求后启动远程开发环境。同时,服务器端还支持通过 SSH 隧道将本地计算机的端口转发到远程计算机。
通过逆向工程的分析,可以更深入地了解 Remote Development 功能的实现细节。
VS Code Remote Development 的实现方法可以从其 GitHub 上的源代码库中获得。该项目使用 TypeScript 和 Node.js 编写,以下是一些重要的类和函数:
remoteExplorer.ts
remoteExplorer.ts 提供了与远程资源管理器相关的类和函数。其中最重要的类是 RemoteFileService 和 RemoteFileSystemProvider,它们分别处理文件服务和文件系统提供程序的功能。
tunnelModel.ts
tunnelModel.ts 定义了一个名为 TunnelModel 的类,它处理 SSH 隧道的创建和关闭。该类依赖于 sshHelper.ts 中提供的 SSH 命令行帮助程序。
environmentService.ts
environmentService.ts 提供了用于获取和设置 VS Code 环境变量的方法。该模块还包含 DataprotocolServer 类,该类充当数据协议服务器并接受来自客户端的请求和响应。
extensionHostProcessManager.ts
extensionHostProcessManager.ts 管理远程扩展主机进程的生命周期。在用户打开远程文件夹时,该组件会运行并启动扩展插件进程,在本地 VS Code 编辑器中显示远程扩展插件。
terminalServer.ts
terminalServer.ts 实现了终端服务器,允许用户通过 SSH 连接到远程主机的终端。TerminalProcess 类管理 SSH 进程和 shell 进程。
remoteAgentConnection.ts
remoteAgentConnection.ts 定义了 RemoteAgentConnection 类,该类充当与远程 VS Code 编辑器的通信管道。它使用 MessagePipe 协议在本地计算机和远程主机之间传递信息。
三、总结
需求分析,以及逆向工程,是软件设计、开发、测试和维护过程中的重要步骤,通过需求分析和逆向工程,我们能够更深入理解VS Code Remote Development的原理。通过分析需求和逆向工程,我们可以提高软禁质量和性能,确保软件的可靠性、安全性以及性能等,从而更好地达到软件用户的期望。
作者:109
相关推荐
弱电网下光伏并网逆变器序阻抗建模仿真复现扫频法【序阻抗判断稳定性】
内容概要:本文聚焦于弱电网条件下光伏并网逆变器的序阻抗建模与稳定性分析,系统阐述了基于扫频法的阻抗特性仿真与复现方法。通过构建正负序阻抗模型,深入剖析逆变器在弱电网环境中的动态响应特性,结合锁相环、电流环等关键控制环节对系统阻抗的影响机制,采用序阻抗稳定性判据评估多机并网或复杂电网条件下的系统稳定裕度。研究在Simulink平台中实现激励信号注入、频率响应采集与阻抗曲线绘制,为高比例新能源接入背景下并网系统的稳定性分析提供了可靠的仿真手段与理论支撑,尤其适用于SCI级别论文成果的复现与拓展验证。; 适合人群:电力电子、新能源并网技术及相关领域的硕士/博士研究生、科研人员,以及从事光伏逆变器、微电网稳定控制开发的工程技术人员。; 使用场景及目标:①掌握扫频法在电力电子装置阻抗建模中的具体实施流程;②理解并应用基于序阻抗的稳定性判据进行系统稳定边界分析;③用于高水平学术论文(如SCI期刊)中阻抗建模与稳定性分析部分的仿真复现与方法验证; 阅读建议:建议读者结合文中所述方法与提供的参考文献,自主搭建Simulink仿真模型,逐步完成扰动信号设计、数据采集、傅里叶分析及阻抗拟合全过程,深入探究控制参数变化对系统阻抗特性和稳定性的具体影响,强化理论与实践的融合能力。
三相并网逆变器虚拟阻抗+统一有源阻尼策略SVPWM+SPWM调制仿真
内容概要:本文档系统性地介绍了三相并网逆变器的核心控制技术及其在复杂电网环境下的仿真应用,重点涵盖虚拟阻抗与统一有源阻尼策略在SVPWM和SPWM调制方式下的实现方法,旨在提升逆变器的稳定性与电能质量。内容包括无功功率扰动孤岛检测、中点电位平衡控制、低电压穿越(LVRT)、模型预测控制(MPC)、正负序分离、电网前馈控制等关键技术,并扩展至风储联合调频、微电网下垂控制、虚拟同步发电机(VSG)、构网型逆变器等多种典型电力系统应用场景。所有技术均配有基于Simulink/Matlab平台的完整仿真模型、参考文献及说明文档,强调理论分析与仿真实践的深度融合,突出科研中“借力”与创新思维的重要性。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力电子与可再生能源系统开发的工程师;具备MATLAB/Simulink仿真基础和电力系统专业知识的技术人员。; 使用场景及目标:①开展三相并网逆变器控制策略的研究与优化设计;②复现高水平学术论文中的控制算法;③完成毕业课题、科研项目或工程仿真验证;④掌握虚拟阻抗、有源阻尼、SVPWM/SPWM调制、MPC、VSG等核心技术的建模与实现方法;⑤支撑微电网、构网型变流器等前沿方向的科研攻关。; 阅读建议:建议按照资源目录结构化学习,优先选择与自身研究方向契合的内容模块,结合提供的仿真模型、参考文献和说明材料进行实操演练,注重从理论推导到仿真实现的全过程理解,充分利用共享网盘资源深化技术掌握,提升科研效率与创新能力。
chromedriver-win32-159.0.8133.0(Canary).zip
chromedriver-win32-159.0.8133.0(Canary).zip
计算机“101计划”《人工智能引论》教学大纲+课件+实训案例
计算机“101计划”《人工智能引论》教学大纲+课件+实训案例
语音输入法离线语音输入转文字工具2.0支持双档本地识别模型,中英混说精准转写,纯离线运行保护隐私,让打字更高效.zip
大家好,我是大飞哥。日常打字时,频繁切换输入法、断网无法语音转写、或担心语音数据被传至云端,是许多办公族和内容创作者的共同痛点。这款离线语音输入工具 ,正是为此量身打造的 Windows 桌面语音辅助利器。它的核心使命就是按住快捷键说话,松开文字自动上屏,全程本地离线识别,让您在任何可输入文字的窗口内都能实现高效、私密的语音输入,彻底告别网络依赖与隐私焦虑。 在核心功能上,软件内置了两档本地语音识别模型,通过主界面下拉框即可随时切换。默认的“离线·标准”模式响应极快,支持中英混说且自带标点,非常适合日常聊天与文档撰写;而“离线·精准”模式则对纯中文、方言口音及长段落口述的识别准确度更高。更贴心的是,它具备实时预览与一键取消机制,说话过程中若发现说错,按下 Esc 即可取消,一个字都不会误输入;若目标窗口不支持直接写入,文字会自动存入剪贴板,方便您按 Ctrl+V 粘贴,确保每次发声都不白费。 这款工具在具体场景中的表现十分亮眼。对于办公白领,在填写表格、撰写邮件或使用微信、QQ 沟通时,无需频繁切换窗口,按住右键说话即可快速完成信息录入;对于程序员与文字工作者,在代码编辑器或文档中口述注释与段落,能显著提升创作效率;对于经常出差的商务人士,在飞机、高铁等断网环境下,它依然能稳定工作,不经过任何服务器,真正做到了“说了什么只有自己知道”,私密性极佳。 使用体验方面,软件将极简操作贯彻到底。解压后双击 大飞哥语音输入,右下角托盘出现蓝色话筒图标即代表准备就绪。用户只需将光标点进目标输入框,按住右 Alt说话,说完松开,文字便会自动写入。主界面提供了设置快捷键与开机自动启动选项,方便用户按习惯自定义组合键;关闭主窗口并不会退出程序,而是缩至托盘持续待命,彻底退出只需右键托盘或点击主界面按钮,逻辑清晰,零门槛上手。


