Representing concerns in source code
- 1 February 2007
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 16 (1), 3
- https://doi.org/10.1145/1189748.1189751
Abstract
A software modification task often addresses several concerns . A concern is anything a stakeholder may want to consider as a conceptual unit, including features, nonfunctional requirements, and design idioms. In many cases, the source code implementing a concern is not encapsulated in a single programming language module, and is instead scattered and tangled throughout a system. Inadequate separation of concerns increases the difficulty of evolving software in a correct and cost-effective manner. To make it easier to modify concerns that are not well modularized, we propose an approach in which the implementation of concerns is documented in artifacts, called concern graphs. Concern graphs are abstract models that describe which parts of the source code are relevant to different concerns. We present a formal model for concern graphs and the tool support we developed to enable software developers to create and use concern graphs during software evolution tasks. We report on five empirical studies, providing evidence that concern graphs support views and operations that facilitate the task of modifying the code implementing scattered concerns, are cost-effective to create and use, and robust enough to be used with different versions of a software system.Keywords
This publication has 25 references indexed in Scilit:
- How effective developers investigate source code: an exploratory studyIEEE Transactions on Software Engineering, 2004
- Locating features in source codeIEEE Transactions on Software Engineering, 2003
- Design erosion: problems and causesJournal of Systems and Software, 2002
- Does code decay? Assessing the evidence from change management dataIEEE Transactions on Software Engineering, 2001
- Software reconnaissance: Mapping program features to codeJournal of Software Maintenance: Research and Practice, 1995
- Seesoft-a tool for visualizing line oriented software statisticsIEEE Transactions on Software Engineering, 1992
- The C information abstraction systemIEEE Transactions on Software Engineering, 1990
- Designing documentation to compensate for delocalized plansCommunications of the ACM, 1988
- A fast algorithm for computing longest common subsequencesCommunications of the ACM, 1977
- On the criteria to be used in decomposing systems into modulesCommunications of the ACM, 1972