Detecting, Tracing, and Monitoring Architectural Tactics in Code
- 16 September 2015
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 42 (3) , 205-220
Abstract
Software architectures are often constructed through a series of design decisions. In particular, architectural tactics are selected to satisfy specific quality concerns such as reliability, performance, and security. However, the knowledge of these tactical decisions is often lost, resulting in a gradual degradation of architectural quality as developers modify the code without fully understanding the underlying architectural decisions. In this paper we present a machine learning approach for discovering and visualizing architectural tactics in code, mapping these code segments to tactic traceability patterns, and monitoring sensitive areas of the code for modification events in order to provide users with up-to-date information about underlying architectural concerns. Our approach utilizes a customized classifier which is trained using code extracted from fifty performance-centric and safety-critical open source software systems. Its performance is compared against seven off-the-shelf classifiers. In a controlled experiment all classifiers performed well; however our tactic detector outperformed the other classifiers when used within the larger context of the Hadoop Distributed File System. We further demonstrate the viability of our approach for using the automatically detected tactics to generate viable and informative messages in a simulation of maintenance events mined from Hadoop's change management system.Keywords
Funding Information
- US National Science Foundation (CCF-0810924)
- Research Experience for Undergraduates (CCF 1341072)
This publication has 35 references indexed in Scilit:
- The value of design rationale informationACM Transactions on Software Engineering and Methodology, 2013
- Software Engineering Using RATionaleJournal of Systems and Software, 2008
- Documenting after the fact: Recovering architectural design decisionsJournal of Systems and Software, 2007
- Automated classification of non-functional requirementsRequirements Engineering, 2007
- Runtime recovery and manipulation of software architecture of component-based systemsAutomated Software Engineering, 2006
- Recovering traceability links between code and documentationIEEE Transactions on Software Engineering, 2002
- Object-oriented design patterns recoveryJournal of Systems and Software, 2001
- Software reflexion models: bridging the gap between design and implementationIEEE Transactions on Software Engineering, 2001
- A Software Architecture Reconstruction Method1999
- Foundations for the study of software architectureACM SIGSOFT Software Engineering Notes, 1992