Adaptation and Dependability and Their Key Role in Modern Software Engineering

Adaptation and Dependability and Their Key Role in Modern Software Engineering

Vincenzo De Florio, Chris Blondia
DOI: 10.4018/jaras.2010040101
(Individual Articles)
No Current Special Offers


Current software systems and the environments such systems are meant for requiring a precise characterization of the available resources and provisions to constantly re-optimize in the face of endogenous and exogenous changes and failures. This paper claims that it is simply not possible today to conceive software design without explicitly addressing adaptability and dependability. As an example, the authors remark on how mobile computing technologies call for effective software engineering techniques to design, develop and maintain services that are prepared to continue the distribution of a fixed, agreed-upon quality of service despite of the changes in the location of the client software, performance failures, and the characteristics of the environment. This paper concludes that novel paradigms are required for software engineering so as to provide effective system structures for adaptive and dependable services while keeping the design complexity under control. In this paper, the authors discuss this problem and propose one such structure, also briefly surveying the major milestones in the state of the art in this domain.
Article Preview

Services And Programs

In the following we consider a service as a set of manifestations of external events that, if compliant to what agreed upon in a formal specification, can be considered by a watcher as being “correct”. Moreover we refer to a program as a physical entity, stored as voltage values in a set of memory cells, which is supposed to drive the production of a service. Goal of software engineering is being able to set up of a robust homomorphism between a service’s high-level specification and a low-level computer design (the program).

More formally, we say that for some functions f and g,

Service = f (program), program = g (specification),
Service = g · f (specification).

Building robust versions of f and g is commonly a very difficult job.

We now concentrate on the range of g (the software set) and for any two systems a and b, if a relies on b to provide its service, we say


Complete Article List

Search this Journal:
Open Access Articles: Forthcoming
Volume 7: 1 Issue (2016)
Volume 6: 2 Issues (2015)
Volume 5: 4 Issues (2014)
Volume 4: 4 Issues (2013)
Volume 3: 4 Issues (2012)
Volume 2: 4 Issues (2011)
Volume 1: 4 Issues (2010)
View Complete Journal Contents Listing