Generic Programming for Software Evolution
Year: 2006
Type: article
Abstract: Change is endemic to any large software system. Business, technology, and organization usually frequently change in the life cycle of a software system. However, changing a large software system is difficult: localizing the code that is responsible for a particular part of the functionality of a system, changing it, and ensuring that the change does not lead to inconsistencies or other problems in other parts of the system or in the architecture or documentation is usually a challenging task. Software evolution is a fact of life in the software development industry, and leads to interesting research questions [21, 22, 31]. Current approaches to software evolution focus on the software development process, and on analyzing, visualizing, and refactoring existing software. These approaches support changing software by, for example, recognizing structure in code, and by making this structure explicitly visible, by means of refactoring or renovating the code. By making structure explicit, it becomes easier to adapt the code. A generic program is a program that works for values of any type for a large class of data types (or DTDs, schemas, class hierarchies). If data types change, or new data types are added to a piece of software, a generic program automatically adapts to the changed or new data types. Take as an example a generic program for calculating the total amount of salaries paid by an organization. If the structure of the organization changes, for example by removing or adding an organizational layer, the generic program still calculates the total amount of salaries paid. Generic programming is a new research field [14, 16, 9, 11, 6, 3], and its implications for software development and software evolution have hardly been investigated. Since a generic program automatically adapts to changed data types, generic programming is a promising approach to the software evolution problem, in particular for software where type formalisms and types play an important role, such as data-centric software. Assume structure has been recognized in software, for example by means of refactoring or renovating the code. Then a generic program makes those parts of the code which depend on the structure of data independent of that structure. This position paper
Authors: Johan Jeuring, Rinus Plasmeijer
Institution: Utrecht University
Language: English
Subfield: Software
Field: Computer Science
Domain: Physical Sciences
Open Access status: green
OpenAlex ID: W2110960024
