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.

https://github.com/ardoco/detectinginconsistenciesinsoftwarearchitecturedocumentationusingtraceabilitylinkrecovery

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
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
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7555194.svg)](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

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