Tutorials

Migrating to a Service-Oriented Architecture (Di, 17.3.)

Harry Sneed

This half-day tutorial deals with the subject of reusing existing code as web services in a service-oriented architecture. It begins with a lecture on service-oriented architectures and how they can be constructed. The challenge lies in collecting the services. They can be bought, rented, borrowed, developed or taken from the existing code base. The enterprise SOA will usually consist of a mixture of these service types. In deciding to what degree existing software can be used the user must make an inventory of the current legacy systems and select components which could be candidates for reuse as services. These have to then be analyzed, adapted and wrapped behind a WSDL or WADL interface. The tutor will present tools for doing that. The tutorial continues with a demonstration of the wrapping tools using both procedural and object-oriented code. After that participants are given the chance to document the architecture using SoaML and to review the quality of the architecture. The service in question is an ordering service written in COBOL and Java.

Control-Flow Integrity (Di, 17.3.)

Antonio Barresi, Mathias Payer, Thomas Gross
ETH Zürich

Various modern attacks change the instruction sequence executed by a system. Examples are ROP (return-oriented programming) and its variants that combine existing code snippet ("gadgets") in an application's code to divert program execution. Control-Flow Integrity (CFI) is an approach to protect a system against attacks that hijack an application's control flow, and this tutorial describes CFI and its practical implications. We pay special attention to recent developments of CFI-based techniques that make this approach more attractive for real-life settings and that further reduce the number and quality of "gadgets" available to an attacker. The objective of the tutorial is to raise the level of awareness both of the kinds of attacks a system may experience as well as to understand the benefits and limitations of CFI-based defenses.

The tutorial is presented in English. The target audience consists of software engineers and their managers.

C# durch die Brille des Software-Entwicklers (Mi, 18.3.)

Markku Lammerz und Dennis Michielse, Workplace Solutions GmbH

Die von Microsoft entwickelte Programmiersprache C# erfreut sich eine immer größer werdenden Beliebtheit. Laut dem TIOBE Index für Oktober 2014 handelt es sich bei C# um eine der fünf be-liebtesten Programmiersprachen weltweit. Die stetig weiterentwickelte, objektorientierte Sprache unterstützt moderne Features wie Properties, Lambda-Ausdrücke, LINQ und Asynchrone Verarbeitung. Die weite Verbreitung in der Windows-Welt führt zu einer erhöhten Nachfrage an C#-Entwicklern. Die vielfältigen Ausprägungen der Programmiersprache, von Konsolenanwendungen bis hin zu 3D-Interaktionssoftware, verdeutlichen ihr Potential und mögliche Einsatzgebiete. Dieses Tutorium bietet Entwicklern mit Kenntnissen einer objektorientierten Programmiersprache einen Einstieg in C#.

Wir zeigen, welche Möglichkeiten C# bietet und welche „Best practices“ sich bei uns im Praxiseinsatz etabliert haben.

Xtext - Werkzeugunterstützung für bestehende sowie eigene Sprachen einfach entwickeln (Di, 17.3.)

Stefan Oehme, Moritz Eysholdt
Itemis AG

Eine Vielzahl von formalen Sprachen haben ihre Daseinsberechtigung, da ihre Eigenschaften oft speziell zugeschnitten sind auf ihre Anwendungsdomäne, das Vorwissen ihrer Anwender und eventuell ein oder mehrere Zielplatformen.

Mögliche Motivationen für das Verwenden einer bestimmten - oder sogar dem Designen einer eigenen Sprache können sein:
- Erhöhung der Produktivität der Anwender durch ein hohes, direkt auf die Anwendungsdomäne zugeschnittenes Abstraktionsniveau
- Senkung der Einstiegshürde durch das Verwenden einer den Anwendern bereits vertrauten Syntax
- Vermeiden von Anwenderfehlern durch Vermeidung unnötiger Freiheitsgrade in der Sprache
- Reduzierung der benötigten Vorkenntnisse von Anwenden durch Spezialisierung auf deren Domäne und dem Weglassen von nicht benötigten Konzepten
- Frühes erkennen von Anwenderfehlern durch statische Analysierbarkeit von Dokumenten
- Unterstützung mehrerer Zielplatformen durch Abstraktion über selbige
- Forcierung eines Denkmodells
- Forcierung einer gewünschten Softwarearchitektur

Unabhängig von der Wahl der Sprache ist der Bedarf für gute Werkzeugunterstützung: Genau so, wie heutzutage von einer Textverarbeitung eine Rechtschreibkorrektur erwartet wird, darf von einer Entwicklungsumgebung exakte Syntaxprüfung, statische Validierung, context-sensitive Vervollständigung und vieles Mehr erwartet werden.

Xtext hat sich als de­facto Standard zur Erstellung von Werkzeugunterstützung für formale, textuelle Sprachen etabliert. Zur Werkzeugunterstützung zählen neben einem “intelligenten” Editor mit IDE­-Integration, Syntax­-Highlighting, Content Assist, live­Validierung etc. Generatoren und Interpreter. Hierbei hat Xtext den nötigen Arbeitsaufwand zur Erstellung selbiger derartig gesenkt, dass eigene Sprachen in vorher undenkbaren Szenarien praktikabel werden.

Teilnehmer dieses Tutorials werden in Vorträgen die relevanten Konzepte kennenlernen sowie eigene Erfahrung mit Xtext anhand von Übungsaufgaben sammeln. Ziel des Tutorials ist es, die Teilnehmer zur eigenständigen Entwicklung von domänenspezifischen Sprachen und Codegeneratoren zu befähigen.

Zentrale Themenbereiche sind: 
• Überblick über Xtext
• Die Xtext Grammar Sprache • Integration mit EMF
• Überblick über Xtexts Architektur
• Modell-­Validierung
• Scoping: Linking und mehr
• Code Completion
• Template Proposals
• Formatting (Pretty Printing)
• Codegenerierung mit Xtend
• Erstellung von ASTs: Actions in der Grammatik 
• UI hooks (Quickfixes, Coloring, Outline, etc.)
• Allgemeine Strategien zur Problemlösung
• Ausblick