Information Technology Reference
In-Depth Information
only integrated superficially, runtime adaptability is not addressed at all, model
and runtime artifacts are hardly kept consistent.
The second challenge refers to the architecture and implementation of Future
Internet Systems: how could such systems be designed and realized so that they
are flexible enough to evolve over time accommodating the various changes?
Promising approaches can be found in the area of pattern-based and model-
driven engineering with a broad set of formal, semi-formal and informal tech-
niques for the transformation of models, the deployment and (re)configuration of
components, functional and nonfunctional testing, and the verification of prop-
erties.
Software architectures are the main blueprints of software systems and need
to be designed from the ground up to accommodate evolution. To date this
has not been the case and even if an architecture is put in place, changes and
modifications during both the development process and post deployment evo-
lution may introduce architectural decay. These changes are seldom updated in
documentation.
To deal with this almost universal software engineering challenge, over the last
10-15 years a number of model-centric, model-driven (collectively called MD*)
approaches have been proposed. The vision of this approach is that systems are
described at the level of abstract models, often with the help of graphical nota-
tion. Code is not written by hand, but automatically generated and evolved from
the models. The converse of this is also possible and models can be automatically
learned from the codebase and a representative set of execution traces. This is
known as Software Architecture Recovery (SAR) and is described below. This
makes it possible to deal with legacy systems and to (self-) adapt to new environ-
ments more easily. Because code generation does not come with any correctness
guarantees, an important aspect of research of the model centric approach is
formal verification.
Complementary to MD, it is also possible to automatically reconstruct models
from the codebase and, possibly, a representative set of execution traces. SAR is
the process of focusing on recovering the high-level design of a system from its
source code. SAR processes and tools use both static and dynamic analysis. Con-
cerning static analysis, clustering techniques and other heuristics (e.g., based on
naming conventions) are often applied to the source code and configuration files
to create a representation for the architecture and to identify software patterns.
The quality and accuracy of the results is typically improved when dynamic
analysis is also used, e.g., by looking at representative execution traces, as well
as system logs. This is particularly important with Object Oriented programs,
which employ polymorphism in ways which may not be obvious from the source.
Other areas such as resource usage can also be relevant to understanding the
architecture.
4.3 Middleware and Cloud Computing
Distributed systems are experiencing a period of rapid and intense change, at
a rate that is unprecedented since the inception of the area in the early 1980s.
Search WWH ::




Custom Search