From 3cddc7e91152ff55ccfcba2630131173db31b200 Mon Sep 17 00:00:00 2001 From: dr6817 Date: Mon, 6 May 2024 17:03:09 +0200 Subject: [PATCH] Add Docs to the Retriever architecture. --- README.md | 35 +++++++++++++++++++++-------- docs/Retriever.puml | 54 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 docs/Retriever.puml diff --git a/README.md b/README.md index b3766802..4f7478e7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Retriever -> Eclipse plugin for model-driven reverse engineering +> **R**everse **E**ngineering **T**echnique with **R**efinement **I**ntegration of **E**xtracted **V**iews with **E**lements and **R**elationships [![Build Pipeline](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/build.yml/badge.svg)](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/build.yml) [![Continual Improvement Process](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/quality.yml/badge.svg)](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/quality.yml) [![Continuous Product Integration](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/product.yml/badge.svg)](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/actions/workflows/product.yml) @@ -10,7 +10,10 @@ This component extraction supports base components, composite structures, interf ## Status The rules engine is currently under active development. If you are interested in further information or would like to contribute your personal thoughts or requirements, please do not hesitate to contact us. -## Built With +## Retriever Architecture +This UML diagram shows how the Retriever approach works with the Eclipse platform. The main part of the diagram is the Retriever component, which works with other processes such as Discoverer, Extraction, Finalization, and Refinement. These components work through an orchestrator that coordinates reverse engineering so that it can be used in two ways: programmatically and graphically. It also shows how the software interacts with external models and metamodels. The diagram shows how components such as SoMoX SEFF and Vulnerability connect to the main Retriever component to extract and display software model information. + +### Platform Retriever is implemented with the [Eclipse Modeling Framework (EMF)](https://www.eclipse.org/modeling/emf/). It is thus provided as a plug-in for the [Eclipse platform](https://www.eclipse.org/eclipse/). Source code based on EMF metamodels is generated during the build process and is therefore not added to the repository. To generate the source code, either the Maven build or the [EMF generation workflow](https://www.eclipse.org/modeling/emf/docs/2.x/tutorials/clibmod/clibmod_emf2.0.html#step2) must be run. @@ -19,23 +22,38 @@ The rules for the model-to-model transformations are implemented in [Xtend](http ### Discoverers * [CSV Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/CsvDiscoverer.java) +* [ECMA Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/EcmaScriptDiscoverer.java) * [Java Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/JavaDiscoverer.java) * [JSON Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/JsonDiscoverer.java) +* [Properties Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/PropertiesDiscoverer.java) +* [SQL Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/SqlDiscoverer.java) * [XML Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/XmlDiscoverer.java) * [YAML Discoverer](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/blob/master/bundles/org.palladiosimulator.retriever.extraction.discoverers/src/org/palladiosimulator/retriever/extraction/discoverers/YamlDiscoverer.java) -### Rules -* [Spring Boot and Framework](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/SpringRules.xtend) -* [Jakarta RESTful Web Services](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/JaxRSRules.xtend) -* [Maven Project Object Model](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/MavenRules.xtend) +### Extraction +* [Docker Container](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 Build](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/GradleRules.xtend) +* [Jakarta Deployment](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/JaxRSDeploymentRules.xtend) +* [Jakarta Services](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/JaxRSRules.xtend) +* [Maven Build](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 Gateway](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/SpringGatewayRules.xtend) +* [Zuul Gateway](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever/tree/master/bundles/org.palladiosimulator.retriever.extraction.rules/src/org/palladiosimulator/retriever/extraction/rules/SpringZuulRules.xtend) + ### Analyzer -* [Docker Vulnerability](https://github.com/FluidTrust/Palladio-ReverseEngineering-Docker-Vulnerability) +* [Behavior](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-SoMoX-SEFF) +* [Vulnerability](https://github.com/PalladioSimulator/Palladio-ReverseEngineering-Retriever-Vulnerability) + +### Finalizer +* [Quality Prediction](https://github.com/PalladioSimulator/Palladio-Core-PCM) +* [Documentation](https://github.com/hallvard/plantuml) ## Getting Started ### Preconditions * [Installation of PCM Nightly](https://sdqweb.ipd.kit.edu/wiki/PCM_Installation#PCM_Nightly) - * Requires [Java Development Kit 11](https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot) and [Eclipse 2022-12 Modeling Tools](https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-modeling-tools) + * Requires [Java Development Kit 17](https://adoptopenjdk.net/?variant=openjdk17&jvmVariant=hotspot) and [Eclipse 2022-12 Modeling Tools](https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-modeling-tools) * [Install](https://help.eclipse.org/latest/topic/org.eclipse.platform.doc.user/tasks/tasks-124.htm) PCM Nightly from the [update site](https://updatesite.palladio-simulator.com/palladio-build-updatesite/nightly/) * Do not install the *deprecated* categories @@ -79,7 +97,6 @@ Alternatively, you can read the GitHub documentation on how to [create a pull re * Issue tracker: https://palladio-simulator.atlassian.net/jira/ * Update site: https://updatesite.palladio-simulator.com/palladio-reverseengineering-retriever/nightly/ * Javadoc: https://updatesite.palladio-simulator.com/palladio-reverseengineering-retriever/nightly/javadoc/ -* Deprecated build server: https://build.palladio-simulator.com/job/PalladioSimulator/job/Palladio-ReverseEngineering-Retriever/ ## Licensing The code in this project is licensed under the [EPL-2.0 License](LICENSE). diff --git a/docs/Retriever.puml b/docs/Retriever.puml new file mode 100644 index 00000000..45cbb6aa --- /dev/null +++ b/docs/Retriever.puml @@ -0,0 +1,54 @@ +@startuml "Retriever Architecture" +skinparam fixCircleLabelOverlapping true +skinparam componentStyle uml2 + +package "Eclipse" { + + package "Metamodels" { + [Confidentiality] + [Palladio] + [PlantUML] + } + + package "View-Based Reverse Engineering" { + + package "Behavioral Views" { + [SoMoX SEFF] + [Vulnerability] + } + + component "Retriever" { + () Register as "Register Metamodel" + () View as "View Extraction" + [Discoverers] + [Extraction] + [Finalization] + [Orchestrator] + [Refinement] + [Discoverers] -0)- [Orchestrator] + [Extraction] -0)- [Orchestrator] + [Finalization] -0)- [Orchestrator] + [Refinement] -0)- [Orchestrator] + () Register - [Finalization] + () View - [Extraction] + } + + [Confidentiality] --> Register + [Palladio] --> Register + [PlantUML] --> Register + [SoMoX SEFF] --> View + [Vulnerability] --> View + [Confidentiality] -0)- [Vulnerability] + [Palladio] -0)- [Extraction] + [Palladio] -0)- [Refinement] + [Palladio] -0)- [SoMoX SEFF] + } +} + +file In as "Artifacts" +file Out as "Artifacts" +[Discoverers] -(0- In +[Finalization] -(0- Out +[Orchestrator] -0)- :Actor: : "CLI" +[Orchestrator] -0)- :Actor: : "GUI" +@enduml