62
Technologieraum-übergreifende Softwareentwicklung im Umfeld intelligenter Geräte Falk Hartmann, ubigrate GmbH

Technologieraum übergreifende Programmierung

Embed Size (px)

DESCRIPTION

Ein Vortrag im Rahmen der Ringvorlesung "Industrielle Softwareentwicklung", gehalten am 18. Januar 2012.

Citation preview

Page 1: Technologieraum übergreifende Programmierung

Technologieraum-übergreifende Softwareentwicklung im Umfeld intelligenter Geräte

Falk Hartmann, ubigrate GmbH

Page 2: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 3: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 4: Technologieraum übergreifende Programmierung

UNTERNEHMENSPROFIL UBIGRATE GMBH

4

• Spin-Off von SAP Research• gegründet 2008• 15 Mitarbeiter• Hauptsitz Dresden• Vertriebsbüros in Dortmund und

Karlsruhe

• ubigrate = ubiquitous integration

Page 5: Technologieraum übergreifende Programmierung

Software on Business Level (ERP, MES, WMS, etc.)

DAS GRUNDPROBLEM

5

Geschäftsprozesse (Planung und Überwachung)

?

?

Informationen über die phyischen Prozesse sind oft... verspätet, fehlerhaft, unvollständig, nicht vorhanden.

Probleme: Langsame Reaktion, manueller Aufwand, suboptimale Entscheidungen!

Physische Prozesse (Ausführung)

Page 6: Technologieraum übergreifende Programmierung

IT und intelligente Geräte (RFID, Sensors, Controls, …) auf Prozessebene

Software auf der Geschäftsebene (ERP, MES, WMS, etc.)

DER LÖSUNGSANSATZ

6

Vorteile: Schnellere Reaktion, automatische Erfassung, bessere Entscheidungen

Business Activity Monitoring in Produktion und LogistikEffiziente Erfassung und Analyse aktueller, vollständiger, fehlerfreier und exakter

Daten über die physischen Prozesse.

Page 7: Technologieraum übergreifende Programmierung

7

GEQOO BOXES: BEHÄLTERMANAGEMENT

Reinigung/Reparatur Produktion Versand

Erfassung des Eingangs in die Reinigung/Reparatur

Erfassung der Nutzung in der

Produktion

Erfassung des Versandes an Kunden

Kundenvorteile Schwund verringern Produktionsausfälle vermeiden Unnötige Reinigung/Reparatur

verhindern Behälterüber/-unterbestand

vermeiden Automatisierte Abrechnung

Page 8: Technologieraum übergreifende Programmierung

8

GEQOO COOLCHAIN: KÜHLKETTENÜBERWACHUNG

+!

Erfassung des Transportbeginns

Erfassung von Übergaben zwischen

Transporteuren

Erfassung des Wareneingangs

Kundenvorteile Lückenlose Erfassung der

Transport- bzw. Lagerbedingungen

Vereinfachte Dokumentation Erkennung von Problemstellen

während Transport/Lagerung Verbesserung der

Abrechenbarkeit

8

Page 9: Technologieraum übergreifende Programmierung

9

ADSTEC

Industrietaugliches Terminal

Touchscreen 8“...15“

CPU: Intel Atom

RAM: bis zu 2GB

HD oder SSD möglich

OS: Windows XP, 7 oder Embedded

Page 10: Technologieraum übergreifende Programmierung

10

NORDIC ID MERLIN

Mobiles Terminal

RFID (UHF/HF) möglich

Barcodescanner

CPU: ARM, 532 MHz

RAM: 256 MB

Flash: 288 MB

OS: Windows CE 6.0

Page 11: Technologieraum übergreifende Programmierung

11

MITSUBISHI C CONTROLLER

Automatisierungshardware

(immer in Kombination mit SPS)

CPU: Renesas SH4, 400 MHz

RAM: 256 MB

Flash: ≤ 4 GB CF

OS: VxWorks 6.x

Page 12: Technologieraum übergreifende Programmierung

12

CLOUD SERVER

Standard-HW bei Cloud-Anbieter

CPU: AMD Opteron Quadcore, 1.7 GHz

RAM: 4 GB

HDD: 2x250GB

OS: Ubuntu 8.4 LTS

Page 13: Technologieraum übergreifende Programmierung

CLIENT PCS

“Büro-PCs”

Jeder Typ von PCs, der in den letzten 10 Jahren produziert wurde

CPU: x86 (Intel, AMD, …)

RAM: 512 MB…4 GB

HDD: > 25GB

OS: Windows (in allen Versionen)

13

Page 14: Technologieraum übergreifende Programmierung

ANFORDERUNGEN AN DIE ARCHITEKTUR

Nr. Anforderung

A1 Einfache Bedienung, insbesondere Unterstützung für Touchscreens

A2 Unabhängigkeit vom installierten Browser auf Büro-PCs (IE 6…IE 9, Firefox, Chrome, Opera)

A3 Robustheit auch bei intermittierenden Verbindungen zwischen Terminals und Cloud Server

A4 Persistenz in verschiedenen relationalen Datenbanken

A5 Import und Export von Stamm- und Bewegungsdaten per HTTP/XML

14

Page 15: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 16: Technologieraum übergreifende Programmierung

16

PLATTFORM

Definition nach dem Linux Information Project [The Linux Information Project, 2011]

The term platform as used in a computer context can refer to (1) the type of processor and/or other hardware on which a given operating system or application program runs, (2) the type of operating system on a computer or (3) the combination of the type of hardware and the type of operating system running on it.

Teilweise auch Einbeziehung eines Applikations-Frameworks

Hier: Kombination von Hardware und Betriebssystem

Begriff auch in anderen Industrien üblich, z.B. Automobilbau, Pharmaindustrie

Beispiele

Windows auf x86

Windows CE auf ARM

Android auf SnapDragon

VxWorks auf Renesas SHx

Page 17: Technologieraum übergreifende Programmierung

17

PLATTFORM-ÜBERGREIFENDE PROGRAMMIERUNG

Ziel: Einsparung von Entwicklungskosten

Wiederverwendung möglichst unveränderter Artefakte (Code)

Cross-platform Development

vgl. Portierbarkeit (z.B. ANSI-C)

Beispiele

Java („Write once, run anywhere“)

.NET

Flash

Perl

Page 18: Technologieraum übergreifende Programmierung

18

TECHNOLOGIERAUM

Definition nach Ivan Kurtev [Kurtev et al., 2002]

A technological space is a working context with a set of associated concepts, body of knowledge, tools, required skills, and possibilities. It is often associated to a given user community with shared know-how, educational support, common literature and even conference meetings.

Ergänzung des Plattform-Begriffs

Fokus stark auf Beziehung zwischen Modell und Metamodell

Kaum Betrachtung der Werkzeuge

Verwendung des Begriffs im Folgenden

Definition ist sinnvoll

anderer Fokus: weg vom Metamodell/Modell-Beziehung, hin zu Programmiersprache, Applikationsframework, Werkzeuge

Page 19: Technologieraum übergreifende Programmierung

19

TECHNOLOGIERAUM (KURTEV)

nach [Kurtev et al., 2002]

Page 20: Technologieraum übergreifende Programmierung

ÜBERSICHT TECHNOLOGIERÄUME

20

Page 21: Technologieraum übergreifende Programmierung

PLATTFORM VS. TECHNOLOGIERAUM

21

Page 22: Technologieraum übergreifende Programmierung

ARCHITEKTUR

22

A1

A2A3 A5

A4

Page 23: Technologieraum übergreifende Programmierung

23

TECHNOLOGIERAUM-ÜBERGREIFENDE PROGRAMMIERUNG

Fazit

Keiner der vorgestellten Technologieräume erstreckt sich über alle gewünschten Plattformen

Wahl mehrerer Technologieräume → „Technologieraum-übergreifende Programmierung“

Probleme

Wiederverwendung von Code Objektmodell

Reimplementierung von Features in mehreren Technologieräumen

Überbrückung Technologieraumgrenzen

Spezialisierung der Teammitglieder auf einen/mehrere Technologieräume

Page 24: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 25: Technologieraum übergreifende Programmierung

Problematik 1: Objektmodell

Page 26: Technologieraum übergreifende Programmierung

26

OBJEKTMODELL

Objektmodell

Eigentliches Modell der Domäne (hier: Behälterverwaltung)

Objektmodell sehr agil, Änderungen in jeder Iteration

Beispiel: ContainerDescription – Beschreibung eines Behältertypens

Name, Beschreibung

Identifizierbarkeit einzelner Instanzen

Zustandsmodelle

Page 27: Technologieraum übergreifende Programmierung

27

INSTANZEN IN DEN TECHNOLOGIERÄUMEN

ContainerDescription-Instanzen existieren in allen Technologieräumen

Änderung des Objektmodells muss in allen Technologieräumen nachvollzogen werden

1.

3.

2.

5b.

5a. 4.

Page 28: Technologieraum übergreifende Programmierung

28

ZENTRALES MODELL: XML SCHEMATA

Zentrales Modell zur Generierung des Objektmodells

Mögliche Modellierungstechniken: UML, textuell, XML Schema

ubigrate benutzt XML Schemata zur Beschreibung des Objektmodells

Ableitung von Artefakten in Java, C#, ActionScript, MXML, OR-Mapping, Ruby

Page 29: Technologieraum übergreifende Programmierung

XML SCHEMA CONTAINERDESCRIPTION.XSD

Verhältnis zwischen XML Schema und UML siehe [Carlson, 2001]

29

Page 30: Technologieraum übergreifende Programmierung

30

XMLSCHEMA → JAVA (1)

JAXB – Java-XML Binding [Reinhold, 1999]

Intra-level transformation (siehe [Kurtev, 2005])

Page 31: Technologieraum übergreifende Programmierung

XMLSCHEMA → JAVA (2)

31

Page 32: Technologieraum übergreifende Programmierung

XMLSCHEMA → JAVA (3)

32

Page 33: Technologieraum übergreifende Programmierung

33

XMLSCHEMA → C# (1)

Existierende Lösungen

MS bietet Compiler (“xsd.exe”) Compiler hat Einschränkungen (xsd:union und xsd:import)

Diverse andere Lösungen, eher weniger aktiv entwickelt

Plugin-Mechanismus in XJC

Plugins haben Zugriff auf XML Schema

AST der generierten Java-Klassen

Zusatzinformationen (Binding)

→ Plugin zur Generierung von C#-Klassen Generierung des C#-Codes über AST und selbstentwickelte Bibliothek zur Serialisierung

Page 34: Technologieraum übergreifende Programmierung

XMLSCHEMA → C# (2)

34

Page 35: Technologieraum übergreifende Programmierung

XMLSCHEMA → ACTIONSCRIPT

XJC-Plugin

Generierung des ActionScript-Codes über AST-Bibliothek meta-as

http://www.badgers-in-foil.co.uk/projects/metaas/

Kein XML-Binding-Framework in ActionScript → keine Binding-Information im Code

35

Page 36: Technologieraum übergreifende Programmierung

36

ZWISCHENFAZIT

Generierung des Objektmodells

Vorteile Verringerung des Entwicklungsaufwandes

bei richtiger Anwendung und in Abhängigkeit von der Sprache Fehlerprüfung durch Compiler

Nachteile Unterschiede der Sprachen: kovariante Rückgabewerte, Enumerationen

Ansatz erfordert Strukturgleichheit der Objektmodelle

XML Schema zur Beschreibung des Objektmodells

Vorteile Schnelle Erfolge bei der Generierung

UML immer noch zur Beschreibung der XML Schemata möglich

Nachteile Keine grafische Ansicht

Page 37: Technologieraum übergreifende Programmierung

Problematik 2: Fehlercodes

Page 38: Technologieraum übergreifende Programmierung

38

FEHLERCODES (1)

Löschen einer ContainerDescription-Instanz kann aus verschieden Gründen fehlschlagen

Existierende Behälter dieses Typs

Fehlende Benutzerrechte

Typischerweise Kommunikation per Rückgabewert/Exception

Page 39: Technologieraum übergreifende Programmierung

39

FEHLERCODES (2)

public int deleteContainerDescription(String uuid)

In Java implementiert, von ActionScript aus gerufen

Interpretation des Fehlercodes

Generierung der Fehlercodes aus gemeinsamen “Modell”

Page 40: Technologieraum übergreifende Programmierung

40

ZWISCHENFAZIT

Generierung von Enumerationen von Fehlercodes

Vorteile Refactoring der Fehlercodes möglich

Pflegeaufwand für Fehlercodes bleibt bei einem Entwickler

Kommunikation zwischen Entwicklern nicht mehr nötig

Automatische Auswertbarkeit des Fehlercodes

Nachteile Keine

Page 41: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 42: Technologieraum übergreifende Programmierung

Problematik 3: Kommunikation

Page 43: Technologieraum übergreifende Programmierung

43

KOMMUNIKATION

Übertragen der Instanzen des Objektmodells zwischen Technologieräumen

Diverse Standard-Technologien: CORBA, Webservices...

Page 44: Technologieraum übergreifende Programmierung

44

JAVA → FLASH/FLEX UND ZURÜCK

Webservice

Kein Problem in Java

Overhead für UI fraglich

XML über HTTP

Kein Problem in Java

Marshalling/Unmarshalling in Flash/Flex nicht verfügbar

AMF

Binäres Austauschformat, optimierter Resourcenbedarf

Funktioniert über JavaBeans und dazu passende ActionScript-Klassen

In Java verfügbar über BlazeDS oder LCDS

Probleme Enumerationen

Wrappertypen

Page 45: Technologieraum übergreifende Programmierung

45

JAVA → C# UND ZURÜCK

JMS für die Kommunikation zwischen Terminal und Server

Technologieraum Java->Java: unproblematisch

Versand der Nachrichten serialisiert oder als XML-Botschaften möglich

Technologieraum C#->Java bzw. Java->C#:

Versand der Nachrichten nur als XML-Botschaft möglich

JMS-Anbindung im .NET-Bereich (speziell .NET CF) fehlt

Nachimplementierung basierend auf REST

Zuverlässige Zustellung über Ablage im Dateisystem

Page 46: Technologieraum übergreifende Programmierung

46

ZWISCHENFAZIT

Übertragung von Instanzen über Technologieraumgrenzen hinweg

XML-Serialisierbarkeit ist hilfreich, aber nicht in jedem Technologieraum

u.U. Einsatz alternativer Serialisierungsformate notwendig

Asynchrone Kommunikationsmechanismen wie JMS sind in der Regel stark technologieraum-gebunden

Page 47: Technologieraum übergreifende Programmierung

Problematik 4: Datenbankzugriff

Page 48: Technologieraum übergreifende Programmierung

48

DATENBANKZUGRIFF

OR-Mapper benötigt Zusatzinformationen

Primary Keys

Verwaltung von Assoziationen (Sortierung, Kaskadierung von Operationen)

Page 49: Technologieraum übergreifende Programmierung

49

KONFIGURATION OR-MAPPER

Existierende Lösungen

Existierendes XJC-Plugin HyperJAXB für JPAIdee gut, Umsetzung fragwürdig

Eigenentwicklung XJC-Plugin

Generierung von Hibernate-Mappings(Hibernate-Mappings sind XML-Files, daher Generierung per JAXB)

Zusatzinformation für den OR-Mapper wird in Binding-Files hinterlegt

Page 50: Technologieraum übergreifende Programmierung

GENERIERUNG DER OR-MAPPER-KONFIGURATION

50

Page 51: Technologieraum übergreifende Programmierung

51

GEMEINSAME DATENBANKNUTZUNG

ubigrate Express

Einfache Zusammenstellung von Integrationslösungen durch Endkunde im Web

Sofortige Erstellung

Nicht kommerzialisiert

Gemeinsame Datenbanknutzung

Beschreiben der Datenbank mittels Java

Lesen/Schreiben der Datenbank mittels Ruby

Datenbankschema durch unseren gewählten Ansatz bereits vordefiniert

Adaption von ActiveRecord zur Parametrisierung durch Hibernate-Mappings

Convention-over-Configuration verursacht größere Probleme bei gemeinsamer Datenbanknutzung

Besonderes Problem: Abbildung der Vererbung

siehe [Grünberg, 2011]

Page 52: Technologieraum übergreifende Programmierung

52

ZWISCHENFAZIT

Generierung von OR-Mapper-Konfigurationen

Vorteile Zeitersparnis

Verringerung von Fehlern in den Mappings

Zentrale Vorgaben leichter durchsetzbar

Nachteile Strukturgleichheit von Persistenz- und Serialisierungsobjekten

Gemeinsame Datenbanknutzung

Machbar

Aufwand hängt von Technologieräumen ab, kann u.U. höher als erwartet sein

Page 53: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 54: Technologieraum übergreifende Programmierung

54

BUILD- UND RELEASE-MANAGEMENT

Grundfrage

Build jeweils durch “native” Mittel der Technologieräume oderdurch Mittel eines ausgewählten Raumes

Unser Ansatz

Auswahl eines Technologieraums für zentrales Build-Management Zusammenfassung der Ergebnisse (gemeinsames Setup)

Java mit ANT und Jenkins Naheliegend wegen XJC-Einsatz

Build-Target Flash/Flex unproblematisch (ANT-Tasks verfügbar)

Build-Target C# erfordert u.U. Nacharbeiten an existierenden ANT-Tasks

Page 55: Technologieraum übergreifende Programmierung

55

TEAM-SETUP

Gesichtspunkte

Effizienz

Ausfallsicherheit

Geringe Einstiegshürde

Ansätze

Paare von Spezialisten

Alles-Könner

Mischung

Unser Ziel

Jedes Team-Mitglied in zwei Technologieräumen unterwegs.

Jeder Technologieraum wird von zwei Team-Mitgliedern beherrscht.

Page 56: Technologieraum übergreifende Programmierung

Agenda

ubigrate – Business Activity Monitoring Von der Plattform zur Architektur Entwicklungsaspekte: Objektmodell, Fehlercodes Laufzeitaspekte: Kommunikation, Datenbankzugriff Organisatorisches Fazit

Page 57: Technologieraum übergreifende Programmierung

57

FAZIT

Technologieraum-übergreifende Programmierung

u.U. einzige Möglichkeit, mehrere Plattformen zu bedienen

Erhöhter Aufwand gegenüber plattformübergreifender Programmierung

Minimieren der Anzahl der Technologieräume

Reduktion des Aufwands über Codegenerierung

Page 58: Technologieraum übergreifende Programmierung

58

LITERATUR

Page 59: Technologieraum übergreifende Programmierung

59

ABKÜRZUNGEN (1)

AIR Adobe Integrated Runtime

AMF Action Message Format

AST Abstract Syntax Tree

CORBA Common Object Request Broker Architecture

CST Concrete Syntax Tree

DBMS/RDBMS Database Management System (Relational ~)

DOM Document Object Model

JAXB Java Architecture for XML Binding

JAXP Java API for XML Processing

JMS Java Message Service

JSON JavaScript Object Notation

MDA Model Driven Architecture

OSGi Open Services Gateway Initiative

Page 60: Technologieraum übergreifende Programmierung

ABKÜRZUNGEN (2)

ORM Object-Relational Mapper

REST Representational State Transfer

RFID Radio-Frequency Identification

SAX Simple API for XML

StAX Streaming API for XML

SPS Speicherprogrammierbare Steuerung

WPF Windows Presentation Foundation

YAML YAML Ain't Markup Language

60

Page 61: Technologieraum übergreifende Programmierung

IN EIGENER SACHE

Java User Group Sachsen

www.jugsaxony.org

www.facebook.com/jugsaxony

@jugsaxony

19. Januar 2012

Einführung in Android und Androids Open ADK-ImplementierungRainer Fritzsche, Noser Engineering AG

01. März 2012

RAP wird mobil Jochen Krause, EclipseSource

61

Page 62: Technologieraum übergreifende Programmierung

KONTAKT

62

Falk HartmannLeiter Softwareentwicklung

Tel.: +49 (351) 21187-27Fax: +49 (351) 21187-28Email: [email protected]

ubigrate GmbH

Schnorrstr. 7601069 DresdenGermanyWeb: www.ubigrate.com