Final Reflection

Analysis and Modeling of Software

Hier nun die Finale Reflexion meines Semesters an der TEC in Guadalajara, Mexiko. Es war eine richtig schöne Zeit und sehr wertvolle Erfahrung in einem anderen Land mit anderer Kultur und anderer Art des Lehrnens zu studieren.

Mir gefiel es sehr die Posts in WordPress anzufertigen, die Vorbereitungen zu treffen, im Internet zu recherchieren und zu versuchen die Posts möglichst verständlich und einfach zu halten. Ich muss sagen ich habe während meines Aufenthalts hier eine Menge über den Gedankengang beim programmieren gelernt, auch wenn ich vorher schon einige Coding-Kurse an meiner Heim.Universität in Deutschland hatte. Das Arbeiten mit Posts und die Möglichkeit anstatt von Examen diese Reflexionen zu verfassen geben einem die Möglichkeit die eigenen Präferenzen besser zu setzen und sich die Zeit sinnvoll selbst einzuteilen. Besonders während eines Auslandssemesters ist dies richtig toll, da man alles vom Computer aus erledigen kann. So lag ich für den ein oder anderen Post am Strand in der Sonne und konnte trotz dessen, dass ich nicht in der Uni war meine Aufgaben erledigen.

Es war mir mit den Kursen von Ken möglich das best Mögliche aus meinen Aufenthalt hier in Mexiko heraus zu holen. Während ich über Kultur, Kunst und Lebensweise lernte auf meinen Reisen quer durch das ganze Land konnte ich nebenbei, wenn mir eine gute Idee für einen Post kam mal eben schnell den Computer oder das Handy herausholen und mich um meine Schulischen Pflichten kümmern.

Zusammenfassung

Die ersten Zusammenfassungen meiner Posts findest du in meinen Blogposts Reflexion Part 1 und Reflexion Part 2. Dort findest du dann auch die Links zu den zugehörigen Posts zu den jeweiligen Zusammenfassungen.

Classes to Tables #Matsery 08

Um diese Frage zufriedenstellend zu beantworten möchte ich zunächst einmal genau definieren, was wir unter einer Tabelle verstehen und welche Vorteile sie uns bringen: Tabellen sind eine hervorragende Möglichkeit um große Mengen an Daten unter zu bringen. Außerdem bieten sie nebenbei den Vorteil, dass diese Daten auch noch übersichtlich in Spalten und Zeilen geordnet sind.

Speziell in UML stellt sich die frage, wie man zum Beispiel ein Klassendiagramm in eine Tabelle umwandelt um so eine einfachere Darstellung zu erlangen. Im wesentlichen handelt es sich dabei um fünf elementare Schritte:

  1. Entscheide, welche Klassen zusammen gehören und wähle ein Schlüsselwort für eine Tabelle, die alle Hauptklassen enthält
  2. Erstellen einer Tabelle, die alle Unterklassen enthält und benutze als Schlüsselwort den Namen der zugehörigen Hauptklasse
  3. Verbinden der Unterklassen miteinander und einbinden aller einfachen Attribute
  4. Verbinden der Hauptklassen miteinander und einbinden aller zugehörigen Attribute
  5. Aneinanderreihen der Tabellen

Eigene Meinung

Tabellen sind meiner Meinung nach eine tolle Möglichkeit die Übersicht über ein Programm zu behalten und deutlich zu machen, welche Klassen zusammenarbeiten und wie diese zusammenhängen. Bei kleinen Programmen ist jedoch der Aufwand wohl größer als der Nutzen, weswegen ich diese Vorgehen nur bei großen und komplizierten Programmen empfehlen würde.

Classes to Code #Mastery 09

Um Klassen in Code zu verwandeln geht man wie im Video weiter unten beschrieben vor. Wichtig ist dabei nie den Überblick zu verlieren welche Klassen in welcher Weise mit anderen zusammenarbeiten.

Einfaches Beispiel eines Klassendiagramms, das in Code umgewandelt werden kann.

Eigene Meinung

Bei der Übersetzung von Klassen-Diagrammen und Tabellen in funktionsfähigen Code fällt schnell auf, warum sich die Extra-Arbeit lohnt diese Hilfestellungen zu erstellen. Insbesondere wenn man längere Pausen zwischen den Arbeitsschritten hat, helfen diese sehr dabei einen erneuten Überblick über das Projekt zu bekommen. Allerdings sind sie auch im Allgemeinen sehr hilfreich um den Überblick nicht zu verlieren, weshalb man darauf auf jeden Fall nicht verzichten sollte.

Code Revision #Mastery 10

Die sogenannte Review oder auch der Softwaretest bezeichnet in der Softwareentwicklung einen sehr wichtigen Arbeitsschritt, nämlich die manuelle Prüfung der Arbeitsergebnisse.

Ein typisches Review besteht aus folgenden Hauptphasen:

  • Planung
  • Kick Off
  • Individuelle Vorbereitung
  • Reviewsitzung
  • Überarbeitung
  • Nacharbeitung

Verschiedene Reviewarten:

Eigene Meinung

Ein Softwaretest, Review oder auch eine Code Revision ist ein sehr wichtiger Arbeitsschritt in der Softwareentwicklung und sollte gerade bei Projekten in Arbeit oder Schule/Uni nicht fehlen, da er sicherstellt dass alle Arbeitsschritte einwandfrei ablaufen und die gesteckten Ziele erfüllt werden.

VERIFICATION AND VALIDATION #MASTERY 11

  • Unter Verifikation versteht man die Prüfung, ob man das richtige Produkt entwirft
  • wohingegen man unter Validierung die Prüfung versteht, ob man das Produkt richtig entwirft

Bei der Verifikation wird also sichergestellt, welches Produkt man entwirft, welche Anforderungen und Vorgaben es erfüllen soll und welche Alternativen es gibt. Es wird also sichergestellt, ob das Produkt als solches wirklich die bestmögliche Lösung bietet und das zu erwartende Endergebnis zufriedenstellend sein kann.

Bei einer Validierung hingegen ist diese Frage bereits beantwortet. Es wurde bereit entschieden, welches Produkt man entwerfen möchte. Bei diesem Schritt geht es darum, die Produktionsschritte möglichst effektiv zu gestalten, so gut es geht Fehler zu vermeiden und die best möglich Qualität des Endproduktes zu gewährleisten.

ABSCHLIESSDE MEINUNg

Da V&V während der gesamten Entwicklung eine Rolle spielt, um sicher zu gehen, dass man das richtige Produkt mit den richtigen Spezifikationen entwirft und diese schlussendlich auch funktionsfähig sind, sollte man auf keinen Fall auf dieses vorgehen verzichten.

TESTING IN OO #MASTERY 12

Immer wenn große Systeme designed werden empfiehlt es sich objektorientierte Tests durchzuführen, da herkömmliche Teststrategien auf OO-Programme meist nicht wirklich angewendet werden können. Diese unterscheiden sich in ihrem Aufbau stark von herkömmlichen Programmen. Beim OO-Testing geht es um die Klassen, welche ein grundlegender Bestandteil von OO-Programmen darstellen. Die Klassen dienen dazu große und komplexe Systeme in kleinere und einfacher zu implementierende Untersysteme aufgeteilt werden können. Das OO-Testing kann in einzelne Schritte aufgeteilt werden, welche als Levels des Tests beschrieben werden.

Die drei wesentlichen Schritte beim Testen in OO:

  1. Testen der Klassen
  2. System Testing
  3. Testen der Sub-Klassen

Test Driven Development #Mastery 13

Testgetriebene Entwicklung (auch testgesteuerte Programmierungeng.: test first development oder test-driven developmentTDD) ist eine Methode, die häufig bei der agilen Entwicklung von Programmen eingesetzt wird. Bei der testgetriebenen Entwicklung erstellt der Programmierer Software-Tests konsequent vor den zu testenden Komponenten.

Im unteren Bild werden die wichtigsten Schritte eines typischen testgetriebenen Entwicklungsprozesses dargestellt.

Link zum Bild und Quelle

OO and Agile #Mastery 14

Ich möchte mich hier mit dem Extreme Programming (XP, auch Extremprogrammierung) beschäftigen. Das ist eine Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Diese Vorgehensweise definiert ein Vorgehensmodell der Softwaretechnik, das sich den Anforderungen des Kunden in kleinen Schritten annähert.

Finales RESUMÉ zum kurs

Im Großen und Ganzen konnte ich auch alle Dinge, die ich mir in Reflexion Partial 1 vorgenommen habe letztendlich auch erreicht habe. Ich persönlich bin nun sehr zufrieden mit dem Design und den Inhalten meiner Posts. Außerdem konnte ich nun auch die Posts untereinander verknüpfen, sodass man sehr leicht zu anderen Themen navigieren kann, die einen interessieren.

TEC in Guadalajara

Auch konnte ich einiges in diesem Fach lernen was Softwareproduktion angeht. In der Zukunft denke ich wird das sehr hilfreich sein, da wir die wichtigsten Methoden kennen gelernt haben, wie man bei einem Projekt richtig vorgeht. Ken gab uns viele wichtige Vorgehensweisen an die Hand die wichtig sind um Schritt für Schritt ein kompliziertes und trotzdem lauffähiges Programm zu starten. Auch lernten wir, was wichtig ist um während des Entwicklungsprozesses nie den Überblick zu verlieren und wie man überprüft, ob das Programm noch läuft.

Ich fühle mich nun wesentlich sicherer bei größeren Projekten, da ich nun eine Art Fahrplan habe, wie ich ruhig und strukturiert an die Problematik herangehen kann. Und all dies wie weiter oben schon erwähnt mit genügend Freiheit um das Auslandssemester in vollen Zügen genießen zu können.

Danke dafür Ken!!

Hinterlasse einen Kommentar