Software has today a large penetration in all infrastructure levels of the society. This penetration took place rapidly in the last two decades and continues to increase. In the same time, however, the software industry gets confronted with two increasingly serious challenges: complexity and evolution. The size of software applications is growing larger. This leads to a steep increase in complexity. Additionally, the change in requirements and available technologies leads to softwaremodifications. As a result, a huge amount of code needs to be maintained and updated every year (i.e. the legacy systems problem). Software visualization is a very promising solution to the abovementioned challenges of the software industry. It is a specialized branch of information visualization, which visualizes artifacts related to software and its development process. In this thesis we try to use visualization of software evolution to get insight in the development context of software and in its evolution trends. The main question we try to answer with this is: "How to enable users to get insight in the evolution of a software system?" Our final goal is to improve both software understanding and decision making during the maintenance phase of large software projects. We start by positioning the thesis in the context of related research in the field of both software evolution analysis and visualization. Then we perform an analysis of the software evolution domain to formalize the problems specific to this field. To this end, we propose a generic system evolution model and a structure based meta-model for software description. Consequently, we use these models to give a formal definition of software evolution. Next we propose a visualization model for software evolution, based on the previously introduced software evolution model. The visualization model consists of a number of steps with specific guidelines for building visual representations. Then we present three applications that make use of the proposed visualization model to support real life software evolution analysis scenarios. These applications cover the most commonly used software description models in industry: file as a set of code lines, project as a set of files, and project as a unitary entity. For each application, we formulate relevant use cases, present specific implementation aspects, and discuss results of use case evaluation experiments. We also propose in this thesis a novel visualization of data exchange processes in Peer-to-Peer networks. While this does not address software evolution, it tackles comparable issues, e.g., the dynamic evolution of a set of interrelated data artifacts. The aim of presenting this visualization is twofold. First, we illustrate how to visualize different types of software-related data than purely software source code. Secondly, we show that the visual and interaction techniques that we have developed in the context of software evolution visualization can be put to a good use for other applications as well. We conclude the thesis with an inventory of reoccurring problems and solutions we have discovered in the visualization of software evolution. Additionally, we identify generic issues that transcend the border of the software evolution domain and we present them together with a set of recommendation for their broader applicability. Finally, we outline the remaining open issues, and the possible research directions that can be followed to address them.
|Qualification||Doctor of Philosophy|
|Award date||1 Oct 2007|
|Place of Publication||Eindhoven|
|Publication status||Published - 2007|