30.11.2012 Views

Automotive User Interfaces and Interactive Vehicular Applications

Automotive User Interfaces and Interactive Vehicular Applications

Automotive User Interfaces and Interactive Vehicular Applications

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.

The HMISL language for modeling HMI product lines<br />

Simon Gerlach<br />

HMI/Cluster, Switches<br />

Volkswagen AG<br />

PO Box 1148, D-38436 Wolfsburg, Germany<br />

ABSTRACT<br />

This paper introduces the HMISL language which serves to model<br />

the behavioral logic of HMI product lines. HMISL models are<br />

structured into separate modules that can be reused for creating<br />

the software of different HMI variants by means of code<br />

generation. The language is designed to be applied along with<br />

different tools for GUI modeling available on the market.<br />

Categories <strong>and</strong> Subject Descriptors<br />

D.3.2 [Programming Languages]: Language Classifications –<br />

specialized application languages, very high-level languages;<br />

D.3.3 [Programming Languages]: Language Constructs <strong>and</strong><br />

Features; D.2.2 [Software Engineering]: Design Tools <strong>and</strong><br />

Techniques – user interfaces; D.2.13 [Software]: Reusable<br />

Software – Domain Engineering; H.5.2 [Information <strong>Interfaces</strong><br />

<strong>and</strong> Presentation]: <strong>User</strong> <strong>Interfaces</strong> – Graphical user interfaces<br />

(GUI); D.2.6 [Software Engineering]: Programming<br />

Environments – Graphical environments;<br />

Keywords<br />

HMI, <strong>Automotive</strong>, DSL, model-driven software development,<br />

domain-specific languages, HMISL, code generation<br />

1. MODEL-DRIVEN HMI DEVELOPMENT<br />

Model-driven software development promotes to automatically<br />

generate software based on models that provide all necessary<br />

information in a formal manner. There are models designed for<br />

code generation of HMI software that come with different level of<br />

abstraction <strong>and</strong> formalism. Most of them are focusing the<br />

structural parts <strong>and</strong> in particular the layout of the GUI. The<br />

dynamic behavior such as the dialogue flow is often modeled<br />

using Statecharts [1].<br />

Choosing behavior models with semiformal notations <strong>and</strong> higher<br />

levels of abstraction can be beneficial in earlier project phases.<br />

However, for the generation of the final HMI software such<br />

abstract models are unsuitable. Because their level of detail is too<br />

low <strong>and</strong> they lack expressiveness to provide the code generators<br />

with all necessary information the generated code need to be<br />

adapted or complemented manually. Furthermore, using pure<br />

Statecharts is more complex than conventional programming<br />

languages for modeling certain parts of the HMI behavior such as<br />

algorithmic computations <strong>and</strong> string formatting. For this reason,<br />

these parts of the HMI software are not developed in a modeldriven<br />

way but are coded manually.<br />

1.1 Drawbacks<br />

Applying model-driven approaches together with traditional<br />

software development for creating the HMI software gives rise to<br />

several integration problems. Integrating the generated software<br />

<strong>and</strong> the parts that were coded manually can call for designs with<br />

Copyright held by author(s).<br />

<strong>Automotive</strong>UI’11, November 29-December 2, 2011, Salzburg, Austria.<br />

Adjunct Proceedings.<br />

simon.gerlach@volkswagen.de<br />

- 15 -<br />

larger code size or lower runtime performance. It may be<br />

necessary, for instance, to introduce additional interfaces or layers<br />

in order to ensure the referential integrity of the overall software.<br />

Because the usage of highly-specialized HMI modeling tools<br />

requires different qualifications than conventional software<br />

development different staff will be assigned to these jobs. Because<br />

no vertical development is possible extensive communication<br />

efforts is required during HMI implementation. In addition to that<br />

bug fixing becomes a very complex task because generated code<br />

<strong>and</strong> manually written code as well as models have to be taken into<br />

account <strong>and</strong> it is necessary to underst<strong>and</strong> how they interact.<br />

1.2 Bridging conventional <strong>and</strong> model-driven<br />

software development by hybrid models<br />

The goal of this work is to overcome the aforementioned<br />

problems of model-driven HMI development. In accordance with<br />

the idea of Gröninger [2], the approach is based on combining<br />

high-level concepts like state machines <strong>and</strong> a programming<br />

language into a textual domain-specific modeling language (DSL)<br />

called HMISL [3]. While we started with using LUA as the<br />

embedded programming language we later changed to a<br />

minimalistic Java dialect in order to take advantage of static<br />

typing. The HMISL allows expressing the complete behavior of<br />

the HMI in a single formal model. This enables vertical<br />

development, semantically rich checks <strong>and</strong> full code generation of<br />

the final HMI software. In contrast to other textual notations like<br />

SCXML [4] we decided to use a formal notation that is not XMLbased.<br />

This allowed achieving a smoother integration of the<br />

programming language as well as a clearer <strong>and</strong> more compact<br />

syntax because the one of the embedded programming language<br />

did not need to be adapted to the restrictions of XML. For<br />

instance, no double escaping of reserved characters is necessary<br />

(Listing 1, Listing 2).<br />

<br />

<br />

Listing 1 – Example Code in SCXML<br />

state weather_main_page {<br />

on EXIT then {<br />

hasTarget = true;<br />

if (CarDestLat==0 && CarDestLon==0) {<br />

hasTarget = false;<br />

}<br />

}<br />

on userinput(keycode) [keycode==">"] then<br />

goto wetter_main_page2;<br />

}<br />

Listing 2 – Equivalent Code in HMISL

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

Saved successfully!

Ooh no, something went wrong!