Entwurf Fehler toleranter Software -- Wintersemester 2018/19 -- DAY BY DAY
(EN google-translate)
(PL google-translate)
|
|
Zum weiteren Selbststudium bitte folgende Links beachten:

Bild 0-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!




Einführungen bei kramann.info




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



"05_Konzepte" auf KFintern
|
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:

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
|
Hinweise:
|
siehe auch Hinweise hier:





Teil 2
|
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:


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:


Teil 4
Sammeln und Diskussion der gewonnenen Konzepte und Erkenntnisse.
|
Teil 1: Theorie
|
Teil 2: Projektaufgabe
Entwickeln Sie eine Software, ...
|
|
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.









|
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 0-1: Programmiertechnik-Themen heute.




