Many internal software metrics and external quality attributes of Java programs correlate strongly with program size. This knowledge has been used pervasively in quantitative studies of software through practices such as normalization on size metrics. This paper reports size-related super- and sublinear effects that have not been known before. Findings obtained on a very large collection of Java programs -- 30,911 projects hosted at Google Code as of Summer 2011 -- unveils how certain characteristics of programs vary disproportionately with program size, sometimes even non-monotonically. Many of the specific parameters of nonlinear relations are reported. This result gives further insights for the differences of "programming in the small" vs. "programming in the large." The reported findings carry important consequences for OO software metrics, and software research in general: metrics that have been known to correlate with size can now be properly normalized so that all the information that is left in them is size-independent.
Calla ' @cite_16 made a statistical analysis of 1,000 Smalltalk projects found in SqueakSource in order to understand the use of certain dynamic features of Smalltalk. They do not report the distribution in terms of project size. The study was designed to gather bulk statistics along an existing taxonomy, so the results are reported as simple counts of feature occurrences among the whole corpus or among a category of projects (e.g. out of 652,990 methods, only 8,349 use dynamic features, and then a breakdown is shown among categories). While the taxonomy is taken into account in the analysis of the data, project size is not. It would be interesting to see whether there is a correlation between the categories and size of the projects.
@cite_16
2112939580
The dynamic and reflective features of programming languages are powerful constructs that programmers often mention as extremely useful. However, the ability to modify a program at runtime can be both a boon-in terms of flexibility-, and a curse-in terms of tool support. For instance, usage of these features hampers the design of type systems, the accuracy of static analysis techniques, or the introduction of optimizations by compilers. In this paper, we perform an empirical study of a large Smalltalk codebase- often regarded as the poster-child in terms of availability of these features-, in order to assess how much these features are actually used in practice, whether some are used more than others, and in which kinds of projects. These results are useful to make informed decisions about which features to consider when designing language extensions or tool support.