Abstract | ||
---|---|---|
Design patterns are a standard means to create large software systems. However, with standard object-oriented techniques, typical implementations of such patterns are not themselves reusable software entities. Evolution of a program into a 'patterned' form (also known as 'refactoring to patterns') and subsequent evolution of a 'patterned' design is largely left to the programmer. Due to their ability to encapsulate elements that crosscut different modules, aspect languages have the potential to change this situation. For many interesting patterns, a large part of the process of refactoring to patterns can already be implemented modularly in aspects. Still, existing aspect languages can only express a small number of typical patterns implementations in a generally reusable way. In many cases, evolution of an application that uses one pattern variant into one that uses another one cannot be achieved at all. In others, it requires duplicating parts of the aspect implementation, thus creating scattered code in the aspects and hindering their further evolution. In this paper, we argue that aspect languages need to provide genericity in order to support reusable pattern implementations. We sketch the main features of the generic aspect language LogicAJ , and show how it supports software evolution. In particular, we demon- strate how LogicAJ enables evolution of a non-patterned implementation to a patterned one and easy transition from one patterned implementation to another. |
Year | Venue | Keywords |
---|---|---|
2004 | RAM-SE | software evolution,design pattern,object oriented,software systems |
Field | DocType | Citations |
Programming language,Adapter pattern,Software analysis pattern,Computer science,Distributed design patterns,Software design pattern,Theoretical computer science,Software evolution,Architectural pattern,Code refactoring,Software development | Conference | 27 |
PageRank | References | Authors |
1.97 | 4 | 3 |
Name | Order | Citations | PageRank |
---|---|---|---|
Günter Kniesel | 1 | 375 | 30.06 |
Tobias Rho | 2 | 78 | 7.33 |
Stefan Hanenberg | 3 | 672 | 48.36 |