TU Wien:Software Engineering und Projektmanagement LU (Fischer, GNU/Linux)
Im Rahmen der Studienplanänderung 2006 der Technischen Universität Wien wurde "Software Engineering 1 LU" in "Software Engineering und Projektmanagement LU" umbenannt. Die beiden LVAs sind daher äquivalent.
|
Daten[Bearbeiten | Quelltext bearbeiten]
Vortragende | Prof. Fischer (frueher hat das Prof. Tomsich gemacht) |
---|---|
ECTS | 6 |
Links | Homepage |
Inhalt[Bearbeiten | Quelltext bearbeiten]
Softwareentwicklung unter C++/Linux. Die Tasks der LU drehen sich um das EHR (Electronic Health Record - Elektronische Krankenakte) System, ein verteiltes System zur Verwaltung von Patientendaten. Es gibt Clients & mehrere Provider, die Clients werden von Patienten, Apothekern & Ärzten benutzt um Rezepte zu erstellen, Rezepte einzulösen, Rezepte einzusehen und Berechtigungen abzufragen und zu erstellen.
Ablauf[Bearbeiten | Quelltext bearbeiten]
Die Übung ist in 4 Runden gegliedert. Die erste und zweite Runde muss allein gemacht werden, der Rest ist in einer Gruppe zu 3-4 Personen. Im Unterschied zu vielen anderen LVAs, wird hier nicht von Runde zu Runde etwas neues beigebracht - vielmehr müsst ihr jede Runde euch zu mehreren Gebieten selbst Wissen aneignen. Das bedeutet sehr viel Dokus, man-Pages etc. lesen.
Gegeben ist lediglich ein ICE-Interface (ICE ist eine Corba-ähnliche Middleware) und ein kurzes PDF dazu das die Kommunikation zwischen den Komponenten spezifiziert. Generell wird in C++ programmiert - Gerüchten zufolge könnt ihr euch mit der Übungsleitung aber auch etwas anderes ausmachen!
Es gibt außerdem einen Jabber MUC Raum zur LVA (se-linux@conference.fsinf.at), in welchem auch die Tutoren sind und Fragen beantworten.
Vergleich mit anderen SEPM LUs[Bearbeiten | Quelltext bearbeiten]
SEPM Linux ist technischer fokusiert und versucht eher den Softwareentwicklungsprozess in der Open Source Szene nachzustellen, als den von Firmen. Der Aufwand ist ungefähr gleich hoch wie in den anderen SEPM LUs, jedoch geht weniger Zeit für Testen, Doku schreiben, Stundenlisten schreiben und Projektmanagment drauf und man verbringt die Zeit mit Dokumentationen lesen & programmieren. Ein weiterer Unterschied zu den anderen SEPM LUs ist das die Einzelphase länger ist und die Gruppenphase kürzer. Im Gegensatz zu den anderen SEPM LUs, wo die Einzelphase nur 1 Monat dauert, wird in SEPM Linux (abgesehen von der ungefähr 1 Monat langen Gruppenphase) alleine programmiert.
Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]
Mensch sollte mit der Kommandozeile vertraut sein, Kenntnisse dazu werden z.B. in Systemnahes Programmieren LU und Übersetzerbau LU zwar nicht gelehrt, aber können dort mit doch etwas weniger Zeitdruck erlernt werden.
Nicht allzu rudimentäre Programmierkenntnisse sind ein absolutes Muss. Mir persönlich hat Systemnahe Programmierung LU und auch Objektorientierte Programmierung sehr viel hier angewendetes Wissen vermittelt. Ansonsten empfiehlt sich ein Blick in die Kategorie:Programmierung und Softwareentwicklung. Inwieweit EProg ausreicht vermag ich nicht zu sagen, vor allem in Anbetracht der Tatsache, das sich EProg in den letzten Jahren stark verbessert zu haben scheint.
Vorkentnisse in C++ sind nicht nötig, C++ während der LU zu lernen erhöht jedoch den Zeitaufwand für die einzelnen Tasks sehr.
Folgende Technologien werden im Laufe der LVA verwendet (Stand SS10)[Bearbeiten | Quelltext bearbeiten]
- ZeroC Ice als Middleware
- C++
- GTK
- GNU Make
- GNU Autotools
- Boost Unittests
- XML
- PostgreSQL
- Trac als Projektmanagmenttool
- Bitten für Continuous Integration
- Git/Mercurial als Sourcecodeverwaltungstool
Vortrag[Bearbeiten | Quelltext bearbeiten]
Über die in der LVA zu erlernenden Gebiete gibt es je einen Übungsvortrag. Wer von dem entsprechenden Gebiet noch nie etwas gehört hat, sollte hingehen, die Vorträge sind recht gut gemacht.
Übungen[Bearbeiten | Quelltext bearbeiten]
Wie ihr arbeitet ist ganz euch überlassen. Es muss lediglich das von der Übungsleitung zur Verfügung gestellte GIT/Mercurial-Repository verwendet werden und die fertigen Programme müssen auf den Maschinen der Übung kompilieren. Je nach Runde muss das Programm auf unterschiedlich vielen Maschinen kompilieren. Dabei wird darauf geachtet das die Maschinen sehr unterschiedliche Setups haben. Das bedeutet Mehrere CPU-Architekturen, diverse Unices (einige Linuxdistros, Solaris, BSD etc) und unterschiedlichste Versionen von Libraries und Tools. Es empfiehlt sich daher besonders direkt auf den zur Verfügung gestellten Rechnern (per SSH) zu programmieren. Die ersten 2 Runden sind Einzelarbeit,
- In der ersten Runde wird ein einfacher kommandozeilenbasierter Client implementiert. Dieser soll nur Daten vom Provider abfragen und muss keine an den Provider schicken.
- In der zweiten Runde müssen 3 graphische (GTK oder ncurses) Interfaces entwickelt und ausprogrammiert werden, außerdem soll der Client auch Daten an den Provider schicken können (z.B. Rezepte erstellen).
- Die dritte Runde ist die erste Gruppenarbeit.
- Es soll "am Papier" ein Server entworfen werden. Dabei reichen einige wenige Seiten aus, kaum jemand schreibt mehr als 10 Seiten (Anmerkung marty: so viel wie nötig, aber nicht mehr -- im Dokument sollte beschrieben werden, was aus dem Klassendiagramm nicht rausgelesen werden kann zB zeitliche Abläufe, Synchronisation, "wie die Klassen verwendet werden sollen"... 10 Seiten sind schon ein sehr komplexes Design). Beinhalten sollte das Paper die nötigen Klassen mit deren Funktionen, etc. Das Dokument wird in einem Wiki verfasst. Aber alles halb so wild.
- Außerdem soll ein Ice Interface entwickelt werden, welches zur Kommunikation zwischen den einzelnen Providern verwendet werden soll.
- Das Design soll in einzelne Tasks zerlegt werden, die in einem Bugtracking System (Trac) eingetragen werden. Die Implementierung in der vierten Runde soll sich an diesem Plan richten.
Es lohnt sich in der dritten Runde einige Zeit in die Planung zu investieren, da es in der vierten sowieso stressig wird und einem gute Planung bei der Implementierung viel erleichtert.
- Die vierte Runde ist in 2 Milestones unterteilt und ebenfalls Gruppenarbeit. In dieser wird der geplante Provider, welcher zum in Task 1 & 2 vorgegebenen Ice Interface und dem in Task 3 entwickelten zusätzlichen Interface kompatibel sein muss, ausprogrammiert.
Benotung[Bearbeiten | Quelltext bearbeiten]
Es gibt für jede Runde 100 Punkte, positiv ist man ab 50% der gesamten Punkteanzahl, es muss aber jeder Teil für sich auch Positiv sein.
Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]
SS 07: Bekanntgabe der Note Ende Juni, Zeugnis Ende September erhalten => 3 Monate
Literatur/Links[Bearbeiten | Quelltext bearbeiten]
Siehe die Docs/References-Seite der LVA-Homepage für eine sehr vollständige, umfangreiche Liste an Dokumentation, Literatur, Websites, etc.
C++[Bearbeiten | Quelltext bearbeiten]
AutoTools[Bearbeiten | Quelltext bearbeiten]
GTK[Bearbeiten | Quelltext bearbeiten]
gtkmm ist das C++ interface fuer GTK
ICE[Bearbeiten | Quelltext bearbeiten]
Das sehr ausfuehrliche ICE manual
GIT[Bearbeiten | Quelltext bearbeiten]
Mercurial[Bearbeiten | Quelltext bearbeiten]
Zeitaufwand[Bearbeiten | Quelltext bearbeiten]
Eher hoch! Jede der Runden ist recht zeitaufwendig. Ich bin bei den Runden 1 & 2 jeweils mehrere Tage durchgehend dran gesessen. Die vierte Runde ist im Vergleich nicht ganz so heftig. Aufwand insgesamt vergleichbar mit den anderen SEPM LUs, jedoch verbraucht man die Zeit eher mit Programmieren und weniger mit Stundenlisten schreiben ;-)
Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]
noch offen