This Article 
 Bibliographic References 
 Add to: 
Software Reuse in Product Populations
July 2005 (vol. 31 no. 7)
pp. 537-550
Consumer products are becoming increasingly software intensive. The software complexity of individual products grows, while the diversity of products increases and the lead time must decrease. Software reuse is the answer to this, not only within a family but also between families of consumer products. We have devised an approach based upon a software component technology to enable reuse. This paper describes that approach, and it zooms in on two important aspects of component-based development. One aspect concerns the prediction of system properties from properties of components, which we illustrate using thread synchronization as example. The other aspect concerns branching of our software in our configuration management systems, where our analysis leads to the discovery that we may be constantly rewriting our own code and to the definition of the turn-over factor to quantify this. We end this paper with a brief validation of our approach.

[1] J. Bosch, “Organizing for Software Product Lines,” Proc. Third Int'l Workshop the Development and Evolution of Software Architectures of Product Families, Mar. 2000.
[2] J. Bosch, “Software Variability Management: Notation and Assessment,” Keynote Presentation at Taming Software Product Families, Seminar on Successful Reuse and Systematic Variability Management, Nov. 2004.
[3] R. Bourgonjon, “The Evolution of Embedded Software in Consumer Products,” Proc. Int'l Conf. Eng. of Complex Computer Systems, 1995.
[4] P. Clements and L. Northrop, Software Product Lines, Practices and Patterns. Addison-Wesley, 2002.
[5] A. Fioukov, E. Eskenazi, D. Hammer, and M. Chaudron, “Evaluation of Static Properties for Component-Based Architectures,” Proc. Euromicro Conf. 2002, Component-Based Software Eng. Track, pp. 33-39, 2002.
[6] M. Fowler, Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
[7] GIMP, The GNU Image Manipulation Program, http:/www., 2004.
[8] I. Jacobson, M. Griss, and P. Jonsson, Software Reuse— Architecture, Process and Organization for Business Success. Addison-Wesley, 1997
[9] J. Magee, N. Dulay, S. Eisenbach, and J. Kramer, “Specifying Distributed Software Architectures,” Proc. European Software Eng. Conf. (ESEC '95), W. Schafer and P. Botella, eds., pp. 137-153, 1995.
[10] N. Medidovic and R.N. Tayler, “A Classification and Comparison Framework for Software Architecture Description Languages,” IEEE Trans. Software Eng., vol. 26, no. 1, pp. 70-93, Jan. 2000.
[11] G. Muller, “Balancing Genericity and Specificity,” Gaudi System Architecting, sysarchGenericityVsSpecificitySlides.pdf , 2004.
[12] R. van Ommering, F. van der Linden, J. Kramer, and J. Magee, “The Koala Component Model for Consumer Electronics Software,” Computer, pp. 78-85, Mar. 2000.
[13] R. van Ommering, “Techniques for Independent Deployment to Build Product Populations,” Proc. Working IEEE/IFIP Conf. Software Architecture, pp. 55-66, Aug. 2001.
[14] R. van Ommering, “Building Product Populations with Software Components,” Proc. Int'l Conf. Software Eng., pp. 255-265, May 2002.
[15] R. van Ommering, “Building Product Populations with Software Components,” PhD Thesis, Rijksuniversiteits Groningen, ISBN 90-74445-64-0, 2004.
[16] B. Pronk, “An Interface-Based Platform Approach,” Software Product Lines, Experience and Research Directions, Proc. First Software Product Lines Conf. (SPLC1), pp. 331-351, Aug. 2000.
[17] Philips, http:/, 2004.
[18] P. Toft, D. Coleman, and J. Ohta, “A Cooperative Model for Cross-Divisional Product Development for a Software Product Line,” Proc. First Software Product Lines Conf. (SPLC1), pp. 111-132, Aug. 2000.
[19] D. Weiss, “Product-Line Engineering as the Basis for Reuse,” Proc. Eighth Int'l Conf. Software Reuse, July 2004.
[20] J.G. Wijnstra, “Variation Mechanisms and Multi-View Architecting in Platform-Based Product Family Development,” PhD Thesis, Rijksuniversiteits Groningen, ISBN 90-74445-63-2, 2004.
[21] T. Williams, “On Inheritance, What It Means and How to Use It,” Microsoft Internal Report, comapps/docs Inherit.doc, 1990.

Index Terms:
Index Terms- Software reuse, software components, component-based software architectures, software product families, software product lines.
Rob van Ommering, "Software Reuse in Product Populations," IEEE Transactions on Software Engineering, vol. 31, no. 7, pp. 537-550, July 2005, doi:10.1109/TSE.2005.84
Usage of this product signifies your acceptance of the Terms of Use.