As systems evolve their structure change in ways not expected upfront. As time goes by, the knowledge of the developers becomes more and more critical for the process of understanding the system. That is, when we want to understand a certain issue of the system we ask the knowledgeable developers. Yet, in large systems, not every developer is knowledgeable in all the details of the system. Thus, we would want to know which developer is knowledgeable in the issue at hand. In this paper we make use of the mapping between the changes and the author identifiers (e.g., user names) provided by versioning repositories. We first define a measurement for the notion of code ownership. We use this measurement to define the Ownership Map visualization to understand when and how different developers interacted in which way and in which part of the system 1 . We report the results we obtained on several large systems.
Knowing where to start reverse engineering a large software system, when no information other than the system's source code itself is available, is a daunting task. Having the history of the code (i.e., the versions) could be of help if this would not imply analyzing a huge amount of data. In this paper we present an approach for identifying candidate classes for reverse engineering and reengineering efforts. Our solution is based on summarizing the changes in the evolution of object-oriented software systems by defining history measurements. Our approach, named Yesterday's Weather, is an analysis based on the retrospective empirical observation that classes which changed the most in the recent past also suffer important changes in the near future. We apply this approach on two case studies and show how we can obtain an overview of the evolution of a system and pinpoint its classes that might change in the next versions.
Understanding large software systems is a challenging task, and to support it many approaches have been developed. Often, the result of these approaches categorize existing entities into new groups or associates them with mutually exclusive properties. In this paper we present the Distribution Map as a generic technique to visualize and analyze this type of result. Our technique is based on the notion of focus, which shows whether a property is wellencapsulated or cross-cutting, and the notion of spread, which shows whether the property is present in several parts of the system. We present a basic visualization and complement it with measurements that quantify focus and spread. To validate our technique we show evidence of applying it on the result sets of different analysis approaches. As a conclusion we propose that the Distribution Map technique should belong to any reverse engineering toolkit.
The histories of software systems hold useful information when reasoning about the systems at hand or when reasoning about general laws of software evolution. Over the past 30 years, research has been increasingly spent on understanding software evolution. However, the approaches developed so far do not rely on an explicit meta-model and, thus, they make it difficult to reuse or compare their results. We argue that there is a need for an explicit meta-model for software evolution analysis. We present a survey of the evolution analyses and deduce a set of requirements that an evolution meta-model should have. We define Hismo, a meta-model in which history is modeled as an explicit entity. Hismo adds a time layer on top of structural information, and provides a common infrastructure for expressing and combining evolution analyses and structural analyses. We validate the usefulness of our meta-model by presenting how different analyses are expressed on it.what changes appeared in the system [2]. Some basic services were also added to model extra or meta information such as who changed files and why. However, only very rudimentary models were used to represent this information-typically a few unstructured lines of text to be inserted in a log file.Whereas versioning systems enabled the history of each source file to be recorded independently, configuration management systems attempted to record the history of software products as a collection of versioned source files. Research on configuration management was very active in the 1980s and 1990s, but the emphasis was still on controlling and recording software evolution.The importance of modeling and analyzing software evolution began to be recognized in the early 1970s with the work of Lehman and Belady [3]. However, it was not until recent years that extensive research was spent on exploiting the wealth of information residing in versioning repositories for different purposes such as reverse engineering or cost prediction. Problems such as software aging [4] and code decaying [5] gained increasing recognition both in academia and in industry.Various approaches have been proposed to analyze aspects of software evolution for purposes such as identifying driving forces in software evolution or reverse engineering. Each of these approaches typically focuses on only some traits of software evolution, and most of these approaches rely on ad hoc models (i.e., models that are not described by an explicit meta-model) or their meta-model is specific to the goals of the supported analysis.By a meta-model we mean a specification model for a class of systems under study where each system in the class is itself a valid model expressed in a certain modeling language [6]. By model we mean a simplification of a system built with an intended goal in mind [7]. A meta-model describes the way the domain can be represented by the model; that is, it provides bricks for the analysis. An explicit meta-model allows those bricks to be understood. Understanding the bricks allows for the compari...
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
hi@scite.ai
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.