Title: Software Engineering I
1Software Engineering I
2Agenda
- Vorlesung Organisatorisches
- Persönliche Motivation
- Relevanz von Software
- Problem Software-Krise
- Lösung Software-Engineering
- Vorlesung Ziele und Inhalte
3Vorlesung SWE I
4Moduldetails SWE I
- Modulname Software Engineering I
- Modulnummer T2INF2003
- ECTS Creditpoints 9
- Dauer 3. 4. Semester
- Workload Präsenz (h) 96 h 24h
- Workload Selbststudium (h) 174 h
- Qualifikationsziele und Kompetenzen
- Sachkompetenz Die Studierenden kennen die
Grundlagen des Softwareerstellungsprozesses. Sie
können eine vorgegebene Problemstellung
analysieren und rechnergestützt Lösungen
entwerfen, umsetzen und Dokumentieren. Sie kennen
die Methoden der jeweiligen Phasen und können sie
anwenden. Sie können Lösungsvorschläge für ein
gegebenes Problem konkurrierend bewerten und
korrigierende Anpassungen vornehmen. - Selbstkompetenz Die Studierenden können sich mit
Fachvertretern über Problemanalysen und
Lösungsvorschläge, sowie über die Zusammenhänge
der einzelnen Phasen austauschen. Sie können
einfache Softwareprojekte autonom entwickeln oder
bei komplexen Projekten effektiv in einem Team
mitwirken. Sie können ihre Entwürfe und Lösungen
präsentieren und begründen. In der Diskussion im
Team können sie sich kritisch mit verschiedenen
Sichtweisen auseinandersetzen und diese
erläutern. - Sozial-ethische Kompetenz Sie bewerten die
eingesetzten Technologien und schätzen ihre
Folgen ab. - Übergreifende Handlungskompetenz Die
Studierenden können sich selbsständig in
Werkzeuge einarbeiten. Sie verbinden den
Softwareentwicklungsprozess mit Techniken des
Projektmanagement und beachten während des
Projekts Zeit- und Kostenfaktoren. - Lerneinheiten und Inhalte
- - Vorgehensmodelle
- - Phasen des SW-Engineering und deren
Zusammenhänge - - Analyse Lastenheft
- - Spezifikation Pflichtenheft, Anwendungsfälle
- - Methoden zur Repräsentation von Algorithmen,
Datenmodellen, Funktionsweisen, Zustands- und
Regelabhängigkeiten
5Projektarbeit SWE I
- Die vorlesungsbegleitende Projektarbeit wird im
3.Semester in der Selbststudiumzeit und im
4.Semester auch in den Präsenzzeiten
durchgeführt! - Aktueller Vorlesungsplan, Themen für Ihre
Projektarbeiten und andere Informationen hier - http//wwwlehre.dhbw-stuttgart.de/rentschler/TI
NF11D - Organisation in Projektteams von 5-7 Leuten und
Auswahl eines der ausgeschriebenen Projektthemen
bis nächste Woche. Benennung eines
Projektleiters.
6Themen für Projektarbeit
- Vorlesungsunterlagen SWE I
- Salome-TMF 3.x Usability-Verbesserung
- Salome 4.0 Neuentwicklung SDLC-Tool
- MultiCastor 3.0
- Generic Assessment Tool 2.0
7Persönliche Motivation
- Sie werden nicht dafür bezahlt,
- - dass Sie einen Hochschulabschluss haben
- - dass Sie etwas wissen
- - dass Sie etwas tun
- - dass Sie irgendwelche Probleme lösen
- Sondern dafür
- dass Sie solche Probleme lösen, bei denen der
Nutzen der Lösung höher ist als die Kosten der
Lösung (am besten sogar viel höher!) - dass Sie mit ihrer Arbeitskraft einen Mehrwert
erschaffen. - Also lernen Sie bitte
- Probleme und ihre Wichtigkeit verstehen
- Probleme lösen
- Kosten und Nutzen von Technologien und Methoden
abschätzen - Ihre eigene Produktivität einzuschätzen
8Lösungsorientierung
Version 14.08.2015
Software Engineering I VE 1 Einführung
9Vorlesung SWE I
10Ziele der Vorlesung
- Vermittlung von Grundwissen in Software
Engineering (Softwaretechnik) - Das beinhaltet
- Inhalt und Wichtigkeit der Softwaretechnik
verstehen. - Verstehen, was Requirements Engineering ist.
- Den Softwareentwicklungsprozess und
unterschiedliche Vorgehensmodelle verstehen und
beschreiben können. - Die Phasen der Softwareentwicklung wie Analyse,
Entwurf, Implementierung und
Qualitätssicherung beherrschen. - Wissen, was man unter Qualitätssicherung versteht
und welche Verfahren hierzu existieren. - Wissen, wie man Softwareprojekte leitet und
durchführt. - Den Zweck und den Inhalt unterschiedlicher
Dokumentationsarten kennen.
11Ziele der Vorlesung
- Kenntnisvermittlung über Methoden und Prozesse
zur wirtschaftlichen Herstellung und Pflege
großer Softwaresysteme in hoher Qualität. - Auf dieser Grundlage sollen Sie dann in der Lage
sein - den Stellenwert von Software Engineering zu
beurteilen - erworbenes Wissen über Software-Entwicklung
systematisch einzuordnen - die Ursachen für Schwierigkeiten und Probleme in
Software-Projekten zu erkennen - als Software-Entwickler erfolgreich mit Anwendern
und Managern zusammenzuarbeiten - als Software-Architekt systematisch ein großes
Softwaresystem zu entwerfen - als Software-Projektleiter systematisch und
zielgerichtet ein großes Softwareprojekt zu
planen, initiieren und zu leiten
12Gliederung des Vorlesungsstoffes
Wie modelliere bzw. beschreibe ich Software?
Wie gehe ich vor bei der Software Entwicklung?
Wie führe ich ein Software Projekt?
Wie können Werkzeuge unterstützen?
SWE 1
13Aktivitäten des SW-Lebenszyklus
Was muss verbessert werden?
Wie tun?
Was tun?
Wurde es richtig getan?
Realisiere es!
Wird benutzt
Problemraum
Lösungsraum
14Vorlesung SWE I
- Relevanz von Software
- Software-Krise
- Software Engineering
15Relevanz von Software
- Die Wirtschaft aller industrialisierten Länder
hängt von Software ab. - Immer mehr Systeme werden durch Software
gesteuert. - Ohne Software geht heute nichts mehr.
- Die Aufwendungen für Software repräsentieren
einen enormen Faktor im Bruttosozialprodukt aller
Länder. - Software-Kosten dominieren die Kosten von
informationstechnischen Systemen.
? Gute Softwareentwicklung ist wichtig
16Problem Software-Krise
- Die Software-Krise bezeichnet ein in der Mitte
der 1960er Jahre verstärkt auftretendes Phänomen
Erstmals überstiegen die Kosten für die Software
die Kosten für die Hardware. In der Folge kam es
zu den ersten großen gescheiterten
Software-Projekten. -
17Problem Software-Krise
- 1960 - 1970
- Menge und Leistungsfähigkeit der Hardware wachsen
dramatisch - Informationsverarbeitung im großen Stil wird
möglich - Ad hoc Verfahren (Code and Fix), Kunsthandwerk
sowie primitive Programmiersprachen in der
Software-Entwicklung versagen bei großen
Systemen. - Die Software-Krise geht im Kern auf das Problem
zurück, dass selbst einfache Programme derart
komplex aufgebaut sein können, dass sie
mathematisch schwer beschreibbar und aufgrund der
hohen Zahl von Permutationen (der Vielzahl von
internen Software-Zuständen) nicht vollständig
testbar sind.
? Die Software-Krise ist da
18Symptome der Software-Krise
- Softwareprojekte überschreiten geplante Zeit- und
Budgetgrenzen. - Softwareprojekte werden vorzeitig abgebrochen.
- Softwareprodukte beinhalten nicht die gewünschte
Funktionalität. - Softwareprodukte sind fehlerbehaftet.
19Lösung Software Engineering
- Software Engineering als Antwort auf die
Software-Krise - formuliert 1968 auf einer NATO-Konferenz in
Garmisch-Partenkirchen - Software Engineering Die Anwendung eines
systematischen, disziplinierten und
quantifizierbaren Ansatzes auf die Entwicklung,
den Betrieb und die Wartung von Software, das
heißt, die Anwendung der Prinzipien des
Ingenieurwesens auf Software. - (IEEE 610.12)
- Im deutschen Sprachraum auch Softwaretechnik
genannt.
20Definition Software Engineering
- Zielorientierte Bereitstellung und systematische
Verwendung von Prinzipien, Methoden, Konzepten,
Notationen und Werkzeugen für die arbeitsteilige,
ingenieurmäßige Entwicklung und Anwendung von
umfangreichen Software-Systemen - zur
- Steigerung der Produktivität,
- Verbesserung der Qualität und
- Erleichterung der Führbarkeit von
Software-Projekten. - siehe Balzert, Lehrbuch der
Softwaretechnik
21Einordnung in die Informatik
Version 14.08.2015
Software Engineering I VE 1 Einführung
22SWE -Übersicht
Version 14.08.2015
Software Engineering I VE 1 Einführung
23Arten von Software
- Individualsoftware Einzelanfertigung gemäß
Kundenauftrag (von klein bis sehr groß). - Standardsoftware Serienprodukt sie kann
anwendungs- oder produktorientiert sein,
unterliegt meist inkrementeller
Weiterentwicklung.
Version 14.08.2015
Software Engineering I VE 1 Einführung
24Vielfalt von Software
- Stand-Alone Anwendungen
- Applikationen, welche auf einem lokalen Computer
ausgeführt werden (z.B. auf einem PC). Sie
beinhalten alle notwendigen Funktionalitäten und
benötigen keine Verbindung zu einem Netzwerk. - Interaktive, transaktionsbasierte Anwendungen
- Applikationen, die auf einem entfernten Computer
ausgeführt werden und auf die von lokalen PCs
oder Terminals über ein Netzwerk zugegriffen
wird. Das beinhaltet Web-Anwendungen wie z.B.
eCommerce, Bankensoftware, .
Version 14.08.2015
Software Engineering I VE 1 Einführung
25Vielfalt von Software
- Stapelverarbeitungssysteme
- Geschäftsanwendungen, welche große Mengen an
Eingabedaten verarbeiten können. - Unterhaltungssysteme
- Systeme, welche primär dem persönlichen Gebrauch
und zu Unterhaltungszwecken dienen. - Modellierungs- und Simulationssysteme
- Systeme für wissenschaftliche Zwecke, z.B. um
komplexe naturwissenschaftliche Prozesse oder
Systeme nachzubilden.
Version 14.08.2015
Software Engineering I VE 1 Einführung
26Vielfalt von Software
- Datenermittlungssysteme
- Systeme, welche mit Hilfe von Sensoren Daten aus
ihrer Umgebung sammeln und diese Daten an andere
Systeme zur Weiterverarbeitung weiterleiten. - Systeme aus Systemen
- Systeme, die aus einer Anzahl anderer
Softwaresysteme zusammengestellt wurden. - Eingebettete Softwaresysteme
- Hierbei handelt es sich um Softwaresysteme zum
Steuern und Kontrollieren von Hardwaregeräten. - Diese eingebetteten Systeme (embedded systems)
sind zahlenmäßig die meist verbreiteten
Softwaresysteme. - Hierzu gehört alles von der Haussteuerung bis zur
Eieruhr.
Version 05.09.2011
Software Engineering I VE 1 Einführung
27Vielfalt von Software
- Zusammenfassung
- Es gibt viele verschiedene Arten von
Softwaresystemen und es gibt keine universelle
Entwicklungsmethode für alle diese Arten. - Die zu verwendenden Methoden und Werkzeuge hängen
ab von - der Art der zu entwickelnden Anwendung,
- den Kundenanforderungen und
- dem fachlichen Hintergrund des Entwicklungsteams.
Version 14.08.2015
Software Engineering I VE 1 Einführung
28Charakteristika von Software
Version 14.08.2015
Software Engineering I VE 1 Einführung
29Software-Krise aktuell
- Die Software-Krise kann auch heute nicht als
beendet betrachtet werden. Die Komplexität der
Software-Systeme steigt weiter und damit die
Probleme, auch wenn es in der Modernisierung und
Strukturierung des Software-Entwicklungsprozesses
große Fortschritte gab. - Software Engineering ist im Mittel schwieriger
als das Engineering klassischer Systeme und
Produkte - Beständiger Verbesserungsprozess nötig!
Version 14.08.2015
Software Engineering I VE 1 Einführung
30Abgrenzung
- Software Engineering ! Programmieren
- Sondern Problemlösung
- Problem bzw. Anforderungen analysieren
- Lösung erarbeiten
- System entwickeln
- Angewendete Techniken
- Modellierung
- Wissensbeschaffung
- Entscheidungsfindung
31 32Begriffsdefinition Engineering
- Systematisches Herangehen
- Genaue Problemdefinition
- Wiederholende Muster erkennen
- Techniken entwickeln, um Klassen von Problemen zu
lösen - Bestehende Lösungen wiederverwenden
- Definieren von formalen Modellen zur Förderung
von Automatisierung - Anwendung von Standard-Werkzeugen
33Begriffsdefinition Prinzipien
- Prinzipien sind Grundsätze, die man seinem
Handeln zugrunde legt. Sie sind allgemeingültig,
abstrakt und bilden eine theoretische Grundlage.
Sie enthalten keine Aussage darüber, wie das
Prinzip erreicht werden kann. - Prinzipien der Softwaretechnik
- Abstraktion ?? Konkretisierung
- Perspektivenbildung
- Strukturierung
- Bindung (Kohäsion) und Kopplung
- Hierarchisierung
- Modularisierung
- Standardisierung
- Kapselung
- Lokalität
34Begriffsdefinition Methoden
- Methoden sind planmäßige, begründete
Vorgehensweisen zur Erreichung von festgelegten
Zielen. Zu Methoden gehören eine Notation,
systematische Handlungsanweisungen und Regeln zur
Überprüfung der Ergebnisse. - Anwendung von Prinzipien
- Nicht auf Intuition basierend
- Lehrbar
- Einfach und leicht zu verstehen
35Begriffsdefinition Werkzeuge
- Werkzeuge (Tools) dienen der automatisierten
Unterstützung von Methoden und Notationen zur
Steigerung von Effektivität und Effizienz. - Charakteristika
- Erzwingen der Einhaltung von Methoden, Standards,
Notationen - Erhöhung der Produktivität
- Beispiel
- Editor, Interpreter, Compiler, Debugger
- CASE-Werkzeuge (Computer Aided Software
Engineering) - Testsysteme
36Teilaspekte des Software Engineerings
- Entwicklungsmethodik
- zur Modellierung und Dokumentation
- zur Anforderungserfassung und -analyse
- zum Systementwurf
- zur Implementierung (? Programmiermethoden)
- Projektmanagement
- zur wirtschaftlichen und koordinierten
Bearbeitung der Arbeitspakete - Qualitätssicherung
- zur Herstellung und Überwachung einer
hinreichenden Produktqualität
37 38Fragen und Übungen
- Warum ist Software so schwer zu entwickeln?
- ?? Man kann Software nicht anfassen und nicht
sehen. - ?? Softwaresysteme werden immer komplexer.
- ?? Man muss zunehmend mit Einschränkungen aus
Altlasten umgehen. - ?? Software kann nur schwer geändert werden.
39Fragen und Übungen
- Welchen Aussagen stimmen Sie zu?
- ?? Software beeinflusst unser tägliches Leben.
- ?? Softwaretechnik beinhaltet Theorien und
Methoden zur Entwicklung von Software. - ?? Die Informationsflut und Komplexität bei der
Softwareerstellung überfordert eine einzelne
Person. - ?? Die Entwicklung der Software ist wesentlich
aufwändiger als deren Wartung.
40Fragen und Übungen
- Welchen Aussagen stimmen Sie zu?
- ?? Ein Softwareprodukt besteht nur aus dem
Programmcode. - ?? Softwaretechnik befasst sich nur mit der
Herstellung von Software. - ?? Ein Vorgehensmodell ist die vereinfachte
Beschreibung eines Softwareentwicklungsprozesses. - ?? Die Wartung von Software ist teurer als die
Erstellung von Software. - ?? Neue Anforderungen erhöhen die Fehlerzahl von
großen Softwaresystemen.
41- Vielen Dank für Ihre Aufmerksamkeit
- Fragen ?