kramann.info
© Guido Kramann

Login: Passwort:










8 Entwurf Fehler toleranter Software -- Wintersemester 2018/19 -- DAY BY DAY

8 (EN google-translate)

8 (PL google-translate)

  • 1 -- 10|10|2018 -- WEDNESDAY
  • Einführung in Processing

Zum weiteren Selbststudium bitte folgende Links beachten:

Sehr gute Einführung in Android-Programmierung mit Processing: Daniel Sauter, Rapid Android Development. The Pragmatic Programmers 2013. DREI EXEMPLARE IN BIB. VERFÜGBAR!

Bild 8-1: Sehr gute Einführung in Android-Programmierung mit Processing: Daniel Sauter, Rapid Android Development. The Pragmatic Programmers 2013. DREI EXEMPLARE IN BIB. VERFÜGBAR!

Tutorial zur Benutzung von Sensoren bei Android-Processing
Einführung zur Android-Programmierung mit Processing auf processing.org
Einführung zur Android-VR-Programmierung mit Processing auf processing.org
processing.org -- Download / Tutorials

Einführungen bei kramann.info

Einführung zu Processing, Vorlesung vom 2.10.2017 als Video.
Weitere Informationen zu Processing: www.kramann.info/78_Processing
Weitere Informationen zu Android mit Processing: www.kramann.info/93_Android_Proc
Weitere Informationen zu Android-Programmierung: www.kramann.info/77_Android
  • 2 -- 17|10|2018 -- WEDNESDAY
  • Einführung in Fehlertoleranten Entwurf
  • Exceptions in Java
  • Vorstellung und Analyse einiger Grundkonzepte für die Performance

Was läuft gerade in der LV "Künstlerische Forschung", wo die Performance entwickelt werden soll? -- siehe KFintern auf kramann.info.

Einführung in die Grundkonzepte des Fehler toleranten Software-Entwurfs -- 81_FTSD/05_Fehlertoleranz
Exceptions selber Entwickeln mit Java -- 81_FTSD/07_Processing/01_Exceptions
Sprachsynthese mit Android-Processing -- 94_VSI/03_TTS
"05_Konzepte" auf KFintern
  • 3 -- 24|10|2018 -- WEDNESDAY

Bildung von Zweiergruppen für die Prüfungsleistung

ÜBUNG

Hardware-Grundlage der Übung sind immer zwei benachbarte PCs im PC-Pool unter Linux gebootet.

Aufgabe: Ein Pong-Spiel auf dem einen Rechner soll von dem anderen Rechner aus ferngesteuert werden.

Verwenden Sie als Software-Basis für den "Pong-PC" entweder die folgende studentische Lösung, oder Ihre eigene:

Pong.zip -- Pong-Version von Marvin Rausch.

Als Übertragungsmethode soll OSC verwendet werden. Beispiele finden sich in "Examples" bei der Library oscP5.

Die gleiche Library funktioniert ganz genau gleich auch bei Android-Smartphones. Somit ist das hier erarbeitete ohne weiteres auch darauf anwendbar.

Auf dem sendenden PC soll ebenfalls ein Sketch laufen. Dieser soll nichts anderes machen, als die notwendigen Daten zum Steuern des Pong-Spiels auf dem anderen PC über OSC an diesen zu senden.

Basis für das Spielen sollen auch hier die Pfeiltasten sein.

Teil 1
  • Analysieren und testen Sie die Beispiele oscP5message und oscP5parsing.
  • Versuchen Sie eine möglichst einfache Remote-Version mit den beiden PCs zu realisieren: Die Pfeiltaten des einen steuern Pong auf dem anderen.

Hinweise:

  • Die IP-Adressen beider PCs sind auf dem Chassis aufgeklebt, können aber auch in einer Konsole über "ifconfig" abgerufen werden.
  • Mittels OSC können einfache Datenformate über LAN oder W-LAN übertragen werden. Basis ist das Protokoll UDP, welches wesentlich schneller ist als das für Internetseiten übliche TCP/IP-Protokoll, jedoch keine automatische Fehlerkorrektur besitzt.

siehe auch Hinweise hier:

67_Echtzeitsysteme/09_Internetprogrammierung/04_Java
https://de.wikipedia.org/wiki/Open_Sound_Control
https://de.wikipedia.org/wiki/Midi
https://de.wikipedia.org/wiki/User_Datagram_Protocol
https://de.wikipedia.org/wiki/OSI-Modell
Teil 2
  • Analysieren Sie das entstandene System: Wo liegen Fehler- bzw. Versagensmöglichkeiten.
  • Gehen Sie die Pattern für Fault tolerant programing durch und identifizieren Sie Maßnahmen, Ihr System weniger Fehler- bzw. Versagensanfällig zu machen.
  • Setzen Sie die gefundenen Konzepte so weit das in der zur Verfügung stehenden Zeit geht um.
Teil 3

Ein anderes abstraktes Konzept zur Beförderung besserer Software, sind Design-Pattern.

Eines ist das s.g. Fassade-Pattern. Prinzip ist, dass der Benutzer einer Programmierschnittstelle wenig von der Komplexität der bereit gestellten Funktionalität mitbekommt.

So etwas in der Art liegt eigentlich bei all den bei Processing verfügbaren Libraries vor. Sie alle vereinfachen den Umgang mit eigentlich komplexen Dingen, wie die Verwendung von Sensoren wie Kameras oder Beschleunigungssensoren oder auch Grafikprogrammierung (GUI).

siehe hierzu auch:

83_AV/02_Architekturen/02_Entwurfsmuster
https://en.wikipedia.org/wiki/Facade_pattern

Stellen Sie sich vor, Sie wollen für eine dritte Person den Zugang zu OSC möglichst stark vereinfachen.

Wie können Sie dieser Person die Mögilichkeiten, die die Library bietet, bzw. einen Ausschnitt davon, auf möglichst einfach zu benutzende Weise mit möglichst wenigen Fehler- bzw. Versagensmöglichkeiten bereitstellen?

Entwerfen Sie ein solches Konzept und setzen es wenigstens teilweise um.


Es ist auch möglich eine Library aus der eigenen Software zu machen:


93_Android_Proc/02_Eigene_Library
78_Processing/04_Bibliotheken
Teil 4

Sammeln und Diskussion der gewonnenen Konzepte und Erkenntnisse.

  • 4 -- 07|11|2018 -- WEDNESDAY

Teil 1: Theorie

  1. Klassen und Objekte
  2. Vererbung
  3. Schnittstellen
  4. Exceptions

Teil 2: Projektaufgabe

Entwickeln Sie eine Software, ...

  1. ... bei der mittels zweier Smartphones die Winkel von Oberarm und Unterarm (linker oder rechter wählbar) erfaßt werden,
  2. in Echtzeit an einen PC geschickt werden
  3. und dort in einem Armmodell angezeigt und
  4. in Klänge und Farben umgewandelt werden.

  • Was Sie bei 4. genau machen ist "Kür" und frei wählbar.
  • Es ist Pflicht mindestens drei Konzepte aus den Pattern für fehlertoleranten Softwareentwurf zu verwenden.
  • Eine kurze schriftliche Ausarbeitung sollte darlegen, wie die Software arbeitet und wo und wie die Pattern Verwendung finden.
  • Ihre Grundidee und ein erster Softwarestand -- noch ohne Pattern und ohne Dokumentation -- sollte bis Mittwoch 12.12. vorgestellt werden, inklusive einem Abstract (ca. 200 Wörter).
  • Am Mittwoch 16.01.2019 werden die endgültigen Ergebnisse präsentiert und die Dokumentation (ca. 2-4 Seiten ohne Bilder) abgegeben.
  • Es geht mit in die Beurteilung ein, in welchem Umfang die im Unterricht vermittelten theoretischen und praktischen Konzepte (OOP, Execeptions, Fehlertol.Pattern, ausgegebene Links mit Programmierbeispielen) in Ihr Projekt Eingang gefunden haben.
  • Die Entwicklung muß zum überwiegenden Teil innerhalb der LV stattfinden und so durch den Dozenten einsehbar sein (Transparenz).
  • Sie sollten nach Möglichkeit Ihre eigenen Smartphones und einen PC im PC-Pool 135 verwenden.

Sie haben die Freiheit, den Schwerpunkt bei Ihrer Entwicklung frei zu wählen, bzw. wie es Sinn macht, um die Pattern sinnvoll umzusetzen. Es wird erwartet, dass sich dadurch konzeptionell deutlich unterschiedliche Projekte/Projektideen ergeben.

Mit Vorstellen Ihres Grundkonzepts am 12.12. und der Abgabe Ihres Abstracts an den Dozenten, erwerben Sie sozusagen das Patent auf Ihre Grundidee. Diese sollte nicht von anderen Gruppen kopiert werden und Sie sollten bis zum Projektende daran festhalten.

Remotepong001.zip
Remotepong002_Konstruktor.zip
Remotepong003_Spiel.zip
Remotepong004_SchlaegerBewegen.zip
Remotepong005_SchlaegerBewegen.zip
Remotepong006_ANDROID.zip
Remotepong006_OSC.zip
Remotepong007b_EXCEPTIONS.zip
Remotepong007_EXCEPTIONS.zip
  • 8 -- 04|12|2018 -- WEDNESDAY

Einblicke in die aktuellen Arbeiten aufgreifend, sollen heute einige Grundlagen wiederholt und neue hilfreiche Programmierkonzepte vorgestellt und praktisch geübt werden:

Nr. Konzept Darstellung durch Beispiel Bemerkungen
1. Callback-Funktionen mousePressed(), draw() Datenaustausch über Variablen
2. Random Brownsche Atombewegung z.B. Generierung von Testwerten
3. Tabs eigene Klassen schreiben Quelltext organisieren
4. Schnittstellen Kontroll-Ausgabe Anwendung: Recovery-Block, Testvarianten / verschiedene Typen einer Sache
5. Threads Echtzeitsimulation Trennung von Simulation und Visualisierung / Audio
6. Zustandsvariable Abbilden verschiedener Phasen in einer App Umsetzung über switch-case-Blöcke
7. Late Binding Grundproblem bei Threads: fehlende Instanzen Objekte erst erzeugen, wenn sie benötigt werden
8. BlueJ Java-Entwicklungsumgebung Klassendarstellung mit UML / strukturierte Entwicklung / eigene Libraries

Tabelle 8-1: Programmiertechnik-Themen heute.

Test.zip
Test0002.zip
Test0003.zip
Test0004_Zustandsvariable.zip
Test0005_Zustandsvariable.zip