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.


Software Product Line Software Reuse Clone Detection Structural Clone Reuse Strategy 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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. 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. 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. 4.
    Bassett, P.: Framing software reuse - lessons from real world. Yourdon Press, Prentice Hall, Englewood Cliffs (1997)Google Scholar
  5. 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. 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)CrossRefGoogle Scholar
  7. 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. 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. 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. 10.
    Brooks, P.B.: The Mythical Man-Month. Addison-Wesley, Reading (1995)Google Scholar
  11. 11.
    Brooks, F.P.: No Silver Bullet, Computer Magazine ( April 1986)Google Scholar
  12. 12.
    Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2002)Google Scholar
  13. 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. 14.
    Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)Google Scholar
  15. 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)CrossRefGoogle Scholar
  16. 16.
    Dijkstra, E.W.: On the role of scientific thought, Selected Writings on Computing: A Personal Perspective, pp. 60–66. Springer, New York (1982)CrossRefGoogle Scholar
  17. 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. 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. 19.
    Fowler, M.: Analysis Patterns: Reusable Object Models. Addison-Wesley, Reading (1997)Google Scholar
  20. 20.
    Fowler, M.: Refactoring - improving the design of existing code. Addison-Wesley, Reading (1999)zbMATHGoogle Scholar
  21. 21.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)zbMATHGoogle Scholar
  22. 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. 23.
    Goguen, J.A.: Parameterized Programming. IEEE Trans. on Software Engineering SE-10(5), 528–543 (1984)CrossRefzbMATHGoogle Scholar
  24. 24.
    Jarzabek, S.: Effective Software Maintenance and Evolution: Reused-based Approach. CRC Press, Taylor and Francis (2007)CrossRefzbMATHGoogle Scholar
  25. 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. 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. 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. 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)CrossRefGoogle Scholar
  29. 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. 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. 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. 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)CrossRefGoogle Scholar
  33. 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. 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. 35.
    Northrop, L.: Ultra-Large Scale Systems: The Software Challenge of the Future, Software Engineering Institute (June 2006) ISBN 0-978656-0-7Google Scholar
  36. 36.
    Parnas, D.: On the Criteria To Be Used in Decomposing Software into Modules. Communications of the ACM 15(12), 1053–1058 (1972)CrossRefGoogle Scholar
  37. 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. 38.
    Proofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Proc. Europe. Conf. Object-Oriented Programming (1997)Google Scholar
  39. 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. 40.
    Schmidt, D.: Model-Driven Engineering. IEEE Computer, 25–31 (February 2006)Google Scholar
  41. 41.
  42. 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. 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. 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. 45.
    XVCL (XML-based Variant Configuration Language) method and tool for managing software changes during evolution and reuse,
  46. 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)MathSciNetzbMATHGoogle Scholar
  47. 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)CrossRefGoogle Scholar
  48. 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)CrossRefGoogle Scholar
  49. 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)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Stan Jarzabek
    • 1
  1. 1.Department of Computer Science, School of ComputingNational University of SingaporeSingapore

Personalised recommendations