Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG



Ähnliche Dokumente
Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Beschreibung des MAP-Tools

Agile Software Development

Anforderungen an die HIS

Vorlesung Betriebstechnik/Netzplantechnik Operations Research

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Die Lernumgebung des Projekts Informationskompetenz

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Speicher in der Cloud

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Software Engineering Klassendiagramme Assoziationen

Professionelle Seminare im Bereich MS-Office

Objektorientiertes Software-Engineering

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Das Leitbild vom Verein WIR

Rhapsody in J Modellierung von Echtzeitsystemen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Die Invaliden-Versicherung ändert sich

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Vergleich: Positionen der Word 2003-Befehle in Word

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Some Software Engineering Principles

Anlegen eines DLRG Accounts

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Berufsprüfung ICT-Applikationsentwicklung

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Arbeiten mit UMLed und Delphi

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen

Dokumentation Schedulingverfahren

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Bedienungsanleitung für den SecureCourier

Übungen zur Softwaretechnik

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Java Enterprise Architekturen Willkommen in der Realität

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Kapitalerhöhung - Verbuchung

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Übungsklausur vom 7. Dez. 2007

SharePoint Demonstration

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

SDD System Design Document

Nutzung von GiS BasePac 8 im Netzwerk

SEQUENZDIAGRAMM. Christoph Süsens

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Lehrer: Einschreibemethoden

WhiteStarUML Tutorial

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Urlaubsregel in David

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Was ist Sozial-Raum-Orientierung?

Projekt 2HEA 2005/06 Formelzettel Elektrotechnik

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Kompetenz. rund um. Ihren. Entwicklungsprozess. Über uns. Technische Software. Modellbasierter Test. Prüfplätze. Automatisierung.

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

OP-LOG

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

Stammdaten Auftragserfassung Produktionsbearbeitung Bestellwesen Cloud Computing

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Anbindung des eibport an das Internet

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

1 Mathematische Grundlagen

Was meinen die Leute eigentlich mit: Grexit?

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Tipps & Tricks Neuerungen Nr. 5/ Externe Web-Shops im UniKat für Laborverbrauchsmaterial & Chemikalien

1. Weniger Steuern zahlen

Einführung in. Logische Schaltungen

Erfahrungen mit Hartz IV- Empfängern

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Anleitung über den Umgang mit Schildern

Leichte-Sprache-Bilder

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

MCRServlet Table of contents

Übung 2: Spezifikation von Auszügen eines Provisionssystems

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Festigkeit von FDM-3D-Druckteilen

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Updatehinweise für die Version forma 5.5.5

Projektmanagement in der Spieleentwicklung

Präsentation: Google-Kalender. Walli Ruedi Knupp Urdorf

Ab 2012 wird das Rentenalter schrittweise von 65 auf 67 Jahre steigen. Die Deutsche Rentenversicherung erklärt, was Ruheständler erwartet.

Eigenen Farbverlauf erstellen

Theoretische Informatik SS 04 Übung 1

Transkript:

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG

Einführung Was sind Aspekte? Anforderungen: Thema / Aspekt Berühren viele andere Anforderungen Auf verschiedenen Abstraktionsebenen Beispiele: Logging / Tracing Memory-Management & Caching-Strategien Fehlerbehandlung & Sicherheit Prüfung aller Pointer-Eingangsvariablen auf NULL

Aspekte und verteilter Code PKG_Display PKG_Controller Memory Memory Memory Memory Software

Ziel der aspektorientierten Programmierung (AOP) Vermeidung von verteiltem Code für einen Aspekt PKG_Controller PKG_Display Aspect_Memory Software

Beispiel: Programmierung eines begrenzten Puffers Hauptprogramm R1: Der Puffer hat eine begrenzte Kapazität R2: Auf den Puffer kann mit Put() und Get() zugegriffen werden R3: Der Puffer blockiert Get()-Anforderungen, wenn er leer ist R4: Der Puffer blockiert Put()-Anforderungen, wenn er voll ist Aspekt Blockieren R5: Die Elemente des Puffers werden nicht auf den Heap gelegt R6: Es können mehrere Clients gleichzeitig auf den Puffer zugreifen R7: Der Puffer kann im Flash-Speicher persistent gehalten werden R8: Zugriffe auf den Flash-Speicher werden gesammelt und finden in Blöcken statt

Schwachstellen der AOP Probleme ähnlich wie beim Übergang zu C++ im Embedded-Bereich: Wenig Grundlagenwissen/Best Practices Im Embedded-Bereich extrem unübliche Vorgehensweise Kann zu extrem schlechter Lesbarkeit führen Kritisches Hinterfragen der Haupt- und Nebenzerlegungen nötig Was ist Hauptprogramm? Was sind Aspekte? Wie kann im Embedded-Bereich mit Aspekten umgegangen werden?

UML Diagramme & Aspekte 1 Sinnvolle Vorgehensweisen bei Darstellung von Aspekten in UML-Diagrammen: Jeweils nur ein Thema/Aspekt pro Diagramm Die Diagramme zusammen ergeben dann die Software Die einzelnen Themen/Aspekte bleiben verständlich Farbliche Gliederung von Aspekten kann hilfreich sein Die Umwandlung in Code erfolgt meist früh (zum Zeitpunkt des Einfügens von Diagrammen).

UML Diagramme & Aspekte 2 Klassendiagramme : Aspekte vermengt: unübersichtlich 25 Command1Factory Command::CommandMemory::Command1Factory 1 Command1 CreateCommand1():Command1 DestroyCommand1(pCommand:pCo... 25 «create» «create» «Interface» ICommand Command1 1 «Interfac e» ICom mand Command1

UML Diagramme & Aspekte 3 Klassendiagramme : Aspekte lassen sich sehr gut einzeln darstellen Es wird Code durch die Klassendiagramme erzeugt Es lässt sich kein Verhalten modellieren/codieren Sequenzdiagramme: Aspekte lassen sich oft einzeln darstellen Abhängig vom gewählten Szenario Low-Level-Aspekte oft schwierig (Trennung Aspekt/ Hauptprogramm nicht immer aus Programmfluss erkennbar) Die Aspektdarstellung bleibt oft unvollständig Es lässt sich Verhalten modellieren

UML Diagramme & Aspekte 4 Statecharts: Es lässt sich Verhalten codieren Ereignisse bieten starke Abstraktion/Kapselung Aspekte können detailliert modelliert werden Kann geschwätzige Klassen erzeugen Jeder Wechsel in jeden Zustand wird vorsichtshalber mitgeteilt Es wird versucht Aspekte vorherzusehen Wie lassen sich Statecharts effizient zur Codierung von Aspekten einsetzen?

UML Diagramme & Aspekte 5 Statecharts: Aspekte in parallelen Zuständen state_1 Hauptprogramm Aspect1 Aspect2 Broadcast-Events erlauben es, den Empfänger-Aspekt nicht zu kennen Für einfache (Teil-)Modelle Wird schnell unübersichtlich Kann sehr einfach erweiterbar sein, da Objekt mit sich selbst kommuniziert Ist schnell ineffizient (NULL-Events & Timer )

UML Diagramme & Aspekte 6 Statecharts: Aspekte in eigenen Klassen: Mehrere Klassen kommunizieren Objekte müssen sich kennen oder über Aspect1 Vermittler kommunizieren Klassen leichter austauschbar Für große Systeme besser wartbar Hauptprogramm «communicate» «communicate» «communicate» Vermittler «communicate» «communicate» «communicate» «communicate» «communicate» Aspect2

UML Diagramme & Aspekte 7 Packages: Natürliche Einheit für einen Aspekt: Requirements Klassen Diagramme Unloaded Packages Ermöglichen späte Bindung in Verbindung mit SCM- Tools (?)

Design Pattern und Aspekte Was sind Design Pattern? Gut dokumentierte Kombination von Aufgabenstellung, Lösungsansatz und sich aus Lösung ergebenden Konsequenzen Design Pattern können bei der Implementierung von Aspekten sehr unterstützen, wenn sie schon im Code vorhanden sind. Oft stellen neue Aspekte die Notwendigkeit für ein Refactoring (auch hin zu Patterns) heraus. Hier eine kleine Auswahl von Beispielen: Command, Observer, Chain of Responsibility, Visitor.

Design Pattern und Aspekte 2 Das Pattern Command Klient Aufrufer 1 1 «Interface» IBefehl FuehreAus():void KonkreterBefehl «create» FuehreAus():void Empfaenger 1 1 FuehreAus arbeitet auf Empfänger und kann eine komplette Strategie zur Realisierung eines Aspekts enthalten.

Design Pattern und Aspekte 3 Das Pattern Command Anwendungsbeispiele: Schnittstellen GUI / Applikationslogik völlig entkoppelt Fehlerhandling (Aufrufer parametriert Fehlerreaktion in Befehl) Oft kann komplette Logik eines Aspekts in Befehl gekapselt werden (mehrere Empfänger, ) Durch Übergabe mehrerer Befehle für verschiedene Situationen lässt sich auch hochkomplexes Verhalten parametrieren

Properties/Stereotypen & Aspekte 1 Properties können Codegenerierung verändern und damit Aspekte berücksichtigen Beispiel: Memory Management

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Properties/Stereotypen & Aspekte 2 Woran erkennt man, dass Properties überschrieben sind? Stereotypen können als Behälter für Properties dienen! Beispiel: Memory Management Bilde Stereotypen PoolAlloc, anwendbar auf Klassen Überschreibe dort die Property C_CG::Class::AllocateMemory zu ($cname *) AllocPooled(sizeof($cname)); Überschreibe dort die Property C_CG::Class::Memory zu FreePooled($meName, sizeof($cname)); Jede Klasse mit diesem Stereotypen erzeugt/zerstört sich nicht über malloc/free sondern die Funktionen AllocPooled und FreePooled Aspektorientiert!

Properties/Stereotypen & Aspekte 3 Properties/Stereotypen: Sehr universell einsetzbar Über Properties: relativ schlecht lesbar Über Stereotypen: deutlich besser lesbar Relativ schwer zu warten Häufig Berührungsängste bei den normalen Rhapsody- Programmierern Jetzt auch mehrere Stereotypen möglich! Einbinden eines externen Postprozessors ermöglicht nachträgliche Bearbeitung des Codes und damit spätes Erzeugen des Codes (z.b. Perl)

Codegenerator & Aspekte Über die Modifikationen des Codegenerators lassen sich noch weitere aspektorientierte Techniken realisieren! Hier sind auch Dinge wie Prüfung aller Pointer auf NULL möglich. Es könnten sogar generische Beschreibungen erfolgen, die spezifizieren, wann Aspekte angewendet werden sollen. Hierzu ist eine Spezialisierung des Codegenerators nötig. Diese Modifikationen entwickeln Rhapsody immer mehr zu einer Domain-spezifischen Sprache, da bevorzugt Domainspezifische Aspekte implementiert werden. Es wird immer schwerer Personal zu finden, das mit diesen Techniken umgehen kann.

Zusammenfassung Rhapsody eignet sich prinzipiell, um Aspekte sinnvoll bei der Software-Entwicklung zu berücksichtigen. Je universeller und einfacher die Berücksichtigung von Aspekten sein soll, desto: mehr Customizing-Aufwand fällt an größere Kluften entstehen zwischen Aspektentwicklern und -anwendern schwieriger wird die Suche nach diesbezüglich erfahrenen Arbeitskräften Ist hier eine standardisierte Vorgehensweise sinnvoll?