Learn More
Software metrics offer us the promise of distilling useful information from vast amounts of software in order to track development progress, to gain insights into the nature of the software, and to identify potential problems. Unfortunately, however, many software metrics exhibit highly skewed, non-Gaussian distributions. As a consequence, usual ways of(More)
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(More)
It is an increasingly accepted fact that software development is a non-linear activity with inherently feedback driven processes. In such a development environment, however, it is important that major structural changes in the design and/or architecture of a software system under development are introduced with care and documented accordingly. In order to(More)
The advent of online software distribution channels like Apple Inc.'s App Store and Google Inc.'s Google Play has offered developers a single, low cost, and powerful distribution mechanism. These online stores help users discover apps as well as leave a review. Ratings and reviews add value to both the developer and potential new users by providing a(More)
Online software distribution channels such as Apple Inc.'s App Store and Google Inc.'s Google Play provide a platform for third-party app distribution. These online stores feature a public review system, allowing users to express opinions regarding purchased apps. These reviews can influence product-purchasing decisions <i>via</i> polarised sentiment (1 to(More)
To address the problems of traditional software development methodologies, recent years have seen the introduction of more light-weight or "agile" development processes. These processes are intended to support early and quick production of working code by structuring the development into small release cycles and focus on continual interaction between(More)
When building software systems, developers have to weigh the benefits of using one specific solution approach against the risks and costs of using another one. This process is not random. Certain preferences, architectural styles, and solution domain pressures create systematic biases that we can measure in order to assess their impact on the system being(More)
— It is a generally accepted fact that software systems are constructed and gradually refined over a period of time. During this time, code is written and modified until stable releases of the system emerge. Many researchers have studied systems over a longer period of time in order to understand how they change and evolve. Despite these efforts, we still(More)