Subject-oriented programming: a critique of pure objects
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
An initial assessment of aspect-oriented programming
Proceedings of the 21st international conference on Software engineering
Atlas: a case study in building a web-based learning environment using aspect-oriented programming
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A study on exception detection and handling using aspect-oriented programming
Proceedings of the 22nd international conference on Software engineering
Hyper/J: multi-dimensional separation of concerns for Java
Proceedings of the 22nd international conference on Software engineering
Achieving Extensibility Through Product-Lines and Domain-Specific Languages: A Case Study
ICSR-6 Proceedings of the 6th International Conerence on Software Reuse: Advances in Software Reusability
Does aspect-oriented programming work?
Communications of the ACM
Towards a standard design language for AOSD
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
DADO: enhancing middleware to support crosscutting features in distributed, heterogeneous systems
Proceedings of the 25th International Conference on Software Engineering
MACS '05 Proceedings of the 2005 workshop on Modeling and analysis of concerns in software
Optimization aspects in network simulation
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
A process for separation of crosscutting grid concerns
Proceedings of the 2006 ACM symposium on Applied computing
Feature refactoring a multi-representation program into a product line
Proceedings of the 5th international conference on Generative programming and component engineering
When less is more: implementing optional features
ACM-SE 45 Proceedings of the 45th annual southeast regional conference
Granularity in software product lines
Proceedings of the 30th international conference on Software engineering
Object-oriented transformations for extracting aspects
Information and Software Technology
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software Engineering
Using aspect-orientation in industrial projects: appreciated or damned?
Proceedings of the 8th ACM international conference on Aspect-oriented software development
A model of refactoring physically and virtually separated features
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Remodularizing Java programs for comprehension of features
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Code complexity metrics for mobile agents implemented with aspect/J™
CEEMAS'03 Proceedings of the 3rd Central and Eastern European conference on Multi-agent systems
Types and modularity for implicit invocation with implicit announcement
ACM Transactions on Software Engineering and Methodology (TOSEM)
An analysis of the variability in forty preprocessor-based software product lines
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Type safety for feature-oriented product lines
Automated Software Engineering
Code clones in feature-oriented software product lines
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Emergent feature modularization
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
A system of patterns for reusable aspect libraries
Transactions on aspect-oriented software development VIII
Tackling the challenges of integrating 3rd party software using AspectJ
Transactions on aspect-oriented software development VIII
Remodularizing Java programs for improved locality of feature implementations in source code
Science of Computer Programming
Separation of navigation routing code in J2EE web applications
ICWE'05 Proceedings of the 5th international conference on Web Engineering
Evaluating support for features in advanced modularization technologies
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Sustainable system infrastructure and big bang evolution: can aspects keep pace?
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Aspect-Oriented development of crosscutting features in distributed, heterogeneous systems
Transactions on Aspect-Oriented Software Development II
Combining related products into product lines
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Fine-grained annotations for pointcuts with a finer granularity
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Managing cloned variants: a framework and experience
Proceedings of the 17th International Software Product Line Conference
Hi-index | 0.02 |
Most software systems are inflexible. Reconfiguring a system's modules to add or to delete a feature requires substantial effort. This inflexibility increases the costs of building variants of a system, amongst other problems.New languages and tools that are being developed to provide additional support for separating concerns show promise to help address this problem. However, applying these mechanisms requires determining how to enable a feature to be separated from the codebase. In this paper, we investigate this problem through an exploratory study conducted in the context of two existing systems: gnu.regexp and jFTPd. The study consisted of applying three different separation of concern mechanisms—Hyper/J,TM AspectJ,TM and a lightweight, lexically-based approach—to separate features in the two packages. In this paper, we report on the study, providing contributions in two areas. First, we characterize the effect different mechanisms had on the structure of the codebase. Second, we characterize the restructuring process required to perform the separations. These characterizations can help researchers to elucidate how the mechanisms may be best used, tool developers to design support to aid the separation process, and early adopters to apply the techniques.