Component-oriented software development
Communications of the ACM - Special issue on analysis and modeling in software development
Reference Model for Smooth Growth of Software Systems
IEEE Transactions on Software Engineering
Software engineering with reusable components
Software engineering with reusable components
Inside COM
A case study of open source software development: the Apache server
Proceedings of the 22nd international conference on Software engineering
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Component Software: Beyond Object-Oriented Programming
Component Software: Beyond Object-Oriented Programming
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
Modern Compiler Implementation in Java
Modern Compiler Implementation in Java
Growth, evolution, and structural change in open source software
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
The reference model for smooth growth of software systems revisited
IEEE Transactions on Software Engineering
Metrics and Laws of Software Evolution - The Nineties View
METRICS '97 Proceedings of the 4th International Symposium on Software Metrics
Evolution in Open Source Software: A Case Study
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Software Engineering: A Practitioner's Approach
Software Engineering: A Practitioner's Approach
Scale-free geometry in OO programs
Communications of the ACM - Adaptive complex enterprises
Classboxes: controlling visibility of class extensions
Computer Languages, Systems and Structures
On the integration of classboxes into c#
SC'06 Proceedings of the 5th international conference on Software Composition
Poplar: Java composition with labels and AI planning
Proceedings of the 2nd workshop on Free composition @ onward! 2011
Partition refinement of Component Interaction Automata
Science of Computer Programming
Hi-index | 0.00 |
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.