Software Engineering für die Automatisierungstechnik
PDF Lehrveranstaltungsverzeichnis English Version: SEA
Version: undefined | Letzte Änderung: - | Entwurf: undefined | Status: undefined
Langname | Software Engineering für die Automatisierungstechnik |
---|---|
Anerkennende LModule | SE_BaET |
Verantwortlich |
Prof. Dr. Stefan Kreiser
Professor Fakultät IME |
Gültig ab | Wintersemester 2020/21 |
Hinweis zum Zeitraum des Lehrangebots | Vorlesung / Übung wöchentlich (Flipped Classroom), Projektarbeit |
Niveau | Bachelor |
Semester im Jahr | Sommersemester |
Dauer | Semester |
Stunden im Selbststudium | 90 |
ECTS | 5 |
Dozenten |
Prof. Dr. Stefan Kreiser
Professor Fakultät IME |
Voraussetzungen | - grundlegende Kenntnisse zur Verhaltensmodellierung (z.B. PAP, Automaten, State Charts, Petrinetze) - grundlegende Programmierkenntnisse in C/C++ - grundlegende Kenntnisse in Objektorientierung (Klassen, Objekte) |
Unterrichtssprache | deutsch und englisch |
separate Abschlussprüfung | Ja |
I. Sommerville: Software Engineering (Addison-Wesley / Pearson Studium) |
OMG Unified Modeling Language Spec., www.omg.org/uml |
Oestereich, Bernd et. al.: Analyse und Design mit der UML 2.5: Objektorientierte Softwareentwicklung, Oldenbourg Wissenschaftsverlag |
Litke, H.D.: Projektmanagement - Handbuch für die Praxis: Konzepte - Instrumente - Umsetzung, Carl Hanser Verlag |
Details |
Natürlichsprachliche Beschreibung eines realitätsnahen Automatisierungssystems (Textaufgabe): Modellierung in UML, begründete Umsetzung in C++ 20min schriftliche Vorbereitung, 20min mündliche Befragung zur vorbereiteten Lösung mit Möglichkeit zur Optimierung. |
---|---|
Mindeststandard | Anhand einer natürlichsprachlichen Beschreibung eines realitätsnahen Automatisierungssystems angemessener Komplexität modellieren die Studierenden das Systemmodell eines zur Lösung der Automatisierungsaufgabe geeigneten Softwaresystems und begründen und bewerten die wesentlichen Eigenschaften ihres Entwurfs. Zur Begründung und Bewertung nehmen die Studierenden Bezug auf die spezifischen Anforderungen an das Automatisierungssystem sowie auf grundlegende Qualitätskriterien für automatisierungstechnische Softwaresysteme (System-, Entwicklungs-, Betriebs-, Service- und Wartungsanforderungen) und zeigen dabei an ausgewählten Modellartefakten insbesondere, dass sich und wie sich das Systemmodell in ein Softwaremodell und anschließend in ein Implementierungsmodell transformieren lässt und welche Konsequenzen ihr Entwurf für die Modelle der nachfolgenden Entwurfsphasen hat. |
Prüfungstyp | mündliche Prüfung, strukturierte Befragung |
Zieltyp | Beschreibung |
---|---|
Kenntnisse | Begriffe - Softwaresystem, Softwareprodukt - Softwarequalität - Komplexität Objektorientiertes Modellieren mit UML - Domänenmodell (Struktur, Verhalten, Systemgrenzen / Schnittstellen) - Softwarearchitekturmodell - Implementierungsmodell - Modelltransformationen - Modellierungswerkzeuge Vorgehensmodelle - lineare (Phasenmodell, V-Modell) - evolutionäre (eXtreme Programming, Scrum, Timebox) Qualitätsmanagement (SOPs) Anforderungsanalyse - Requirements Engineering - Design-Input-Requirements (Lastenheft) - Gesetze, Normen und organisatorische Vorgaben Produktrisikoanalyse (FMEA, FTA) Entwurf - Designprinzipien - Machbarkeitsstudien - Systemspezifikation (Pflichtenheft) - Softwarespezifikationen Implementierung - Wahl der Programmiersprachen, Programmierrichtlinien - Entwicklung in verteilten Teams, Entwicklertest - Systemintegration - Inbetriebnahme Verifikation & Validierung - Formalisierte Softwaretests (dynamische, statische) - Feldevaluation - Betriebsbegleitung Managementaufgaben - Dokumentmanagement - Konfigurationsmanagement (Versionsmanagement, Buildmanagement) - Testmanagement - Änderungsmanagement |
Fertigkeiten | Technische Softwaresysteme analysieren - Systemanforderungen methodisch ermitteln, konsolidieren und priorisieren - formalisierte Anforderungsspezifikation entwerfen Technische Softwaresysteme modellieren - Notationen der Unified Modeling Language zur Modellierung einfacher Softwaresysteme nutzen - Strukturnotationen (Klassendiagramm, Paketdiagramm, Komponentendiagramm, Verteilungsdiagramm) - Verhaltens- und Schnittstellennotationen (Anwendungsfalldiagramm, Aktivitätsdiagramm und Aktionskonzept Zustandsautomat und Protokollautomat, Sequenzdiagramm) Modellierungsebenen benennen und abgrenzen - Systemmodell (Kundensicht): Entitätenmodell, Schnittstellenmodell, Verhaltensmodell - Softwaremodell (Entwicklersicht): Technische Klassenmodelle, detaillierte Verhaltensmodelle, Designprinzipien, grundlegende Softwarearchitekturen Kontext, Grenzen, Aufgaben, Verhalten und Strukturen einfacher Softwaresysteme aus Texten ableiten - technische Textabschnitte vollständig erfassen - implizite Angaben erkennen und verstehen - Inkonsistenzen erkennen und auflösen - fehlende Angaben erkennen und ableiten bzw. erfragen Softwaresysteme mit UML2-Notationen modellieren - einfache Systemmodelle iterativ entwerfen (Entitätenmodell entwerfen, Kontext- und Anwendungsfallmodell aus Kundensicht entwerfen, Anwendungsfälle detaillieren, Standardszenario und wesentliche Alternativszenarien beschreiben und als Aktivitätsdiagramm verfeinern) - einfache Softwaremodelle iterativ entwerfen (Refactoring und Detaillierung des Entitätenmodells aus Entwicklersicht, Verhaltensmodelle aus Entwicklersicht detaillieren, strukturbasiertes Verhalten als State Chart modellieren, Aktivitäten bis zur Aktionsebene verfeinern, Zusammenhang zwischen Aktionen und Klassenmethoden herstellen) Professionelles UML2-Entwurfswerkzeug bedienen Modelle verifizieren - Bewertungskriterien definieren - Einhalten von Modellierungsvorgaben und Designprinzipien - Vollständigkeit bzw. unnötige Komplexität - Qualität im Hinblick auf spezifische Kundenvorgaben bewerten (Testfälle definieren, Modellreviews durchführen und dokumentieren, Modellfehler entdecken und benennen, Modelle anhand der Bewertungen korrigieren und optimieren) Technische Softwaresysteme entwerfen - Produktrisiken ermitteln, Milderungsmaßnahmen definieren und im Entwurf berücksichtigen - Designprinzipien zum Erreichen definierter Qualitätsziele benennen, erläutern und anwenden - problemgerechte System- und Softwarearchitektur auswählen und anwenden - Methoden zur Softwareentwicklung in verteilten Teams erläutern und exemplarisch anwenden - Methoden zur Softwareprüfung in verteilten Teams erläutern und exemplarisch anwenden Technische Softwaresysteme qualitätsgesteuert entwickeln - Vorgehensmodelle exemplarisch anwenden) - Informationen aus internationalen Standards zur Softwareentwicklung gewinnen (Deutsch/Englisch) |
Typ | Präsenzzeit (h/Wo.) |
---|---|
Vorlesung | 1 |
Übungen (ganzer Kurs) | 2 |
keine |
keine |
Begleitmaterial | elektronische Folien zur Vorlesung, elektronische Übungsaufgabensammlung, professionelles Entwicklungswerkzeug für Unified Modeling Language (UML2) , Vorlesungsvideos |
---|---|
Separate Prüfung | Nein |
Zieltyp | Beschreibung |
---|---|
Fertigkeiten | Größere technische Softwaresysteme analysieren - umfangreiche technische Texte erfassen und verstehen, insbesondere englischsprachige Texte - umfangreiche Systemanforderungen auswerten und anordnen Größere technische Softwaresysteme modellieren - Modellierungsebenen abgrenzen: Systemmodell (Kundensicht), Softwaremodell (Entwicklersicht) - Modellnotationen systematisch zur Systembeschreibung nutzen - Schnittstellen-, Verhaltens- und Strukturmodelle in UML2-Notationen iterativ herleiten - Professionelles UML2-Entwurfswerkzeug zielgerichtet einsetzen - Modelle verifizieren und bewerten, Modellfehler korrigieren und Modelle optimieren Größere technische Softwaresysteme entwerfen - Designprinzipien zum Erreichen definierter Qualitätsziele auswählen und anwenden - problemgerechte System- und Softwarearchitektur auswählen und anwenden - Softwareentwicklung und Softwareprüfung in verteilten Teams durchführen Quellcode erstellen und prüfen - gegebenen Quellcode analysieren und zielgerichtet erweitern - objektorientierte Programmiersprache (C++) nutzen Größere technische Softwaresysteme qualitätsgesteuert entwickeln - evolutionäres Vorgehensmodell anwenden - Informationen aus internationalen Standards zur Softwareentwicklung gewinnen (Deutsch/Englisch) Arbeitsergebnisse des Teams in englischer Sprache kompakt und zielgruppengerecht präsentieren Handlungskompetenzen zeigen: Realweltsysteme modellieren - Dekomposition (Systemgrenzen erkennen bzw. definieren und korrekt nutzen, Systemschnittstellen erkennen bzw. definieren und korrekt nutzen, Systemstrukturen erkennen bzw. definieren und korrekt darstellen, Systemfunktionen erkennen bzw. definieren und korrekt darstellen) - Komposition (Struktur- und Verhaltensmodelle erstellen, Modelle integrieren, Teilmodelle und Gesamtmodell verifizieren und bewerten) - komplexe Aufgaben arbeitsteilig im Team bewältigen (einfache Projekte planen und steuern, Absprachen und Termine einhalten, Reviews planen und durchführen) - Modelltransformationen anwenden (Modellelemente aus gegebenem C++ Quellcode zurückführen, Modelle durch manuelle Quellcodeanalyse vervollständigen und verifizieren, Systemerweiterungen und Lösungsmodifikationen auf Basis einer aktuellen Spezifikation modellieren, Quellcode aus neuem Modell generieren und generierten Quellcode manuell vervollständigen, Implementierung im Debugger und durch systematische Tests auf dem Zielsystem verifizieren) |
Typ | Präsenzzeit (h/Wo.) |
---|---|
Projekt | 1 |
keine |
- grundlegende objektorientierte Programmierkenntnisse (C/C++) - grundlegende Fertigkeiten im Umgang mit einer IDE / Debugging |
Begleitmaterial | Design Input Requirements für Projektaufgabe, Roundtrip Engineering Aufgabe zur Einarbeitung in UML, UML-Modellierungswerkzeug und IDE (Integrierte Entwicklungsumgebung) |
---|---|
Separate Prüfung | Ja |
Prüfungstyp | Projektaufgabe im Team bearbeiten (z.B. im Praktikum) |
---|---|
Details | Teil 1 (Round-Trip Engineering): nachvollziehbare, auf Basis der Anforderungen und Rahmenbedingungen begründete Transformationen zw. Systemmodell, Softwaremodell, Implementierungsmodell und Quellcode durchführen. Teil 2 (Projektaufgabe): Anhand einer natürlichsprachlichen Beschreibung (Englisch) eines realitätsnahen Automatisierungssystems angemessener Komplexität modellieren die Studierenden das Systemmodell eines zur Lösung der Automatisierungsaufgabe geeigneten Softwaresystems und begründen und bewerten die wesentlichen Eigenschaften ihres Entwurfs. Zur Begründung und Bewertung nehmen die Studierenden Bezug auf die spezifischen Anforderungen an das Automatisierungssystem sowie auf grundlegende Qualitätskriterien für automatisierungstechnische Softwaresysteme (System-, Entwicklungs-, Betriebs-, Service- und Wartungsanforderungen) und zeigen dabei an ausgewählten Modellartefakten insbesondere, dass sich und wie sich das Systemmodell in ein Softwaremodell und anschließend in ein Implementierungsmodell transformieren lässt und welche Konsequenzen ihr Entwurf für die Modelle der nachfolgenden Entwurfsphasen hat. |
Mindeststandard | Teil 1: Lauffähiges Softwaresystem, das nachweislich die geforderten Eigenschaften besitzt und konsistent zum UML-Modell ist. Teil 2: Systemmodell, das nachweislich die wesentlichen Anforderungen aus den DIRs erfüllt, Softwarearchitekturkonzept, das das zur Umsetzung des Systemmodells unter Berücksichtigung aller DIRs begründet geeignet ist. |
© 2022 Technische Hochschule Köln