This prototype tool supports the prediction of dependency-based Architectural Smells and also the evaluation of those predictions using a sequence of system versions. ASPredictor is designed as a pipeline of processing components. Each component receives a number of inputs and generates outputs for other components downstream.
The main functionality consists of three steps, namely: pre-processing, classification construction, and smell prediction.
Extract-Detect. Parses Java source code from predefined versions and extracts packages dependency graphs, relying on a Java static analyzer.
Dep-Pred. Takes two dependency graphs as inputs, and produces an ordered list of predicted dependencies, relying on a trained binary classifier.
Smell-Pred. Receives dependency graphs and the predicted dependencies, and identifies potentially ”new” AS in the expanded graph to appear in the next system version, which are ranked according to their relevance. Currently, three types of smells are supported: cyclic dependencies, hub-like dependencies and unstable dependencies.
Eval. Compares the predicted dependencies and/or smells with the actual dependencies/smells, and computes typical Machine Learning metrics such as: precision, recall, F-measure and nDCG.
ASPredictor is licenced under the Apache License V2.0. Copyright 2019 - ISISTAN - UNICEN - CONICET