The Structure of Features in Java Code: An Exploratory Investigation

Techniques to help software developers explicitly separate different concerns in their programs have been gaining increasing attention in the last few years. Three examples of such techniques are composition filters [ABV92], aspect-oriented programming [KLM97], and hyperspaces [TOHSJ99]. A central idea behind these techniques is that software systems would be easier to change if various design and programming decisions were modularized separately and simultaneously. But what is a concern? And how do different concerns interact within a code base? To gain some insight into these questions, we have conducted an exploratory investigation of concerns in two existing Java [GJS96] packages: gnu.regexp,1 and jFTPd.2 Each of the packages was marked for concerns by each author of this positionpaper. We then compared the concerns identified and analyzed how the concerns interacted with each other and across the existing structure of the Java package. The results of this investigation provide:

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[3]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[4]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[5]  Alfred V. Aho,et al.  Awk — a pattern scanning and processing language , 1979, Softw. Pract. Exp..

[6]  Lodewijk Bergmans,et al.  An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach , 1992, ECOOP.

[7]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[8]  Larry Wall,et al.  Programming Perl , 1991 .

[9]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.