Search citation statements
Paper Sections
Citation Types
Publication Types
Relationship
Authors
Journals
We present a model of the software evolution process. We introduce the notion of a delta, which represents a change in the software's environment, as a key concept for characterizing the software evolution process. A number of prototypical deltas are presented and characterized in terms of the domains, models, and actors involved. 1: IntroductionIt is a common observation that almost all software systems change after their inital development and release. We perceive this as software evolution. Software evolution imply several challenges for the software developers and maintainers. The evolution of a software system can have many forms. The objective of this article is to present an abstract view on software evolution in order to expose the commonalities of these forms rather than to discuss the variations. In our view on software evolution we apply a perspective which expose certain properties of the software life-cycle. The properties become the essential elements of the resulting abstract model of software evolution.We base our work on a previosly developed model of the software development process [8]. The model defines a number of participant roles, domains, and models that make up an abstract view on the development process. In this paper the model from [8] is used as the basis for examining the software evolution process -evolution is seen as combinations of basic changes to the domains etc. of that model. The overall purpose of the research conducted in this article and in [8] is to expose, understand, and characterize various aspects of the software life-cycle -in [8] the lifecycle seen from a software development perspective, and in this article the life-cycle seen from a software evolution perspective.We use the term "software development process" for the result of applying a development perspective on the software life-cycle. Similarly we use the term "software evolution process" for the result of applying an evolution perspective on the software life-cycle. The research perspectives development and evolution are illustrated in Figure 1. The researcher roles apply the development and evolution perspectives on the software life-cycle to describe abstract models corresponding to the perspectives. This article and [8] may be seen as (descriptions of) the two models -they support the understanding of the development and evolution processes by their restricted characterizations of the processes.
We present a model of the software evolution process. We introduce the notion of a delta, which represents a change in the software's environment, as a key concept for characterizing the software evolution process. A number of prototypical deltas are presented and characterized in terms of the domains, models, and actors involved. 1: IntroductionIt is a common observation that almost all software systems change after their inital development and release. We perceive this as software evolution. Software evolution imply several challenges for the software developers and maintainers. The evolution of a software system can have many forms. The objective of this article is to present an abstract view on software evolution in order to expose the commonalities of these forms rather than to discuss the variations. In our view on software evolution we apply a perspective which expose certain properties of the software life-cycle. The properties become the essential elements of the resulting abstract model of software evolution.We base our work on a previosly developed model of the software development process [8]. The model defines a number of participant roles, domains, and models that make up an abstract view on the development process. In this paper the model from [8] is used as the basis for examining the software evolution process -evolution is seen as combinations of basic changes to the domains etc. of that model. The overall purpose of the research conducted in this article and in [8] is to expose, understand, and characterize various aspects of the software life-cycle -in [8] the lifecycle seen from a software development perspective, and in this article the life-cycle seen from a software evolution perspective.We use the term "software development process" for the result of applying a development perspective on the software life-cycle. Similarly we use the term "software evolution process" for the result of applying an evolution perspective on the software life-cycle. The research perspectives development and evolution are illustrated in Figure 1. The researcher roles apply the development and evolution perspectives on the software life-cycle to describe abstract models corresponding to the perspectives. This article and [8] may be seen as (descriptions of) the two models -they support the understanding of the development and evolution processes by their restricted characterizations of the processes.
Design of software architecture is seen as abstraction over the software domain, and describing architecture is considered to be a modeling process. A general view of a modeling process is presented and illustrated in the context of application domain modeling and of software domain modeling. The implications of this perspective are investigated in order to capture objectives and concrete forms of architectural descriptions.The consequences of this perspective on architecture are characterized. 1: IntroductionIn every software system, some architecture is present. The problem is that architecture is only implicitly available. The architecture did exist for developers during the design phase, but because it was not expressed explicitly, the architecture either has been lost, or has only been reproduced to some extent in software documentation. The consequences of the architecture are present in terms of the properties and qualities of the software.Software Architecture. Software architecture is defined in various different ways.[9]: "Abstractly, software architecture involves the description of elements from which systems are built, interactions among those elements, patterns that guide their composition, and constraints on these patterns. In general, a particular system is defined in terms of a collection of components and interactions among those components. Such a system may in turn be used as a (composite) element in a larger system design." [3]: "A software architecture is a description of the subsystems and components of a software system and the relationships between them. Subsystems and components are typically specified in different views to show the relevant functional and non-functional properties of a software system. The software architecture of a system is an artifact. It is the result of the software design activity." [10]: "An architecture integrates separate but interfering issues of a system, such as provisions for independent evolution and openness combined with overall reliability and performance requirements. An architecture defines guidelines that together help to achieve the overall targets without having to invent ad hoc compromises during system composition." [1]: "The software architecture of a program or computing system is the structure or structures, which comprise software components, the externally visible properties of those components, and the relationships among them." [8]: "Architecture means style or manner of building". For a software system we interpret software architecture to mean the actual choice of architectural abstractions and language mechanisms, especially abstraction mechanisms, and the actual use of the elements chosen, i.e. how they are combined, their iterations, variations etc."In a brief characterization of these definitions of software architecture we claim that these describe organization only, not abstraction. We distinguish between organizing and abstracting: If we organize a certain domain, we only put some kind of order in the domain, among the e...
The paper explores the notion of "To Program is To Model" in the realm of an introductory programming course. We present a number of intended learning outcomes and didactical design principles for the course, and we then describe the course content in terms of the system to be developed as well as the project to be undertaken. Based on this, we illustrate the many different ways software development can be understood, as "To Program is To Model". These reflections utilize a conceptual model in terms of domains and models useful when understanding and discussing software development. Finally we present a set of requirements for students to learn programming as modeling. Keywords: Teaching introductory programming, to program is to model, software development, stepwise improvement, domains and models in the software development processI.
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.
customersupport@researchsolutions.com
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.