Preserving the Quality of Architectural Tactics in Source Code Preserving the Quality of Architectural Tactics in Source Code release_ll7i2rj2ofhqnhnfhda56khtqu

by Mehdi Mirakhorli, Mehdi Mirakhorli, Jane Cleland-Huang

Released as a article-journal .

Abstract

Preserving the Quality of Architectural Tactics in Source Code by Mehdi Mirakhorli In any complex software system, strong interdependencies exist between requirements and software architecture. Requirements drive architectural choices while also being constrained by the existing architecture and by what is economically feasible. This makes it advisable to concurrently specify the requirements, to devise and compare alternative architectural design solutions, and ultimately to make a series of design decisions in order to satisfy each of the quality concerns. Unfortunately, anecdotal evidence has shown that architectural knowledge tends to be tacit in nature, stored in the heads of people, and lost over time. Therefore, developers often lack comprehensive knowledge of underlying architectural design decisions and inadvertently degrade the quality of the architecture while performing maintenance activities. In practice, this problem can be addressed through preserving the relationships between the requirements, architectural design decisions and their implementations in the source code, and then using this information to keep developers aware of critical architectural aspects of the code. This dissertation presents a novel approach that utilizes machine learning techniques to recover and preserve the relationships between architecturally significant requirements, architectural decisions and their realizations in the implemented code. Our approach for recovering architectural decisions includes the two primary stages of training and classification. In the first stage, the classifier is trained using code snippets of different architectural decisions collected from various software systems. During this phase, the classifier learns the terms that developers typically use to implement each architectural decision. These "indicator terms" represent method names, variable names, comments, or the development APIs that developers inevitably use to implement various architectural decisions. A probabilistic weight is then computed for each potential indicator term with respect to each type of architectural decision. The weight estimates how strongly an indicator term represents a specific architectural tactics/decisions. For example, a term such as pulse is highly representative of the heartbeat tactic but occurs infrequently in the authentication. After learning the indicator terms, the classifier can compute the likelihood that any given source file implements a specific architectural decision. The classifier was evaluated through several different experiments including classical cross-validation over code snippets of 50 open source projects and on the entire source code of a large scale software system. Results showed that classifier can reliably recognize a wide range of architectural decisions. The technique introduced in this dissertation is used to develop the Archie tool suite. Archie is a plug-in for Eclipse and is designed to detect wide range of architectural design decisions in the code and to protect them from potential degradation during maintenance activities. It has several features for performing change impact analysis of architectural concerns at both the code and design level and proactively keep developers informed of underlying architectural decisions during maintenance activities.
In text/plain format

Archived Files and Locations

application/pdf  5.2 MB
file_e4cwo4w7lvdn5gyzvsra2infzm
web.archive.org (webarchive)
via.library.depaul.edu (web)
Read Archived PDF
Preserved and Accessible
Type  article-journal
Stage   unknown
Work Entity
access all versions, variants, and formats of this works (eg, pre-prints)
Catalog Record
Revision: 31978cb0-a5b0-4f3e-a81f-0befe2c9d4d5
API URL: JSON