Modul: Softwaretechnik 3
Das Modul Softwaretechnik 3 (SWT3) ist verpflichtend für Studierende im Studiengang Web- und Medieninformatik und wird dort dem großen Studienbereich "Softwaretechnik" zugerechnet. Für Studierende im Studiengang Wirtschaftsinformatik ist es nicht verpflichtend. Soweit ich es verstanden habe, kann es von ihnen nicht einmal als Vertiefungskurs belegt werden. Laut Studienplan sollte man SWT3 im 6. Semester belegen. Es ist also als eines der letzten Module vor der Bachelor-Arbeit vorgesehen.
Voraussetzungen
Die Liste der Module, die als inhaltliche Voraussetzung genannt werden ist lang: Man benötigt GdI1 und GdI2, weil man solide Kenntnisse objektorientierter Konzepte sowie gute Java-Kenntnisse braucht. GdI3 ist wichtig, weil die Interaktionen zwischen den Schichten GUI, Fachkonzept und Datenhaltung eine wesentliche Rolle spielen. SWT1 ist unter anderem nötig, weil man sich mit den verschiedenen UML-Diagrammen gut auskennen sollte. Wozu man Software-Management braucht, erschließt sich mir nicht. Ich hatte diese Grundlage nicht und habe sie auch an keiner Stelle des Kurses vermisst. Dafür denke ich, dass das Modul "Nicht-sequentielle Programmierung" (NSP) eine sinnvolle Vorbereitung wäre, denn verteilte Anwendungen spielen eine große Rolle und es ist sehr hilfreich, zumindest schon einmal Erfahrungen mit RMI (Remote Methode Invocation) gesammelt zu haben. Das Modul SWT3 ist außerdem ein Pflichtmodul für das Hochschulzertifikat "Software-Architekt". Kein Wunder, denn Software-Architektur ist ein roter Faden dieses Kurses.
Das Lehrbuch
Grundlage für den Kurs ist das "Lehrbuch der Softwaretechnik - Entwurt, Implementierung, Installation und Betrieb" von Helmut Balzert. Es ist der Folgeband zum "Lehrbuch der Softwaretechnik - Basiskonzepte und Requirements Engineering" vom gleichen Autor. Während sich der Inhalt des ersten Bandes auf 2 Module verteilte, muss man für SWT3 tatsächlich die kompletten 580 Seiten durchackern. Und die haben es in sich. Wie schon im ersten Band legt Herr Balzert großen Wert auf eine präzise Definition der Begriffe. Viele Diagramme (vor allem UML-Diagramme) und Code-Beispiele (meist in Java) ergänzen den Kurstext.
Die Themen
Eine der ersten Einsendeaufgaben behandelte Verteilungsdiagramme. Mit diesen stellt man dar, wie die Komponenten eines verteilten Softwaresystems auf verschiedene physische Rechner oder auf verschiedene Ausführungsumgebungen an verschiedenen Standorten verteilt sind, und über welche Protokolle die Interaktion zwischen den Knoten abläuft. Konkret sollte man für die Aufgabe die sprachliche Beschreibung eines verteilten Systems in ein Diagramm umsetzen. Hier hatte ich Schwierigkeiten, mir das System und das Zusammenwirken seiner Teile vorzustellen. Ich brauchte mehrere Anläufe und viele Rückmeldungen meines Tutors, um diese Aufgabe befriedigend lösen zu können. Leider ist dieses Thema eine meiner Achillesfersen geblieben. Die Verteilungsdiagramme spielten auch in der Klausur eine Rolle und gerade mit dieser Aufgabe habe ich mich sehr schwer getan.
Leichter fiel mir der große Themenbereich der Entwurfsmuster. Hier zielten die Einsendeaufgaben darauf ab, verschiedene Entwurfsmuster in Java auszuprogrammieren. Zu meiner Überraschung ist SWT3 ein Modul, in dem das Schreiben von Code wieder eine größere Rolle spielt. Eine schöne Nebenwirkung dieses Moduls ist, dass ich nun viel besser mit Netbeans umgehen kann. (Eigentlich nicht vorgesehen, ich hätte ich das Modul mit Eclipse bearbeiten sollen.) Wichtige Themen sind: Callback, Schichten-Muster, Beobachter-Muster, MVC-Muster, Fassaden-Muster, Kommando-Muster, Proxy-Muster, Fabrikmethoden-Muster, Strategie-Muster und Brücken-Muster.
Angenehm am Modul ist auch, dass sich eher theoretische und sehr praktische Kapitel abwechseln. Nach einem recht theoretischen Kapitel über nicht-funktionale Anforderungen geht es also wieder recht praktisch weiter mit Globalisierung und Internationalisierung von Software, mit Authentifizierung und Autorisierung am Beispiel JAAS und mit Transaktionen am Beispiel JTA. Ergänzend zur vorherrschenden Java-Perspektive gibt es immer wieder kleinere Ausflüge, wie die verschiedenen Konzepte des Kurses in .NET umgesetzt werden.
Ein nächster großer Block sind Arten der Netzkommunikation bei verteilten Anwendungen. Hier lernt man in rascher Folge die Kommunikation mit Sockets, mit Remote Method Invocation (RMI), mit CORBA, mit XML-RPC, mit SOAP und REST. Hierzu gibt es auch wieder mehrere Programmieraufgaben. In diesem Zusammenhang lernt man auch weitere Entwurfsmuster kennen, z.B. Wert-Objekte, Fabrik-Dienste und Fassaden.
Es folgt ein Kapitel über softwaretechnische Infrastrukturen. Hier geht vor allem um Java EE und um .NET. Das Kapitel über eingebettete Systeme und Architekturmuster für diese fällt aus meiner Sicht recht knapp aus. Wichtiger scheint mir das Kapitel über Persistenz. Hier gibt es Einsendeaufgaben zur objektrelationalen Abbildung (ORM) und zur Java Persistence API (JPA). ORM war ja auch schon im Modul "SQL und relationale Datenbanken" Thema, aber ich finde es nicht schlecht, dass dieses Thema hier noch einmal auftaucht. Bei der objektrelationalen Abbildung geht es darum, Klassen, Assoziationen und Vererbungsstrukturen eines per OOA erstellen Fachkonzepts in sinnvoller Weise auf Tabellen einer relationalen Datenbank abzubilden. Hierfür gibt es mehrere Möglichkeiten, die je eigene Vorzüge und Nachteile haben.
Die restlichen Kapitel über GUI-Entwurfsmuster, den Entwurfsprozess, Qualitätssicherung der Architektur, Implementierung, Verteilung und Installation, Betrieb und Reverse Engineering werden nur noch durch Tests abgedeckt. Aufgrund des Umfangs des Moduls gibt es sehr viele Tests. Ich habe auch den Eindruck, dass im Abschlusstest breit geprüft wird.
Mein Tutor war der gleiche wie in SWT1, SWT2, Mobile Computing und Web-Design. Die Rückmeldungen zu meinen Einsendeaufgaben kamen meist schon am nächsten Tag. Besonders interessant war es natürlich, wenn meine Lösung nicht gestimmt hatte. Durch die schnelle Antwortzeit, konnte ich gut Rückfragen stellen und meine eingereichten Lösungen zum Teil in mehreren Schritten verbessern. Das war wieder sehr hilfreich für die Klausurvorbereitung.
Online- und Präsenzklausur
Bei der Online-Klausur kamen Themen dran, mit denen ich nicht unbedingt gerechnet hätte. Aufgrund der Gewichtung der Einsendeaufgaben erschienen mir, Entwurfsmuster, Arten der Netzkommunikation und Persistenz als die Kernthemen des Moduls, die man gründlich vorbereiten sollte. Aber hier kamen auch Aufgaben zu kleineren Themen. Wer Bonuspunkte will, sollte also den gesamten Kurs ernst nehmen.
In der Präsenzklausur kamen große Punktebringer dann schon aus den oben genannten Kernthemen. Es gab aber auch mehrere kleinere Aufgaben, die mit Wissensfragen Inhalte aus dem gesamten Modul abdeckten. Schon eine clever konstruierte Prüfung, wenn man checken will, ob die Studierenden wirklich alles bearbeitet und verstanden haben. Leider kamen auch die von mir nicht geliebten Verteilungsdiagramme wieder dran.
Fazit und Ausblick
Manche der vorgestellten Architektur-Muster waren recht komplex. Zum Teil habe ich bei diesem Modul gespürt, dass ich an die Grenzen meiner Abstraktionsfähigkeit komme. Man merkt deutlich, dass es ein Modul für fortgeschrittene Semester ist. Gut gefallen hat mir, dass hier die Umsetzung der Entwürfe in Code wieder eine größere Rolle spielt. SWT3 bildet eine gute Brücke zwischen den Modulen der Softwaretechnik und den Programmiermodulen. Ich finde insgesamt die Studienbereiche GdI und SWT gut aufeinander abgestimmt. Der Kurs hat mir wieder sehr viel Spaß gemacht, war aber für mich auch herausfordernd. Während ich bei anderen Modulen oft noch Wünsche formulieren konnte, was ich gerne noch alles gelernt hätte, war ich nach SWT3 endlich einmal "satt". Das kommt bei mir eher selten vor.
Ein Klausurergebnis habe ich noch nicht, aber ich hoffe sehr, dass die Mühe sich gelohnt hat und ich diesen anstrengenden Teil meines Studiums nun auch wirklich hinter mir lassen kann. Den "dicken Brocken" Softwaretechnik habe ich damit aber noch nicht geschafft. Auf mich warten noch immer die Module "Software-Management 1" und "Software testen". Ich brauche nun aber tatsächlich einen Themenwechsel, um nicht ständig von der gleichen geistigen Ressource zu zehren. Darum möchte ich nun endlich einmal das bislang von mir vernachlässigte Thema BWL angehen, um das auch Studierende der Web- und Medieninformatik nicht herumkommen. In den nächsten Wochen wird mich also das interne und externe Rechnungswesen beschäftigen. Nicht gerade eine Entwicklungsaufgabe, auf die ich mich freue, aber nachdem ich in den letzten Wochen sehr viel vor dem Bildschirm gesessen habe, wird es zumindest eine Abwechslung sein.
4 Kommentare
Empfohlene Kommentare
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden