InSet Tool

Intelligent Smell Detector (InSet) is a tool created by Warteruzannan Soyer Cunha for detecting architectural smells using machine learning. It was created within the AdvanSE laboratory of the Universidade Federal de São Carlos (UFSCar).

Our tool is automatic and does not need any human intervention to analyze a system and shows its smelly components/dependencies. Our tool overcomes the limitations of existent tools to identify each smell and has the following characteristics:

  • From the user's viewpoint, the InSet tool is automatic and does not need any configuration or human intervention to analyze a system, extract its metrics and show its smelly components/dependencies.
  • Internally, the InSet tool uses machine learning models to classify the elements (components and/or dependencies) as smelly and non-smelly. ML models can take the decision based on a vast set of metrics/features, not only on a unique metric and threshold. It is important because the interpretation of whether an element is smelly or not depends on the domain, the experience of the developers/researchers, and other contextual factors, i.e., there is a subjective ingredient in the decision.
  • The tool allows users to give feedback, reporting whether it is wrong or right. The users' feedback are used to retrain the ML models, i.e. retrain with real opinions from developers and researchers. We consider this retraining very important because the models' performance is constantly monitored and they can be changed by others that presented a better performance.

Smells

God Component (GC)

God Component is a component of your system, usually a big one, involving several classes, interfaces and other packages. Most of the time a God Component assumes more responsibilities than it should and can be characterized by the difficulty of maintenance and evolution.

A way to identify this smell is to find a component that has great potential to spread side effects when it is changed. Therefore, the persons more indicated to identify God Component are those that maintain the system since they know what are the components that want to be God.





Unstable Dependency (UD)

Thus, Martin (1998) realizes that any architectural elements must depend on a more stable one than itself. According to Fontana (2017), an unstable dependency is characterized by architectural elements that depend on more unstable ones.

Since components relate to each other, they must be cohesively and designed. However, as systems grow, the difficulty of maintaining some elements of the architecture becomes evident, complex, and costly to evolve. Thus, this high cost may exist due to the difficulty of dealing with all relationships of this component.

According to this complexity, maintenance difficulty, number of relationships, among other factors, we can measure the instability of a component. The concept of instability may vary according to the knowledge of software engineers who know the system

Architecture (Under construction)




Cite this


@INPROCEEDINGS{warteruzannan2020,
  AUTHOR="Warteruzannan Cunha and Guisella Angulo and Valter Camargo",
  TITLE="InSet: A Tool to Identify Architecture Smells Using Machine Learning",
  BOOKTITLE="34th Brazilian Symposium on Software Engineering (SBES '20), October 21--23, 2020, Natal, Brazil",
  DAYS="19-23",
  MONTH="oct",
  YEAR="2020",
  KEYWORDS="Software Maintenance; Software Quality",
  DOI={10.1145/3422392.3422507},
  ISBN={978-1-4503-8753-8/20/09},
}