https://github.com/ardoco/detectinginconsistenciesinsoftwarearchitecturedocumentationusingtraceabilitylinkrecovery
Replication package for the ICSA 2023 paper "Detecting Inconsistencies in Software Architecture Documentation Using Traceability Link Recovery" by Keim et al.
Science Score: 23.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.7%) to scientific vocabulary
Last synced: 6 months ago
·
JSON representation
Repository
Replication package for the ICSA 2023 paper "Detecting Inconsistencies in Software Architecture Documentation Using Traceability Link Recovery" by Keim et al.
Basic Info
- Host: GitHub
- Owner: ArDoCo
- License: mit
- Language: Java
- Default Branch: main
- Homepage: https://doi.org/10.5281/zenodo.7555194
- Size: 10.4 MB
Statistics
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Created over 3 years ago
· Last pushed about 3 years ago
https://github.com/ArDoCo/DetectingInconsistenciesInSoftwareArchitectureDocumentationUsingTraceabilityLinkRecovery/blob/main/
# Replication Package for Detecting Inconsistencies in Software Architecture Documentation Using Traceability Link Recovery
[](https://doi.org/10.5281/zenodo.7555194)
Replication package for the ICSA 2023 paper "Detecting Inconsistencies in Software Architecture Documentation Using
Traceability Link Recovery".
**You find the overall results and comparison to baseline and old approach in [results.xlsx](./results/results.xlsx)**
For replication, you need to have installed either `docker` or ...
* Java JDK 17 & Maven 3.8.6
* Python 3.10.6 with pip
* curl
## System Requirements
* At least `1 GiB` RAM (Recommended: More than `6 GiB` RAM)
## Docker Image
Simply run `docker run -it --rm ghcr.io/ardoco/replication-package-icsa23` to get a container with installed dependencies and this repository (copied to `/eval` within the container). Within this container you can run the different steps of the evaluation.
## Run Scripts
You can find run scripts for the evaluation in `run_scripts`.
These scripts execute the different approaches.
## Blacklists for MME Detection
We use a common black list and project-specific blacklists to filter unwanted words.
The [common blacklist](./approach/inconsistency-detection/src/main/resources/unwanted_words_filter_common.json) contains: cpu, gpu, file, directory, event, bus, browser, chrome, firefox, safari, edge, instance, object, module, code, java, javascript, nodejs, npm, kotlin, request, response, servlet, unit, test.
The project-specific blacklists are:
* [MediaStore](./approach/tests/src/test/resources/configurations/ms/filterlists_all.txt): download,file,log,meta,server
* [TeaStore](./approach/tests/src/test/resources/configurations/ts/filterlists_all.txt): instance,item,name,product,rankings,rating,size
* [TEAMMATES](./approach/tests/src/test/resources/configurations/tm/filterlists_all.txt): assertion,backdoor,check,classes,code,cron,end,failure,javascript,key,limit,minute,origin,processing,queue,request,servlet,task,testing,unit,utility,origin
* [BigBlueButton](./approach/tests/src/test/resources/configurations/bbb/filterlists_all.txt): conversion,core,cpu,file,front,integration,nodejs,party,process,side,svg
* [JabRef](./approach/tests/src/test/resources/configurations/jabref/filterlists_all.txt): aspect,bibdatases,bibentries,bus,event
## Creation of results in detail (without run scripts)
### SWATTR
To generate the results for SWATTR go to the `swattr` directory and follow the instructions in the directory.
### TLR Baseline
To get the results for the TLR Baseline approach simply run the JUnit Test
Class [EvaluationIT](./tlr-baseline/src/test/java/io/github/ardoco/simpletracelinkdiscovery/eval/EvaluationIT.java).
Therefore, you have to install Java 17 and import the project to an IDE of your choice (we suggest IntelliJ or Eclipse
here).
### Our Approach for TLR and ID & Baseline for ID
To generate the results of our approach including the baseline of inconsistency detection (ID) you find everything in
the directory `approach`.
To get the results for our approach for TLR and ID you have to run certain JUnit Tests:
* [TraceabilityLinkRecoveryEvaluationIT](approach/tests/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/TraceabilityLinkRecoveryEvaluationIT.java)
* `evaluateTraceLinkRecoveryIT`: Runs the TLR for non-historic project texts
* `evaluateHistoricalDataTraceLinkRecoveryIT`: Runs the TLR for historic project texts
* [InconsistencyDetectionEvaluationIT](approach/tests/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/integration/InconsistencyDetectionEvaluationIT.java)
* `missingModelElementInconsistencyIT`: Runs the Missing Model Element ID for non-historic project texts
* `missingModelElementInconsistencyHistoricIT`: Runs the Missing Model Element ID for historic project texts
* `missingModelElementInconsistencyBaselineIT`: Runs the Missing Model Element ID of the baseline approach
* `missingModelElementInconsistencyBaselineHistoricIT`: Runs the Missing Model Element ID of historic project texts
with the baseline approach
* `missingTextInconsistencyIT`: Runs the undocumented model element ID on non-historic project texts
* `missingTextInconsistencyHistoricIT`: Runs the undocumented model element ID on historic project texts
If you want to change the filters for Missing Model Element ID, you have to change the filter file
in [Projects](approach/tests/src/test/java/edu/kit/kastel/mcse/ardoco/core/tests/eval/Project.java). In this
enumeration, the different options for filtering are listed in comments for the different projects.
The common filter is defined in [unwanted_words_filter_common.json](approach/inconsistency-detection/src/main/resources/unwanted_words_filter_common.json). The project specific configurations can be found in [configurations](approach/tests/src/test/resources/configurations).
Owner
- Name: ArDoCo
- Login: ArDoCo
- Kind: organization
- Location: Germany
- Website: https://ardoco.github.io/
- Repositories: 15
- Profile: https://github.com/ArDoCo
Architecture Documentation Consistency - Aiming to provide consistency analyses between formal models and informal (textual) documentation
GitHub Events
Total
Last Year
Dependencies
.github/workflows/docker-publish.yml
actions
- actions/checkout v2 composite
Dockerfile
docker
- ubuntu 22.04 build
approach/cli/pom.xml
maven
- commons-cli:commons-cli 1.5.0
- io.github.ardoco.core:pipeline
- org.slf4j:slf4j-simple
- org.junit.jupiter:junit-jupiter-engine test
approach/common/pom.xml
maven
- info.debatty:java-string-similarity 2.0.0
- io.github.informalin.framework:common
- io.github.informalin.framework:configuration
- org.apache.commons:commons-text
- org.apache.opennlp:opennlp-tools 2.0.0
- org.deeplearning4j:deeplearning4j-core 1.0.0-M2.1
- org.deeplearning4j:deeplearning4j-nlp 1.0.0-M2.1
- org.xerial:sqlite-jdbc 3.39.3.0
- org.junit.jupiter:junit-jupiter-engine test
approach/connection-generator/pom.xml
maven
- io.github.ardoco.core:common
- io.github.ardoco.core:text-extraction
- io.github.informalin.framework:common
approach/inconsistency-detection/pom.xml
maven
- io.github.ardoco.core:common
- io.github.ardoco.core:model-provider test
- io.github.ardoco.core:recommendation-generator test
- io.github.ardoco.core:text-extraction test
- org.junit.jupiter:junit-jupiter-engine test
approach/model-provider/pom.xml
maven
- io.github.ardoco.core:common
- io.github.informalin.framework:models
- org.junit.jupiter:junit-jupiter-engine test
- org.slf4j:slf4j-simple test
approach/pipeline/pom.xml
maven
- io.github.ardoco.core:connection-generator
- io.github.ardoco.core:inconsistency-detection
- io.github.ardoco.core:model-provider
- io.github.ardoco.core:recommendation-generator
- io.github.ardoco.core:text-extraction
- io.github.ardoco.core:text-provider
approach/pom.xml
maven
- io.github.ardoco.core:common ${revision}
- io.github.ardoco.core:connection-generator ${revision}
- io.github.ardoco.core:inconsistency-detection ${revision}
- io.github.ardoco.core:model-provider ${revision}
- io.github.ardoco.core:pipeline ${revision}
- io.github.ardoco.core:recommendation-generator ${revision}
- io.github.ardoco.core:text-extraction ${revision}
- io.github.ardoco.core:text-provider ${revision}
- io.github.informalin.framework:pipeline
- org.apache.commons:commons-lang3
- org.apache.commons:commons-lang3 3.12.0
- org.apache.commons:commons-text 1.10.0
- org.eclipse.collections:eclipse-collections
- org.eclipse.collections:eclipse-collections-api
approach/recommendation-generator/pom.xml
maven
- io.github.ardoco.core:common
- io.github.ardoco.core:text-extraction
- org.junit.jupiter:junit-jupiter-engine test
approach/tests/pom.xml
maven
- io.github.ardoco.core:common ${revision}
- io.github.ardoco.core:connection-generator ${revision}
- io.github.ardoco.core:inconsistency-detection ${revision}
- io.github.ardoco.core:model-provider ${revision}
- io.github.ardoco.core:pipeline ${revision}
- io.github.ardoco.core:recommendation-generator ${revision}
- io.github.ardoco.core:text-extraction ${revision}
- io.github.ardoco.core:text-provider ${revision}
- com.tngtech.archunit:archunit-junit5 1.0.0 test
- org.junit.jupiter:junit-jupiter-engine test
- org.junit.jupiter:junit-jupiter-params test
- org.reflections:reflections 0.10.2 test
- org.slf4j:log4j-over-slf4j test
- org.slf4j:slf4j-simple test
approach/text-extraction/pom.xml
maven
- com.fasterxml.jackson.core:jackson-core
- com.fasterxml.jackson.core:jackson-databind
- io.github.ardoco.core:common
- io.github.informalin.framework:configuration
- edu.stanford.nlp:stanford-corenlp ${stanford.corenlp.version} test
- io.github.ardoco.core:text-provider test
- org.apache.pdfbox:pdfbox 3.0.0-RC1 test
- org.junit.jupiter:junit-jupiter-engine test
- org.mockito:mockito-junit-jupiter test
- org.slf4j:slf4j-simple test
approach/text-provider/pom.xml
maven
- com.fasterxml.jackson.core:jackson-databind
- edu.stanford.nlp:stanford-corenlp ${stanford.corenlp.version}
- io.github.ardoco.core:common
- org.slf4j:log4j-over-slf4j ${slf4j.version}
- org.junit.jupiter:junit-jupiter-params test
- org.slf4j:slf4j-simple test
tlr-baseline/pom.xml
maven
- io.github.ardoco.core:model-provider 0.5-SNAPSHOT
- org.slf4j:log4j-over-slf4j 1.7.36
- org.slf4j:slf4j-simple 1.7.36
- org.junit.jupiter:junit-jupiter 5.8.2 test
- org.junit.jupiter:junit-jupiter-params 5.8.2 test
approach/docs/requirements.txt
pypi
- Sphinx ==5.3.0
- furo ==2022.9.29
- sphinxcontrib-plantuml ==0.24
swattr/requirements.txt
pypi
- joblib ==1.2.0
- numpy ==1.23.4
- pandas ==1.5.1
- python-dateutil ==2.8.2
- pytz ==2022.5
- scikit-learn ==1.1.2
- scipy ==1.9.3
- sklearn ==0.0
- threadpoolctl ==3.1.0