The original paper is in English. Non-English content has been machine-translated and may contain typographical errors or mistranslations. ex. Some numerals are expressed as "XNUMX".
Copyrights notice
The original paper is in English. Non-English content has been machine-translated and may contain typographical errors or mistranslations. Copyrights notice
L'utilisation de modèles d'architecture logicielle est importante pour réduire les coûts de maintenance. Cependant, maintenir le code selon les contraintes définies par les modèles d'architecture est un travail chronophage. Comme décrit ici, nous proposons une technique pour détecter les fragments de code non conformes à l'architecture en tant que violations architecturales à granularité fine. Pour cette technique, le graphe de dépendance entre les fragments de code extraits du code source et les règles d'inférence selon l'architecture sont les entrées. Un ensemble de composants candidats auxquels un fragment de code peut être affilié est attaché à chaque nœud du graphe et est mis à jour étape par étape. Les règles d'inférence expriment les responsabilités et les contraintes de dépendance des composants. Ils suppriment les composants candidats de chaque nœud qui ne satisfont pas aux contraintes de l'état actuel estimé du fragment de code environnant. Si le rôle déduit d'un fragment de code n'inclut pas le composant auquel appartient actuellement le fragment de code, il est alors détecté comme une violation. Nous avons implémenté notre technique pour le modèle d'architecture Model-View-Controller for Web Application. En appliquant la technique aux applications Web implémentées à l'aide de Play Framework, nous avons obtenu des résultats de détection précis. Nous avons également étudié dans quelle mesure chaque règle d'inférence contribue à la détection des violations.
Shinpei HAYASHI
Tokyo Institute of Technology
Fumiki MINAMI
Tokyo Institute of Technology
Motoshi SAEKI
Tokyo Institute of Technology
The copyright of the original papers published on this site belongs to IEICE. Unauthorized use of the original or translated papers is prohibited. See IEICE Provisions on Copyright for details.
Copier
Shinpei HAYASHI, Fumiki MINAMI, Motoshi SAEKI, "Detecting Architectural Violations Using Responsibility and Dependency Constraints of Components" in IEICE TRANSACTIONS on Information,
vol. E101-D, no. 7, pp. 1780-1789, July 2018, doi: 10.1587/transinf.2017KBP0023.
Abstract: Utilizing software architecture patterns is important for reducing maintenance costs. However, maintaining code according to the constraints defined by the architecture patterns is time-consuming work. As described herein, we propose a technique to detect code fragments that are incompliant to the architecture as fine-grained architectural violations. For this technique, the dependence graph among code fragments extracted from the source code and the inference rules according to the architecture are the inputs. A set of candidate components to which a code fragment can be affiliated is attached to each node of the graph and is updated step-by-step. The inference rules express the components' responsibilities and dependency constraints. They remove candidate components of each node that do not satisfy the constraints from the current estimated state of the surrounding code fragment. If the inferred role of a code fragment does not include the component that the code fragment currently belongs to, then it is detected as a violation. We have implemented our technique for the Model-View-Controller for Web Application architecture pattern. By applying the technique to web applications implemented using Play Framework, we obtained accurate detection results. We also investigated how much does each inference rule contribute to the detection of violations.
URL: https://global.ieice.org/en_transactions/information/10.1587/transinf.2017KBP0023/_p
Copier
@ARTICLE{e101-d_7_1780,
author={Shinpei HAYASHI, Fumiki MINAMI, Motoshi SAEKI, },
journal={IEICE TRANSACTIONS on Information},
title={Detecting Architectural Violations Using Responsibility and Dependency Constraints of Components},
year={2018},
volume={E101-D},
number={7},
pages={1780-1789},
abstract={Utilizing software architecture patterns is important for reducing maintenance costs. However, maintaining code according to the constraints defined by the architecture patterns is time-consuming work. As described herein, we propose a technique to detect code fragments that are incompliant to the architecture as fine-grained architectural violations. For this technique, the dependence graph among code fragments extracted from the source code and the inference rules according to the architecture are the inputs. A set of candidate components to which a code fragment can be affiliated is attached to each node of the graph and is updated step-by-step. The inference rules express the components' responsibilities and dependency constraints. They remove candidate components of each node that do not satisfy the constraints from the current estimated state of the surrounding code fragment. If the inferred role of a code fragment does not include the component that the code fragment currently belongs to, then it is detected as a violation. We have implemented our technique for the Model-View-Controller for Web Application architecture pattern. By applying the technique to web applications implemented using Play Framework, we obtained accurate detection results. We also investigated how much does each inference rule contribute to the detection of violations.},
keywords={},
doi={10.1587/transinf.2017KBP0023},
ISSN={1745-1361},
month={July},}
Copier
TY - JOUR
TI - Detecting Architectural Violations Using Responsibility and Dependency Constraints of Components
T2 - IEICE TRANSACTIONS on Information
SP - 1780
EP - 1789
AU - Shinpei HAYASHI
AU - Fumiki MINAMI
AU - Motoshi SAEKI
PY - 2018
DO - 10.1587/transinf.2017KBP0023
JO - IEICE TRANSACTIONS on Information
SN - 1745-1361
VL - E101-D
IS - 7
JA - IEICE TRANSACTIONS on Information
Y1 - July 2018
AB - Utilizing software architecture patterns is important for reducing maintenance costs. However, maintaining code according to the constraints defined by the architecture patterns is time-consuming work. As described herein, we propose a technique to detect code fragments that are incompliant to the architecture as fine-grained architectural violations. For this technique, the dependence graph among code fragments extracted from the source code and the inference rules according to the architecture are the inputs. A set of candidate components to which a code fragment can be affiliated is attached to each node of the graph and is updated step-by-step. The inference rules express the components' responsibilities and dependency constraints. They remove candidate components of each node that do not satisfy the constraints from the current estimated state of the surrounding code fragment. If the inferred role of a code fragment does not include the component that the code fragment currently belongs to, then it is detected as a violation. We have implemented our technique for the Model-View-Controller for Web Application architecture pattern. By applying the technique to web applications implemented using Play Framework, we obtained accurate detection results. We also investigated how much does each inference rule contribute to the detection of violations.
ER -