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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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)
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)
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)
Bassett, P.: Framing software reuse - lessons from real world. Yourdon Press, Prentice Hall, Englewood Cliffs (1997)
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)
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)
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)
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)
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)
Brooks, P.B.: The Mythical Man-Month. Addison-Wesley, Reading (1995)
Brooks, F.P.: No Silver Bullet, Computer Magazine ( April 1986)
Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, Reading (2002)
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)
Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)
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)
Dijkstra, E.W.: On the role of scientific thought, Selected Writings on Computing: A Personal Perspective, pp. 60–66. Springer, New York (1982)
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)
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)
Fowler, M.: Analysis Patterns: Reusable Object Models. Addison-Wesley, Reading (1997)
Fowler, M.: Refactoring - improving the design of existing code. Addison-Wesley, Reading (1999)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
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)
Goguen, J.A.: Parameterized Programming. IEEE Trans. on Software Engineering SE-10(5), 528–543 (1984)
Jarzabek, S.: Effective Software Maintenance and Evolution: Reused-based Approach. CRC Press, Taylor and Francis (2007)
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)
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)
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)
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)
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)
Karhinen, A., Ran, A., Tallgren, T.: Configuring designs for reuse, International Conference on Software Engineering. In: ICSE 1997, Boston, MA, pp. 701–710 (1997)
Kapser, C., Godfrey, M.W.: Cloning Considered Harmful Considered Harmful. In: Proc. 13th Working Conference on Reverse Engineering, pp. 19–28 (2006)
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)
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)
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)
Northrop, L.: Ultra-Large Scale Systems: The Software Challenge of the Future, Software Engineering Institute (June 2006) ISBN 0-978656-0-7
Parnas, D.: On the Criteria To Be Used in Decomposing Software into Modules. Communications of the ACM 15(12), 1053–1058 (1972)
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)
Proofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Proc. Europe. Conf. Object-Oriented Programming (1997)
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)
Schmidt, D.: Model-Driven Engineering. IEEE Computer, 25–31 (February 2006)
SGI STL, http://www.sgi.com/tech/stl/
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)
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)
Tichy, W.: Tools for Software Configuration Management. In: Proc. Int. Workshop on Software Configuration Management, pp. 1–20. Teubner, Grassau (1988)
XVCL (XML-based Variant Configuration Language) method and tool for managing software changes during evolution and reuse, http://xvcl.comp.nus.edu.sg
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)
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)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)