Klassische Softwareentwicklung - Software Engineering -



Ähnliche Dokumente
Das V-Modell: Produkte 1/5

Software Engineering

Softwareprozessmodelle

Vortrag Iterative Prozessmodelle/SCRUM

IT-Projekt-Management

Agile Development vs. Security Requirements

Software- und Systementwicklung

Das Wasserfallmodell - Überblick

Modellbasierter Test mit. Medizintechnik. Kompetenz. Prozess. rund um MBT. Umsetzung. Ihren. Ausblick. Entwicklungsprozess

Einsatz von Simulationen in der Softwareentwicklung

Software Engineering II (IB) Testen von Software / Modultests

HERMES de Suisse 2011

Grundlagen des Software Engineering

Software Engineering

Software-Engineering Grundlagen des Software-Engineering 7 Implementierungsphase (Programming Phase)

Integrative Entwicklungsprozesse am Beispiel einer automotiven Anwendung

Testen Prinzipien und Methoden

Projektmanagement. Dokument V 1.1. Oliver Lietz - Projektmanagement. Wie kommt es zu einem Projektauftrag? Ausführung

Prozess-Modelle für die Softwareentwicklung

Agile HW-Entwicklung und virtuelle Inbetriebnahme im Maschinenbau

Software Engineering

Einführung in die Informatik

Kernprozess zur System- und Softwareentwicklung. Logische Systemarchitektur f 1. f 2 f 3. f 4 Funktion. Technische Systemarchitektur SG 1 SG 2 SG 3

Jochen Ludewig Horst Lichter. Software Engineering. Grundlagen, Menschen, Prozesse, Techniken. dpunkt.verlag

MDRE die nächste Generation des Requirements Engineerings

22. Januar Gruppe 2: TOPCASED

Softwareentwicklungsmodelle

ò ò ò ò ò ò Software Engineering I Organisatorisches / Einf³hrung Version Andreas Stuckert/Markus Rentschler

Seminar Softwareentwicklung in der Wissenschaft

Übungsaufgaben zum Software Engineering: Management

SE Besprechung. Übung 2 Softwareprozesse

Software Engineering 1. Einführung und Begriffe

Software Engineering

Inhalt Einleitung...1 Einführung in das Risikomanagement...7 Prinzipien wirkungsvollen Risikomanagements... 57

IT-Projektmanagement Teil 2: Der Gegenstand von SW-Projekten Kaiserslautern, WS 2008/2009 Dr. Gerhard Pews

PROJEKTMANAGEMENT GRUNDLAGEN_2

Whitepaper: Agile Methoden im Unternehmenseinsatz

Probe-Klausur Software Engineering Fachbereich BW, für WINFO

Informatik Studium an der Universität Oldenburg. Dr. Ute Vogel Fachstudienberaterin Informatik

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Inhaltsverzeichnis. Grundlagen und Begriffsbildung

Aktuelle Probleme des Software Engineering Ein Insider Bericht

Software Engineering

systems landscape engineering - übung -

Automotive Software Engineering

Agilität trifft Funktionale Sicherheit

Software Engineering Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen

Inhaltsverzeichnis. Teil I Grundlagen 1

T2 Fundamentaler Testprozess

IT-Projektmanagement

Inhaltsverzeichnis Einführung und Überblick

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Management großer Softwareprojekte

Grundlagen Software Engineering

Agile Software-Entwicklung im Kontext der EN50128 Wege zum Erfolg

Technologiepark Paderborn Telefon: / XX XX XX Mobil: 01XX / XX XX XX XX XXXXXXX@mail.upb.de

3. GI-Workshop EPK 2004 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten Luxemburg. ARIS meets RUP

Praktikum Software Engineering: Verfahren und Werkzeuge

Das Softwaresystem BASEMENT

Inhaltsverzeichnis 1 Einführung und Überblick 2 Grundlagen

Oktober 2014 PRODUKTENTWICKLUNG. Dr. Ralf Lauterbach

Software Engineering. Validierung und Verifikation. Martin Glinz Harald Gall. Kapitel 7. Universität Zürich Institut für Informatik

1. Grundbegriffe der Softwaretechnik. 1.1 Herausforderungen

Requirements Engineering in der Systementwicklung

IT-Risikomanagement leben!

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Softwaretechnik II. Sommersemester 2015

ORGANISATORISCHES. So#ware Technik Prof. Dr. Wolfgang Schramm

Softwaretechnik 3. Klausurnachbesprechung , Phillip Ghadir

Wirtschaftsinformatik I Teil 2. Sommersemester Übung

Obligatorisches Lesen Vorgehensmodelle (Phasenmodelle)

Risikomanagement als produktiver Beitrag zum Entwicklungsprozess

17 Architekturentwurf Vorgehen und Dokumentation

Weiterentwicklungs-Projekten

Herkömmliche Softwareentwicklungsmodelle vs. Agile Methoden

Entwurf. E DIN EN (VDE ): pren :2015

Verbundtests von Mobilgeräten und Backend-Systemen. Andreas Bartsch, exept Software AG

Tagung Bundesinformatik 2018

Softwaretechnik (Medieninformatik) Überblick

DIN EN (VDE ): EN 62304: A1:2015

Übungen Softwaretechnik I

Benutzerorientierte Entwicklung mobiler Anwendungen

Unsere These: Meilensteindefinitionen sind wichtig für die Projektplanung und die Bewertung des Projektstatus.

modellzentrierter Test

Was versteht man unter einem Softwareentwicklungsmodell?

Functional Safety. Systems Engineering als Schlüsseldisziplin in Projekten mit funktionaler Sicherheit

Informationssystemanalyse Lebenszyklusmodelle 3 1. Lebenszyklusmodelle sollen hauptsächlich drei Aufgaben erfüllen:

Praktikum Grundlagen der Programmierung. Diverse Grundlagen. Dr. Karsten Tolle

ISO / FuSi Funktionale Sicherheit Road Vehicle - Functional Safety

Vorlesung Softwaretechnik - Vorgehensmodelle, V-Modell XT -

Einführungsprozess eines PDM/PLM Systems in KMU Betrieben

Softwareentwicklung und Projektmanagement

1.4! Einführung. Systemmodellierung. Methoden und Werkzeuge

Übungen zur Softwaretechnik

Software Engineering

Entwicklungsprozesse und -werkzeuge

SWE1 - Übung 1 Projektbeschreibung: Chat

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Software-Entwicklung

Transkript:

Klassische Softwareentwicklung - Software Engineering - Von: Claus Christofzik, Vincent Strelow Inhaltsverzeichnis: 1. WAS IST SOFTWARE- ENGINEERING 1 2. WORAUS BESTEHT SOFTWARE- ENGINEERING 1 3. VORGEHENSMODELLE. 3 4. HERAUSFORDERUNGEN DES SOFTWARE- ENGINEERING. 5 5. KLASSISCHE S.E. VS. EXTREME PROGRAMMING. 5 6. QUELLEN. 5 1. Was ist Software- Engineering? Der Begriff Software- Engineering wurde erstmals 1968 eingeführt und heißt soviel wie Ingenieurmäßiges bauen von Software. Dieser Gedanke der Ingenieurmäßigen Herangehensweise an Softwareentwicklung entstammt aus der Zeit der Softwarekrise, in der die Software-Projekte immer größer und komplexer wurden, aber die richtigen Konzepte fehlten um den gestiegenen Anforderungen gerecht zu werden. Die Folge: Jahrelange Terminverzögerungen, mangelnde Qualität, eine Kostenexplosion für Software und das scheitern von Projekten. Software- Engineering versucht diesen Problemen zu begegnen durch ein möglichst planvolles und strukturiertes herangehen an die Softwareentwicklung. Es Gedanke ist, das es ebenso wie man ein komplexes Gebäude baut auch Software bauen können müsste. Bei einem Gebäude hätte man zuerst einen Grundriss, einen Bauplan und wüsste schon bevor der erste Stein gesetzt wird, wie das Endergebnis aussieht. Analog sollte auch eine Software im Voraus planbar sein! Ziele des Software-Engineering: Herstellung von Software hoher Qualität Hohe Qualität des Herstellungsprozesses (zeitlich und finanziell) Dabei umfasst Software-Enginering: Entwicklung von Software Aber auch: Verbesserung des Softwareprozesses durch Entwicklung von Methoden, Werkzeugen und Theorien 2. Woraus besteht Software- Engineering? Software Engineering besteht grundsätzlich aus den drei gleichbedeutenden Säulen: Management Qualitätssicherung Entwicklung 2.1. Management

Obwohl man bei dem Begriff Software- Engineering oder Softwareentwicklung nicht unbedingt an Managementaufgaben denkt, ist dies ein wichtiger Bereich. Im Gegensatz zum Ansatz des Extreme Programmings (vgl. Vortrag Extreme Programming ) gibt es hier stärkere Hierarchien. Man kann die Managementaufgaben in vier Teilbereiche gliedern: Projektmanagement ist dabei ein Teilbereich in dem es vor allem um die Terminplanung (Meilensteine, Versionen, etc.), die Beschaffung und Verteilung von Ressourcen, die richtige Aufgabenverteilung an Entwickler (Fachwissen richtig einschätzen und nutzen) sowie die Überwachung des gesamten Entwicklungsprozesses geht. Personalmanagement umfasst die Auswahl und die Bewertung von Personal, aber auch das Einschätzen von Fachwissen welches im Projekt benötigt wird. Risikomanagement besteht aus dem voraussehen, vermeiden und überwachen von Risiken. Risiken tauchen in fast jedem Projekt auf, und können Überschreitungen des Zeit oder Budgetplans sein aber z.b. auch das ein wichtiger Mitarbeiter kündigt. 2.2. Qualitätssicherung Qualitätssicherung umfasst sowohl die Sicherstellung der Qualität des Produktes (also der Software) als auch des Prozesses der Softwareentwicklung. Dabei gehört zur Qualitätssicherung: Verifikation Erstellen wir das Produkt richtig? Validierung Erstellen wir das richtige Produkt? Testen (Fehlertest) Stellt das Vorhandensein von Fehlern fest Debuggen Fehlerquelle finden und entfernen Aber auch: die Planung sowie Kontrolle von Testdaten 2.3. Entwicklung Die Entwicklung von Software wird bei Software- Engineering in vier grundlegende Phasen eingeteilt: Software-Analyse & Spezifikation Analyse, ob das Projekt überhaupt durchführbar ist, und eine Spezifikation der Anforderungen an die Software. Die Anforderungen müssen regelmäßig auf Vollständigkeit, Korrektheit und Widerspruchsfreiheit geprüft werden. Dabei muß auch die Zielgruppe für eine Spezifikation im Auge behalten werden, der Kunde möchte wohl eher natürlichsprachlichen Text, der Entwickler formale Schreibweisen. Software-Entwurf & Implementierung Aus der Spezifikation wird erst die Architektur des Systems entworfen, dann werden die Merkmale der Software Spezifiziert, dann schließlich die Schnittstellen, Komponenten und Datenstrukturen entworfen. Erst danach werden die Algorithmen entworfen und implementiert. Software-Validierung Fehler in der Software sollte möglichst früh gefunden werden, da die Fehler sonst teurer werden. Daher wird Software in möglichst kleinen Modulen getestet und dann langsam die Interaktion zwischen den Modulen. Getestet wird ob die Software die Spezifikation erfüllt. Software-Evolution Die Weiterentwicklung von Software wird immer wichtiger und nimmt im Lebenszyklus einer Software meist einen größeren Kostenpunkt ein, als die eigentliche Entwicklung der Software. Sich ändernde Anforderungen werden aufgenommen und Spezifiziert. Diese werden mit der bestehenden Software

verglichen und dann Veränderungen Entworfen. Diese fließen im Standart Fall in die neue Software ein. Dieser Zyklus kann sich beliebig oft wiederholen. 3. Vorgehensmodelle Vorgehensmodelle sind eine vereinfachte Darstellung des Softwareprozesses. Wir werden hier das Wasserfallmodell und das Spiralmodell näher betrachten. Anforderungsdefinition Wasserfallmodell System- und Softwareentwurf Implementierung und Komponententest Integration und Systemtests Betrieb und Wartung Abb.1 Das erste veröffentlichte Modell für die Softwareentwicklung ist das Wasserfallmodell (Abb.1). Die einzelnen Phasen dieses Modells lassen sich wie folgt beschreiben. 1. Analyse und Definition der Anforderungen: Hier werden die Anforderungen an das System zusammen mit den Systembenutzern aufgestellt und daraus wird dann eine detaillierte Systemspezifikation erstellt. Es geht also um die Softwareanalyse und Spezifikation. 2. System- und Softwareentwurf : Die Anforderungen werden in Soft- und Hardwaresysteme aufgeteilt und es wird eine Systemarchitektur festgelegt. S.o. die Anmerkungen zum Softwareentwurf. 3. Implementierung und Komponententest: In dieser Phase des Softwareprozesses wird der Softwareentwurf in Programme und Programmeinheiten implementiert. Außerdem wird jede Einheit getestet um die Übereinstimmung jeder Einheit mit der Spezifikation zu garantieren. 4. Integration und Systemtest: Die einzelnen Programme und Programmeinheiten werden zu einem Gesamtsystem zusammengefügt und dann als ganzes getestet um die Übereinstimmung mit der Spezifikation des Systems sicherzustellen. Danach wird das System an den Kunden ausgeliefert. 5. Betrieb und Wartung: Normalerweise ist dies die längste Phase des Lebenszyklus. Das System wird installiert. Fehler die in den früheren Phasen nicht entdeckt wurden müssen behoben werden. Die Implementierung des Systems kann verbessert werden und auch die anderen Phasen des Softwareprozesses könnten überarbeitet werden, falls neue Anforderungen entdeckt werden.

Die Vorteile dieses Vorgehensmodells sind die gute Zeitplanung für das Management, da jede abgeschlossene Phase als ein erreichter Meilenstein im Projektzeitplan gesehen werden kann und natürlich auch eine gute Struktur der Software. Gleichzeitig ist die starre Aufteilung des Prozesses in verschiedene Phasen auch ein Nachteil. Da der Kunde nur in der ersten Phase die Möglichkeit hat die Software mitzugestalten. Und sicherlich lässt sich diese starre Aufteilung nicht immer wirklich realisieren, weil z.b. erst bei der Softwareentwicklung Fehler in den Anforderungen erkannt werden könnten. Was zur Folge hat das irgendwann die Weiterentwicklung der vorherigen Phase eingestellt wird um die nächste Phase einleiten zu können. D.h. es ist möglich das wir eine Software entwickeln die nicht mit den wirklichen Anforderungen des Kunden übereinstimmt. Bei größeren Systemen wird dieses Modell jedoch meistens angewendet. Spiralförmige Entwicklung Determine objectiv es alternatives and cons traints Plan next phase REVIEW Requirements plan Life-cycle plan Development plan Integration and test p lan analysis analys is analys is Prototype 2 analysis Prototype 1 Concept o f Operation S/W requirements Requirement validation Design V&V Serv ice Acceptance test Ev aluate alternatives identify, resolve risks Prototyp e 3 Operational protoype Simulations, models, bench marks Product design C ode Unit tes t Integration test Detailed design Develop, v erify next-level p roduct Abb.2 Anstelle den Softwareprozess als eine Folge von Aktivitäten und Rückwärtsbezügen von einer Aktivität zur anderen darzustellen, wird der Softwareprozess als eine Spirale(Abb.2) veranschaulicht. Jede Windung der Spirale steht für eine Phase des Prozesses. Die innere Windung beschäftigt sich mit der Machbarkeit, die nächste mit der Definition der Systemanforderungen die folgenden mit dem Systementwurf usw. Jede Windung der Spirale ist in 4 Segmente aufgeteilt: 1. Ziele aufstellen : Hier werden die Ziele für dieser Projektphase aufgestellt. Randbedingungen werden bestimmt und ein Managementplan wird erstellt. Auch die Projektrisiken sind aufzulisten. 2. Risiken einschätzen und verringern: Die erkannten Projektrisiken werden analisiert und man wird versuchen diese zu verringern. Es können auch Prototypen erstellt werden. 3. Entwicklung und Validierung: Hier wird ein Entwicklungsmodell ausgewählt je nach den erkannten Risiken im vorherigen Segment.

4. Planung: Es wird überprüft ob man mit der nächsten Windung beginnen kann. Falls das der Fall ist wird die nächste Phase geplant. Der wichtigste Vorteil dieses Modells ist die ausführliche Betrachtung der Risiken und deren Abwägungen. Außerdem haben wir eine bessere Flexibilität des Modells, da in jeder Phase erneut über das weitere Vorgehen entschieden wird. Der Hauptnachteil ist natürlich der hohe Zeitaufwand. Dieser hohe Zeitaufwand kann durch das Risikomanagement jedoch besser geplant werden und bei Problemen im Prozess können diese besser gehandhabt werden, wodurch der Gesamtzeitaufwand auch geringer als beim Wasserfallmodell ausfallen könnte. 4. Herausforderungen des Software- Engineering Legacy Systeme Alte Systeme die schon seit Jahrzehnten laufen, aber immer noch wichtig sind, müssen gewartet und angepasst werden. Dies ist immer häufiger ein Problem da oft die Dokumentaion fehlt, Fachkenntnisse oder sogar der Programmcode nur in Byte-Code vorliegt. Sicherheitskritische Systeme Systeme bei denen die Fehler Menschenleben gefährden könnten (Flugzeug-Software) stellen hohe Ansprüche an die Entwickler. Zunehmende Vielfalt und Verteiltheit Die vernetzte Systeme von verschiedene Systemen und Programmen die zusammenarbeiten sollen. verkürzten Lieferzeiten Als entscheidender Faktor im Wettbewerb wachsen die Anforderungen an Software,vor allem die Lieferzeiten werden immer kürzer gefordert. 5. Klassische S.E. vs. extreme Programming Stichwort Klassische Software Entwicklung extrem Programming Dokumentation Detaillierte Dokumentation aller Wenig Dokumentation Realisierungsphasen Strukturiertheit Stark strukturiert durch Vorgehensm. geringere Gefahr von Chaos Dynamischer Prozess Individueller und Flexibler Zeitaufwand Hoch in der Planungsphase gleichmäßig, schnelle Ergebnisse Wartung & Weiterentwicklung Gut, durch Dokumentation begünstigt Schwierig, da wenig Dokumentation; stark abhängig vom Entwicklerteam Flexibilität Schlecht, da alle Anforderungen bei Projektbeginn bekannt sein sollen Gut, Änderungswünsche können leicht umgesetzt werden Kommunikationsaufwand gering, gut für große Projekte hoch, schlecht für große Projekte Fazit: Beide Vorgehensweisen haben Vor- und Nachteile. Je nach dem Team und dem Kundenwünschen kann das eine oder andere besser geeignet sein. Bei großen Software Projekten führt jedoch kaum ein Weg an einem klassischen Ansatz vorbei, da XP hier nicht geeignet ist. In der Realität findet man oft auch Mischformen, in denen versucht wird die Vorteile beider Modelle zu verbinden. 6. Quellen: - Ian Sommerville: Software Engineering (6.Auflage). Pearson, 2001 - Folien der Vorlesung "Software-Engineering", von Ralf Möller, Univ. of Applied Sciences, FH-Wedel unter: http://www.fh-wedel.de/~mo/lectures/se-ws-02/vorlesung-1.pdf bis -7.pfd - Referat zum Thema Extreme Programming von Christian Dicke, Westfälische Wilhelms- Universität Münster unter http://danae.uni-muenster.de/~lux/seminar/ss02/dicke.pdf