From 33e298006374ed587b3b572b4ce010e438170873 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 14:13:07 +0100 Subject: [PATCH 01/20] Update README --- README.md | 58 ++++++++----------------------------------------------- 1 file changed, 8 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 036a6ce9a..f5e59a6ba 100644 --- a/README.md +++ b/README.md @@ -6,37 +6,16 @@ [![Latest Release](https://img.shields.io/github/release/ArDoCo/Core.svg)](https://github.com/ArDoCo/Core/releases/latest) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7274034.svg)](https://doi.org/10.5281/zenodo.7274034) -The goal of this project is to connect architecture documentation and models with Traceability Link Recovery (TLR) while identifying missing or deviating -elements (inconsistencies). +The goal of the ArDoCo project is to connect architecture documentation and models with Traceability Link Recovery (TLR) while identifying missing or deviating elements (inconsistencies). An element can be any representable item of the model, like a component or a relation. To do so, we first create trace links and then make use of them and other information to identify inconsistencies. -ArDoCo is actively developed by researchers of -the _[Modelling for Continuous Software Engineering (MCSE) group](https://mcse.kastel.kit.edu)_ -of _[KASTEL - Institute of Information Security and Dependability](https://kastel.kit.edu)_ at -the [KIT](https://www.kit.edu). +ArDoCo is actively developed by researchers of the _[Modelling for Continuous Software Engineering (MCSE) group](https://mcse.kastel.kit.edu)_ of _[KASTEL - Institute of Information Security and Dependability](https://kastel.kit.edu)_ at the [KIT](https://www.kit.edu). -## User Interfaces +This **Core** repository contains the framework and core definitions for the other approaches. +As such, there is the definition of our pipeline and the data handling as well as the definitions for the various pipeline steps, inputs, outputs, etc. -To be able to execute the core algorithms from this repository, you can write own user interfaces that (should) use -the [ArDoCoRunner](https://github.com/ArDoCo/Core/blob/main/pipeline/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/execution/runner/ArDoCoRunner.java). - -We provide an example Command Line Interface (CLI) at [ArDoCo/CLI](https://github.com/ArDoCo/CLI) as well as a simple Graphical User Interface (GUI) -at [ArDoCo/GUI](https://github.com/ArDoCo/GUI). - -Future user interfaces like an enhanced GUI or a web interface are planned. - -## Documentation - -For more information about the setup or the architecture have a look on the [Wiki](https://github.com/ArDoCo/Core/wiki). -The docs are at some points deprecated, the general overview and setup should still hold. - -## Case Studies / Benchmarks - -To test the Core, you could use case studies and benchmarks provided in .. - -* [ArDoCo Benchmark](https://github.com/ArDoCo/Benchmark) -* [SWATTR](https://github.com/ArDoCo/SWATTR) +For more information about the setup, the project structure, or the architecture, please have a look at the [Wiki](https://github.com/ArDoCo/Core/wiki). ## Maven @@ -45,7 +24,7 @@ To test the Core, you could use case studies and benchmarks provided in .. io.github.ardoco.core - pipeline + framework VERSION @@ -69,33 +48,12 @@ For snapshot releases, make sure to add the following repository ``` -## Microservice for text preprocessing - -Text preprocessing works locally, but there is also the option to host a microservice for this. -The benefit is that the models do not need to be loaded each time, saving some runtime (and local memory). - -The microservice can be found at [ArDoCo/StanfordCoreNLP-Provider-Service](https://github.com/ArDoCo/StanfordCoreNLP-Provider-Service/). - -The microservice is secured with credentials and the usage of the microservice needs to be activated and the URL of the microservice configured. -These settings can be provided to the execution via environment variables. -To do so, set the following variables: - -```env -NLP_PROVIDER_SOURCE=microservice -MICROSERVICE_URL=[microservice_url] -SCNLP_SERVICE_USER=[your_username] -SCNLP_SERVICE_PASSWORD=[your_password] -``` -The first variable `NLP_PROVIDER_SOURCE=microservice` activates the microservice usage. -The next three variables configure the connection, and you need to provide the configuration for your deployed microservice. ## Attribution -The initial version of this project is based on the master -thesis [Linking Software Architecture Documentation and Models](https://doi.org/10.5445/IR/1000126194). +The initial version of this project is based on the master thesis [Linking Software Architecture Documentation and Models](https://doi.org/10.5445/IR/1000126194). ## Acknowledgements -This work was supported by funding from the topic Engineering Secure Systems of the Helmholtz Association (HGF) and by -KASTEL Security Research Labs (46.23.01). +This work was supported by funding from the topic Engineering Secure Systems of the Helmholtz Association (HGF) and by KASTEL Security Research Labs (46.23.01). From f8662518003908258ebcf02110b64dcf46eb4748 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 15:19:52 +0100 Subject: [PATCH 02/20] Restructure documentation This is a restructuring that also updates the HOME page. The other pages need further updates --- docs/Home.md | 74 ++++++++++++++++++++++------------ docs/InconsistencyDetection.md | 1 + docs/IntermediateArtifacts.md | 1 + docs/LiSSA.md | 5 ++- docs/Pipeline.md | 1 + docs/Profiles.md | 32 --------------- docs/Quickstart.md | 31 ++------------ docs/SAD-SAM-Code-TLR.md | 6 --- docs/SAD-SAM-TLR.md | 9 ----- docs/SAM-Code-TLR.md | 11 ----- docs/TLR.md | 33 +++++++++++++++ docs/Text-Preprocessing.md | 20 +++++++++ 12 files changed, 111 insertions(+), 113 deletions(-) create mode 100644 docs/InconsistencyDetection.md create mode 100644 docs/IntermediateArtifacts.md create mode 100644 docs/Pipeline.md delete mode 100644 docs/Profiles.md delete mode 100644 docs/SAD-SAM-Code-TLR.md delete mode 100644 docs/SAD-SAM-TLR.md delete mode 100644 docs/SAM-Code-TLR.md create mode 100644 docs/TLR.md create mode 100644 docs/Text-Preprocessing.md diff --git a/docs/Home.md b/docs/Home.md index 597487682..015165fe8 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -1,49 +1,73 @@ +# ArDoCo + ArDoCo (Architecture Documentation Consistency) is a framework to connect architecture documentation and models while identifying missing or deviating elements (inconsistencies). An element can be any representable item of the model, like a component or a relation. To do so, ArDoCo first creates trace links and then makes use of them and other information to identify inconsistencies. -You can find [ArDoCo on GitHub](https://github.com/ArDoCo). +You can find ArDoCo on the [website](ardoco.de) and [on GitHub](https://github.com/ArDoCo). Before contributing, please read the [Quickstart Guide](quickstart). -JavaDocs can be found [here](https://ardoco.github.io/Core-Docs/). + + +To get to know the project, please read the following pages: + +* [Core Pipeline Definition](pipeline) +* [Intermediate Artifacts](intermediateartifacts) +* [Text Preprocessing](Text-Preprocessing) +* [Traceability Link Recovery (TLR)](tlr) +* [Inconsistency Detection (ID)](inconsistencydetection) +* [Linking Sketches and Software Architecture (LiSSA)](LiSSA) + +## Project Structure + +* [Core](https://github.com/ArDoCo/Core): Core framework with framework and API definitions +* Pipelines + * [TLR](https://github.com/ArDoCo/TLR): Traceability Link Recovery (TLR) Modules + * [StanfordCoreNLP-Provider-Service](https://github.com/ArDoCo/StanfordCoreNLP-Provider-Service): RESTful web service for text preprocessing + * [InconsistencyDetection](https://github.com/ArDoCo/InconsistencyDetection): Inconsistency Detection (ID) Modules + * [LiSSA](https://github.com/ArDoCo/LiSSA): Linking Sketches and Software Architecture Modules +* Testing and Evaluation + * [IntegrationTests](https://github.com/ArDoCo/IntegrationTests): Integration Tests + * [Benchmark](https://github.com/ArDoCo/Benchmark): Benchmarks + * [Evaluator](https://github.com/ArDoCo/Evaluator): Evaluation code that compares CSVs (e.g., output and gold standard) + * [SimpleTracelinkDiscovery](https://github.com/ArDoCo/SimpleTracelinkDiscovery): Baseline approach +* GUIs, CLIs, etc. + * [TraceView](https://github.com/ArDoCo/TraceView): WIP visualisation of the outputs for TLR and ID + * *outdated* [CLI](https://github.com/ArDoCo/CLI): Command Line Interface (*outdated*) +* [actions](https://github.com/ArDoCo/actions): Reusable GitHub Actions ## System Requirements -The `complete` profile includes all the requirements that the special profiles also need. This profile is activated by -default. +The project requires **JDK 21**. +Furthermore, we advise at least **4 GB of RAM**. + +## Benchmarks -All profiles require JDK 21. +You can test ArDoCo using the projects provided in our [Benchmark repository](https://github.com/ArDoCo/Benchmark). -The dependencies of the other profiles at a glance: +## Related Publications -* tlr: - -* inconsistency: - -* lissa (LInking Sketches and Software Architecture): Docker (local - or [remote](https://github.com/ArDoCo/Core/blob/lissa/stages/diagram-recognition/src/main/kotlin/edu/kit/kastel/mcse/ardoco/lissa/diagramrecognition/informants/DockerInformant.kt#L20-L23)) +* J. Keim, S. Corallo, D. Fuchß, T. Hey, T. Telge und A. Koziolek. "Recovering Trace Links Between Software Documentation And Code". 2024. In: Proceedings of 46th IEEE International Conference on Software Engineering (ICSE 2024). [doi:10.5445/IR/1000165692](https://doi.org/10.5445/IR/1000165692/post) -## Case Studies & Benchmarks +* J. Keim, S. Corallo, D. Fuchß und A. Koziolek. "Detecting Inconsistencies in Software Architecture Documentation Using Traceability Link Recovery". 2023. In: IEEE 20th International Conference on Software Architecture (ICSA 2023). [doi:10.1109/ICSA56044.2023.00021](https://doi.org/10.1109/ICSA56044.2023.00021) -You can test ArDoCo using our case studies and benchmarks provided in ... +* D. Fuchß, S. Corallo, J. Keim, J. Speit und A. Koziolek. "Establishing a Benchmark Dataset for Traceability Link Recovery between Software Architecture Documentation and Models". 2022. In: 2nd International Workshop on Mining Software Repositories for Software Architecture - Co-located with 16th European Conference on Software Architecture. -* [Case Studies](https://github.com/ArDoCo/SWATTR) -* [Benchmarks](https://github.com/ArDoCo/Benchmark) +* J. Keim, S. Schulz, D. Fuchß, C. Kocher, J. Speit, A. Koziolek. "Trace Link Recovery for Software Architecture Documentation". 2021. In: Software Architecture: 15th European Conference (ECSA 2021). [doi:10.1007/978-3-030-86044-8_7](https://doi.org/10.1007/978-3-030-86044-8_7) -## Publications +* J. Keim and A. Koziolek. "Towards Consistency Checking Between Software Architecture and Informal Documentation". 2019. In: IEEE 16th International Conference on Software Architecture Companion (ICSA-C). [doi:10.1109/ICSA-C.2019.00052](https://doi.org/10.1109/ICSA-C.2019.00052) -Trace Link Recovery for Software Architecture Documentation Keim, J.; Schulz, S.; Fuchß, D.; Kocher, C.; Speit, J.; -Koziolek, A. 2021. Software Architecture: 15th European Conference, ECSA 2021, Virtual Event, Sweden, September 13-17, -2021, Proceedings. Ed.: S. Biffl, 101–116, Springer -Verlag. [doi:10.1007/978-3-030-86044-8_7](https://doi.org/10.1007/978-3-030-86044-8_7) -The initial version of ArDoCo is based on the master -thesis [Linking Software Architecture Documentation and Models](https://publikationen.bibliothek.kit.edu/1000126194). +The initial version of ArDoCo is based on the master thesis [Linking Software Architecture Documentation and Models](https://publikationen.bibliothek.kit.edu/1000126194). ## Contact -This project is currently developed by researchers of the Karlsruhe Institute of Technology. +This project is currently developed by researchers of the Karlsruhe Institute of Technology (KIT). + +You find us on our websites: -You find us on our -websites: [Jan Keim](https://mcse.kastel.kit.edu/staff_Keim_Jan.php), [Sophie Corallo](https://mcse.kastel.kit.edu/staff_sophie_corallo.php), -and [Dominik Fuchß](https://mcse.kastel.kit.edu/staff_dominik_fuchss.php) +* [Jan Keim](https://mcse.kastel.kit.edu/staff_Keim_Jan.php), +* [Sophie Corallo](https://mcse.kastel.kit.edu/staff_sophie_corallo.php), and +* [Dominik Fuchß](https://mcse.kastel.kit.edu/staff_dominik_fuchss.php) diff --git a/docs/InconsistencyDetection.md b/docs/InconsistencyDetection.md new file mode 100644 index 000000000..03e9c783b --- /dev/null +++ b/docs/InconsistencyDetection.md @@ -0,0 +1 @@ +# Inconsistency Detection diff --git a/docs/IntermediateArtifacts.md b/docs/IntermediateArtifacts.md new file mode 100644 index 000000000..2698811e0 --- /dev/null +++ b/docs/IntermediateArtifacts.md @@ -0,0 +1 @@ +# Intermediate Artifacts diff --git a/docs/LiSSA.md b/docs/LiSSA.md index 4982a722c..daf7e7347 100644 --- a/docs/LiSSA.md +++ b/docs/LiSSA.md @@ -1,7 +1,8 @@ +# Linking Sketches and Software Architecture (LiSSA) + The LiSSA approach aims to connect sketches and informal diagrams (such as class diagrams, component diagrams, ...) with formal models like component models. -## Linking Sketches and Software Architecture (LiSSA) The following diagram shows the pipeline that is planned for the LiSSA approach. ```mermaid @@ -14,7 +15,7 @@ stateDiagram-v2 RecommendationGeneration ConnectionGeneration InconsistencyDetection - + DiagramDetection --> RecommendationGeneration TextPreprocessing --> TextExtraction ArchitectureModel --> RecommendationGeneration diff --git a/docs/Pipeline.md b/docs/Pipeline.md new file mode 100644 index 000000000..454a092fc --- /dev/null +++ b/docs/Pipeline.md @@ -0,0 +1 @@ +# Pipeline diff --git a/docs/Profiles.md b/docs/Profiles.md deleted file mode 100644 index 560a781a1..000000000 --- a/docs/Profiles.md +++ /dev/null @@ -1,32 +0,0 @@ -ArDoCo uses maven profiles to provide subsets of its functionality and speed up development time. - -## Current Profiles - -* **complete** (activated by default) -* **deployment** (profile for deployment to maven central) -* **tlr** (profile for traceability link recovery) -* **inconsistency** (profile for inconsistency detection) - -## Adding new profiles - -In order to add a new profile, you have to extend the profile section in the main pom.xml (as well as in all submodules -that contain submodules; i.e., stages, tests) - -```xml - - - - new-profile-id - - false - - - framework - pipeline - stages - tests - - -``` - - diff --git a/docs/Quickstart.md b/docs/Quickstart.md index aecce250e..3d879e426 100644 --- a/docs/Quickstart.md +++ b/docs/Quickstart.md @@ -1,7 +1,4 @@ -The ArDoCo-Core is a maven project and can be embedded by using its specs (from -the [pom](https://github.com/ArDoCo/Core/blob/main/pom.xml)). - -You can run and configure the execution with the CLI. +The ArDoCo is a maven project and can be embedded by using its specs (from the [pom](https://github.com/ArDoCo/Core/blob/main/pom.xml)). Please acknowledge the [code of conduct](https://github.com/ArDoCo/Core/blob/main/CODE_OF_CONDUCT.md). @@ -29,32 +26,10 @@ Follow the following steps to do so: Please use the provided [formatter](https://github.com/ArDoCo/Core/blob/main/formatter.xml) when contributing. -Additionally, make use of the spotless-plugin for maven to format your code. You can run it via mvn spotless: -apply ([more info](https://github.com/diffplug/spotless/tree/main/plugin-maven)). - -### Documentation - -⚠️ WIP - -## Command Line Interface (CLI) - -[ArDoCo CLI](https://github.com/ArDoCo/CLI) contains a CLI that supports the execution of ArDoCo. - -It is necessary to specify an input model as well as a textual documentation. Usually, our model is an architectural -model. However, the model can also contain a (Java) code model that you can insert using -the [CodeModelExtractors](https://github.com/ArDoCo/Core/tree/main/framework/java-model-extractor). - -All results (trace links, inconsistencies, etc. between the input model and documentation) are written to the specified -output location. - -The [CLI](https://github.com/ArDoCo/CLI/blob/main/src/main/java/edu/kit/kastel/mcse/ardoco/core/pipeline/ArDoCoCLI.java) -is part of the [CLI project](https://github.com/ArDoCo/CLI) of ArDoCo. - -## Standard Configuration +Additionally, please make use of the spotless-plugin for maven to format your code. You can run it via `mvn spotless:apply` ([more info about spotless](https://github.com/diffplug/spotless/tree/main/plugin-maven)). -⚠️ WIP -## Save Actions (Eclipse) +### Save Actions (Eclipse) Go to your Eclipse Workspace folder and open the file `.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs`. diff --git a/docs/SAD-SAM-Code-TLR.md b/docs/SAD-SAM-Code-TLR.md deleted file mode 100644 index 2fe548032..000000000 --- a/docs/SAD-SAM-Code-TLR.md +++ /dev/null @@ -1,6 +0,0 @@ -# Traceability Link Recovery between Software Architecture Documentations (SADs) and Code via Software Architecture Models (SAMs) - -To recover trace links between SADs and code, we combine the traceability link recovery between [SAD-SAM](SAD-SAM-TLR.md) and [SAM-Code](SAM-Code-TLR.md). -Both approaches are executed and their resulting trace links combined via `TransitiveTraceLinks` that match the parts of the documentation to the parts of code -using the model. - diff --git a/docs/SAD-SAM-TLR.md b/docs/SAD-SAM-TLR.md deleted file mode 100644 index d894c0760..000000000 --- a/docs/SAD-SAM-TLR.md +++ /dev/null @@ -1,9 +0,0 @@ -# Traceability Link Recovery between Software Architecture Documentations (SADs) and Software Architecture Models (SAMs) - -To recover trace links between SADs and SAMs, we use a pipeline approach with different major processing steps: - -1. Model Extraction: Processes the architecture model. -2. Text Preprocessing: Processes the text initially, including basic text processing like tokenization, part-of-speech tagging, dependency parsing. -3. Text Extraction: Identification of potential parts of interest in the text. -4. Recommendation Generator: Further processing of interesting parts of text to generate recommendations for parts that should/could be model elements. -5. Connection Generator: Mapping of recommended parts to model parts. diff --git a/docs/SAM-Code-TLR.md b/docs/SAM-Code-TLR.md deleted file mode 100644 index 873819ffd..000000000 --- a/docs/SAM-Code-TLR.md +++ /dev/null @@ -1,11 +0,0 @@ -# Traceability Link Recovery between Software Architecture Models (SAMs) and Code - -The sub-project ARCOTL (Architecture-Code-Trace Links) aims to automatically generate trace links between code and a model of the architecture. -It supports multiple programming languages for the code (Java and Shell) and metamodels for the architecture model (PCM and UML). -To this end the project introduces intermediate models for the architecture (AMTL - Architecture Model for Trace Links) and Code (CMTL - Code Model for Trace -Links). -Trace links are created between instances of these metamodels. -The trace links each have exactly one architecture endpoint and one code endpoint. This is specified by the TLM (Trace Link Model). -The AMTL- and CMTL-instances get extracted from the architecture model and from the code. - - diff --git a/docs/TLR.md b/docs/TLR.md new file mode 100644 index 000000000..139c2480f --- /dev/null +++ b/docs/TLR.md @@ -0,0 +1,33 @@ +# Traceability Link Recovery + +There are currently three kinds of TLR approaches that we describe in their corresponding sections: + +* [Software Architecture Documentation (SAD) to Model (SAM)](#sad-sam) +* [Software Architecture Model (SAM) to Code](#sam-code) +* [SAD to Code via SAM](SAD-SAM-Code-TLR) + + +## SAD-SAM + +For Traceability Link Recovery between Software Architecture Documentations (SADs) and Software Architecture Models (SAMs), we use a pipeline approach with different major processing steps: + +1. Model Extraction: Processes the architecture model. +2. Text Preprocessing: Processes the text initially, including basic text processing like tokenization, part-of-speech tagging, dependency parsing. +3. Text Extraction: Identification of potential parts of interest in the text. +4. Recommendation Generator: Further processing of interesting parts of text to generate recommendations for parts that should/could be model elements. +5. Connection Generator: Mapping of recommended parts to model parts. + +## SAM-Code + +The project ARCOTL (Architecture-Code-Trace Links) aims to automatically generate trace links between Code and a Software Architecture Model (SAM). +It supports multiple programming languages for the code (Java and Shell) and metamodels for the architecture model (PCM and UML). +To this end the project introduces intermediate models for the architecture (AMTL - Architecture Model for Trace Links) and Code (CMTL - Code Model for Trace +Links). +Trace links are created between instances of these metamodels. +The trace links each have exactly one architecture endpoint and one code endpoint. This is specified by the TLM (Trace Link Model). +The AMTL- and CMTL-instances get extracted from the architecture model and from the code. + +## SAD-SAM-Code + +To recover trace links between SADs and code, we combine the traceability link recovery between [SAD-SAM](#sad-sam) and [SAM-Code](#sam-code). +Both approaches are executed, and their resulting trace links combined via `TransitiveTraceLinks` that match the parts of the documentation to the parts of code using the model. diff --git a/docs/Text-Preprocessing.md b/docs/Text-Preprocessing.md new file mode 100644 index 000000000..51cd81865 --- /dev/null +++ b/docs/Text-Preprocessing.md @@ -0,0 +1,20 @@ +# Text Preprocessing + +Text preprocessing works locally, but there is also the option to host a **microservice** for this. +The benefit is that the models do not need to be loaded each time, saving some runtime (and local memory). + +The microservice can be found at [ArDoCo/StanfordCoreNLP-Provider-Service](https://github.com/ArDoCo/StanfordCoreNLP-Provider-Service/). + +The microservice is secured with credentials and the usage of the microservice needs to be activated and the URL of the microservice configured. +These settings can be provided to the execution via environment variables. +To do so, set the following variables: + +```env +NLP_PROVIDER_SOURCE=microservice +MICROSERVICE_URL=[microservice_url] +SCNLP_SERVICE_USER=[your_username] +SCNLP_SERVICE_PASSWORD=[your_password] +``` + +The first variable `NLP_PROVIDER_SOURCE=microservice` activates the microservice usage. +The next three variables configure the connection, and you need to provide the configuration for your deployed microservice. \ No newline at end of file From 036a2b797a92ad2a9d0b5f8b51639d5248e33d6f Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 16:22:51 +0100 Subject: [PATCH 03/20] Rename Text Preprocessing Microservice --- docs/Home.md | 2 +- ...Text-Preprocessing.md => Text-Preprocessing-Microservice.md} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename docs/{Text-Preprocessing.md => Text-Preprocessing-Microservice.md} (96%) diff --git a/docs/Home.md b/docs/Home.md index 015165fe8..7f88dfdc6 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -15,7 +15,7 @@ To get to know the project, please read the following pages: * [Core Pipeline Definition](pipeline) * [Intermediate Artifacts](intermediateartifacts) -* [Text Preprocessing](Text-Preprocessing) +* [Text Preprocessing Microservice](Text-Preprocessing-Microservice) * [Traceability Link Recovery (TLR)](tlr) * [Inconsistency Detection (ID)](inconsistencydetection) * [Linking Sketches and Software Architecture (LiSSA)](LiSSA) diff --git a/docs/Text-Preprocessing.md b/docs/Text-Preprocessing-Microservice.md similarity index 96% rename from docs/Text-Preprocessing.md rename to docs/Text-Preprocessing-Microservice.md index 51cd81865..9acfca221 100644 --- a/docs/Text-Preprocessing.md +++ b/docs/Text-Preprocessing-Microservice.md @@ -1,4 +1,4 @@ -# Text Preprocessing +# Text Preprocessing Microservice Text preprocessing works locally, but there is also the option to host a **microservice** for this. The benefit is that the models do not need to be loaded each time, saving some runtime (and local memory). From 32b80869ae096dd96f1f7ccae771e99397978fe3 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 16:23:04 +0100 Subject: [PATCH 04/20] Add description for Pipeline --- docs/Pipeline.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/Pipeline.md b/docs/Pipeline.md index 454a092fc..9c9781eb7 100644 --- a/docs/Pipeline.md +++ b/docs/Pipeline.md @@ -1 +1,23 @@ # Pipeline + +```mermaid +classDiagram + class AbstractPipeline + class Pipeline + class PipelineStep + + Pipeline--> "*" AbstractPipeline + Pipeline..|>AbstractPipeline + PipelineStep..|>AbstractPipeline +``` + +For the pipeline definition, we use a composite to allow us to have a multi-level pipeline. +As such, a pipeline consists of an arbitrary number of either *PipelineStep*s or further *Pipeline*s. + +In our approach, we use three levels for our pipeline: +On the first level, the overall pipeline defines multiple *stages*, e.g., text preprocessing or element connection. +Each stage is another pipeline that then defines *agents* that have the purpose of initiating the processing and of collecting the information of the various heuristics. +Agents then use *Informants* as concrete PipelineSteps to execute the processing and heuristics. + +A pipeline step (i.e., an Informant) stores results within a repository that can be universally accessed by all pipeline steps, similarly to a blackboard in the blackboard pattern. +This way, each pipeline step and, thus, each heuristic can access the results of previous steps and provide its results for others. From 6cf061da7c4bcc875b333afc69ae8b28a2568419 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 16:23:15 +0100 Subject: [PATCH 05/20] Add description for Intermediate Artifacts --- docs/IntermediateArtifacts.md | 128 ++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/docs/IntermediateArtifacts.md b/docs/IntermediateArtifacts.md index 2698811e0..5352e09c6 100644 --- a/docs/IntermediateArtifacts.md +++ b/docs/IntermediateArtifacts.md @@ -1 +1,129 @@ # Intermediate Artifacts + +Currently, there are three kinds of intermediate artifacts. +First, the input text has an internal representation (cf. [edu/kit/kastel/mcse/ardoco/core/api/text/Text.java](https://github.com/ArDoCo/Core/blob/main/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/text/Text.java)) to cover all the annotations from the preprocessing. +Second, there is the intermediate representation of software architecture models (SAMs) that we cover [below](#software-architecture-models). +Third, we create a uniform representation for code that we also explain [below](#code). + +```mermaid +classDiagram + class ModelElement + class Model + class Entity + class CodeModel + class ArchitectureModel + + ModelElement <|-- Entity + ModelElement <|-- Model + Model <|-- CodeModel + Model <|-- ArchitectureModel + Model "0..1" o--"*" Entity: elements +``` + +## Software Architecture Models + +```mermaid +classDiagram + class Entity + class ArchitectureItem + class Component + class Interface + class Signature + + Entity <|-- ArchitectureItem + ArchitectureItem <|-- Component + ArchitectureItem <|-- Interface + ArchitectureItem <|-- Signature + + Interface o-- "*" Signature: signatures + Interface "*" <-- "*" Component: provided + Interface "*" <-- "*" Component: required + Component "*" <-- Component: subcomponents +``` + +In this software model, each class is categorized as an ArchitectureItem, which inherits properties from Entity, including a name and identifier. +There are three types of ArchitectureItems: Component, Interface, and Signature. + +A Component represents various architectural elements in different modeling languages. +For instance, it corresponds to a UML Component. +In the PCM context, it encompasses both BasicComponent and CompositeComponent. +BasicComponents do not contain sub-components, while CompositeComponents may have sub-components. + +Components can either require or provide Interfaces. +Provided Interfaces are implemented by the Component, while Required Interfaces specify the functionality required by a Component. + +An Interface contains multiple method Signatures. +Signatures are linked to Interfaces in a composite relationship, meaning each Signature is associated with an Interface. + + +## Code + +```mermaid +classDiagram + class Entity + class CodeItem + class Module + class Package + class CompilationUnit + class CodeAssembly + class ComputationalObject + class ControlElement + class Datatype + class ClassUnit + class InterfaceUnit + + Entity <|-- CodeItem + CodeItem <|-- ComputationalObject + CodeItem <|-- Module + CodeItem <|-- Datatype + ComputationalObject <|-- ControlElement + Module <|-- Package + Module <|-- CompilationUnit + Module <|-- CodeAssembly + Datatype <|-- ClassUnit + Datatype <|-- InterfaceUnit + + Module "0..1" o--> "*" CodeItem: codeElements + ClassUnit "0..1" o--> "*" CodeItem: codeElements + InterfaceUnit "0..1" o--> "*" CodeItem: codeElements + Datatype "*" <-- "*" Datatype: implementedTypes + Datatype "*" <-- "*" Datatype: extendedTypes +``` + +The intermediate model for code is based on the source code package within the [Knowledge Discover Model (KDM)](https://www.omg.org/spec/KDM/1.3/PDF). + +The different classes in the code model inherit from CodeItem, which itself is a specialized Entity. +Thus, each class has a name and identifier. + +There are three kinds of source code elements: Module, Datatype, and ComputationalObject. + +Modules are typically logical components of the system with a certain level of abstraction. +A Module can contain CodeItems, and there are three differentiations of Modules: CompilationUnit, Package, and CodeAssembly. + +A CompilationUnit represents a source file where code is stored. +It includes a relative path to the file's location on disk and its programming language. +The CompilationUnit is partly based on the InventoryModel from KDM. + +A Package is a logical collection of source code elements (i.e., CodeItems). +Packages can also contain sub-Packages, similar to the structure commonly found in Java. + +A CodeAssembly consists of source code artifacts linked together to make them runnable. +For example, source code files together with their headers are grouped in a CodeAssembly. + +There are two kinds of Datatypes: CodeUnit and InterfaceUnit. +A CodeUnit is akin to a class in Java and can contain other CodeItems like methods and inner classes. +Similarly, an InterfaceUnit can also contain code elements like methods. + +The relationships implementedTypes and extendedTypes from the KDM model are present in the intermediate model. +A Datatype can implement an arbitrary number of extendedTypes relations, representing inheritance in object-oriented programming languages. + +The construction around extendedTypes and implementedTypes also enables interfaces to extend other interfaces, akin to Java. +Interfaces can also extend classes, a feature present in some programming languages like TypeScript. + +The KDM includes several primitive datatypes like boolean, which are not realized within this model as they are not currently needed. +If future work extends the approaches with a thorough comparison of datatypes, then the intermediate model may need further sub-classing of the KDM. + +Currently, there is only one type of ComputationalObject: the ControlElement. +The ControlElement represents callable parts with specific behaviors, such as functions, procedures, or methods. +Unlike the KDM, this work does not make a further distinction between CallableUnits and MethodUnits. +Additionally, it does not utilize parameters, return types, or similar elements of the KDM and therefore does not model them. From ef06c44c22ee6db0bac2f1d8b2f35761e3cf7f72 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 16:33:44 +0100 Subject: [PATCH 06/20] Add description for ID --- docs/InconsistencyDetection.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/InconsistencyDetection.md b/docs/InconsistencyDetection.md index 03e9c783b..735af75bd 100644 --- a/docs/InconsistencyDetection.md +++ b/docs/InconsistencyDetection.md @@ -1 +1,13 @@ # Inconsistency Detection + +Currently, there are two kinds of inconsistencies that are supported by the approach: Missing Model Elements (MMEs) and Undocumented Model Elements (UMEs). + +Undocumented Model Elements (UMEs) are elements within the Software Architecture Model (SAM) that are not documented in the natural language Software Architecture Documentation (SAD). +Our heuristic looks for model elements that do not have any (or below a certain threshold, per default 1) trace links associated with them. +In the configuration options, you can fine tune the threshold as well as set up a regex-based whitelist. + +Missing Model Elements (MMEs) are architecture elements that are described within the SAD that cannot be traced to the SAM. +For this, we make use of the recommendations from the Recommendation Generator within the [Traceability Link Recovery (TLR)](tlr). +Each of these recommendations that are not linked with a model element are potential inconsistencies. +To further increase precision, we make use of filters. +For example, we use a filter to get rid of commonly used software (development) terminology that look similar to, e.g., components but rarely are model elements. From f03ca587edb632f88f61e0fa1b37f07090a46f41 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 16:50:57 +0100 Subject: [PATCH 07/20] Add footer and sidebar to wiki --- docs/_Footer.md | 1 + docs/_Sidebar.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 docs/_Footer.md create mode 100644 docs/_Sidebar.md diff --git a/docs/_Footer.md b/docs/_Footer.md new file mode 100644 index 000000000..d53866176 --- /dev/null +++ b/docs/_Footer.md @@ -0,0 +1 @@ +[ArDoCo](https://ardoco.de): Architecture Documentation Consistency - Aiming to provide traceability link recovery and inconsistency analyses between formal models and informal documentation diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md new file mode 100644 index 000000000..6fb077806 --- /dev/null +++ b/docs/_Sidebar.md @@ -0,0 +1,15 @@ +# Table of Contents + +1. [Home](home) +2. [Quickstart](quickstart) +3. [Pipeline](pipeline) +4. [Intermediate Artifacts](intermediateartifacts) + 1. [SAM](IntermediateArtifacts#software-architecture-models) + 1. [Code](IntermediateArtifacts#code) +5. [Text Preprocessing Microservice](Text-Preprocessing-Microservice) +6. [Traceability Link Recovery (TLR)](tlr) + 1. [SAD-SAM](tlr#sad-sam) + 1. [SAM-Code](tlr#sam-code) + 1. [SAD-SAM-Code](tlr#sad-sam-code) +7. [Inconsistency Detection (ID)](InconsistencyDetection) +8. [LiSSA](lissa) \ No newline at end of file From 73b0fec20c3bfc047efe3ec0168b90697cececfc Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 16:52:39 +0100 Subject: [PATCH 08/20] Update footer of wiki --- docs/_Footer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_Footer.md b/docs/_Footer.md index d53866176..735919b83 100644 --- a/docs/_Footer.md +++ b/docs/_Footer.md @@ -1 +1 @@ -[ArDoCo](https://ardoco.de): Architecture Documentation Consistency - Aiming to provide traceability link recovery and inconsistency analyses between formal models and informal documentation +[ArDoCo](https://ardoco.de): Architecture Documentation Consistency - Providin TLR and inconsistency analyses between formal models and informal documentation From 206d24fdf829822e50133009f43ce87a701343da Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 17:02:53 +0100 Subject: [PATCH 09/20] Add Logo to Home in Wiki --- docs/Home.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Home.md b/docs/Home.md index 7f88dfdc6..651127659 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -1,3 +1,7 @@ +

+ ArDoCo +

+ # ArDoCo ArDoCo (Architecture Documentation Consistency) is a framework to connect architecture documentation and models while From a7d5db421411af55d8c37b542a7f1dcf90d6594d Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 17:09:11 +0100 Subject: [PATCH 10/20] Update footer of wiki --- docs/_Footer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_Footer.md b/docs/_Footer.md index 735919b83..41b176f5a 100644 --- a/docs/_Footer.md +++ b/docs/_Footer.md @@ -1 +1 @@ -[ArDoCo](https://ardoco.de): Architecture Documentation Consistency - Providin TLR and inconsistency analyses between formal models and informal documentation +[ArDoCo](https://ardoco.de): **Ar**chitecture **Do**cumentation **Co**nsistency - Providing TLR and Inconsistency Detection between formal models and informal documentation From 1828b4d9b7e8d1844134c6bff25591f0639d9d04 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 17:47:46 +0100 Subject: [PATCH 11/20] Fix broken links and structure --- docs/{Home.md => ArDoCo.md} | 11 +++++------ ...encyDetection.md => Inconsistency-Detection.md} | 3 +-- ...diateArtifacts.md => Intermediate-Artifacts.md} | 1 - docs/Pipeline.md | 1 - docs/Quickstart.md | 1 + docs/Text-Preprocessing-Microservice.md | 1 - docs/{TLR.md => Traceability-Link-Recovery.md} | 3 +-- docs/_Sidebar.md | 14 +++++++------- 8 files changed, 15 insertions(+), 20 deletions(-) rename docs/{Home.md => ArDoCo.md} (94%) rename docs/{InconsistencyDetection.md => Inconsistency-Detection.md} (92%) rename docs/{IntermediateArtifacts.md => Intermediate-Artifacts.md} (99%) rename docs/{TLR.md => Traceability-Link-Recovery.md} (96%) diff --git a/docs/Home.md b/docs/ArDoCo.md similarity index 94% rename from docs/Home.md rename to docs/ArDoCo.md index 651127659..6c39b9b81 100644 --- a/docs/Home.md +++ b/docs/ArDoCo.md @@ -1,15 +1,14 @@ +

ArDoCo

-# ArDoCo - ArDoCo (Architecture Documentation Consistency) is a framework to connect architecture documentation and models while identifying missing or deviating elements (inconsistencies). An element can be any representable item of the model, like a component or a relation. To do so, ArDoCo first creates trace links and then makes use of them and other information to identify inconsistencies. -You can find ArDoCo on the [website](ardoco.de) and [on GitHub](https://github.com/ArDoCo). +You can find ArDoCo on the [website](https://ardoco.de) and [on GitHub](https://github.com/ArDoCo). Before contributing, please read the [Quickstart Guide](quickstart). @@ -18,10 +17,10 @@ Before contributing, please read the [Quickstart Guide](quickstart). To get to know the project, please read the following pages: * [Core Pipeline Definition](pipeline) -* [Intermediate Artifacts](intermediateartifacts) +* [Intermediate Artifacts](intermediate-artifacts) * [Text Preprocessing Microservice](Text-Preprocessing-Microservice) -* [Traceability Link Recovery (TLR)](tlr) -* [Inconsistency Detection (ID)](inconsistencydetection) +* [Traceability Link Recovery (TLR)](traceability-link-recovery) +* [Inconsistency Detection (ID)](inconsistency-detection) * [Linking Sketches and Software Architecture (LiSSA)](LiSSA) ## Project Structure diff --git a/docs/InconsistencyDetection.md b/docs/Inconsistency-Detection.md similarity index 92% rename from docs/InconsistencyDetection.md rename to docs/Inconsistency-Detection.md index 735af75bd..ef8f23f23 100644 --- a/docs/InconsistencyDetection.md +++ b/docs/Inconsistency-Detection.md @@ -1,4 +1,3 @@ -# Inconsistency Detection Currently, there are two kinds of inconsistencies that are supported by the approach: Missing Model Elements (MMEs) and Undocumented Model Elements (UMEs). @@ -7,7 +6,7 @@ Our heuristic looks for model elements that do not have any (or below a certain In the configuration options, you can fine tune the threshold as well as set up a regex-based whitelist. Missing Model Elements (MMEs) are architecture elements that are described within the SAD that cannot be traced to the SAM. -For this, we make use of the recommendations from the Recommendation Generator within the [Traceability Link Recovery (TLR)](tlr). +For this, we make use of the recommendations from the Recommendation Generator within the [Traceability Link Recovery (TLR)](traceability-link-recovery). Each of these recommendations that are not linked with a model element are potential inconsistencies. To further increase precision, we make use of filters. For example, we use a filter to get rid of commonly used software (development) terminology that look similar to, e.g., components but rarely are model elements. diff --git a/docs/IntermediateArtifacts.md b/docs/Intermediate-Artifacts.md similarity index 99% rename from docs/IntermediateArtifacts.md rename to docs/Intermediate-Artifacts.md index 5352e09c6..da69ec7f5 100644 --- a/docs/IntermediateArtifacts.md +++ b/docs/Intermediate-Artifacts.md @@ -1,4 +1,3 @@ -# Intermediate Artifacts Currently, there are three kinds of intermediate artifacts. First, the input text has an internal representation (cf. [edu/kit/kastel/mcse/ardoco/core/api/text/Text.java](https://github.com/ArDoCo/Core/blob/main/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/text/Text.java)) to cover all the annotations from the preprocessing. diff --git a/docs/Pipeline.md b/docs/Pipeline.md index 9c9781eb7..ee5900b99 100644 --- a/docs/Pipeline.md +++ b/docs/Pipeline.md @@ -1,4 +1,3 @@ -# Pipeline ```mermaid classDiagram diff --git a/docs/Quickstart.md b/docs/Quickstart.md index 3d879e426..78a4a20aa 100644 --- a/docs/Quickstart.md +++ b/docs/Quickstart.md @@ -1,3 +1,4 @@ + The ArDoCo is a maven project and can be embedded by using its specs (from the [pom](https://github.com/ArDoCo/Core/blob/main/pom.xml)). Please acknowledge the [code of conduct](https://github.com/ArDoCo/Core/blob/main/CODE_OF_CONDUCT.md). diff --git a/docs/Text-Preprocessing-Microservice.md b/docs/Text-Preprocessing-Microservice.md index 9acfca221..5d5466828 100644 --- a/docs/Text-Preprocessing-Microservice.md +++ b/docs/Text-Preprocessing-Microservice.md @@ -1,4 +1,3 @@ -# Text Preprocessing Microservice Text preprocessing works locally, but there is also the option to host a **microservice** for this. The benefit is that the models do not need to be loaded each time, saving some runtime (and local memory). diff --git a/docs/TLR.md b/docs/Traceability-Link-Recovery.md similarity index 96% rename from docs/TLR.md rename to docs/Traceability-Link-Recovery.md index 139c2480f..fddf6de94 100644 --- a/docs/TLR.md +++ b/docs/Traceability-Link-Recovery.md @@ -1,10 +1,9 @@ -# Traceability Link Recovery There are currently three kinds of TLR approaches that we describe in their corresponding sections: * [Software Architecture Documentation (SAD) to Model (SAM)](#sad-sam) * [Software Architecture Model (SAM) to Code](#sam-code) -* [SAD to Code via SAM](SAD-SAM-Code-TLR) +* [SAD to Code via SAM](#sad-sam-code) ## SAD-SAM diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 6fb077806..8fc557d3b 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -1,15 +1,15 @@ # Table of Contents -1. [Home](home) +1. [Home](ardoco) 2. [Quickstart](quickstart) 3. [Pipeline](pipeline) -4. [Intermediate Artifacts](intermediateartifacts) +4. [Intermediate Artifacts](intermediate-artifacts) 1. [SAM](IntermediateArtifacts#software-architecture-models) 1. [Code](IntermediateArtifacts#code) 5. [Text Preprocessing Microservice](Text-Preprocessing-Microservice) -6. [Traceability Link Recovery (TLR)](tlr) - 1. [SAD-SAM](tlr#sad-sam) - 1. [SAM-Code](tlr#sam-code) - 1. [SAD-SAM-Code](tlr#sad-sam-code) -7. [Inconsistency Detection (ID)](InconsistencyDetection) +6. [Traceability Link Recovery (TLR)](traceability-link-recovery) + 1. [SAD-SAM](traceability-link-recovery#sad-sam) + 1. [SAM-Code](traceability-link-recovery#sam-code) + 1. [SAD-SAM-Code](traceability-link-recovery#sad-sam-code) +7. [Inconsistency Detection (ID)](Inconsistency-Detection) 8. [LiSSA](lissa) \ No newline at end of file From 2a33e55d4e5bc3a052afa33e07c10b954a857849 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Mon, 4 Mar 2024 17:57:40 +0100 Subject: [PATCH 12/20] Fix "Home" page for wiki --- docs/{ArDoCo.md => Home.md} | 1 + 1 file changed, 1 insertion(+) rename docs/{ArDoCo.md => Home.md} (99%) diff --git a/docs/ArDoCo.md b/docs/Home.md similarity index 99% rename from docs/ArDoCo.md rename to docs/Home.md index 6c39b9b81..cd5ac064a 100644 --- a/docs/ArDoCo.md +++ b/docs/Home.md @@ -1,3 +1,4 @@ +# ArDoCo

ArDoCo From d85e6eca4628ee779a9f256aea932637e9ef9fdd Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Wed, 6 Mar 2024 08:56:33 +0100 Subject: [PATCH 13/20] Fix missing dash i sidebar links --- docs/_Sidebar.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 8fc557d3b..f3f660e84 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -4,8 +4,8 @@ 2. [Quickstart](quickstart) 3. [Pipeline](pipeline) 4. [Intermediate Artifacts](intermediate-artifacts) - 1. [SAM](IntermediateArtifacts#software-architecture-models) - 1. [Code](IntermediateArtifacts#code) + 1. [SAM](intermediate-artifacts#software-architecture-models) + 1. [Code](intermediate-artifacts#code) 5. [Text Preprocessing Microservice](Text-Preprocessing-Microservice) 6. [Traceability Link Recovery (TLR)](traceability-link-recovery) 1. [SAD-SAM](traceability-link-recovery#sad-sam) From ea0870aeb5af284af07bed2f31eb9b806f4c6d00 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Thu, 7 Mar 2024 10:06:15 +0100 Subject: [PATCH 14/20] Remove deploy action --- .github/workflows/deploy.yml | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 08fc76730..000000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Maven Deploy - -on: - push: - branches: - - 'main' # Build the latest develop-SNAPSHOT - paths: - - '**/src/**' - - '**/pom.xml' - - 'pom.xml' - - # Publish `v1.2.3` tags as releases. - tags: - - v* - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - publish: - uses: ardoco/actions/.github/workflows/maven.yml@main - with: - deploy: true - with-submodules: true - runs-on: ubuntu-latest - secrets: - OSSRH_USER: ${{secrets.OSSRH_USER}} - OSSRH_TOKEN: ${{secrets.OSSRH_TOKEN}} - GPG_KEY: ${{secrets.GPG_KEY}} - From 3034a515066dee35e277a497d21520b39a397913 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Thu, 7 Mar 2024 10:29:20 +0100 Subject: [PATCH 15/20] Update poms --- framework/common/pom.xml | 35 +++++++++------- framework/pom.xml | 8 +--- framework/text-provider-json/pom.xml | 23 ++++------- pipeline-core/pom.xml | 16 ++------ pom.xml | 60 +++++++++++++--------------- report/pom.xml | 7 +--- 6 files changed, 64 insertions(+), 85 deletions(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 6ea57e8fd..3d76fb603 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -8,9 +8,13 @@ common - Common Utilities and Pipeline Definitions + ArDoCo Common Utilities and Pipeline Definitions + + com.fasterxml.jackson.core + jackson-annotations + com.fasterxml.jackson.core jackson-core @@ -24,9 +28,13 @@ commons-io - info.debatty - java-string-similarity - 2.0.0 + org.apache.commons + commons-compress + 1.26.0 + + + org.apache.commons + commons-lang3 org.apache.commons @@ -37,6 +45,11 @@ jena-arq 4.10.0 + + org.apache.jena + jena-core + 4.10.0 + org.apache.opennlp opennlp-tools @@ -46,6 +59,10 @@ org.eclipse.collections eclipse-collections + + org.eclipse.collections + eclipse-collections-api + org.eclipse.jgit org.eclipse.jgit @@ -60,16 +77,6 @@ jsoup 1.17.2 - - org.junit.jupiter - junit-jupiter-engine - test - - - org.slf4j - slf4j-simple - test - org.xerial sqlite-jdbc diff --git a/framework/pom.xml b/framework/pom.xml index f12825792..9c6f7b4ab 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -10,12 +10,8 @@ framework pom - InFormALin Framework - The goal of this project was to connect informal artifacts like architecture documentation and formal - artifacts like models. The InFormALin Framework is actively developed by researchers of the Modelling for - Continuous Software Engineering (MCSE) group of KASTEL - Institute of Information Security and Dependability at - the KIT. This work was supported by funding from the topic Engineering Secure Systems of the Helmholtz - Association (HGF) and by KASTEL Security Research Labs (46.23.01). + ArDoCo Framework + This framework contains the code for defining the architecture, data structures, and interfaces of the ArDoCo approach as well as the common code. common diff --git a/framework/text-provider-json/pom.xml b/framework/text-provider-json/pom.xml index 1e9115ceb..dac86f65e 100644 --- a/framework/text-provider-json/pom.xml +++ b/framework/text-provider-json/pom.xml @@ -11,16 +11,16 @@ text-provider-json jar TextProvider JSON + Definition of the JSON schema for the TextProvider com.fasterxml.jackson.core - jackson-databind - ${jackson.version} + jackson-annotations - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 + com.fasterxml.jackson.core + jackson-databind ${jackson.version} @@ -34,19 +34,12 @@ ${ardoco.version} - io.vertx - vertx-json-schema - 4.5.3 - - - org.junit.jupiter - junit-jupiter-engine - test + org.apache.commons + commons-lang3 - org.slf4j - slf4j-simple - test + org.eclipse.collections + eclipse-collections-api diff --git a/pipeline-core/pom.xml b/pipeline-core/pom.xml index acfd402ca..e8a773cc1 100644 --- a/pipeline-core/pom.xml +++ b/pipeline-core/pom.xml @@ -9,6 +9,8 @@ pipeline-core + Pipeline Core + This module contains the pipeline definition or ArDoCo. @@ -17,23 +19,13 @@ ${revision} - org.junit.jupiter - junit-jupiter-engine - test + org.eclipse.collections + eclipse-collections-api org.reflections reflections - - org.slf4j - log4j-over-slf4j - - - org.slf4j - slf4j-simple - test - diff --git a/pom.xml b/pom.xml index e10264ec7..4da10a2d3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,15 +7,12 @@ ${revision} pom - ArDoCo (Core) - The Consistency Analyzer + ArDoCo - The Consistency Analyzer: Core Framework The goal of this project is to connect architecture documentation and models while identifying missing or deviating elements (inconsistencies). An element can be any representable item of the model, like a component or a relation. To do so, we first create trace links and then make use of them and other information to identify inconsistencies. ArDoCo is actively developed by researchers of the Modelling for Continuous Software - Engineering (MCSE) group of KASTEL - Institute of Information Security and Dependability at the KIT. - This work was supported by funding from the topic Engineering Secure Systems of the Helmholtz Association (HGF) - and by KASTEL Security Research Labs - (46.23.01). + Engineering (MCSE) group of KASTEL - Institute of Information Security and Dependability at the KIT. https://github.com/ArDoCo/Core @@ -71,7 +68,7 @@ - 0.42.0-SNAPSHOT + 1.0.0-SNAPSHOT ${revision} UTF-8 UTF-8 @@ -145,7 +142,6 @@ 2.15.1 - org.apache.commons commons-lang3 @@ -173,8 +169,6 @@ eclipse-collections ${eclipse-collections.version} - - org.eclipse.collections eclipse-collections-api @@ -185,30 +179,6 @@ org.eclipse.jgit 6.8.0.202311291450-r - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-params - ${junit.version} - test - - - org.junit.vintage - junit-vintage-engine - ${junit.version} - test - org.mockito mockito-core @@ -253,6 +223,30 @@ error_prone_core ${error-prone.version} + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.version} + test + + + org.junit.vintage + junit-vintage-engine + ${junit.version} + test + org.slf4j slf4j-api diff --git a/report/pom.xml b/report/pom.xml index 8ed3186d5..10b3820f1 100644 --- a/report/pom.xml +++ b/report/pom.xml @@ -10,6 +10,8 @@ report jar + Report + This module is used to create reports for SonarCloud and similar. true @@ -34,11 +36,6 @@ text-provider-json ${revision} - - org.junit.jupiter - junit-jupiter-engine - test - From dd60cc28344b30fa141383615234092758fa3b91 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Thu, 7 Mar 2024 10:34:51 +0100 Subject: [PATCH 16/20] Update README --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index f5e59a6ba..454681178 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,3 @@ For snapshot releases, make sure to add the following repository ## Attribution The initial version of this project is based on the master thesis [Linking Software Architecture Documentation and Models](https://doi.org/10.5445/IR/1000126194). - -## Acknowledgements - -This work was supported by funding from the topic Engineering Secure Systems of the Helmholtz Association (HGF) and by KASTEL Security Research Labs (46.23.01). From 52e6e0feee354d7ef4dd06d1a5abc2f2635ffe7e Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Thu, 7 Mar 2024 10:42:49 +0100 Subject: [PATCH 17/20] Update README --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 454681178..90b90a5a5 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,8 @@ For snapshot releases, make sure to add the following repository ``` - - -## Attribution - -The initial version of this project is based on the master thesis [Linking Software Architecture Documentation and Models](https://doi.org/10.5445/IR/1000126194). +## Relevant repositories +The following is an excerpt of repositories that use this framework and implement the different approaches and pipelines of ArDoCo: +* [ArDoCo/TLR](https://github.com/ArDoCo/TLR): implementing different traceability link recovery approaches +* [ArDoCo/InconsistencyDetection](https://github.com/ArDoCo/InconsistencyDetection): implementing inconsistency detection approaches +* [ArDoCo/LiSSA](https://github.com/ArDoCo/LiSSA): implementing processing of sketches and diagrams for, e.g., TLR \ No newline at end of file From bb8155165ac5623ec5e58bb8fdda8fe61b82454f Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Thu, 7 Mar 2024 11:09:53 +0100 Subject: [PATCH 18/20] Revert "Remove deploy action" This reverts commit ea0870aeb5af284af07bed2f31eb9b806f4c6d00. --- .github/workflows/deploy.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..08fc76730 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,30 @@ +name: Maven Deploy + +on: + push: + branches: + - 'main' # Build the latest develop-SNAPSHOT + paths: + - '**/src/**' + - '**/pom.xml' + - 'pom.xml' + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + publish: + uses: ardoco/actions/.github/workflows/maven.yml@main + with: + deploy: true + with-submodules: true + runs-on: ubuntu-latest + secrets: + OSSRH_USER: ${{secrets.OSSRH_USER}} + OSSRH_TOKEN: ${{secrets.OSSRH_TOKEN}} + GPG_KEY: ${{secrets.GPG_KEY}} + From 461a8598cfd930d707d506bb486d2ea770a7c5f6 Mon Sep 17 00:00:00 2001 From: Jan Keim Date: Thu, 7 Mar 2024 11:10:32 +0100 Subject: [PATCH 19/20] Update deploy action --- .github/workflows/deploy.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 08fc76730..027d689b5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -8,10 +8,6 @@ on: - '**/src/**' - '**/pom.xml' - 'pom.xml' - - # Publish `v1.2.3` tags as releases. - tags: - - v* # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From d62217d41a7609ced697bb4ef7d6709b69781f65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:09:12 +0000 Subject: [PATCH 20/20] Dependency(deps): Bump com.networknt:json-schema-validator Bumps [com.networknt:json-schema-validator](https://github.com/networknt/json-schema-validator) from 1.3.2 to 1.3.3. - [Release notes](https://github.com/networknt/json-schema-validator/releases) - [Changelog](https://github.com/networknt/json-schema-validator/blob/master/CHANGELOG.md) - [Commits](https://github.com/networknt/json-schema-validator/compare/1.3.2...1.3.3) --- updated-dependencies: - dependency-name: com.networknt:json-schema-validator dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- framework/text-provider-json/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/text-provider-json/pom.xml b/framework/text-provider-json/pom.xml index dac86f65e..1e6d95b32 100644 --- a/framework/text-provider-json/pom.xml +++ b/framework/text-provider-json/pom.xml @@ -26,7 +26,7 @@ com.networknt json-schema-validator - 1.3.2 + 1.3.3 io.github.ardoco.core