PalladioSimulator/Palladio-ReverseEngineering-Retriever

GitHub: PalladioSimulator/Palladio-ReverseEngineering-Retriever

Retriever 是一款软件架构逆向工程工具,通过规则引擎从异构项目工件中自动提取静态组件模型,供 Palladio 平台进行质量预测分析。

Stars: 3 | Forks: 0

# Retriever [![构建流水线](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/build.yml/badge.svg)](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/build.yml) [![持续改进过程](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/quality.yml/badge.svg)](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/quality.yml) [![持续产品集成](https://static.pigsec.cn/wp-content/uploads/repos/cas/11/111f5c36106cd1a5492bbf99fbb57f65d12c7e6629e62a9f57558ee8950ea402.svg)](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/product.yml) 从软件开发过程的[异构工件](#discoverers)中对软件组件模型进行逆向工程。为此,Retriever 内部使用[特定技术的规则](#rules)来自动提取系统的静态组件。为此,软件项目的异构工件首先被转换为模型表示。基于该模型,Retriever 将规则工件中指定的映射应用于每个模型实例,以识别最终软件架构模型的组件。 该组件提取支持基础组件、复合结构、接口、端口和连接器。然后,候选组件用于生成目标软件架构模型的元素,随后可在 [Palladio](https://www.palladio-simulator.com/) 环境中用于质量预测目的。提取的模型适用于增进对现有软件的理解,并支持进一步的质量分析。作为补充工具链的一部分,软件性能、可靠性和维护分析已经可用。 ## 状态 规则引擎目前正在积极开发中。如果您对进一步的信息感兴趣,或者想提供您的个人想法或需求,请随时与我们联系。 ## Retriever 架构 该 UML 图展示了 Retriever 方法如何与 Eclipse 平台协同工作。图的主要部分是 Retriever 组件,它与 Discoverer、Extraction、Finalization 和 Refinement 等其他流程协同工作。这些组件通过一个 orchestrator 进行工作,该 orchestrator 协调逆向工程,因此可以通过两种方式使用:以编程方式和图形化方式。它还展示了软件如何与外部模型和元模型交互。该图展示了 SoMoX SEFF 和 Vulnerability 等组件如何连接到主要的 Retriever 组件,以提取和显示软件模型信息。 ![Retriever 架构](https://www.plantuml.com/plantuml/svg/FSq_hi8m383n_PtYSG3YdQaBEu8JcCHABJbEvJzmVTgbqoVzbc_nG8iSydTXhPADqkH_ZTZy1c3uBPrZpNSwMPqQf57g7F104MmyNpnICAQTSdtIXypfhfsLo5ZxJc5yC0naXJQhmsbbE_OBQTlx0m00) ### 平台 Retriever 是使用 [Eclipse Modeling Framework (EMF)](https://www.eclipse.org/modeling/emf/) 实现的。因此,它作为 [Eclipse 平台](https://www.eclipse.org/eclipse/)的一个插件提供。 基于 EMF metamodel 的源代码是在构建过程中生成的,因此未添加到代码仓库中。要生成源代码,必须运行 Maven 构建或 [EMF 生成工作流](https://www.eclipse.org/modeling/emf/docs/2.x/tutorials/clibmod/clibmod_emf2.0.html#step2)。 模型到模型转换的规则使用 [Xtend](https://www.eclipse.org/xtend/) 实现,它可以被编译为 Java 兼容的源代码。 ### 发现器 * [CSV 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/CsvDiscoverer.java) * [ECMA 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/EcmaScriptDiscoverer.java) * [Java 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/JavaDiscoverer.java) * [JSON 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/JsonDiscoverer.java) * [Properties 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/PropertiesDiscoverer.java) * [SQL 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/SqlDiscoverer.java) * [XML 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/XmlDiscoverer.java) * [YAML 发现器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/YamlDiscoverer.java) ### 提取 * [Docker 容器](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/DockerRules.xtend) * [ECMAScript 6](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/EcmaScriptRules.xtend) * [Gradle 构建](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/GradleRules.xtend) * [Jakarta 部署](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/JaxRSDeploymentRules.xtend) * [Jakarta 服务](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/JaxRSRules.xtend) * [Maven 构建](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/MavenRules.xtend) * [Spring Boot](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/SpringRules.xtend) * [Spring 网关](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/SpringGatewayRules.xtend) * [Zuul 网关](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/SpringZuulRules.xtend) ### 分析器 * [行为](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-SoMoX-SEFF) * [漏洞](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever-Vulnerability) ### 终结器 * [质量预测](https://github.com/PalladioSimulator/Palladio-Core-PCM) * [文档](https://github.com/hallvard/plantuml) ## 入门指南 ### 前置条件 * [安装 PCM Nightly](https://sdqweb.ipd.kit.edu/wiki/PCM_Installation#PCM_Nightly) * 需要 [Java Development Kit 17](https://adoptopenjdk.net/?variant=openjdk17&jvmVariant=hotspot) 和 [Eclipse 2022-12 Modeling Tools](https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-modeling-tools) * 从[更新站点](https://updatesite.palladio-simulator.com/palladio-build-updatesite/nightly/)[安装](https://help.eclipse.org/latest/topic/org.eclipse.platform.doc.user/tasks/tasks-124.htm) PCM Nightly * 不要安装*已弃用*的类别 ### 安装 #### 用于开发 * 从[更新站点](https://updatesite.palladio-simulator.com/palladio-addons-fluentapimodelgenerator/nightly/)安装 [Fluent Api Model Generator](https://github.com/PalladioSimulator/Palladio-Addons-FluentApiModelGenerator) * 从[更新站点](https://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/)安装 [Xtend IDE](https://www.eclipse.org/xtend/download.html) * 保留当前的安装,如有必要,请更改要安装的项目以使其兼容 * 检出[此仓库](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever.git)并将[现有项目导入](https://help.eclipse.org/latest/topic/org.eclipse.platform.doc.user/tasks/tasks-importproject.htm) Eclipse * 在 Eclipse 中对导入的代码进行修改 * 使用 [Maven](https://maven.apache.org/) 在本地验证仓库中的所有项目:`mvn clean verify` * 启动一个新的 [Eclipse 运行时应用程序](https://help.eclipse.org/latest/topic/org.eclipse.pde.doc.user/guide/tools/launchers/eclipse_application_launcher.htm) #### 用于直接使用 * [添加这些更新站点](https://help.eclipse.org/latest/topic/org.eclipse.platform.doc.user/tasks/tasks-127.htm),无需任何进一步的安装: * [Fluent Api Model Generator](https://github.com/PalladioSimulator/Palladio-Addons-FluentApiModelGenerator) 的[更新站点](https://updatesite.palladio-simulator.com/palladio-addons-fluentapimodelgenerator/nightly/) * 从[更新站点](https://updatesite.palladio-simulator.com/palladio-reverseengineering-retriever/nightly/)安装 Retriever * 这将自动安装所有必需的依赖项 ### 用法 * 创建一个新的运行配置以启动 Retriever * 指定要分析的项目的根目录 * 选择那里使用的技术 * 指定用于保存 PCM 实例的目录 * 如果 PCM 实例未保存在工作区中,可以稍后导入它们 ## 链接 * Palladio 主页:https://www.palladio-simulator.com/ * 综合文档:https://sdqweb.ipd.kit.edu/wiki/Palladio_Component_Model * 问题追踪器:https://palladio-simulator.atlassian.net/jira/ * 更新站点:https://updatesite.palladio-simulator.com/palladio-reverseengineering-retriever/nightly/ * Javadoc:https://updatesite.palladio-simulator.com/palladio-reverseengineering-retriever/nightly/javadoc/ ## 许可 本项目中的代码采用 [EPL-2.0 许可证](LICENSE)授权。
标签:JS文件枚举, 域名枚举