Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5235))

Abstract

The basic idea behind software reuse is to exploit similarities within and across software systems to avoid repetitive development work. Conventional reuse is based on components and architectures. We describe how reuse of structural similarities extends the benefits of conventional component reuse, and realization of the concept with a generative technique of XVCL. Structural similarities are repetition patterns in software of any type or granularity, from similar code fragments to recurring architecture-level component configuration patterns. We represent any significant repetition pattern in subject system(s) with a generic, adaptable, XVCL meta-structure. We develop, reuse and evolve software at the level of meta-structures, deriving specific, custom systems from their meta-level representations. Lab studies and industrial applications of XVCL show that by doing that, on average, we raise reuse rates and productivity by 60-90%, reducing cognitive program complexity and maintenance effort by similar rates. The approach scales to systems of any size. The benefits are proportional to system size, and to the extent of repetitions present in subject system(s). The main application of this reuse strategy is in supporting software Product Lines.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Basit, A.H., Jarzabek, S.: Detecting Higher-level Similarity Patterns in Programs. In: ESEC-FSE 2005, European Soft. Eng. Conf. and ACM Symp. on the Foundations of Soft. Eng., Lisbon, pp. 156–165 (September 2005)

    Google Scholar 

  2. Basit, H.A., Rajapakse, D.C., Jarzabek, S.: Beyond Generics: Meta-Level Parameterization For Effective Generic Programming. In: Proc. 17th Int. Conf. on Software Engineering and Knowledge Engineering, SEKE 2005, Taipei (July 2005)

    Google Scholar 

  3. Basit, H.A., Rajapakse, D.C., Jarzabek, S.: Beyond Templates: a Study of Clones in the STL and Some General Implications. In: Proc. Int. Conf. Software Engineering, ICSE 2005, St. Louis, May 2005, pp. 451–459 (2005)

    Google Scholar 

  4. Bassett, P.: Framing software reuse - lessons from real world. Yourdon Press, Prentice Hall, Englewood Cliffs (1997)

    Google Scholar 

  5. Batory, D., Singhai, V., Sirkin, M., Thomas, J.: Scalable software libraries. In: ACM SIGSOFT 1993: Symp. on the Foundations of Software Engineering, Los Angeles, California, pp. 191–199 (December 1993)

    Google Scholar 

  6. Batory, D., O’Malley, S.: The Design and Implementation of Hierarchical Software Systems with Reusable Components. ACM Trans. on Software Engineering and Methodology 1(4), 355–398 (1992)

    Article  Google Scholar 

  7. Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling Step-Wise Refinement. In: Proc. Int. Conf. on Software Engineering, ICSE 2003, Portland, Oregon, pp. 187–197 (May 2003)

    Google Scholar 

  8. Baxter, I., Yahin, A., Moura, L., Sant’Anna, M., Bier, L.: Clone detection using abstract syntax trees. In: Proc. Int. Conf. on Software Maintenance, pp. 368–377 (1998)

    Google Scholar 

  9. Biggerstaff, T.: The library scaling problem and the limits of concrete component reuse. In: 3rd Int. Conf. on Software Reuse, ICSR 1994, pp. 102–109 (1994)

    Google Scholar 

  10. Brooks, P.B.: The Mythical Man-Month. Addison-Wesley, Reading (1995)

    Google Scholar 

  11. Brooks, F.P.: No Silver Bullet, Computer Magazine ( April 1986)

    Google Scholar 

  12. Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2002)

    Google Scholar 

  13. Cordy, J.R.: Comprehending Reality: Practical Challenges to Software Maintenance Automation. In: Proc. 11th IEEE Intl. Workshop on Program Comprehension (IWPC 2003), pp. 196–206 (2003)

    Google Scholar 

  14. Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)

    Google Scholar 

  15. Deelstra, S., Sinnema, M., Bosch, J.: Experiences in Software Product Families: Problems and Issues during Product Derivation. In: Nord, R.L. (ed.) SPLC 2004. LNCS, vol. 3154, pp. 165–182. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  16. Dijkstra, E.W.: On the role of scientific thought, Selected Writings on Computing: A Personal Perspective, pp. 60–66. Springer, New York (1982)

    Book  Google Scholar 

  17. Ducasse, S., Rieger, M., Demeyer, S.: A language independent approach for detecting duplicated code. In: Int. Conference on Software Maintenance, ICSM 1999, Oxford, UK, pp. 109–118 (September 1999)

    Google Scholar 

  18. Emrich, M.: Generative Programming Using Frame Technology, Diploma Thesis, University of Applied Sciences Kaiserslautern, Department of Computer Science, and Micro-System Engineering, 29 (July 2003)

    Google Scholar 

  19. Fowler, M.: Analysis Patterns: Reusable Object Models. Addison-Wesley, Reading (1997)

    Google Scholar 

  20. Fowler, M.: Refactoring - improving the design of existing code. Addison-Wesley, Reading (1999)

    MATH  Google Scholar 

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

    MATH  Google Scholar 

  22. Garcia, R., et al.: A Comparative Study of Language Support for Generic Programming. In: Proc. 18th ACM SIGPLAN Conf. on Object-oriented Programming, Systems, Languages, and Applications, pp. 115–134 (2003)

    Google Scholar 

  23. Goguen, J.A.: Parameterized Programming. IEEE Trans. on Software Engineering SE-10(5), 528–543 (1984)

    Article  MATH  Google Scholar 

  24. Jarzabek, S.: Effective Software Maintenance and Evolution: Reused-based Approach. CRC Press, Taylor and Francis (2007)

    Book  MATH  Google Scholar 

  25. Jarzabek, S.: Genericity - a Missing in Action Key to Software Simplification and Reuse. In: 13th Asia-Pacific Soft. Eng. Conference, APSEC 2006, Bangalore, India, December 6-8, pp. 293–300 (2006)

    Google Scholar 

  26. Jarzabek, S., Li, S.: Eliminating Redundancies with a Composition with Adaptation Meta-programming Technique. In: Proc. ESEC-FSE 2003, European Soft. Eng. Conf. and ACM Symp. on the Foundations of Soft. Eng., Helsinki, September 2005, pp. 237–246 (2005); extended version: Jarzabek, S., Li, S.: Unifying clones with a generative programming technique: a case study. Journal of Software Maintenance and Evolution: Research and Practice 18(4), 267–292 (2006)

    Google Scholar 

  27. Jensen, P.: Experiences with Product Line Development of Multi-Discipline Analysis Software at Overwatch Textron Systems. In: 11th Int. Software Product Line Conference, SPLC 2007, pp. 35–43 (September 2007)

    Google Scholar 

  28. Kamiya, T., Kusumoto, S., Inoue, K.: CCFinder: A multi-linguistic token based code clone detection system for large scale source code. IEEE Trans. Software Engineering 28(7), 654–670 (2002)

    Article  Google Scholar 

  29. Kang, K., et al.: Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report, CMU/SEI-90-TR-21, Software Engineering Institute, CMU, Pittsburgh (November 1990)

    Google Scholar 

  30. Karhinen, A., Ran, A., Tallgren, T.: Configuring designs for reuse, International Conference on Software Engineering. In: ICSE 1997, Boston, MA, pp. 701–710 (1997)

    Google Scholar 

  31. Kapser, C., Godfrey, M.W.: Cloning Considered Harmful Considered Harmful. In: Proc. 13th Working Conference on Reverse Engineering, pp. 19–28 (2006)

    Google Scholar 

  32. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-Oriented Programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  33. Kim, M., Sazawai, V., Notkin, D., Murphy, G.: An Ethnographic Study of Code Clone Genealogies. In: ESEC-FSE 2005, European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering, Lisbon, pp. 187–196. ACM Press, New York (2005)

    Google Scholar 

  34. Mayrand, J., Leblanc, C., Merlo, E.: Experiment on the automatic detection of function clones in a software system using metrics. In: In Proc. Intl. Conference on Software Maintenance (ICSM 1996), pp. 244–254 (1996)

    Google Scholar 

  35. Northrop, L.: Ultra-Large Scale Systems: The Software Challenge of the Future, Software Engineering Institute (June 2006) ISBN 0-978656-0-7

    Google Scholar 

  36. Parnas, D.: On the Criteria To Be Used in Decomposing Software into Modules. Communications of the ACM 15(12), 1053–1058 (1972)

    Article  Google Scholar 

  37. Pettersson, U., Jarzabek, S.: An Industrial Application of a Reuse Technique to a Web Portal Product Line. In: ESEC-FSE 2005, European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering, Lisbon, [34], pp. 326–335. ACM Press, New York (2005)

    Google Scholar 

  38. Proofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Proc. Europe. Conf. Object-Oriented Programming (1997)

    Google Scholar 

  39. Rajapakse, D.C., Jarzabek, S.: Using Server Pages to Unify Clones in Web Applications: A Trade-off Analysis. In: Int. Conf. Software Engineering, ICSE 2007, Minneapolis, USA (May 2007)

    Google Scholar 

  40. Schmidt, D.: Model-Driven Engineering. IEEE Computer, 25–31 (February 2006)

    Google Scholar 

  41. SGI STL, http://www.sgi.com/tech/stl/

  42. Smaragdakis, Y., Batory, D.: Application generators. In: Webster, J. (ed.) Software Engineering volume of the Encyclopedia of Electrical and Electronics Engineering. John Wiley and Sons, Chichester (2000)

    Google Scholar 

  43. Tarr, P., Ossher, H., Harrison, W., Sutton, S.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: Proc. International Conference on Software Engineering, ICSE 1999, Los Angeles, pp. 107–119 (1999)

    Google Scholar 

  44. Tichy, W.: Tools for Software Configuration Management. In: Proc. Int. Workshop on Software Configuration Management, pp. 1–20. Teubner, Grassau (1988)

    Google Scholar 

  45. XVCL (XML-based Variant Configuration Language) method and tool for managing software changes during evolution and reuse, http://xvcl.comp.nus.edu.sg

  46. Zhang, H., Jarzabek, S.: A Mechanism for Handling Variants in Software Product Lines. special issue on Software Variability Management, Science of Computer Programming 53(3), 255–436 (2004)

    MathSciNet  MATH  Google Scholar 

  47. Zhang, H.Y., Jarzabek, S., Soe, M.S.: XVCL Approach to Separating Concerns in Product Family Assets. In: Bosch, J. (ed.) GCSE 2001. LNCS, vol. 2186, pp. 36–47. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  48. Zhang, W., Jarzabek, S.: Reuse without Compromising Performance: Experience from RPG Software Product Line for Mobile Devices. In: Obbink, H., Pohl, K. (eds.) SPLC 2005. LNCS, vol. 3714, pp. 57–69. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  49. Yang, J., Jarzabek, S.: Applying a Generative Technique for Enhanced Reuse on J2EE Platform. In: Glück, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol. 3676, pp. 237–255. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Jarzabek, S. (2008). Software Reuse beyond Components with XVCL (Tutorial). In: Lämmel, R., Visser, J., Saraiva, J. (eds) Generative and Transformational Techniques in Software Engineering II. GTTSE 2007. Lecture Notes in Computer Science, vol 5235. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-88643-3_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-88643-3_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-88642-6

  • Online ISBN: 978-3-540-88643-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics