Communications of the ACM
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Program development by stepwise refinement
Communications of the ACM
Footprint and feature management using aspect-oriented programming techniques
Proceedings of the joint conference on Languages, compilers and tools for embedded systems: software and compilers for embedded systems
Back to the future: a retroactive study of aspect evolution in operating system code
Proceedings of the 2nd international conference on Aspect-oriented software development
Arranging language features for more robust pattern-based crosscuts
Proceedings of the 2nd international conference on Aspect-oriented software development
Pointcuts and advice in higher-order languages
Proceedings of the 2nd international conference on Aspect-oriented software development
A Framework for the Detection and Resolution of Aspect Interactions
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Large-scale AOSD for middleware
Proceedings of the 3rd international conference on Aspect-oriented software development
IEEE Transactions on Software Engineering
Resolving feature convolution in middleware systems
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A classification system and analysis for aspect-oriented programs
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Towards a catalog of aspect-oriented refactorings
Proceedings of the 4th international conference on Aspect-oriented software development
Deriving refactorings for AspectJ
Proceedings of the 4th international conference on Aspect-oriented software development
Distributing classes with woven concerns: an exploration of potential fault scenarios
Proceedings of the 4th international conference on Aspect-oriented software development
Deriving refactorings for AspectJ
Proceedings of the 4th international conference on Aspect-oriented software development
Aspect Oriented Refactoring
Modular Software Design with Crosscutting Interfaces
IEEE Software
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A disciplined approach to aspect composition
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Adding open modules to AspectJ
Proceedings of the 5th international conference on Aspect-oriented software development
A join point for loops in AspectJ
Proceedings of the 5th international conference on Aspect-oriented software development
Feature oriented refactoring of legacy applications
Proceedings of the 28th international conference on Software engineering
Changing the paradigm of software engineering
Communications of the ACM - Music information retrieval
A Case Study Implementing Features Using AspectJ
SPLC '07 Proceedings of the 11th International Software Product Line Conference
Designing Software for Ease of Extension and Contraction
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
On the modularity of feature interactions
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Superimposition: a language-independent approach to software composition
SC'08 Proceedings of the 7th international conference on Software composition
Composing safely: a type system for aspects
SC'08 Proceedings of the 7th international conference on Software composition
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Separation of concerns with procedures, annotations, advice and pointcuts
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Expressive pointcuts for increased modularity
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
abc: an extensible AspectJ compiler
Transactions on Aspect-Oriented Software Development I
On the modularity of feature interactions
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Using modern mathematics as an FOSD modeling language
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
A model of refactoring physically and virtually separated features
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
An orthogonal access modifier model for feature-oriented programming
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Flexible feature binding in software product lines
Automated Software Engineering
Workflow design using fragment composition: crisis management system design through ADORE
Transactions on aspect-oriented software development VII
Workflow design using fragment composition: crisis management system design through ADORE
Transactions on aspect-oriented software development VII
Access control in feature-oriented programming
Science of Computer Programming
Hi-index | 0.00 |
A functional aspect is an aspect that has the semantics of a transformation; it is a function that maps a program to an advised program. Functional aspects are composed by function composition. In this paper, we explore functional aspects in the context of aspect-oriented refactoring. We show that refactoring legacy applications using functional aspects is just as flexible and expressive as traditional aspects (functional aspects can be refactored in any order), while having a simpler semantics (aspect composition is just function composition), and causes fewer undesirable interactions between aspects (the number of potential interactions between functional aspects is half the number of potential interactions between traditional aspects). We analyze several aspect-oriented programs of different sizes to support our claims.