Skip to main content

Enhancements – Enabling Flexible Feature and Implementation Selection

  • Conference paper
Software Reuse: Methods, Techniques, and Tools (ICSR 2004)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 3107))

Included in the following conference series:

Abstract

To provide performance trade-offs to users, reusable component libraries typically include multiple implementation variants for each interface. This paper introduces a scalable notion of enhancements to extend interfaces with new features. Enhancements provide flexibility along two dimensions: They allow users to combine any set of features with the base interface and they allow any implementation variant of the base interface to be combined with any implementation variant of each feature. These two dimensions of flexibility are necessary for reusable libraries to remain scaleable. To address the feature flexibility problem, this paper introduces a general notion of enhancements that decouple feature implementations from the implementations of base interfaces. The paper explains an approach for realizing enhancements in standard Java and analyzes its benefits and limitations. It examines a simple mechanism to support enhancements directly in languages such as Java.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ancona, D., Lagorio, G., Zucca, E.: Jam—designing a Java extension with mixins. ACM Transactions on Programming Languages and Systems 25(5), 641–712 (2003)

    Article  Google Scholar 

  2. Batory, D., Geraci, B.J.: Component Validation and Subjectivity in Gen Voca Generators. IEEE Transactions on Software Engineering 23(2), 67–82 (1997)

    Article  Google Scholar 

  3. Batory, D.: A Tutorial on Feature Oriented Programming and Product-Lines. In: 25th International Conference on Software Engineering, Portland, Oregon, pp. 753–754. IEEE Computer Society, Los Alamitos (2003)

    Google Scholar 

  4. Batory, D., Sarvela, J., Rauschmayer, A.: Scaling Step-Wise Refinement. In: 25th International Conference on Software Engineering, Portland, Oregon, IEEE Computer Society, Los Alamitos (2003)

    Google Scholar 

  5. BiggerStaff, T.: The Library Scaling Problem and the Limits of Concrete Component Reuse. In: Third International Conference on Software Reuse, Rio De Janeiro, Brazil, pp. 102–109. IEEE Computer Society, Los Alamitos (1994)

    Google Scholar 

  6. Black, A., Scharli, N., Ducasse, S.: Applying Traits to the Smalltalk Collection Classes. In: Object-Oriented Programming Systems, Languages, and Applications, Anaheim, California, pp. 47–64. ACM Press, New York (2003)

    Google Scholar 

  7. D. Bobrow, L. DeMichiel, R. Gabriel, S. Keene, G. Kiczales, D. Moon: Common Lisp Object System Specification. ANSI X3J13 Document 87-002. American National Standards Institute. Washington DC (1987)

    Google Scholar 

  8. Booch, G.: Software Components with Ada. Benjamin/Cummings (1987)

    Google Scholar 

  9. Czarnecki, K., Eisenecker, U.: Components and Generative Programming (invited paper). ACM SIGSOFT Software Engineering Notes 24(6), 2–19 (1999)

    Article  Google Scholar 

  10. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Inc., Reading (1995)

    Google Scholar 

  11. Hendler, J.: Enhancement for Multiple-inheritance. ACM SIGPLAN Notices 21(10), 98–106 (1986)

    Article  Google Scholar 

  12. Hollingsworth, J., Blankenship, L., Weide, B.: Experience Report: Using RESOLVE/C++ for Commercial Software. In: ACM SIGSOFT Eighth International Symposium on the Foundations of Software Engineering, San Diego, California, vol. 24(6), pp. 11–19. ACM Press, New York (2000)

    Google Scholar 

  13. Krueger, C.: Software Reuse. ACM Computer Surveys 24(2), 131–183 (1992)

    Article  MathSciNet  Google Scholar 

  14. Millstein, T., Reay, M., Chambers, C.: Relaxed MultiJava: Balancing Extensibility and Modular Typechecking. Object-Oriented Programming Systems, Languages, and Applications. Anaheim, California, 224–240 (2003)

    Google Scholar 

  15. Moon, D.: Object-Oriented Programming with Flavors. Object-Oriented Programming Systems, Languages, and Applications. Portland, Oregon, 1–8 (1986)

    Google Scholar 

  16. Neighbors, J.: Draco: A Method for Engineering Reusable Software Systems. In: Biggerstaff, T., Perlis, A. (eds.) Software Reusability, Addison-Wesley/ACM Press (1989)

    Google Scholar 

  17. Sitaraman, M., Welch, L.R., Harms, D.E.: Specification of Reusable Software Components. International Journal of Software Engineering and Knowledge Engineering 3(2), 207–229 (1993)

    Article  Google Scholar 

  18. Sitaraman, M., Weide, B.: Component-Based Software Using RESOLVE. Special feature, ACM Sigsoft Software Engineering Notes 19(4), 21–65 (1994)

    Article  Google Scholar 

  19. Sitaraman, M., Atkinson, S., Kulczyski, G., Weide, B.W., Long, T.J., Bucci, P., Heym, W., Pike, S., Hollingsworth, J.: Reasoning about Software-Component Behavior. In: Sixth International Conference on Software Reuse, Vienna, Austria, pp. 266–283. Springer, Heidelberg (2000)

    Google Scholar 

  20. Smaragdakis, Y., Batory, D.: Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs. ACM Transactions on Software Engineering and Methodology 11(2), 215–255 (2002)

    Article  Google Scholar 

  21. Smaragdakis, Y.: Layered Development with (Unix) Dynamic Libraries. In: Seventh International Conference of Software Reuse, Austin, Texas, pp. 33–45. Springer, Heidelberg (2002)

    Google Scholar 

  22. Sridhar, N., Weide, B.W., Bucci, P.: Service Facilities: Extending Abstract Factories to Decouple Advanced Dependencies. In: Seventh International Conference on Software Reuse, Austin, Texas, pp. 309–326. Springer, Heidelberg (2002)

    Google Scholar 

  23. Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley, Reading (1997)

    Google Scholar 

  24. Sun Microsystems: Dynamic Proxy Classes (1999), available at http://java.sun.com/j2se/1.3/docs/guide/reflection/proxy.html

  25. Sun Microsystems: The JavaTM Tutorial Trail: The Reflection API (2003), available at http://java.sun.com/docs/books/tutorial/reflect/

  26. Weide, B.W.: Software Component Engineering. McGraw-Hill College Custom Publishing, 214–225 (2000), available at http://www.cse.ohio-state.edu/rsrg/sce/book/index.html

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2004 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hunt, J.M., Sitaraman, M. (2004). Enhancements – Enabling Flexible Feature and Implementation Selection. In: Bosch, J., Krueger, C. (eds) Software Reuse: Methods, Techniques, and Tools. ICSR 2004. Lecture Notes in Computer Science, vol 3107. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-27799-6_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-27799-6_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-22335-1

  • Online ISBN: 978-3-540-27799-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics