In the context of Software Engineering, the matter of software evolution has been a valid concern for approximately half a century. Its importance is due to the fact that software systems, much like the economy, journalism, etc., also suffers the effect of globalization. The operational environment of an increasing number of software systems is global, open, partially unknown and unpredictable. Hence, software must evolve in order to deal with these questions (in evolutionary terms, survive). Such evolution can occur at the level of code or architectural design, but the most important type of evolution is the one that takes place at the level of requirements and the environment, in order to guarantee that the system continues to satisfy the needs of its stakeholders and the constraints (be them physical, economical, legal, etc.) of its operational environment.
A particular instance of software evolution is the one that takes place in a (semi-)autonomous ways, i.e., in the context of adaptive or autonomic systems. An Adaptive System is one that evaluates its own behavior and changes behavior when the evaluation indicates that it is not accomplishing what the software is intended to do, or when better functionality or performance is possible. Such evaluation is done, necessarily, by means of a feedback loop, such as the MAPE (monitor, analyze, plan, execute) loop proposed for autonomic systems. In this case, the possible evolutions have already been programmed in this feedback loop cycle.
Both in the case of unanticipated evolution and in the case of adaptive systems, in which the evolution has already been programmed, requirements have a central role in Software Evolution, i.e., it is important to discuss the support for evolution and adaptation in the context of Requirements Engineering. Often, it is the changes in stakeholder requirements that trigger software evolution activities. Without taking requirements into consideration, it is not possible to guarantee that the needs of stakeholders are being satisfied and that the choices in the context of software evolution are the most appropriate. Of course, this does not prevent solutions to be studied and applied also in other contexts, such as in the software architectural components.
ROSE – Requirements, Ontologies and Software Evolution – is a research project funded in the context of CNPq’s (Brazilian National Research Council) Call 28/2018 – Universal and led by prof. Vítor E. Silva Souza. In this project, we focus in the domain of Requirements Engineering (RE) and, in particular, Goal-Oriented Requirements Engineering (GORE). By analyzing the matter of Software Evolution under the perspective of Requirements Engineering, we face the need to create representations (models) of requirements and related concepts, in a way that such representations guide software evolution. Given the existence of numerous approaches for the representation of requirements models and the fact that requirements are represented from the very early phases of elicitation all the way until software execution, we inevitably incur in conceptual modeling problems, such as construct overload, excess, redundancy or incompleteness. As an example of overload, the requirement construct itself can mean an intention of a stakeholder at an early elicitation phase, a document artifact that represents a possible solution in a subsequent phase, or even a code artifact at runtime that allows an adaptive system to reason over its requirements model.
In this project, we use ontologies as conceptual tools to deal with these and other conceptual modeling problems in toe GORE domain, and with a focus on Software Evolution issues. An ontology as a computational artifact, i.e., an explicit and formal specification of a shared conceptualization, can aid in the mitigation of these problems and has already been attracting the attention of the RE community. By explicitly and formally defining the concepts, relations and constraints in a domain of interest, an ontology can be used to facilitate the integration of data, models and systems developed independently, to support the communication of people working in this universe of discourse, and as a reusable specification for the development of systems in this domain. In other words, ontology are widely accepted in the scientific literature as tools that promote semantic and interoperability among entities of different nature.
The main objective of this project is to use ontologies as conceptual tools in the domain of Software Requirements Engineering, particularly in the context of Goal-Oriented Requirements Engineering (GORE) and with a focus on issues related to Software Evolution. This objective can be decomposed in the following specific ones:
At the end of this page there is a list of publications related to this project (published along the duration of the project and also before the project, in the same research context). We list below other resources related to the publications of the project:
For further information on the ROSE project, please contact prof. Vítor E. Silva Souza, principal investigator in the project.