Spannende Aufgaben aus der Berufspraxis, Lösungen entwickelt auf dem Fundament von Software Systems Engineering eine Vertiefungsrichtung im Studiengang Angewandte Informatik „Systems Engineering“, der Informatik-Studiengang mit Pfiff. Der Studiengang Systems Engineering an der Universität Duisburg-Essen führt in einem 6-semestrigen Studium zum Abschluss Bachelor of Science; weitere 4 Semester Studium führen zum Abschluss Master of Science. Die Lehrveranstaltungen, Vorlesungen, Übungen, Netzwerk- und Software-Praktika werden von 13 Professoren und ca. 90 Mitarbeitern und Technikern des Instituts für Informatik und Wirtschaftsinformatik (ICB) am Campus Essen durchgeführt. Institut für Informatik und Wirtschaftsinformatik (ICB) Universität Duisburg-Essen 45117 Essen, Schützenbahn 70 Portal Studiengänge www.icb-Portal.de ICB-Homepage www.icb.uni-essen.de SSE-Portal: www.sse-portal.de Email: [email protected] Kohle, Stahl, …? Software ist das „Material“ des 21. Jahrhunderts! Für die Erstellung und Manipulation, das Auffinden und den Konsum von Information wird Software als „Material“ benötigt, mit dem die „Maschinen“ der Wissensgesellschaft konstruiert werden. Viele Bereiche unseres täglichen Lebens sind ohne Software nicht oder nur noch schwer denkbar und deren Anzahl nimmt rasant zu. Alltägliche Dinge wie z.B. Telefonie, das Verteilen von Briefen, der Betrieb von Geschäften, aber auch Banken und Flugzeuge sind heute in wichtigen Teilen von Software abhängig. Software realisiert Steuerungen von Automobilen und Flugzeugen. Die Beherrschung dieser Materie ist mitunter nicht ganz einfach, wie sich aktuell an den Verzögerungen der Auslieferung des neuen Großraumjets A380 ablesen lässt, die mit der hohen Komplexität der Integration der Hard- und Software-Komponenten begründet wurde. Mit ein wenig Übung lassen sich kleine Programme leicht überschauen und es ist auf den ersten Blick nicht ersichtlich, warum sich eine ganze wissenschaftliche Disziplin – Software Engineering – um die Thematik kümmert, große Software-Systeme zu konstruieren, die die Wünsche der Kunden fehlerfrei erfüllen. Beschäftigt man sich näher mit modernen Software-Systemen, die z.B. in Fahrzeugen, Flugzeugen oder auch ComputerSpielen stecken, entdeckt man schnell, dass Software ein interessantes aber auch höchst komplexes und schwierig zu handhabendes „Material“ darstellt! Am Beispiel von Software für aufwändige Simulationen in Computer-Spielen wird deutlich, welche Herausforderungen bei komplexen Softwarekonstruktionen zu bewältigen sind. Die mit Software simulierten Welten sind sehr attraktiv geworden und begründen damit auch das finanzielle Potenzial dieses Geschäftsfelds. Spiele müssen komplex, erweiterbar und einfach zu bedienen sein. Im MultiplayerModus ist Netzwerkfähigkeit und Serverinfrastruktur notwendig. Ein Spiel ist nur dann marktgerecht, wenn es die darzustellende Welt möglichst „realistisch“, die Charaktere möglichst „intelligent“ simuliert. Solche komplexen Softwaresysteme ökonomisch zu realisieren, ist eine große Herausforderung an Der Studiengang „Systems die Softwaretechnik geworden. Engineering“ mit dem Schwerpunkt „Software Systems Engineering“ (SSE) vermittelt Kenntnisse und Wollen Sie es genau wissen? Im weiteren Verlauf dieser Broschüre finden Sie einen Überblick Fertigkeiten im Umgang mit modernen Software Entwicküber die Themenfelder der Vertiefung „Software lungsmethoden und den daSystems Engineering“ des Studiengangs „Syszugehörigen Werkzeugen. tems Engineering“. An Hand realistischer Fallbeispiele werden diese Methoden eingeübt, um zu vermitteln wie die Komplexität von Weitere Infos finden Sie unter Softwareentwicklung besser http://www.systems-engineering.uni-essen.de/ beherrschbar wird. wie gewünscht? oder wie man die Anforderungen des Kunden an das System ermitteln kann. Die wichtigste Frage, die es zu Beginn der Entwicklung eines neuen Systems zu beantworten gilt, ist: „Was soll das zukünftige System können?“. Zur Beantwortung dieser Frage muss man weitere Fragen stellen: „Was wollen die Kunden bzw. die späteren Benutzer überhaupt mit dem zu entwickelnden System erreichen?“, „Welche Probleme sollen mit Hilfe von Software gelöst werden?“ oder „Welche Vision soll die Software umsetzen?“ Mit der Beantwortung dieser (und weiterer) Fragen beschäftigt sich das Requirements Engineering. Es steht am Anfang der Softwareentwicklung und verlangt nicht nur gute Kenntnisse in der Informatik, sondern auch Fähigkeiten, die häufig unter dem Begriff „Softskills“ zusammengefasst werden (wie z.B. Kommunikationsfähigkeit und Einfühlungsvermögen). Zu den wohl wichtigsten Aufgaben von Requirements-Ingenieuren gehört es, sich mit den Menschen und deren Problemen und Visionen auseinanderzusetzen, deren Sicht der Dinge einzunehmen und zu begreifen, wie die jeweiligen Personen ihr Problem oder ihre Vision verstehen. Requirements-Ingenieure tragen in der Praxis große Verantwortung für den Erfolg des Entwicklungsprojekts. Die Anforderungen an das zu entwickelnde System müssen so gut dokumentiert sein, dass im Verlauf der Entwicklung ein funktionsfähiges Produkt entsteht, das den Wünschen der Benutzer entspricht. Eine solche Anforderungsdokumentation ist für gewöhnlich die Grundlage von Verträgen und muss daher sorgfältig erstellt werden. Die Vertiefung „Software Systems Engineering“ vermittelt Qualifikationen und Kompetenzen, um den Ansprüchen dieses zukunftsträchtigen Tätigkeitsfeldes gerecht zu werden. Dazu gehören insbesondere auch Kenntnisse über die Dokumentation von Anforderungen, die zunehmend nicht mehr durch Texte sondern mit Hilfe von Modellen erfolgt. Wollen Sie es genau wissen? Details zu Lehrveranstaltungen über Requirements Engineering in der Vertiefung „Software Systems Engineering“ des Studiengangs „Systems Engineering“ finden Sie unter http://www.systems-engineering.uni-essen.de/ noch ein Defekt? oder wie man Fehler rechtzeitig erkennen und vermeiden kann. Die Meldungen von Fehlern in Systemen, die durch mangelhafte Software verursacht wurden, häufen sich. Ein aktuelles Beispiel ist das Maut-System in Deutschland, das mit gravierenden Problemen und deutlichen Terminüberschreitungen zu kämpfen hatte (von den monetären Folgen des Debakels ganz zu schweigen). Weit dramatischer war das Unglück der Ariane-5. Beim Start ist die Trägerrakete wegen eines Softwarefehlers explodiert. Leider gab es bereits auch Fälle, in denen solche Fehler nicht nur Geld, sondern auch Menschenleben kosteten. Dazu gehören der Absturz eines American Airlines Jets im Jahr 1995 in Kolumbien mit 159 Opfern und auch der Tod von 5 Krebspatienten im Jahre 2001 durch zu hohe Bestrahlungsdosen in Medizingeräten. Wie lassen sich solche dramatischen Unglücke vermeiden? Die Antwort ist, der Qualitätssicherung von Software muss in der Praxis größere Beachtung geschenkt werden! Es genügt nicht, einfach nur mal ein bisschen zu Testen. Vielmehr muss eine systematische und zielgerichtete Qualitätssicherung begleitend zur gesamten Entwicklung von Systemen durchgeführt werden. Dafür werden in der Industrie qualifizierte Mitarbeiter benötigt. Die Vertiefung „Software Systems Engineering“ vermittelt Kenntnisse, wie die Qualitätssicherung von Software-Systemen durchgeführt werden sollte. Dazu gehört zum einen, dass man Fehler bereits bei der Konstruktion (also der Entwicklung) vermeidet, indem man z.B. nicht einfach darauf losprogrammiert („hackt“), sondern schrittweise – ausgehend von den Anforderungen – ein System entwickelt. Zusätzlich wird gezeigt, wie man Fehler in den Entwicklungsdokumenten finden kann, und wie man durch Testen ein fehlerhaftes Verhalten eines Systems feststellen kann. Wollen Sie es genau wissen? Details zu Lehrveranstaltungen über Qualitätssicherung in der Vertiefung „Software Systems Engineering“ des Studiengangs „Systems Engineering“ finden Sie unter http://www.systems-engineering.uni-essen.de/ Arbeit gespart? oder wie man durch Wiederverwendung besser und schneller entwickelt. Wie schaffen es die Mobiltelefonhersteller kontinuierlich neue Handy-Modelle auf den Markt zu bringen? Zu jedem Modetrend das passende Handy. Mal mit Kamera, mal mit MP3-Player, mal mit Organizer, oder alles in einem vielseitig einsetzbaren Gerät. Die Lösung: Die Geräte werden nicht jedes Mal neu entwickelt, sondern man baut auf vergangenen Geräten auf. Dies gilt insbesondere auch für die Software dieser Systeme, die mittlerweile einen beachtlichen Teil ausmacht. Wieso jedes Mal eine neue Menüführung programmieren, wenn der einzige Unterschied neu hinzugekommene bunte Bildchen sind? Auch im Automobilbereich gilt dasselbe – mit etwas längeren Entwicklungszeiten zwischen den Produkten. Beispielsweise bestehen viele der ABS-Steuergeräte, die heute in fast allen Autos zu finden sind, in weiten Teilen aus der Software ihrer Vorgänger. Die Wiederverwendung ist also die Technik, um schnell, kostengünstig und mit hoher Qualität zu entwickeln. Im Allgemeinen stellt Wiederverwendung die Softwareentwicklung jedoch vor erhebliche Probleme. Die geforderte Funktionalität und Qualität des jeweiligen Produktes erfordern Anpassungen der wiederverwendeten Software. Diese Anpassungen können im Extremfall zu mehr Aufwand führen, als eine komplette Neuentwicklung. Doch auch aus diesem Dilemma gibt es Auswege. Ein sehr erfolgreicher Ansatz für die Wiederverwendung von Software ist die Produktlinien-Entwicklung. Bei diesem Ansatz wird eine gemeinsame Plattform für ein definiertes Spektrum von Softwareprodukten geschaffen. Die Plattform besteht aus Softwarekomponenten, die speziell für die Wiederverwendung in allen oder zumindest in vielen Produkten der Software-Produktlinie entwickelt werden. Um ein bestimmtes Produkt zu erhalten, müssen nur die richtigen Komponenten ausgewählt und wenn nötig um produktspezifische Komponenten ergänzt werden. Die Vertiefung „Software Systems Engineering“ vermittelt Kenntnisse zu dem Themengebiet Software-Produktlinienentwicklung. Insbesondere wird aufgezeigt, wie sich die Produktlinienentwicklung von der Einzelsystementwicklung unterscheidet, wie die gemeinsame Plattform einer Softwareproduktlinie modelliert werden kann, und wie daraus die einzelnen Applikationen abgeleitet werden können. Wollen Sie es genau wissen? Details zu Lehrveranstaltungen zum Thema Software-Produktlinien in der Vertiefung „Software Systems Engineering“ des Studiengangs „Systems Engineering“ finden Sie unter http://www.systems-engineering.uni-essen.de/ sicher geparkt? oder wie Daten durch einen Rechner verwaltet werden können. Nicht nur der eifrige Video- oder Musiksammler im Internet stellt sich die Fragen „Was mache ich nur mit all den Daten?“ und „Wie um Himmelswillen kann ich sicherstellen, dass ich weiß, was ich bereits alles vorher herunter geladen habe?“ Das Zauberwort heißt hier Datenbankmanagementsysteme. Hierbei handelt es sich um Massenspeicher für strukturierte Daten, d.h. für Daten, die einem bestimmten formalen Aufbau genügen. Beispielsweise lässt sich ein Video beschreiben durch den Namen des Films, dessen Regisseur, den Hauptdarstellern, das Premieredatum und weiteren als wichtig empfundenen Informationen. Werden diese Daten durch ein Datenbanksystem verwaltet, kann man auf sie sehr schnell über eine so genannte assoziative Suche der Gestalt „Gib mir alle Filme aus, in denen Donald Duck als Hauptdarsteller mitgewirkt hat.“ zugreifen. Dies geschieht mit Hilfe von speziellen Anfragesprachen, deren bekanntester Vertreter einigen von Ihnen vielleicht bereits bekannt ist: SQL (Structured Query Language). Bevor Sie aber auf Daten zugreifen können, muss zunächst einmal ein Datenbankschema angelegt werden: Dies ist eine Beschreibung der Strukturen, denen die Daten genügen müssen, die im Datenbanksystem abgelegt werden sollen. Oder anders ausgedrückt wird ein Realweltausschnitt mit den dafür vorgesehenen Hilfsmitteln des Datenbankmanagementsystems auf der Ebene eines Rechners modelliert. Dieser Ausschnitt wird immer ein abstraktes Abbild der Realität darstellen. Deshalb ist bei der Auswahl eines geeigneten DBMS darauf zu achten, dass das DBMS es einerseits erlaubt, den Realweltausschnitt so abstrakt zu modellieren, dass man die nicht relevanten Details nicht zu erfassen braucht, andererseits aber exakt genug, um die für notwendig erachtete Information auch in der richtigen Abstraktion modellieren zu können. Die Vertiefung „Software Systems Engineering“ vermittelt Kenntnisse zu dem Themengebiet Datenbankmanagementsysteme (DBMS). DBMS sind Softwarepakete, die es Ihnen erlauben, Daten nicht nur effizient sondern auch einfach zugreifbar abzulegen. Hierzu wird im Studiengang vermittelt, wie ein DBMS funktioniert und wie insbesondere Daten dort abgelegt und wiedergefunden werden können. Wollen Sie es genau wissen? Details zu Lehrveranstaltungen zum Thema Datenbankmanagementsysteme in der Vertiefung „Software Systems Engineering“ des Studiengangs „Systems Engineering“ finden Sie unter http://www.systems-engineering.uni-essen.de/ geschickt kombiniert? oder wie einem intelligente Agenten das Leben erleichtern können. Es ist wie immer. Sie wissen vor Arbeit nicht ein noch aus und jetzt drängen die Urlaubsplanungen. In diesem Jahr haben Sie sich nach langer Zeit entschlossen, einen Segeltörn zu unternehmen. Nun besitzen Sie aber weder die dafür notwendigen Accessoires, noch haben Sie einen genauen Überblick, was heutzutage im Ausrüstungs- und Sicherheitsbereich angesagt ist. Und schließlich – das Wichtigste – welche Segeltörns werden angeboten, was wird an Kenntnissen erwartet und wie kommt man zum Segelboot hin? Das sieht nach unangenehmem Aufwand aus, den Sie gerne vermeiden möchten! Wie schön wäre es jetzt, ein König zu sein und der Hofstaat dürfte für Sie springen. Während Sie Ihre Zeit mit sinnvollen Dingen verbringen, erledigen sich Ihre Probleme von selbst. Details sind irrelevant, es zählt nur, dass alle wesentlichen Ziele, Interessen und Restriktionen berücksichtigt werden. Am Ende ständen fertige Konzepte, Vorschläge und Angebote für Beschaffungen, dazu noch alle wünschenswerten Informationen und Daten... es gälte also nur noch gezielt zuzugreifen. Solche Träume gehen heute nur selten in Erfüllung. Aber die Informatik arbeitet daran, diesen Teil des Mittelalters wieder lebendig werden zu lassen. Das Zauberwort heißt Agenten. Unter Agenten versteht man autonome, intelligente und zielgetriebene Softwareeinheiten, die als Experten und Problemlöser in einem auf spezifischen, oft eng eingegrenzten Gebieten ihre Dienste anbieten. Solche Agenten können mobil oder stationär sein. So können sie über das Internet von einem Rechner zu einem anderen wandern, je nachdem, wo ihre Dienste benötigt werden und am effizientesten umzusetzen sind. Stationär auf einem Rechner fest angesiedelt, arbeiten sie ständig und zuverlässig im Hintergrund. Dabei können Agenten als kleine Wunderwaffen für alle Aufgabenstellungen des Lebens angesehen werden. Allerdings fällen Agenten eher selten selbstständig Entscheidungen. Sie erbringen Serviceleistungen, bereiten Entscheidungen vor oder überwachen und steuern Abläufe in ihrem eher engen Kompetenzfeld. Komplexere Aufgabenstellungen, wie z.B. die obige, können nur über ein kooperatives und zielgerichtetes Zusammenspiel vieler Agenten erledigt werden. Eine solche lose gekoppelte, sich dynamisch ändernde Menge von autonomen Agenten heißt Multi- Die Vertiefung „Software Systems Engineering“ agentensystem. vermittelt Kenntnisse zu dem Themengebiet Agenten und MultiagentensysWollen Sie es genau wissen? Details zu teme. Problemstellungen Lehrveranstaltungen zum Thema und Lösungsverfahren zur Multiagentensysteme in der Vertiefung „Software Systems Engineering“ des Studiengangs „Systems Analyse und Konstruktion werden vermittelt und an Engineering“ finden Sie unter Hand von Fallbeispielen studiert. http://www.systems-engineering.uni-essen.de/ gut gebaut? oder wie die Software-Architektur die Stabilität des Softwaresystems bestimmt. Die Struktur eines Systems – sei es ein Software-System oder ein Gebäude – bestimmt in hohem Maße, wie belastbar, änderbar oder benutzbar es ist. Es gibt viele Analogien zum Bau und der Struktur von Gebäuden: Man sieht leicht, dass es Unterschiede gibt zwischen dem Bau eines Gartenhauses, eines Einfamilienhauses oder eines Hochleistungsgebäude, das eine Vielzahl von Etagen besitzen und in einem erdbebengefährdeten Gebiet entstehen soll. Ähnliches gilt auch für SoftwareSysteme: ein Programm zum Aufzählen der ersten 1000 Primzahlen ist anders herzustellen als ein System, das Tausende von Benutzern verteilt über die Welt bedienen muss. Und weil es so einfach zu bewerkstelligen ist, werden Änderungswünsche auch gerne als „Balkon“ angebaut, was auf die Dauer zu einem Hochhaus auf dem Fundament eines Einfamilienhauses führt – kein erstrebenswerter Zustand! Im Bereich der Software-Architektur werden geeignete Komponenten gesucht, die sich gut dafür eignen, als Bausteine in einem Software-System zu dienen. Auch die Basis für ein hochperformantes und robustes Software-System ist Thema dieses Gebietes. Für Systeme, die für viele Benutzer ausgelegt werden sollen, werden so genannte Rechner- oder ServerFarmen benutzt, die aus mehreren Rechnersystemen bestehen, die sich gegenseitig aushelfen können, wenn auf einem einzelnen Rechner mal etwas weniger erfolgreich laufen sollte – und sei es so etwas „banales“ wie der Ausfall eines Netzteils. Solche auch Cluster oder Grid-Computing genannte Lösungen müssen aber mit angepasster Software betrieben werden, um den gewünschten Effekt – beispielsweise eine höhere Verfügbarkeit – auch realisieren zu können. Das gegenseitige „Aushelfen“ beim Ausfall eines Systems oder bei Lastspitzen muss vorbereitet sein. Insgesamt muss in der Software-Architektur dafür gesorgt werden, dass viele Aspekte des SoftwareSystems abgebildet werden, damit eine effektive Weiterentwicklung erfolgen kann. Die Vielzahl der Aspekte, neben der Robustheit (s.o.) auch die Sicherheit und Vertraulichkeit, um noch ein paar weitere genannt zu haben, machen die Beschäftigung mit dem Thema Software-Architektur zu einer interessanten Herausforderung. Die Vertiefung „Software Systems Engineering“ vermittelt Kenntnisse zu dem Themengebiet der systematischen Konstruktion und Analyse von großen Software Architekturen. Wollen Sie es genau wissen? Details zu Lehrveranstaltungen zum Thema Software-Architektur in der Vertiefung „Software Systems Engineering“ des Studiengangs „Systems Engineering“ finden Sie unter http://www.systems-engineering.uni-essen.de/ hier geht’s zu SSE! die Vertiefungsrichtung „Software Systems Engineering“ im Studiengang „Systems Engineering“ Die vorangegangenen Abschnitte haben gezeigt, dass der Studiengang „Angewandte Informatik: Systems Engineering“ in der Vertiefungsrichtung „Software Systems Engineering“ inhaltlich so ausgerichtet ist, dass wichtige Themen der ingenieurmäßigen Konstruktion softwareintensiver Systeme vermittelt werden. Es wurde illustriert, weshalb der Aufbau solcher Software-Systeme gut geplant werden muss – ähnlich wie ein Architekt den Bau oder Umbau eines Gebäudes plant. Auch die Überprüfung, ob das System richtig gebaut wurde und das leistet was der Kunde sich wünscht, ist ein wichtiger Bestandteil der Lehrveranstaltungen der Vertiefungsrichtung „Software Systems Engineering“. „Importierte“ Vorlesungen, wie z.B. zur Mathematik, sind bei „Systems Engineering“ nicht einfach von anderen Studiengängen übernommen worden, sondern wurden speziell für diesen Studiengang entwickelt. Sie orientieren sich daher an praktischen Aufgabenstellungen, wodurch auch eine Überfrachtung des Studiengangs mit nicht zielführendem Stoff verhindert wird. Durch den sich deshalb ergebenden bedarfsgerechten Zuschnitt des Fächerkatalogs sind die Absolventinnen und Absolventen besonders gut gerüstet, die Aufgaben, die heutzutage in Unternehmen auf sie warten, anzupacken und erfolgreich zum Ziel zu führen. Innerhalb der Vertiefungsrichtung „Software Systems Engineering“ gibt es weitere Auswahlmöglichkeiten, um verschiedene fachliche Gewichtungen vornehmen zu können. Wenn Sie sich für einige der zuvor beschriebenen Problemkreise interessieren und sich eine entsprechende berufliche Arbeit gut vorstellen können, ist der Studiengang „Angewandte Informatik: Systems Engineering“ in Essen mit der Vertiefungsrichtung „Software Systems Engineering“ das Richtige für Sie. Sie müssen sich allerdings nicht gleich festlegen. Wer „Systems Engineering“ studiert, wählt die Vertiefungsrichtung nach dem dritten Semester und trifft die Auswahl unter speziellen Lehrveranstaltungen des Vertiefungsgebiets zu einem noch späteren Zeitpunkt. „Angewandte Informatik: Systems Engineering“ ist ein Studiengang für Frauen und Männer, die sich für spezielle Informatikthemen interessieren, einen Sinn für praktische Aufgabenstellungen haben, sich nicht scheuen in praxisrelevanten Fragen auch ins Detail zu gehen, für die es aber auch wichtig ist, stets den Überblick über globale Zusammenhänge in einem System zu behalten und die vor allem auch die Kommunikation und Kooperation mögen. Wollen Sie es genau wissen? Details zur Vertiefung „Software Systems Engineering“ im Studiengang „Systems Engineering“ finden Sie unter http://www.systems-engineering.uni-essen.de/ alles weitere hier... hier sind die Infos. ♦ Portal für alle ICB-Studiengänge www.icb-portal.de ♦ Portal für die Vertiefungsrichtung SSE www.sse-portal.de ♦ Systems Engineering Homepage http://www.systems-engineering.uni-essen.de/ ♦ ICB-Homepage http://www.icb.uni-essen.de/ Schriftliche und telefonische Auskünfte erhalten sie unter … ♦ Studienberatung Informatik E-Mail: [email protected] Tel.: 0201/183-3915, -3421 ♦ Fachstudienberatung für die ICB-Studiengänge http://www.icb.uni-essen.de/studiengaenge/Studienberatung/ Auch zur Einzelberatung stehen wir gerne zur Verfügung Prof. Dr. Klaus Pohl Schützenbahn 70 45127 Essen E-Mail: [email protected] Tel.: 0201/183-4660 Prof. Dr. Michael Goedicke Schützenbahn 70 45127 Essen E-Mail: [email protected] Tel.: 0201/183-3481 Prof. Dr. Rainer Unland Schützenbahn 70 45127 Essen E-Mail: [email protected] Tel.: 0201/183-3421