| Autor | Six |
| Umfang | 4 + 2 SWS |
| Studiengänge | Diplom, Zusatzstudiengang Praktische Informatik, Erweiterungsprüfung zum Lehramt |
| Hinweis | Letztmaliger Einsatz des Kurses im Wintersemester 2007/2008! |
Der Kurs steht am Anfang des Grundstudiums der Informatik und behandelt Grundlagen der Programmierung. Der erste Teil des Kurses beschäftigt sich mit klassischen imperativen Programmierkonzepzen, darunter einfache und strukturierte Datentypen, einfache und zusammengesetzte Anweisungen, Schleifen, Zeiger, Prozeduren, Funktionen, Module und Rekursion. Alle Beispiele werden in (Turbo-) Pascal programmiert. Dabei geht es nicht nur um die Entwicklung korrekter Programme, die das tun, was sie tun sollen, sondern auch um Programmierstilaspekte, die für die professionelle Programmentwicklung von Bedeutung sind.
Der zweite Teil beginnt mit Ausführungen zur Syntax und Semantik von Programmiersprachen. Es schließt sich eine Einführung in die Verifikation und das Testen von Programmen an.
Vorausgesetzt werden elementare mathematische Schulkenntnisse. Alle weitergehenden Kenntnisse werden im Rahmen des Kurses vermittelt.
| Autor | Six |
| Umfang | 2 + 1 SWS |
| ECTS | 5 Leistungspunkte |
| Studiengänge | Bachelor, Zusatzstudiengang Praktische Informatik, Erweiterungsprüfung zum Lehramt |
Der Kurs richtet sich an Programmieranfänger und stellt grundlegende imperative Programmierkonzepte und ihre sinnvolle Anwendung vor. Behandelt werden u.a. einfache und strukturierte Datentypen, einfache und zusammengesetzte Anweisungen, Schleifen, Zeiger, Prozeduren, Funktionen und Rekursion. Alle Beispiele werden in (Turbo-) Pascal programmiert. Bei der Vermittlung der Konzepte und ihrer Anwendung wird darauf geachtet, dass der Zugang zur Objektorientierung nicht verstellt wird. Die Bedeutung der Software-Qualitätssicherung wird dadurch unterstrichen, dass von Beginn an Wert auf guten Programmierstil gelegt wird sowie Grundlagen des Softwaretests vermittelt werden.
Qualifikationsziele: Die Studierenden sind mit grundlegenden imperativen Programmierkonzepten vertraut. Sie kennen Richtlinien für guten Programmierstil sowie Grundlagen des Testens. Die sinnvolle Anwendung sämtlicher Lerninhalte beherrschen sie im Rahmen von Übungsaufgaben.
Vorausgesetzt werden elementare mathematische Schulkenntnisse. Alle weitergehenden Kenntnisse werden im Rahmen des Kurses vermittelt.
| Autoren | Six, Winter |
| Umfang | 4 + 2 SWS |
| ECTS | 10 Leistungspunkte |
| Studiengänge | Bachelor, Diplom, Erweiterungsprüfung zum Lehramt, Master of Computer Science (über Katalog B), Zusatzstudiengang Praktische Informatik |
Gegenstand des Kurses ist die methodische Entwicklung objektorientierter Desktop-Applikationen. Der Kurs beginnt mit einem knappen Überblick über das Gebiet Software Engineering und konzentriert sich danach auf "Informatikaspekte" der objektorientierten Softwareentwicklung. Aus Software Engineering-Sicht besteht ein wichtiger Vorteil der Objektorientierung darin, dass ihre Konzepte eine große Durchgängigkeit durch die Entwicklungsabschnitte besitzen. Dies spiegelt sich auch in der Unified Modeling Language (UML) wider, die sich als de-facto-Standard etabliert hat und deren Konstrukte in der Anforderungsermittlung und Realisierung gleichermaßen verwendet werden. Nach dem Überblick werden daher zunächst die für den Kurs relevanten UML-Elemente vorgestellt. Anschließend werden typische Arbeitsschritte der Anforderungsermittlung, der Erstellung der Softwarespezifikation und des Entwurfs besprochen, wobei die UML als Modellierungssprache benutzt wird. Der Kurs ist inspiriert von den Ideen der modellgetriebenen Softwareentwicklung, die die Entwicklung von Softwaresystemen als Folge systematischer Transformationen von Modellen begreift.
Qualifikationsziele: Die Studierenden sind mit den vielschichtigen Problemen der Entwicklung großer (objektorientierter) Softwaresysteme vertraut. Sie kennen die systematische Ermittlung und UML-basierte Modellierung von Anforderungen sowie die schrittweise Verfeinerung bzw. Transformation der Modelle in ein unmittelbar ausprogrammierbares Entwurfsklassenmodell. Sie können die Lerninhalte auf der Ebene von Übungsaufgaben anwenden und mit UML-Editoren umgehen.
Voraussetzungen: Grundkenntnisse in Java.
| Autoren Mitarbeit | Lorenz, Six Schulz-Gerlach, von Pilgrim |
| Umfang | 4 + 2 SWS |
| ECTS | 10 Leistungspunkte |
| Studiengänge | Bachelor (über Katalog M), Diplom, Master of Science in Informatik, Master of Computer Science |
Gegenstand des Kurses ist die methodische Entwicklung von Webapplikationen. Der Kurs beginnt mit Basistechnologien des Web, wie z.B. HTTP, HTML oder Sessions. Für (Web-)Applikationen wird mit der Java EE-Spezifikation eine Standardarchitektur vorgestellt, die zur Implementierung der Webschicht (serverseitige Benutzungsschnittstelle) Servlets und JavaServer Pages (JSPs) sowie für den Anwendungskern Enterprise JavaBeans (EJBs) und Entities vorsieht. Unter Zugrundelegung des Webframeworks Struts zur Realisierung der Webschicht sowie von EJBs und Entities zur Implementierung des Anwendungskerns wird die Entwicklung von Webapplikationen nach der modellbasierten Methode ABEweb erläutert. Begonnen wird mit der Anforderungsermittlung, die schwerpunktmäßig aus der Modellierung von für diesen Zweck zugeschnittenen UML-Aktivitäten und der Erstellung des Domänenklassenmodells besteht. Die resultierende Anforderungsspezifikation wird in eine Softwarespezifikation transformiert, die dann mit Hilfe wohldefinierter Abbildungen in ein Entwurfsklassenmodell für die Struts-basierte Webschicht und den EJB- und Entity-basierten Anwendungskern überführt wird.
Qualifikationsziele: Die Studierenden kennen Basis-Webtechnologien sowie Struts, EJBs und Entities als Implementierungsplattform für Webapplikationen. Sie sind mit der ABEweb-Methode zur Entwicklung von Webapplikationen vertraut. Sie können die Lerninhalte auf der Ebene von Übungsaufgaben anwenden und mit dem Webframework Struts und einem Application Server umgehen.
Voraussetzungen: Kenntnisse in Software Engineering (vorzugsweise Kurs 01793 oder das Buch M. Winter: Methodische objektorientierte Softwareentwicklung, dpunkt.verlag, 2005) und in einer objektorientierten Programmiersprache, vorzugsweise Java.
| Autor | Henrich |
| Umfang | 4 + 2 SWS |
| ECTS | 10 Leistungspunkte |
| Studiengänge | Bachelor |
Für das erfolgreiche Gelingen großer Softwareprojekte sind nicht nur erfahrene Softwareentwickler, sondern es ist vor allem auch ein kompetentes Management nötig. Nach einer Einführung behandeln die Kurseinheiten 1 und 2 Vorgehensmodelle für Softwareprojekte sowie verschiedene Formen der Integration von Softwareprojekten in die Organisationsstruktur von Unternehmen und die projektinterne Organisation. Gegenstand der Kurseinheiten 3 und 4 sind Methoden zur Aufwandsschätzung, wie z.B. COCOMO und die Function-Point-Analyse. Außerdem werden Verfahren der Projektplanung, darunter die Netzplantechnik, und das Projektcontrolling betrachtet. In den Kurseinheiten 5 und 6 werden Projekttechniken wie z.B. Kreativitätstechniken, Techniken für Besprechungen, Präsentationen und Dokumentationen vermittelt. Zudem wird durch Erläuterungen zur Führung und Motivation von Mitarbeitern sowie zur Teamarbeit auch die menschliche Komponente im Projekt berücksichtigt. Mit Ausführungen zur Qualitätssicherung und zum Qualitätsmanagement rundet Kurseinheit 7 die Thematik ab.
Qualifikationsziele: Den Studierenden ist bewusst, wie schwierig und komplex das Management großer Softwareprojekte ist und welche zentrale Bedeutung es für deren erfolgreiche Durchführung besitzt. Sie sind neben projektvorbereitenden, -begleitenden und -abschließenden Managementmethoden auch mit einschlägigen Soft Skills vertraut. Sie können den Lernstoff auf der Ebene von Übungsaufgaben anwenden.
Voraussetzungen: Grundkenntnisse der Programmierung (Kurse 01613 und 01618).
Bemerkung: Der Kurs ist zusammen mit dem Kurs 01896 "IV-Strategien" Bestandteil der Bachelor-Prüfung 26210 "Management in der Informationstechnologie". Leistungsnachweise oder Zertifikate können daher in dem Kurs 01895 nicht erworben werden.
| Umfang | 4 SWS |
| ECTS | 10 Leistungspunkte |
| Studiengänge | Bachelor, Diplom, Master of Computer Science, Zusatzstudiengang Praktische Informatik. |
Auf der Basis der im Kurs 01793 "Software Engineering I" oder 01794 "Software Engineering II" vorgestellten Methoden und Techniken wird eine größere objektorientierte Desktop- bzw. Web-Applikation systematisch entwickelt. In der ersten Präsenzphase werden in Gruppen zu 5 - 8 Studierenden die zuvor individuell erstellten Anforderungsspezifikationen abgeglichen und darauf aufbauend gruppenbezogene Spezifikationen und Softwareentwürfe erstellt. Dabei ist eine präzise Spezifikation der Schnittstellen Voraussetzung für die anschließende (fernstudienbedingte) verteilte Implementierung der Entwurfskomponenten. Die von den Gruppenmitgliedern implementierten und getesteten Komponenten werden in ein Versionierungssystem eingestellt, so dass die Gesamtapplikation meist schon vor Beginn der zweiten Präsenzphase, die aus einer formalen Abnahme und einer Abschlusspräsentation besteht, getestet vorliegt. Erfahrungen im Projektmanagement werden vermittelt, indem den Gruppenmitgliedern Rollen wie Projektleiter, Qualitätsverantwortlicher, Integrationsmanager und Dokumentationsverantwortlicher im Wechsel zugeordnet werden.
Qualifikationsziele: Die Studierenden beherrschen die Anwendung der in dem jeweiligen Kurs vorgestellten Methoden und Techniken auf die Entwicklung eines größeren Softwaresystems. Aufgrund der verteilten Implementierung wissen sie um die Bedeutung präziser Schnittstellenspezifikationen. Auf Praktikumsebene haben sie Projektmanagement und Teamarbeit kennengelernt und können mit gruppendynamischen Problemen umgehen.
Formale Voraussetzungen für die Teilnahme sind
Weitere Voraussetzungen für alle Studiengänge (also auch für Master of Computer Science) sind außerdem fundierte Kenntnisse des Kurses 01793 - "Software Engineering I" (ab Sommersemester 2004) bzw. des Kurses 01794 "Software Engineering II" (ab Wintersemester 2006/2007) und fundierte Java-Kenntnisse.
| Umfang | 2 SWS |
Visualisierung ist ein weites Feld, das im Rahmen des Seminars aus zwei Fragestellungen heraus betrachtet werden soll: Welche Darstellungen sind für den Softwareentwicklungsprozess interessant und welche Techniken werden zur Implementierung von Visualisierungen eingesetzt. Gerade in modellgetriebenen Verfahren ist es wichtig, Modelle zu visualisieren, am bekanntesten sind hier etwa UML-Diagramme. Manchmal müssen jedoch eigene graphische Editoren erstellt und damit geeignete Visualisierungen umgesetzt werden. Mit immer komplexer und größer werdenden Projekten nimmt die Wichtigkeit von Visualisierung zu, interessante Bereiche sind hier etwa die Darstellung von Traces. Zur Umsetzung werden häufig eigene Modelle, bspw. Notationsmodelle, und spezielle Frameworks verwendet. Im Rahmen des Seminars sollen dabei diese Modelle und Frameworks vorstellt sowie ihre Architekturen beschrieben werden. Daneben sollen spezielle Aspekte wie Layoutalgorithmen oder die Generierung von graphischen Editoren beleuchtet werden.
Voraussetzungen für die Teilnahme sind
Für einen Seminarschein wird eine schriftliche Ausarbeitung und ein Vortrag zum jeweiligen Thema mit anschließender Diskussion erwartet.
FernUniversität in Hagen, Lehrgebiet Software Engineering, D-58084 Hagen, Telefon: +49 (2331) 987-2964