13.08.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!