institut f¨ur informatik - PST Thesis Management Interface - LMU
institut f¨ur informatik - PST Thesis Management Interface - LMU
institut f¨ur informatik - PST Thesis Management Interface - LMU
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2. State of the Art<br />
This chapter gives an overview of the general software development principles, technologies<br />
and events that are relevant for this thesis.<br />
2.1. Model-Driven Software Development<br />
Model-driven software development gives answers to the issue of managing software of constantly<br />
increasing complexity. This section discusses the events that lead to such complexity<br />
and explains the background and principles of the model-driven solution.<br />
2.1.1. Growing complexity of software<br />
Current advancements in hardware and network technologies have led off to development of<br />
ubiquitous, collaborative software systems that became indispensable for the modern society.<br />
Software in these systems is often deployed in distributed and embedded environments that<br />
consist of various devices (from personal computers and mobile devices to specialized sensors<br />
and electronic control units), while communicating through diverse interaction paradigms<br />
[FR07]. The complexity of such software systems and the expectations of quality are increasing,<br />
while the software development cycles are becoming shorter. Such events cause<br />
software developers to face major challenges in all stages of the software life cycle [HT06].<br />
However, a considerable factor that influences the complexity of developing such systems is<br />
not technical: it is the understanding of the problem domain - the area of interest to which<br />
the end-user is applying the software system - and the gap between the problem domain and<br />
the implementation of the problem solution [Eva03]. This gap appears when a developer<br />
creates software solutions by using abstractions that are at a lower level than those used to<br />
express the problem. When developing a system, the attempt to overcome this gap by using<br />
methods that rely on human effort will only increase the system’s complexity [FR07]. Tackling<br />
this issue thus requires a technology that will effectively raise the level of abstraction<br />
in which the solution is implemented, which in turn will result in improved productivity,<br />
efficiency and software quality.<br />
2.1.2. Abstraction in computing<br />
The history of computing can be observed as a study of layers of abstraction [Lid10, HT06]:<br />
from hard-wired computers to stored-program machines in the early days, programming has<br />
evolved from machine code to assembly languages and from there to third-generation languages.<br />
The third-generation languages enabled developers to ignore register allocation and<br />
low-level machine instructions by introducing high-level abstractions such as named variables<br />
and structured programming constructs. The translation back to machine code could be left<br />
to compilation technologies. Object-oriented languages introduced additional abstractions<br />
3