Abstract
Contemporary software systems are composed of many components, which, in general, undergo phased and incremental development. In order to facilitate the corresponding construction process, it is important that the development team in charge has a good understanding of how individual software components typically evolve. Furthermore, software engineers need to be able to recognize abnormal patterns of growth with respect to size, structure, and complexity of the components and the resulting composite. Only if a development team understands the processes that underpin the evolution of software systems, will they be able to make better development choices. In this paper, we analyze recurring structural and evolutionary patterns that we have observed in public-domain software systems built using object-oriented programming languages. Based on our analysis, we discuss common growth patterns found in present-day component-based software systems and illustrate simple means to aid developers in achieving a better understanding of those patterns. As a consequence, we hope to raise the awareness level in the community on how component-based software systems tend to naturally evolve.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Appel, W.A.: Modern Compiler Implementation in Java, 2nd edn. Cambridge University Press, Cambridge (2002)
Bergel, A., Ducasse, S., Nierstrasz, O., Wuyts, R.: Classboxes: Controlling Visibility of Class Extensions. Journal of Computer Languages, Systems & Structures 31(3–4), 107–126 (2005)
Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java. In: Proceedings OOPSLA 2000, ACM SIGPLAN Notices, vol. 35, pp. 130–146 (October 2000)
Cox, D.R., Lewis, P.A.W.: The Statistical Analysis of Series of Events. In: Monographs on Applied Probability and Statistics, Chapman and Hall, Sydney, Australia (1966)
Dami, L.: Software Composition: Towards an Integration of Functional and Object-Oriented Approaches. PhD thesis, Centre Universitaire d’Informatique, University of Geneva, CH (1994)
Fenton, N.E., Pfleeger, S.L.: Software Metrics: A Rigorous & Practical Approach, 2nd edn. Thomson Publishing (1996)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison-Wesley, Reading (1995)
Godfrey, M., Tu, Q.: Growth, Evolution, and Structural Change in Open Source Software. In: IWPSE 2001. Proceedings of the 4th International Workshop on Principles of Software Evolution, Vienna, Austria, pp. 103–106. ACM Press, Vienna (2001)
Godfrey, M.W., Tu, Q.: Evolution in Open Source Software: A Case Study. In: ICSM 2000. Proceedings of the 16th International Conference on Software Maintenance, San Jose, California, IEEE Computer Society Press, Los Alamitos (2000)
Kemerer, C.F.: Empirical Research on Software Complexity and Software Maintenance. Annals of Software Engineering 1(1), 1–22 (1995)
Lehman, M.M., Perry, D.E., Ramil, J.C.F., Turski, W.M., Wernik, P.: Metrics and Laws of Software Evolution – The Nineties View. In: Metrics 1997. Proceedings of the Fourth International Symposium on Software Metrics, Albuquerque, New Mexico, pp. 20–32 (November 1997)
Lehman, M.M.: Programs, Life Cycles, and Laws of Software Evolution. Proceedings of the IEEE 68(9), 1060–1076 (1980)
Lumpe, M., Schneider, J.-G.: On the Integration of Classboxes into C#. In: Löwe, W., Südholt, M. (eds.) SC 2006. LNCS, vol. 4089, pp. 307–322. Springer, Heidelberg (2006)
Mitchell, M., Newmann, M.: Complex Systems Theory and Evolution. In: Pagel, M. (ed.) Encyclopedia of Evolution, Oxford University Press, Oxford (2002)
Mockus, A., Fielding, R., Herbsleb, J.: A Case Study of Open Source Software Development: The Apache Server. In: Proceedings ICSE 2000, Limerick, Ireland, pp. 263–272 (June 2000)
Myers, C.R.: Software systems as complex networks: Structure, function, and evolvability of software collaboration graphs. Physical Review E 68(4), 46–116 (2003)
Newmann, M.E.J.: The Structure and Function of Complex Networks. SIAM Review 45(2), 167–256 (2003)
Nierstrasz, O., Gibbs, S., Tsichritzis, D.: Component-Oriented Software Development. Communications of the ACM 35(9), 160–165 (1992)
Potanin, A., Noble, J., Frean, M., Biddle, R.: Scale-free Geometry in OO Programs. Communications of the ACM 48(5), 99–103 (2005)
Pressman, R.S.: Software Engineering: A Practitioner’s Approach, 6th edn. McGraw-Hill, New York (2005)
Rogerson, D.: Inside COM: Microsoft’s Component Object Model. Microsoft Press (1997)
Sametinger, J.: Software Engineering with Reusable Components. Springer, Heidelberg (1997)
Szyperski, C.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley / ACM Press (2002)
Turski, W.M.: Reference Model for Smooth Growth of Software Systems. IEEE Transactions on Software Engineering 22(8), 599–600 (1996)
Turski, W.M.: The Reference Model for Smooth Growth of Software Systems Revisited. IEEE Transactions on Software Engineering 28(8), 814–815 (2002)
Vasa, R., Schneider, J.-G., Woodward, C., Cain, A.: Detecting Structural Changes in Object-Oriented Software Systems. In: Verner, J., Travassos, G.H. (eds.) ISESE 2005. Proceedings of 4th International Symposium on Empirical Software Engineering, Noosa Heads, Australia, pp. 463–470. IEEE Computer Society Press, Los Alamitos (2005)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Vasa, R., Lumpe, M., Schneider, JG. (2007). Patterns of Component Evolution. In: Lumpe, M., Vanderperren, W. (eds) Software Composition. SC 2007. Lecture Notes in Computer Science, vol 4829. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-77351-1_19
Download citation
DOI: https://doi.org/10.1007/978-3-540-77351-1_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-77350-4
Online ISBN: 978-3-540-77351-1
eBook Packages: Computer ScienceComputer Science (R0)