Montag, 21. Februar 2011

EBC - die erste

Nachdem ich mich jetzt seit einiger Zeit mit den "Event based Components" in der Theorie auseinander gesetzt habe will ich nun auch mal zur Tat schreiten. Die Aufgabe besteht darin, dass eine Reihe von Bildern geladen, bearbeitet und wieder gespeichert, sowie Ergebnisse der Datenextraktion gespeichert werden sollen. Im besten Falle sollte das ganze asynchron laufen.
Das Ganze wird vom Bediener durch Knopfdruck (O) gestartet. Ein erster Versuch den Fluss darzustellen ist hier zu sehen:


Die Umsetzung der einzelnen Komponenten war danach nicht mehr das größte Problem. Natürlich musste ich immer mal wieder kurz nachdenken, was denn jetzt von wem aufgerufen wird und wie die einzelnen Übergabeparameter auszusehen haben. Was mich allerdings am ehesten verwirrt, ist die Tatsache, dass jeweils nur ein Parameter übergeben werden kann und darf. Vor allem bei den "Show-"-Methoden hat das zu Schwierigkeiten geführt. Allerdings muss ich sagen, dass ich die verschiedenen Parameter auch in einem Objekt hätte zusammenfassen können. Im Eifer habe ich daran erst mal keinen Gedanken verschwendet.

Nach der Fertigstellung der einzelnen Komponenten war dann noch die Verdrahtung dran. Ich denke, dass mit etwas Übung diese Aufgabe leichter von der Hand geht und ich mir nicht bei jedem Pin überlegen muss wo kommt er her und wo soll er hin. Alles in allem also synchron kein Problem. Ich wollte es dann aber auch gleich richtig wissen und habe mit dem AsynchHandler von Ralf Westphal herumgespielt. Hier wird die Sache erheblich komplizierter und unübersichtlicher. Vor allem, da ich alles auf einmal umgestellt habe. Das heißt im Detail:
- das Laden
- die Berechnung
- das Hinzufügen der Daten läuft asynchron.

Das Zeigen der Bilder und der Ergebnisse auf der GUI wird wieder synchronisiert. Einzig der Punkt der Datenspeicherung ist noch offen.

Da der CalcRequest asynchron ist kommt er sofort zurück und SaveRequest wird dementsprechend ausgeführt, bevor alle Bilder bearbeitet wurden. Ich möchte aber gerne ein Event schicken wenn alle Threads fertig mit der Bearbeitung sind und erst dann die Ergebnisse speichern. Oder muss ich hierfür klassische Events  benutzen? Ich werde eine Lösung dafür finden.

Freitag, 11. Februar 2011

Ziele für dieses Jahr

Nachdem das vergangene Jahr sehr bewegt und aufgeregt beendet wurde und vieles noch immer im Umbruch ist möchte ich meine Ziele für dieses Jahr konkretisieren und festhalten.
Der erste Punkt auf der Liste wird ganz klar an CCD gehen. Im vergangenen Jahr habe ich mich mit dem Konzept auseinandergesetzt und auch mit dem roten Grad bei der Arbeit begonnen. Leider ist das über den Jahreswechsel aus dem Blickfeld geraten, sodass ich mich ab sofort wieder konsequent mit den CCD-Prinzipien auseinandersetze, die Praktiken erlerne und diese auch in meiner täglichen Arbeit anwende. Die kurze Zeit, in der ich bisher nach dem roten Grad gearbeitet habe hat gezeigt, dass die Ergebnisse unschätzbar sind, wenn ich nach den CCD-Prinzipien arbeite. Weiterhin möchte ich dafür Sorge tragen, dass die Prinzipien auf der Arbeit von allen mitgetragen und gelebt werden.
Punkt zwei steht für die tiefere Auseinandersetzung mit den neuesten Framework 4.0 Fähigkeiten, sowie deren Nutzung für meine Arbeit. Wie ich in meinem Eingangspost schon abschließend schrieb, denke ich, dass Stillstand immer einen Rückschritt bedeutet. Aus diesem Grund finde ich es unerlässlich auf dem aktuellsten Stand der Technik zu sein um Produkte mit dem Besten an Technik zu entwerfen. Sowohl mir als auch den Kunden wird daraus ein Vorteil entstehen.
Zum dritten Punkt ist es jetzt ein fließender Übergang, denn er behandelt im Prinzip auch neue Techniken. Das Stichwort lautet EBC! Für die von mir zu entwickelnde Software scheinen EBCs sehr gut geeignet zu sein um das jetzige Design und die Implementierung auf den neuesten Stand der Technik zu bringen. Ich strebe ein tieferes Verständnis über den Einsatz und die Programmierung von EBC an.
Als vierter Punkt fällt mir noch die Beschäftigung mit funktionalen Programmiersprachen ein. Auch bei diesem Aspekt kann ich auf erste Annäherungsversuche aus dem letzten Jahr zurückgreifen, da ich mich schon kurz mit F# beschäftigt habe. Ich will die Fähigkeiten dieser Sprache auszunutzen lernen und zu gegebener Zeit an den geeigneten Stellen einsetzen.
Natürlich werde ich mich auch weiter mit neuen Ideen aus der Community beschäftigen, aber das implizieren im Prinzip schon die restlichen genannten Punkte. Zusammenfassend noch einmal alle Punkte im Überblick:

1. Vertiefung und Anwendung von CCD
2. Erlernen der neusten Techniken und Werkzeuge (Framework 4.0)
3. Aufbau und Einsatz von EBC
4. Einarbeitung in F#

Diese Liste dient nur dem Überblick und stellt keine starre Hierarchie der einzelnen Punkte dar. Ich werde in festem zeitlichen Abstand über diese Punkte reflektieren und Fortschritte oder Erweiterungen berichten.