Evolution of understandability in OSS projects
ABSTRACT Empirical papers on open source software should try and formulate reasons for successes as Linux, Apache and some other flagship projects. What we need to understand about this topic is on the process of producing software through cooperation of different efforts. Albeit many success reasons for these projects are inherently due to the application domain that the project develops, architectural and conceptual views of the code have to be considered as key factors when considering community efforts and joint decisions. We focus our attention on what is perceived of a source code when investigating its structure. We do this considering that structure as a proxy for the conceptual architecture of the application. A metric is developed based on some current assumptions, and it is tested over a sample of open source projects. What is interesting to note, is that refactoring efforts are clearly visible when intended as reduction of complexity of source code. Our second observation is that, based on what an open source software currently does, i.e. its application domain, there's a threshold value that several projects tend to.
Conference Proceeding: Mining Software Evolution to Predict Refactoring[show abstract] [hide abstract]
ABSTRACT: Can we predict locations of future refactoring based on the development history? In an empirical study of open source projects we found that attributes of software evolution data can be used to predict the need for refactoring in the following two months of development. Information systems utilized in software projects provide a broad range of data for decision support. Versioning systems log each activity during the development, which we use to extract data mining features such as growth measures, relationships between classes, the number of authors working on a particular piece of code, etc. We use this information as input into classification algorithms to create prediction models for future refactoring activities. Different state-of-the-art classifiers are investigated such as decision trees, logistic model trees, prepositional rule learners, and nearest neighbor algorithms. With both high precision and high recall we can assess the refactoring proneness of object-oriented systems. Although we investigate different domains, we discovered critical factors within the development life cycle leading to refactoring, which are common among all studied projects.Empirical Software Engineering and Measurement, 2007. ESEM 2007. First International Symposium on; 10/2007
Journal of Software Maintenance. 01/2006; 18:207-236.
Conference Proceeding: The Inevitable Stability of Software Change.[show abstract] [hide abstract]
ABSTRACT: Real software systems change and become more complex over time. But which parts change and which parts remain stable? Common wisdom, for example, states that in a well-designed object-oriented system, the more popular a class is, the less likely it is to change from one version to the next, since changes to this class are likely to impact its clients. We have studied consecutive releases of several public domain, object-oriented software systems and analyzed a number of measures indicative of size, popularity, and complexity of classes and interfaces. As it turns out, the distributions of these measures are remarkably stable as an application evolves. The distribution of class size and complexity retains its shape over time. Relatively little code is modified over time. Classes that tend to be modified, however, are also the more popular ones, that is, those with greater Fan-In. In general, the more "complex" a class or interface becomes, the more likely it is to change from one version to the next.23rd IEEE International Conference on Software Maintenance (ICSM 2007), October 2-5, 2007, Paris, France; 01/2007