ABSTRACTAs software systems are maintained, their architecture often de-grades through the processes of architectural drift and erosion. These processes are often intertwined and the same modules in the code become the locus of both drift and erosion symptoms. Thus, architects should elaborate architecture rules for detecting occur-rences of both degradation symptoms. While the specification of such rules is time-consuming, they are similar across software projects adhering to similar architecture decompositions. Unfortu-nately, existing anti-degradation techniques are limited as they focus only on detecting either drift or erosion symptoms. They also do not support the reuse of recurring anti-degradation rules. In this context, the contribution of this paper is twofold. First, it presents TamDera, a domain-specific language for: (i) specifying rule-based strategies to detect both erosion and drift symptoms, and (ii) promoting the hierarchical and compositional reuse of design rules across multiple projects. The language was designed with usual concepts from programming languages in mind such as, inheritance and modularization. Second, we evaluated to what extent developers would benefit from the definition and reuse of hybrid rules. Our study involved 21 versions pertaining to 5 software projects, and more than 600 rules. On average 45% of classes that had drift symptoms in first versions presented inter-related erosion problems in latter versions or vice-versa. Also, up to 72% of all the TamDera rules in a project are from a pre-defined library of reusable rules. They were responsible for detecting on average of 73% of the inter-related degradation symptoms across the projects.
AUTHORS
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Alessandro Gurgel | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Isela Macia | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Alessandro Garcia | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Arndt von Staa | |||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
| View colleagues of Mira Mezini | ||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||
| View colleagues of Michael Eichberg | ||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Ralf Mitschke | |||||||||||||||||||||||||||||||||||||||||
REFERENCESNote: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
|
2
|
ArCon:http://code.google.com/a/eclipselabs.org/p/arcon/.
|
|
|
3
|
AspectJ: http://www.eclipse.org/aspectj/.
|
|
|
4
|
||
|
5
|
||
|
6
|
||
| |
7
|
|
| |
8
|
Eduardo Figueiredo , Nelio Cacho , Claudio Sant'Anna , Mario Monteiro , Uira Kulesza , Alessandro Garcia , Sérgio Soares , Fabiano Ferrari , Safoora Khan , Fernando Castor Filho , Francisco Dantas, Evolving software product lines with aspects: an empirical study on design stability, Proceedings of the 30th international conference on Software engineering, May 10-18, 2008, Leipzig, Germany [doi>10.1145/1368088.1368124]
|
|
9
|
||
|
10
|
Gamma, E. et. al. Design Patterns: Elements of Reusable Object- Oriented Software. Addison-Wesley.
|
|
|
11
|
||
|
12
|
||
|
13
|
HealthWatcher. http://www.comp.lancs.ac.uk/~greenwop/tao/.
|
|
|
14
|
||
|
15
|
||
|
16
|
Li, Z. Characterizing and Diagnosing Architectural Degeneration of Software Systems from Defect Perspective. In Electronic Thesis and Dissertation Repository. Paper 30. http://ir.lib.uwo.ca/etd/30.
|
|
| |
17
|
Isela Macia , Joshua Garcia , Daniel Popescu , Alessandro Garcia , Nenad Medvidovic , Arndt von Staa, Are automatically-detected code anomalies relevant to architectural modularity?: an exploratory analysis of evolving systems, Proceedings of the 11th annual international conference on Aspect-oriented Software Development, March 25-30, 2012, Potsdam, Germany [doi>10.1145/2162049.2162069]
|
|
18
|
Isela Macia , Roberta Arcoverde , Alessandro Garcia , Christina Chavez , Arndt von Staa, On the Relevance of Code Anomalies for Identifying Architecture Degradation Symptoms, Proceedings of the 2012 16th European Conference on Software Maintenance and Reengineering, p.277-286, March 27-30, 2012 [doi>10.1109/CSMR.2012.35]
|
|
|
19
|
Sam Malek , Chiyoung Seo , Sharmila Ravula , Brad Petrus , Nenad Medvidovic, Reconceptualizing a Family of Heterogeneous Embedded Systems via Explicit Architectural Support, Proceedings of the 29th international conference on Software Engineering, p.591-601, May 20-26, 2007 [doi>10.1109/ICSE.2007.69]
|
|
| |
20
|
Leandra Mara , Gustavo Honorato , Francisco Dantas Medeiros , Alessandro Garcia , Carlos Lucena, Hist-Inspect: a tool for history-sensitive detection of code smells, Proceedings of the tenth international conference on Aspect-oriented software development companion, March 21-25, 2011, Porto de Galinhas, Brazil [doi>10.1145/1960314.1960335]
|
|
21
|
||
|
22
|
Marinescu, R. et al. iPlasma: An integrated platform for quality assessment of object-oriented design. In Proc 21st ICSM, 2005.
|
|
|
23
|
||
| |
24
|
Marwan Abi-Antoun , Jonathan Aldrich, Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations, Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, October 25-29, 2009, Orlando, Florida, USA [doi>10.1145/1640089.1640113]
|
|
25
|
||
|
26
|
||
| |
27
|
|
| |
28
|
|
| |
29
|
Neeraj Sangal , Ev Jordan , Vineet Sinha , Daniel Jackson, Using dependency models to manage complex software architecture, Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA [doi>10.1145/1094811.1094824]
|
| |
30
|
Sergio Soares , Eduardo Laureano , Paulo Borba, Implementing distribution and persistence aspects with aspectJ, Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, November 04-08, 2002, Seattle, Washington, USA [doi>10.1145/582419.582437]
|
| |
31
|
Kevin J. Sullivan , William G. Griswold , Yuanfang Cai , Ben Hallen, The structure and value of modularity in software design, Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering, September 10-14, 2001, Vienna, Austria [doi>10.1145/503209.503224]
|
|
32
|
Swi-Prolog. http://www.swi-prolog.org/.
|
|
|
33
|
TamDera available at http://www.les.inf.puc-rio.br/opus/tamdera/aosd14/.
|
|
|
34
|
||
|
35
|
||
|
36
|
Together. http://www.borland.com/us/products/together/.
|
|
| |
37
|
|
|
38
|
XText. http://www.eclipse.org/Xtext/.
|
|
|
39
|
||
|
40
|
Oliveira, M. PREViA: An Approach for Visualizing the Evolution of Software Models. Master Thesis. COPPE/UFRJ, 185p. 2011.
|
|
|
41
|
Silva, A. et al. Reuse of Domain-Sensitive Strategies for Detecting Code Anomalies: A Multi-Case Study. In SBES'13, 2013.
|
CITED BY6 Citations
|
|
|
|
|
|
|
|
|
|
|
|
INDEX TERMSThe ACM Computing Classification System (CCS rev.2012)
PUBLICATION| Title | MODULARITY '14 Proceedings of the 13th international conference on Modularity table of contents | ||||||||||||||||||||||||||||||||||||||||||||||
| Conference Chairs | Achille Peternier University of Lugano, Switzerland | ||||||||||||||||||||||||||||||||||||||||||||||
| General Chairs | Walter Binder University of Lugano, Switzerland | ||||||||||||||||||||||||||||||||||||||||||||||
| Program Chairs | Erik Ernst Aarhus University, Denmark | ||||||||||||||||||||||||||||||||||||||||||||||
| Robert Hirschfeld Hasso-Plattner-Institut Potsdam, Germany | |||||||||||||||||||||||||||||||||||||||||||||||
| Pages | 61-72 | ||||||||||||||||||||||||||||||||||||||||||||||
| Publication Date | 2014-04-22 (yyyy-mm-dd) | ||||||||||||||||||||||||||||||||||||||||||||||
| Sponsors | AOSA Aspect-Oriented Software Association | ||||||||||||||||||||||||||||||||||||||||||||||
| In-Cooperations | SIGPLAN ACM Special Interest Group on Programming Languages | ||||||||||||||||||||||||||||||||||||||||||||||
| SIGSOFT ACM Special Interest Group on Software Engineering | |||||||||||||||||||||||||||||||||||||||||||||||
| Publisher | ACM New York, NY, USA ©2014 | ||||||||||||||||||||||||||||||||||||||||||||||
| ISBN: 978-1-4503-2772-5 doi>10.1145/2577080.2577087 | |||||||||||||||||||||||||||||||||||||||||||||||
| Conference |
MODULARITYModularity (formerly known as Aspect-oriented Software Development - AOSD)
|
||||||||||||||||||||||||||||||||||||||||||||||
| Paper Acceptance Rate 21 of 60 submissions, 35% | |||||||||||||||||||||||||||||||||||||||||||||||
| Overall Acceptance Rate 178 of 718 submissions, 25% | |||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
REVIEWS
COMMENTSBe the first to comment To Post a comment please sign in or create a free Web account
Table of Contents| SESSION: Language mechanisms I | ||
| Session details: Language mechanisms I | ||
| Julia Lawall | ||
| doi>10.1145/3251082 | ||
| Delegation proxies: the power of propagation | ||
| Erwann Wernli, Oscar Nierstrasz, Camille Teruel, Stéphane Ducasse | ||
| Pages: 1-12 | ||
| doi>10.1145/2577080.2577081 | ||
Full text: PDF
|
||
|
Scoping behavioral variations to dynamic extents is useful to support non-functional requirements that otherwise result in cross-cutting code. Unfortunately, such variations are difficult to achieve with traditional reflection or aspects. We show that ...
expand
|
||
| Composable user-defined operators that can express user-defined literals | ||
| Kazuhiro Ichikawa, Shigeru Chiba | ||
| Pages: 13-24 | ||
| doi>10.1145/2577080.2577092 | ||
Full text: PDF
|
||
|
This paper proposes new composable user-defined operators, named protean operators. They can express various language extensions including user-defined literals such as regular expression literals as well as user-defined expressions. Their expressiveness ...
expand
|
||
| REScala: bridging between object-oriented and functional style in reactive applications | ||
| Guido Salvaneschi, Gerold Hintz, Mira Mezini | ||
| Pages: 25-36 | ||
| doi>10.1145/2577080.2577083 | ||
Full text: PDF
|
||
|
Traditionally, object-oriented software adopts the Observer pattern to implement reactive behavior. Its drawbacks are well-documented and two families of alternative approaches have been proposed, extending object-oriented languages with concepts from ...
expand
|
||
| FlowR: aspect oriented programming for information flow control in ruby | ||
| Thomas F. J.-M. Pasquier, Jean Bacon, Brian Shand | ||
| Pages: 37-48 | ||
| doi>10.1145/2577080.2577090 | ||
Full text: PDF
|
||
|
This paper reports on our experience with providing Information Flow Control (IFC) as a library. Our aim was to support the use of an unmodified Platform as a Service (PaaS) cloud infrastructure by IFC-aware web applications. We discuss how Aspect ...
expand
|
||
| SESSION: Software evolution | ||
| Session details: Software evolution | ||
| Christoph Bockisch | ||
| doi>10.1145/3251083 | ||
| Assessing modularity using co-change clusters | ||
| Luciana Lourdes Silva, Marco Tulio Valente, Marcelo de A. Maia | ||
| Pages: 49-60 | ||
| doi>10.1145/2577080.2577086 | ||
Full text: PDF
|
||
|
The traditional modular structure defined by the package hierarchy suffers from the dominant decomposition problem and it is widely accepted that alternative forms of modularization are necessary to increase developer's productivity. In this paper, we ...
expand
|
||
| Blending and reusing rules for architectural degradation prevention | ||
| Alessandro Gurgel, Isela Macia, Alessandro Garcia, Arndt von Staa, Mira Mezini, Michael Eichberg, Ralf Mitschke | ||
| Pages: 61-72 | ||
| doi>10.1145/2577080.2577087 | ||
Full text: PDF
|
||
|
As software systems are maintained, their architecture often de-grades through the processes of architectural drift and erosion. These processes are often intertwined and the same modules in the code become the locus of both drift and erosion symptoms. ...
expand
|
||
| Automated software remodularization based on move refactoring: a complex systems approach | ||
| Marcelo Serrano Zanetti, Claudio Juan Tessone, Ingo Scholtes, Frank Schweitzer | ||
| Pages: 73-84 | ||
| doi>10.1145/2577080.2577097 | ||
Full text: PDF
|
||
|
Modular design is a desirable characteristic of complex software systems that can significantly improve their comprehensibility, maintainability and thus quality. While many software systems are initially created in a modular way, over time modularity ...
expand
|
||
| SESSION: Modularity visions | ||
| Session details: Modularity visions | ||
| Christoph Bockisch | ||
| doi>10.1145/3251084 | ||
| Context-oriented software engineering: a modularity vision | ||
| Tetsuo Kamina, Tomoyuki Aotani, Hidehiko Masuhara, Tetsuo Tamai | ||
| Pages: 85-98 | ||
| doi>10.1145/2577080.2579816 | ||
Full text: PDF
|
||
|
There are a number of constructs to implement context-dependent behavior, such as conditional branches using if statements, method dispatching in object-oriented programming (such as the state design pattern), dynamic deployment of aspects in aspect-oriented ...
expand
|
||
| SESSION: Understanding programmers | ||
| Session details: Understanding programmers | ||
| Guido Salvaneschi | ||
| doi>10.1145/3251085 | ||
| Type names without static type checking already improve the usability of APIs (as long as the type names are correct): an empirical study | ||
| Samuel Spiza, Stefan Hanenberg | ||
| Pages: 99-108 | ||
| doi>10.1145/2577080.2577098 | ||
Full text: PDF
|
||
|
In the discussion about the usefulness of static or dynamic type systems there is often the statement that static type systems improve the documentation of software. In the meantime there exists even some empirical evidence for this statement. One of ...
expand
|
||
| How do programmers use optional typing?: an empirical study | ||
| Carlos Souza, Eduardo Figueiredo | ||
| Pages: 109-120 | ||
| doi>10.1145/2577080.2582208 | ||
Full text: PDF
|
||
|
The recent popularization of dynamically typed languages, such as Ruby and JavaScript, has brought more attention to the discussion about the impact of typing strategies on development. Types allow the compiler to find type errors earlier and potentially ...
expand
|
||
| An empirical study on how developers reason about module cohesion | ||
| Bruno C. da Silva, Claudio N. Sant'Anna, Christina von F.G. Chavez | ||
| Pages: 121-132 | ||
| doi>10.1145/2577080.2577096 | ||
Full text: PDF
|
||
|
Several cohesion metrics have been proposed to support development and maintenance activities. The most traditional ones are the structural cohesion metrics, which rely on structural information in the source code. For instance, many of these metrics ...
expand
|
||
| SESSION: The meaning of programs | ||
| Session details: The meaning of programs | ||
| Eric Bodden | ||
| doi>10.1145/3251086 | ||
| Compositional reasoning about aspect interference | ||
| Ismael Figueroa, Tom Schrijvers, Nicolas Tabareau, Éric Tanter | ||
| Pages: 133-144 | ||
| doi>10.1145/2577080.2577093 | ||
Full text: PDF
|
||
|
Oliveira and colleagues recently developed a powerful model to reason about mixin-based composition of effectful components and their interference, exploiting a wide variety of techniques such as equational reasoning, parametricity, and algebraic laws ...
expand
|
||
| Reusable components of semantic specifications | ||
| Martin Churchill, Peter D. Mosses, Paolo Torrini | ||
| Pages: 145-156 | ||
| doi>10.1145/2577080.2577099 | ||
Full text: PDF
|
||
|
Semantic specifications of programming languages typically have poor modularity. This hinders reuse of parts of the semantics of one language when specifying a different language -- even when the two languages have many constructs in common -- and evolution ...
expand
|
||
| AspectJML: modular specification and runtime checking for crosscutting contracts | ||
| Henrique Rebêlo, Gary T. Leavens, Mehdi Bagherzadeh, Hridesh Rajan, Ricardo Lima, Daniel M. Zimmerman, Márcio Cornélio, Thomas Thüm | ||
| Pages: 157-168 | ||
| doi>10.1145/2577080.2577084 | ||
Full text: PDF
|
||
|
Aspect-oriented programming (AOP) is a popular technique for modularizing crosscutting concerns. In this context, researchers have found that the realization of design by contract (DbC) is crosscutting and fares better when modularized by AOP. However, ...
expand
|
||
| SESSION: Software product lines | ||
| Session details: Software product lines | ||
| Stefan Hanenberg | ||
| doi>10.1145/3251087 | ||
| Probabilistic model checking for energy analysis in software product lines | ||
| Clemens Dubslaff, Sascha Klüppelholz, Christel Baier | ||
| Pages: 169-180 | ||
| doi>10.1145/2577080.2577095 | ||
Full text: PDF
|
||
|
In a software product line (SPL), a collection of software products is defined by their commonalities in terms of features rather than explicitly specifying all products one-by-one. Several verification techniques were adapted to establish temporal ...
expand
|
||
| Systematic derivation of static analyses for software product lines | ||
| Jan Midtgaard, Claus Brabrand, Andrzej Wasowski | ||
| Pages: 181-192 | ||
| doi>10.1145/2577080.2577091 | ||
Full text: PDF
|
||
|
A recent line of work lifts particular verification and analysis methods to Software Product Lines (SPL). In an effort to generalize such case-by-case approaches, we develop a systematic methodology for lifting program analyses to SPLs using abstract ...
expand
|
||
| SESSION: Concurrency | ||
| Session details: Concurrency | ||
| Gary T. Leavens | ||
| doi>10.1145/3251088 | ||
| Aspectual session types | ||
| Nicolas Tabareau, Mario Südholt, Éric Tanter | ||
| Pages: 193-204 | ||
| doi>10.1145/2577080.2577085 | ||
Full text: PDF
|
||
|
Multiparty session types allow the definition of distributed processes with strong communication safety properties. A global type is a choreographic specification of the interactions between peers, which is then projected locally in each peer. Well-typed ...
expand
|
||
| JEScala: modular coordination with declarative events and joins | ||
| Jurgen M. Van Ham, Guido Salvaneschi, Mira Mezini, Jacques Noyé | ||
| Pages: 205-216 | ||
| doi>10.1145/2577080.2577082 | ||
Full text: PDF
|
||
|
Advanced concurrency abstractions overcome the drawbacks of low-level techniques such as locks and monitors, freeing programmers that implement concurrent applications from the burden of concentrating on low-level details. However, with current approaches ...
expand
|
||
| SESSION: Language mechanisms II | ||
| Session details: Language mechanisms II | ||
| Walter Cazzola | ||
| doi>10.1145/3251089 | ||
| Designing information hiding modularity for model transformation languages | ||
| Andreas Rentschler, Dominik Werle, Qais Noorshams, Lucia Happe, Ralf Reussner | ||
| Pages: 217-228 | ||
| doi>10.1145/2577080.2577094 | ||
Full text: PDF
|
||
|
Development and maintenance of model transformations make up a substantial share of the lifecycle costs of software products that rely on model-driven techniques. In particular large and heterogeneous models lead to poorly understandable transformation ...
expand
|
||
| JavaScript module system: exploring the design space | ||
| Junhee Cho, Sukyoung Ryu | ||
| Pages: 229-240 | ||
| doi>10.1145/2577080.2577088 | ||
Full text: PDF
|
||
|
While JavaScript is one of the most widely used programming languages not only for web applications but also for large projects, it does not provide a language-level module system. JavaScript developers have used the module pattern to avoid name ...
expand
|
||
| Modular specification and dynamic enforcement of syntactic language constraints when generating code | ||
| Sebastian Erdweg, Vlad Vergu, Mira Mezini, Eelco Visser | ||
| Pages: 241-252 | ||
| doi>10.1145/2577080.2577089 | ||
Full text: PDF
|
||
|
A key problem in metaprogramming and specifically in generative programming is to guarantee that generated code is well-formed with respect to the context-free and context-sensitive constraints of the target language. We propose typesmart constructors ...
expand
|
||