31.01.2014 Views

Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...

Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...

Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...

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.

8.6. Implementation<br />

8.6. Implementation<br />

The previous sections in this chapter d<strong>es</strong>cribed the d<strong>es</strong>ign of the openETCS domain framework<br />

based on UML diagrams. Since UML is a very general d<strong>es</strong>cription formalism for objectoriented<br />

programming languag<strong>es</strong>, those typically cannot provide certain information about<br />

the implementation in a concrete programming language. Mainly, two strategi<strong>es</strong> exist for<br />

implementing a software d<strong>es</strong>ign defined by UML:<br />

1. manually implement the complete d<strong>es</strong>ign<br />

2. generate as much as possible code from the UML model and manually implement missing<br />

parts<br />

As already illustrated in Chapter 3, general modelling formalisms r<strong>es</strong>pectively meta models<br />

normally do not provide enough abstraction to enable full code generation. However, strategy 2<br />

is anyway preferable because the workload is in any case smaller compared to a complete<br />

manual implementation.<br />

As for this work the tooling for the domain framework development is not of main inter<strong>es</strong>t,<br />

a d<strong>es</strong>cription of this specific tool chain is omitted.<br />

8.6.1. Programming Language and Target Platform<br />

According to Section 8.5, the domain framework is the PIM of the openETCS architecture and<br />

should be (mostly) platform independent. Hence, the C++ programming language is chosen<br />

for the implementation because it provid<strong>es</strong> object-oriented programming (corr<strong>es</strong>ponding to<br />

Req.6) and is suitable for technical applications. Since the goal of this case study is primary a<br />

proof of concept, the new C++ standard also called C++11 [7] is already used, but which is<br />

currently in draft status. Neverthel<strong>es</strong>s, it provid<strong>es</strong> certain advantag<strong>es</strong> for the domain framework<br />

implementation. For example, the implementation must <strong>es</strong>tablish a sample system (d<strong>es</strong>cribed<br />

in Section 7.6) with a constant sample time. This is related to the scheduling of the executing<br />

platform, which normally refers to an operating system. Since interfac<strong>es</strong> to operating system<br />

functionality, e.g. system calls [77], generally differ much, acc<strong>es</strong>s via C++ objects, methods,<br />

and functions [7, Ch. 30] that are available for any platform providing a C++ compiler is<br />

preferable. The gcc or rather the g++ [33] compiler is used for the software development of<br />

the openETCS case study because it is developed un<strong>der</strong> a FLOSS license and supports since<br />

version 4.4.7 the draft standard C++11. Although the choice for the target platform should<br />

not be relevant for the PIM, the usage of Linux [47] provid<strong>es</strong> the integration in a platform that<br />

is also FLOSS.<br />

Obviously, not all elements of the domain framework implementation can be discussed in<br />

detail. Therefore, the following subsections discuss certain parts of the domain framework<br />

implementation that are of high<strong>es</strong>t relevance and/or inter<strong>es</strong>t. The full software reference of the<br />

openETCS domain framework is located in Appendix D.<br />

Before proceeding with concrete implementation exampl<strong>es</strong>, it is noted that all class<strong>es</strong> of the<br />

openETCS domain framework are located in the ::oETCS::DF C++ name space [79].<br />

149

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

Saved successfully!

Ooh no, something went wrong!