Abstract
A software product-line is a family of related programs. Each program is defined by a unique combination of features, where a feature is an increment in program functionality. Modularizing features is difficult, as feature-specific code often cuts across class boundaries. New modularization technologies have been proposed in recent years, but their support for feature modules has not been thoroughly examined. In this paper, we propose a variant of the expression problem as a canonical problem in product-line design. The problem reveals a set of technology-independent properties that feature modules should exhibit. We use these properties to evaluate five technologies: AspectJ, Hyper/J, Jiazzi, Scala, and AHEAD. The results suggest an abstract model of feature composition that is technology-independent and that relates compositional reasoning with algebraic reasoning.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
AspectJ. Programming Guide, aspectj.org/doc/proguide
AHEAD Tool Suite (ATS), www.cs.utexas.edu/users/schwartz
Batory, D., Geraci, B.J.: Composition Validation and Subjectivity in GenVoca Generators. IEEE Trans. Soft. Engr., 67–82 (1997)
Batory, D., Lopez-Herrejon, R.E., Martin, J.P.: Generating Product-Lines of Product-Families. In: Automated Software Engineering Conference (2002)
Batory, D., Liu, J., Sarvela, J.N.: Refinements and Multidimensional Separation of Concerns. In: ACM SIGSOFT (September 2003)
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE Trans. Soft. Engr. (June 2004)
Baxter, I.D.: Design Maintenance Systems. CACM 55(4), 73–89 (1992)
Bergel, A., Ducasse, S., Wuyts, R.: Classboxes: A Minimal Module Model Supporting Local Rebinding. In: Böszörményi, L., Schojer, P. (eds.) JMLC 2003. LNCS, vol. 2789, pp. 122–131. Springer, Heidelberg (2003)
Beuche, D.: Composition and Construction of Embedded Software Families. Ph.D. Otto-von-Guericke-Universität Magdeburg (2003)
Bracha, G., Cook, W.: Mixin-based inheritance. In: OOPSLA (1990)
Clifton, C., Leavens, G.T., Millstein, T., Chambers, G.: MultiJava: Modular Open classes and Symmetric Multiple Dispatch for Java. In: OOPSLA (2000)
Clifton, C., Millstein, T., Leavens, G.T., Chambers, G.: MultiJava: Design Rationale, Compiler Implementation, and User Experience. TR #04-01, Iowa State University (2004)
Clarke, S., Walker, R.: Separating Crosscutting Concerns Across the Lifecycle: From Composition Patterns to AspectJ and Hyper/J. Technical Report UBC-CS-TR-2001-05, University of British Columbia, Canada (2001)
Concern Manipulation Environment (CME), http://www.eclipse.org/cme/
Cook, W.R.: Object-Oriented Programming versus Abstract Data Types. In: Semantics of Data Types 1984. LNCS, vol. 173, pp. 151–178. Springer, Hiedelberg (1990)
Coyler: A., Rashid, A., Blair, G.: On the Separation of Concerns in Program Families. TRCOMP-001-2004, Computing Department, Lancaster University, UK (2004)
Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)
Douence, R., Fradet, P., Südholt, M.: Composition, reuse and interaction analysis of stateful aspects. In: AOSD (2004)
Driver, C.: Evaluation of Aspect-Oriented Software Development for Distributed Systems. Master’s Thesis, University of Dublin, Ireland (September 2002)
Filman, R.E., Elrad, T., Clarke, S., Aksit, M.: Aspect-Oriented Software Development. Addison-Wesley, Reading (2004)
Flatt, M., Felleisen, M.: Units: Cool modules for HOT languages. In: PLDI (1998)
Findler, R.B., Flatt, M.: Modular Object-Oriented Programming with Units and Mixins. In: ICFP, pp. 94–104 (1998)
Jagadeesan, R., Jeffrey, A., Riely, J.: A Typed Calculus of Aspect Oriented Programs (Submitted for publication)
Kang, K., et al.: Feature-Oriented Domain Analysis (FODA) Feasibility Study. CMU/SEI-90-TR-21, Carnegie Mellon Univ., Pittsburgh, PA (November 1990)
Kiczales, G., Hilsdale, E., Hugunin, J., Kirsten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 327. Springer, Heidelberg (2001)
Laddad, R.: AspectJ in Action. Practical Aspect-Oriented Programming. Manning (2003)
Loughran, N., Rashid, A., Zhang, W., Jarzabek, S.: Supporting Product Line Evolution with Framed Aspects. In: ACP4IS Workshop, AOSD (2004)
Lopez-Herrejon, R.E., Batory, D.: Improving Incremental Development in AspectJ by Bounding Quantification. In: SPLAT Workshop at AOSD (2005)
Lopez-Herrejon, R.E., Batory, D., Cook, W.: Evaluating Support for Features in Advanced Modularization Technologies. Extended Report. The University of Texas at Austin, Department of Computer Sciences, Technical Report TR-05-16 (April 2005)
Masuhara, H., Kiczales, G.: Modeling Crosscuting Aspect-Oriented Mechanisms. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743. Springer, Heidelberg (2003)
McDirmid, S., Flatt, M., Hsieh, W.C.: Jiazzi: New age components for old-fashioned Java. In: OOPSLA (2001)
McDirmid, S., Hsieh, W.C.: Aspect-Oriented Programming with Jiazzi. In: AOSD (2003)
McDirmid, S.: The Jiazzi Manual (2002)
Mezini, M., Ostermann, K.: Conquering Aspects with Caesar. In: AOSD (2003)
Mezini, M., Ostermann, K.: Variability Management with Feature-Oriented Programming and Aspects. SIGSOFT04/ FSE-12 (2004)
Misra, J.: A Discipline of Multiprogramming. Springer, Heidelberg (2001)
Murphy, G., Lai, A., Walker, R.J., Robillard, M.P.: Separating Features in Source Code: An Exploratory Study. In: ICSE (2001)
Odersky, M., et al.: An Overview of the Scala Programming Language (September 2004), scala.epfl.ch
Odersky, M., et al.: The Scala Language Specification (September 2004), scala.epfl.ch
Odersky, M., Cremet, V., Röckl, C., Zenger, M.: A nominal theory of objects with dependent types. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743. Springer, Heidelberg (2003)
Ossher, H., Tarr, P.: Multi-dimensional separation of concerns and the Hyperspace approach. In: Software Architectures and Component Technology. Kluwer, Dordrecht (2002)
Partsch, H., Steinbrüggen, R.: Program Transformation Systems. In: ACM Computing Surveys (September 1983)
Reynolds, J.C.: User-defined types and procedural data as complementary approaches to data abstraction. In: Theoretical Aspects of Object-Oriented Programming. MIT Press, Cambridge (1994)
Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.: Traits: Composable units of behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743. Springer, Heidelberg (2003)
Schinz, M.: A Scala tutorial for Java programmers. (September 2004), scala.epfl.ch
Software Engineering Institute. Predictable Assembly from Certified Components, www.sei.cmu.edu/pacc
Tarr, P., Ossher, H., Harrison, W., Sutton, S.M.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: ICSE, pp. 107–119 (1999)
Tarr, P., Ossher, H.: Hyper/J User and Installation Manual. IBM Corporation (2001)
Torgersen, M.: The Expresion Problem Revisited. Four new solutions using generics. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 123–146. Springer, Heidelberg (2004)
Wadler, P.: The expression problem. Posted on the Java Genericity mailing list (1998)
Walker, D., Zdancewic, S., Ligatti, J.: A Theory of Aspects. In: ICFP (2003)
Xin, B., McDirmid, S., Eide, E., Hsieh, W.C.: A comparison of Jiazzi and AspectJ. Technical Report TR UUCS-04-001, University of Utah (2004)
Zave, P.: FAQ Sheet on Feature Interaction, www.research.att.com/~pamela/faq.html
Zenger, M., Odersky, M.: Independently Extensible Solutions to the Expression Problem. Technical Report TR IC/2004/33, EPFL Switzerland (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lopez-Herrejon, R.E., Batory, D., Cook, W. (2005). Evaluating Support for Features in Advanced Modularization Technologies. In: Black, A.P. (eds) ECOOP 2005 - Object-Oriented Programming. ECOOP 2005. Lecture Notes in Computer Science, vol 3586. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11531142_8
Download citation
DOI: https://doi.org/10.1007/11531142_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-27992-1
Online ISBN: 978-3-540-31725-8
eBook Packages: Computer ScienceComputer Science (R0)