Academia.eduAcademia.edu

Software Evolution

description2,913 papers
group11,466 followers
lightbulbAbout this topic
Software Evolution refers to the process of developing and maintaining software systems over time, encompassing changes in functionality, performance, and architecture. It involves the adaptation of software to meet new requirements, fix defects, and improve efficiency, while managing the complexities introduced by ongoing modifications and the need for backward compatibility.
lightbulbAbout this topic
Software Evolution refers to the process of developing and maintaining software systems over time, encompassing changes in functionality, performance, and architecture. It involves the adaptation of software to meet new requirements, fix defects, and improve efficiency, while managing the complexities introduced by ongoing modifications and the need for backward compatibility.

Key research themes

1. How can change propagation mechanisms improve consistency management in software evolution at the architectural and model level?

This research area investigates automated or semi-automated methods to propagate changes consistently across different software artifacts, particularly focusing on architectural models, agent-oriented models, and software product line processes. It aims to maintain consistency and reduce manual intervention during software evolution, addressing issues like change identification, impact analysis, and the resolution of inconsistencies within evolving software design artifacts.

Key finding: Introduces a BDI (Belief-Desire-Intention) agent-based framework combined with Object Constraint Language (OCL) and traceability to automatically propagate changes at the model level within agent-oriented designs. The... Read more
Key finding: Proposes a meta-process model and specific support mechanisms for software product line process evolution based on dependency relationship structures among product line artifacts. It identifies four strategies for evolution... Read more
Key finding: Presents TranSAT, a practical framework applying Aspect-Oriented Software Development principles to the evolution of software architecture specifications. TranSAT allows architects to integrate new concerns (e.g., security,... Read more

2. What are the empirical patterns and predictive models of software architecture and code evolution that inform maintainability and future evolution planning?

This theme examines empirical studies analyzing how software architectures and codebases evolve over time, leveraging metrics, mining evolutionary data, and employing pattern extraction to predict future evolution paths. It addresses fundamental questions about growth rates, maintainability impacts from architectural design decisions, sequential evolution styles, and tool-supported evolution planning for better maintenance and informed decision-making in evolving software systems.

Key finding: Analyzes a large dataset of over 404 million lines of code across open source and closed software systems to quantify long-term software growth rates. Finds that software source code doubles approximately every 42 months,... Read more
Key finding: Defines a formalism to represent software architecture evolution styles and applies sequential pattern extraction techniques from data mining to historical architectural evolution data. By analyzing architecture evolution... Read more
Key finding: Introduces a multi-variable simulation model calibrated using empirical maintenance data to validate formal comparison models that predict maintenance effort for design alternatives in recursive hierarchies. The study... Read more
Key finding: Presents techniques that correlate low-level source code features extracted from Abstract Syntax Trees (ASTs) with architectural level changes to analyze software evolution patterns. Through case studies on Apache HTTP Server... Read more

3. How do co-change and evolutionary coupling metrics provide insights into software modularity and evolution, augmenting traditional structural analyses?

Traditional modularity assessments focus on static structural dependencies among software components. This theme investigates dynamic evolution-based metrics such as co-change (classes or files modified together) and introduces new quantitative measures, visualizations, and tooling to evaluate modularity from an evolutionary perspective. This includes weighted propagation and clustering costs based on co-change matrices, highlighting hidden dependencies and aiding architectural repair and modularity assessment in evolving codebases.

Key finding: Proposes two refined weighted metrics based on design structure matrices (DSM) to measure co-change-modularity: weighted propagation cost quantifying how changes in one file can propagate system-wide, and weighted clustering... Read more
Key finding: Develops ModularityCheck, a tool that clusters classes based on historical co-change data extracted from version-control and issue-tracking systems, allowing visualization and metric-based assessment of modularity from an... Read more
Key finding: Through case studies on the Linux kernel and VIM editor, demonstrates that architectural drift due to uncoordinated evolution can be detected and repaired using a combination of forward and reverse architectural repair... Read more

All papers in Software Evolution

Current research on code clones tries to address the question whether or not code clones are harmful for the quality of software. As most of these studies are based on the fine-grained analysis of inconsistent changes at the revision... more
Software evolution is commonly characterized as a slow process of incremental change. Researchers have observed that software systems also exhibit characteristics of punctuation (sudden and discontinuous change) during their evolution. In... more
In this paper, we present an approach that examines the evolution of code stored in source control repositories. The technique identifies Change Clusters, which can help managers to classify different code change activities as either a... more
Software systems become progressively more complex and difficult to maintain. To facilitate maintenance tasks, project managers and developers often turn to the evolution history of the system to recover various kinds of useful... more
When changing source code, developers sometimes update the associated comments of the code (a consistent update), while at other times they do not (an inconsistent update). Similarly, developers sometimes only update a comment without its... more
The source code of a software system is in constant change. The impact of these changes spreads out across the software system and may lead to the sudden manifestation of failures in unchanged parts. To help developers fix such failures,... more
To study the impact of code clones on software quality, researchers typically carry out their studies based on fine-grained analysis of inconsistent changes at the revision level. As a result, they capture much of the chaotic and... more
In evolutionary software development, knowing how design evolves with features can be valuable in guiding future projects. It helps answer questions like "How much upfront design should and can be done?" and "How and why are designs... more
When a program is modified during software evolution, developers typically run the new version of the program against its existing test suite to validate that the changes made on the program did not introduce unintended side effects... more
The bug fix effort estimation model for open source software system plays an important role in software quality assurance and software project management. Most of the effort estimation models are related to commercial or closed software... more
Program slicing is used as a basis for an approach to estimate maintenance effort. A case study of the GNU Linux kernel with over 900 versions spanning 17 years of history is presented. For each version a system dictionary is built using... more
Software evolution analysis can shed light on various aspects of software development and maintenance. Up to date, there is little empirical evidence on the evolution of JavaScript (JS) applications in terms of maintainability and... more
Successful software project survival and progress over time is highly dependent on effectively managing the maintenance process. Estimating accurately maintenance process factors like the maintenance effort and the level of changes... more
Software evolution analysis can shed light on various aspects of software development and maintenance. Up to date, there is little empirical evidence on the evolution of JavaScript (JS) applications in terms of maintainability and... more
Failures of precondition checking when attempting to apply automated refactorings often discourage programmers from attempting to use these refactorings in the future. To alleviate this situation, the postponement of the failed... more
ter verkrijging van de graad van doctor aan de Universiteit Twente, op gezag van de rector magnicificus, prof. dr. W.H.M. Zijm, volgens besluit van het College voor Promoties in het openbaar te verdedigen op donderdag 8 juni 2006 om 15.00... more
class Point 1 extends Object{ private int _x, _y; void setX(int x){ _x=x; } int getX() { return _x; } void setY(int y){ _y=y; } int getY() { return _y; } ... } class Subject{ private Vector observers; public Subject() { /* … */} public... more
Variability management is a key issue when building and evolving software-intensive systems, making it possible to extend, configure, customize and adapt such systems to customers' needs and specific deployment contexts. A wide form of... more
Reusing code can produce duplicate or near-duplicate code clones in code repositories. Current code clone detection techniques, like Program Dependence Graphs, rely on code structure and their dependencies to detect clones. These... more
Large-scale code reuse significantly reduces both development costs and time. However, the massive share of third-party code in software projects poses new challenges, especially in terms of maintenance and security. In this paper, we... more
Model transformations need to be configured in order to satisfy particular user requirements in real scenarios. This paper introduces an strategy for configuring ATL transformations. This strategy, that is currently in practice in the... more
UML diagrams describe different views of one piece of software. These diagrams strongly depend on each other and must therefore be consistent with one another, since inconsistencies between diagrams may be a source of faults during... more
Different kinds of self-* systems ranging from autonomous self-organizing to hierarchical self-adaptive systems have been developed in the past. However, today there are no clear technical criteria how to classify distributed self-*... more
The healthcare consultation services here in the Philippines continues to rely on manual, paper-based appointment scheduling and non-centralized medical record management which are the primary sources of inefficiencies, prolonged patient... more
The healthcare consultation services here in the Philippines continues to rely on manual, paper-based appointment scheduling and non-centralized medical record management which are the primary sources of inefficiencies, prolonged patient... more
The comparison criteria described in this document represent a work-in-progress, begun at the Bellairs AOM1 workshop in April 2011, continued at the first CMA2 workshop in October 2011, and further discussed at the Bellairs AOM3 workshop... more
Download research papers for free!