Objektorientierte Software-Entwicklung



Ähnliche Dokumente
Abschnitt 16: Objektorientiertes Design

Software Engineering

Softwaretechnik. Fomuso Ekellem WS 2011/12

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Kapitel 2: Der Software-Entwicklungsprozess

Einführung in die Informatik

Grundlagen Software Engineering

Übungsaufgaben zum Software Engineering: Management

Softwareentwicklungsprozesse. 18. Oktober 2012

Wirtschaftsinformatik I Teil 2. Sommersemester Übung

IT-Projekt-Management

Qualitätssicherung. Was ist Qualität?

The Rational Unified Process. Eine Einführung von T. Langer und A. Nitert


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

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

Das Wasserfallmodell - Überblick

Softwaretechnik (Allgemeine Informatik) Überblick

IT-Basics 2. DI Gerhard Fließ. Vorgehensmodelle

Übungen zur Softwaretechnik

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

3.4 Unified Process Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process.

Systemdenken und Gestaltungsmethodik Einführung und Grundlagen II

Änderungsmanagement bei iterativer SW-Entwicklung

Was versteht man unter einem Softwareentwicklungsmodell?

3.2,,Eichung von Function Points (Berichtigte Angabe)

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Softwaretechnik. Fomuso Ekellem WS 2011/12

PROJEKTMANAGEMENT GRUNDLAGEN_2

Prozess-Modelle für die Softwareentwicklung

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

T1 - Fundamentaler Testprozess

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Requirements Management mit RequisitePro. Rational in der IBM Software Group. Der Rational Unified Process als Basis für die Projektarbeit

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

Software-Lebenszyklus

Validierung und Verifikation!

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I)

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

Der Projektmanager (nach GPM / IPMA) Fragen zur Selbsteinschätzung und für die Prüfungsvorbereitung. Kapitel B Vorgehensmodelle

Softwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013

Übungsklausur vom 7. Dez. 2007

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

Block R (Rahmen): SE Aktivitäten Vorlesung Methoden des Software Engineering. Block R Rahmen Aktivitäten der Software-Entwicklung

Klausur Software Engineering für WI (EuI)

FACHHOCHSCHULE MANNHEIM

Übung Einführung in die Softwaretechnik

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Wirtschaftsinformatik 2 Modellierung betrieblicher Informationssysteme - MobIS

Einführung in die SWE

1. Grundbegriffe des Software-Engineering

Der Rational Unified Process

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Software Engineering. 3. Anforderungsanalyse. Franz-Josef Elmer, Universität Basel, WS 2006/07

Software Systems Engineering

16 Architekturentwurf Einführung und Überblick

Software- Entwicklungsaktivitäten und Vorgehensmodelle. Lebenszyklusmodell

Requirements-Management Ein praktisches Beispiel

Software Engineering. 3. Analyse und Anforderungsmanagement

FUTURE NETWORK REQUIREMENTS ENGINEERING

Software Projekt 2 / Gruppe Knauth Lernziele:

9.6 Korrekturmaßnahmen, Qualitätsverbesserung

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

17 Architekturentwurf Vorgehen und Dokumentation

Qualitätsmanagement im Projekt

Microsoft SharePoint 2013 Designer

Präsentation Von Laura Baake und Janina Schwemer

RTLOpen - Eine Methode zur interdisziplinären Entwicklung von software-intensiven Echtzeit-Systemen

SWE12 Übungen Software-Engineering

Angepasste Software Standards für DLR- Eigenentwicklungen - Die DLR Software Basisstandards -

Softwaretechnik. Vertretung von Prof. Dr. Blume Fomuso Ekellem WS 2011/12

Wir erledigen alles sofort. Warum Qualität, Risikomanagement, Gebrauchstauglichkeit und Dokumentation nach jeder Iteration fertig sind.

Einführung in die Softwareentwicklung

Use Cases. Use Cases

dspace bildet aus! Ausbildung zum Fachinformatiker Anwendungsentwicklung (w/m)

Seamless Model-based Engineering of a Reactive System

Softwarequalität. TÜV SÜD Product Service GmbH. Damit Ihre Softwareprodukte sicher ins Ziel kommen.

Softwarequalität: Einführung. 15. April 2015

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

WSR Softwarewartung und Prozessmodelle in Theorie und Praxis. Urs Kuhlmann Andreas Winter

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt

Festpreisprojekte in Time und in Budget

Referent: Mathias Notheis Kontakt:

Klausur Software-Engineering SS 2005 Iwanowski

Agile Software-Entwicklung im Kontext der EN50128 Wege zum Erfolg

BIF/SWE - Übungsbeispiel

Wirtschaftsingenieurwesen (Informationstechnik) Modulname. Programmierung II / Software Engineering II Modulnummer

T2 Fundamentaler Testprozess

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

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

Testen Prinzipien und Methoden

Einführung und Motivation

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen

Entwurf. Anwendungsbeginn E DIN EN (VDE ): Anwendungsbeginn dieser Norm ist...

Transkript:

Objektorientierte Software-Entwicklung Priv.- Doz Dr. Rolf Hennicker 04.10.2002

Kapitel 1 Software Engineering: Überblick

Kapitel 1 Software Engineering: Überblick 2 Ziele Verstehen, womit sich die Disziplin des Software Engineering beschäftigt Qualitätskriterien von Software kennen Die wichtigsten Vorgehensmodelle in der Software-Entwicklung kennen Die Grundprinzipien der objektorientierten Software-Entwicklung verstehen

1.1 Einführung 3 1.1 Einführung Software = Menge von Programmen mit begleitenden Dokumenten. Systemsoftware zum Betrieb und zur Wartung von Rechensystemen (Betriebssysteme, spezielle Dienstprogramme wie Editoren, WWW-Browser, Compiler, Shell,...) Anwendungssoftware zur Lösung bestimmter, kundenspezifischer Aufgaben in Wirtschaft (z.b. Banken, Versicherungen, Reisebüros) Verwaltung (z.b. KFZ-, Uni-, Lagerverwaltung) Technik (z.b. Steuerungssysteme, naturw. Simulationen) Beachte: Die Erschliessung neuer Anwendungsbereiche und der Umfang von Software nimmt ständig zu.

1.1 Einführung 4 Problem: Komplexität der Software, häufige Änderungen von Umgebungen und Anforderungen. goßes Softwaresystem 50.000 lines of code ( 10 PJ) sehr goßes Softwaresystem 1 Mio lines of code ( 100 PJ) Beispiele: Handy: 200.000 loc, System R/3: 7 Mio loc, Windows95: 10 Mio loc Konsequenz: Mangelnde Software-Qualität, Fehler!! Beispiele: Handy bis zu 600 Fehler (dh. 3 Fehler pro 1000 loc), Windows95 bis zu 200.000 Fehler (dh. 20 Fehler pro 1000 loc) Space Shuttle weniger als 1 Fehler pro 10.000 Zeilen. Man spricht von normaler SW bei 25 Fehlern pro 1000 loc guter SW bei 2 Fehlern pro 1000 loc

1.1 Einführung 5 Historisches 1965 Softwarekrise: Umfang der SW für komplexe Anwendungen wird nicht mehr beherrscht, Methoden des Programmierens im Kleinen greifen nicht mehr 1968/69: Der Begriff Software Engineering wird geprägt Idee: Anwendung ingenieurmäßiger Methoden bei der SW-Entwicklung Definition 1 (nach Fairley 1985): Software Engineering ist die technische und organisatorische Disziplin zur systematischen Herstellung und Wartung von Softwareprodukten, die zeitgerecht und innerhalb vorgegebener Kostenschranken hergestellt und modifiziert werden.

1.1 Einführung 6 Ziele des SW Engineering Software hoher Qualität (aus Sicht des Benutzers und des Entwicklers) Beherrschung der Kosten und der Entwicklungszeit (aus wirtschaftlicher Sicht)

1.1 Einführung 7 Software-Entwicklung Definition von Anforderungen Entwurf von Lösungen Implementierung und Wartung Bereiche des Software Engineering Erstellen von Modellen und Dokumenten Qualitätssicherung Analytische Maßnahmen wie Codeinspektion, Testen, Validieren, Verifizieren Konstruktive Maßnahmen wie Einhaltung methodischer Richtlinien, Wiederverwendung qualitativ hochwertiger Komponenten Projektmanagement Projektplanung (Projektbeschreibung, Zeitplan mit Meilensteinen, Kosten- und Personalplanung) Projektkoordination (nach innen und nach aussen) Projektkontrolle (Bewertungen, Risikoabschätzung, Berichte)

Kapitel 1 Software Engineering: Überblick 8 Zur Lösung dieser Aufgaben verwendet man Vorgehensmodelle (Aus welchen Phasen besteht der SW-Lifecycle?) Techniken (Notationen) zur konkreten Beschreibung und Lösung einzelner Aufgaben (z.b. UML, Java) Methoden zum systematischen Einsatz der Techniken Werkzeuge (CASE Tools)

1.2 Qualitätskriterien von Software 9 1.2 Qualitätskriterien von Software 1. Korrektheit: Ein Softwareprodukt erfüllt die in einer Spezifikation beschriebenen Anforderungen Beachte: Der Nachweis der Korrektheit ist nur mit formalen Methoden möglich. Falls die Spezifikation nicht die Anforderungen des Anwenders wiedergibt, leistet auch korrekte Software nicht das Gewünschte. 2. Zuverlässigkeit: Wahrscheinlichkeit, dass ein SW-Produkt eine gewünschte Funktion erfüllt. Hohe Zuverlässigkeit bedeutet, dass Fehler selten auftreten und nur geringe Auswirkungen haben. 3. Robustheit: Sinnvolle Reaktion bei Fehlern, die in der Umgebung auftreten (z.b. Bedienungsfehler, Fehler anderer Systeme) 4. Benutzerfreundlichkeit: Einfache Erlernbarkeit und Bedienbarkeit eines SW-Systems (übersichtliche und adäquate Benutzerschnittstelle, Lernprogramme, Hilfen, verständliche Fehlermeldungen).

Kapitel 1 Software Engineering: Überblick 10 5. Wartbarkeit: Möglichst einfache Lokalisierung und Behebung von Fehlern. Möglichst einfache Änderbarkeit und Erweiterbarkeit. 6. Effizienz (Performanz): Angemessenes Laufzeitverhalten und Speicherplatzbedarf 7. Dokumentation: Sowohl für den Benutzer (Handbücher) als auch für den (Weiter-)Entwickler (Dokumentation der einzelnen Entwicklungsschritte, der Implementierung, von Testplänen,...). 8. Portabilität: Übertragbarkeit der Software auf andere Rechner.

1.3 Vorgehensmodelle 11 1.3 Vorgehensmodelle Das Wasserfallmodell Anforderungsanalyse Entwurf Implementierung Test Einsatz & Wartung

1.3 Vorgehensmodelle 12 Anforderungsanalyse (engl. requirements analysis): Analyse des Problembereichs Festlegung der (funktionalen und nicht funktionalen) Anforderungen an das System Was soll das System leisten? Festlegung organisatorischer Richtlinien (Aufwandsabschätzung, Terminplanung,...) und von Rahmenbedingungen (z.b. vorhandene Soft- und Hardware). Ergebnis der Anforderungsanalyse ist eine Anforderungsbeschreibung (Spezifikation, Modell). Diese dient als Vertrag zwischen Anwender und SW-Entwickler und als Grundlage für die weitere Systementwicklung. Problem: Mögliche Missverständnisse zwischen Anwender und Entwickler.

1.3 Vorgehensmodelle 13 Entwurf (engl. design): Beschreibt die Art und Weise, in der die gestellten Aufgaben gelöst werden sollen. Wie lösen wir das Problem? Festlegung der Systemarchitektur Entwurf der einzelnen Systemkomponenten (Wahl von Datenrepräsentationen und Algorithmen) Ergebnis der Entwurfsphase ist eine Entwurfsbeschreibung (Spezifikation, Modell). Implementierung: Codierung des Entwurfs in einer Programmiersprache, ggf unter Wiederverwendung vorhandener Komponenten.

1.3 Vorgehensmodelle 14 Test: Test der einzelnen Komponenten ( unit testing ) Schrittweises Zusammenfügen einzelner Komponenten mit jeweiligem Integrationstest Systemtest Abnahmetest (mit echten Daten des Anwenders) Wartung: Fehlerbeseitigung nach Inbetriebnahme Änderung und Erweiterung des Systems

1.3 Vorgehensmodelle 15 Schätzung der aktuellen Kosten in der Systementwicklung Anforderungsanalyse 6% Entwurf 5% Implementierung 7% Integration und Test 15% Wartung 67% (davon 40% um existierende Programme zu verstehen!) Bemerkungen zum Wasserfallmodell Klare Trennung der verschiedene Phasen. Schwierigkeiten in einer Phase verzögern das Gesamtprojekt Validierung des Produkts durch den Kunden ist erst nach Abschluss der gesamten Entwicklung möglich Streng sequentielle Vorgehensweise ist in der Praxis kaum möglich, da Fehler aus früheren Phasen häufig erst später erkannt werden Anforderungen sich ändern können Häufig werden einzelne Phasen weiter verfeinert, z.b. Grob- und Feinentwurf

1.3 Vorgehensmodelle 16 Das Prototyp-orientierte Modell Prototyp = Vorabversion (von Teilen) des intendierten Systems. Charakteristika von Prototypen: Schnelle und billige Herstellung eingeschränkte Funktionalität, nicht robust, schlechte Performanz häufig zur Demonstration von Benutzeroberflächen Anforderungsanalyse Prototyp erstellen Mit Prototyp experimentieren Nächste Phase Prototyp & Spezifikation modifizieren [nicht akzeptiert] [akzeptiert] Vorteil: Frühzeitige Validierung durch den Kunden Unterscheide: Wegwerf-Prototypen und Prototypen zur Weiterentwicklung

1.3 Vorgehensmodelle 17 Iteratives Vorgehensmodell Der Entwicklungsprozess besteht aus einer Folge von Zyklen (Iterationen). Analyse Test Entwurf Implementierung Am Ende jedes Zyklus steht eine neue (ausführbare) Version des SW-Produktes, die die vorherige verbessert und erweitert. Wartung = weiterer Zyklus zur Erstellung eines verbesserten Produkts nach Inbetriebnahme.

1.3 Vorgehensmodelle 18 Vorteil: Häufiger Kontakt zum Anwender jeweils bei der Erstellung einer neuen Version ( evolutionäres Prototyping ) Nachteil: Risiko, dass die Architektur der bereits implementierten Teile nicht zu den neu hinzukommenden Anforderungen passt. Spezielle Ausprägung: Unified Process (UP) nach Jacobson, Booch und Rumbaugh (1999).

1.3 Vorgehensmodelle 19 Charakteristika des Unified Process: Anwendungsfall gesteuert ( Use Case driven ) Architektur-zentriert Iterativ, wobei jede Iteration aus den Arbeitsschritten Anforderung, Analyse, Entwurf, Implementierung und Test besteht. Verschiedene Iterationen werden in einzelnen Phasen zusammengefasst, wobei es die 4 Phasen Beginn, Ausarbeitung, Konstruktion und Umsetzung gibt.

1.3 Vorgehensmodelle 20 XP: extreme Programming Charakteristika viel Kommunikation (paarweises Programmieren, schnelle Rückmeldung durch den Anwender) Einfachheit (implementiere das Einfachste, das funktioniert) inkrementelle Erweiterung (iterativ) Wähle Aufgabe (aus "User Stories") Lasse alle Test laufen Schreibe Tests Integriere die Änderungen in das System Implementiere bis die Tests laufen

Kapitel 1 Software Engineering: Überblick 21 Das Spiralmodell (nach Boehm, 1988) Grundidee: Risikobeherrschung Festlegung von Zielen Lösungsvarianten Nebenbedingungen und Einschränkungen Projektfortschritt Risikoanalyse Risikoanalyse Erarbeitung und Beurteilung von Lösungsvarianten Erkennen und Beseitigen von Risiken Risikoanalyse Review Life Cycle Plan operationaler Prototyp1 Prototyp2 Prototyp3 Prototyp Vorgehens modell Planung der nächsten Phasen Entwicklungs plan Integration und Test System spezifikation Validierung der Spezifikation Validierung und und Verifikation des Entwurfs Installation Abnahme test Architektur Entwurf Feinentwurf Integration und Integrations test Codierung Komponenten test Entwicklung und Validierung des Produkts der nächsten Stufe

1.4 Grundprinzipien der objektorientierten SW-Entwicklung 22 1.4 Grundprinzipien der objektorientierten SW-Entwicklung Ein System besteht aus einer Menge von Objekten, die sich (gegenseitig) Nachrichten schicken. Der Empfang einer Nachricht löst eine Operation des (empfangenden) Objekts aus. Ein Objekt ist ein individuelles Exemplar mit einer eindeutigen Identität. Eine Klasse beschreibt eine Menge von Objekten mit gemeinsamen Merkmalen. Merkmale von Objekten sind: Attribute (z.b. Name, Alter einer Person,...) Operationen, die jedes Objekt der Klasse ausführen kann (z.b. radfahren, schreiben,...) (mögliche) Beziehungen zu anderen Objekten (z.b. Auto gehört einer Person) Die aktuellen Attributwerte (und Beziehungen) zu einem Zeitpunkt bestimmen den Objektzustand. Klassen können spezialisiert werden (z.b. Auto ist ein spezielles Fahrzeug) (Vererbungsprinzip!)

Kapitel 1 Software Engineering: Überblick 23 Vorteile der objektorientierten SW-Entwicklung Objekte der realen Welt können auf ein objektorientiertes Modell oder objektorientiertes System abgebildet werden. Objektorientierte Techniken können auf verschiedenen Ebenen der Systementwicklung eingesetzt werden. OO-Analyse OO-Entwurf OO-Programm Einfache Erweiterbarkeit und Wiederverwendbarkeit (z.b. durch Hinzunahme von Subklassen durch Vererbung).

1.4 Grundprinzipien der objektorientierten SW-Entwicklung 24 Ziele des SW Engineerings sind die Erstellung von Software hoher Qualität Zusammenfassung die Beherrschung der Kosten und der Entwicklungszeit Bereiche des SW Engineerings sind SW-Entwicklung, Qualitätssicherung, Projektmanagement. In der SW-Entwicklung verwenden wir Vorgehensmodelle, Methoden, Techniken und Werkzeuge. Qualitätskriterien von SW sind Korrektheit, Zuverlässigkeit, Robustheit, Benutzerfreundlichkeit, Wartbarkeit, Effizienz, Dokumentation, Portabilität. Bekannte Vorgehensmodelle sind Wasserfallmodell, Prototyp-orientiertes Modell, Iteratives Modell (z.b. UP), Spiralmodell, XP (extreme Programming). MMISS: Kurztitel, October 18, 2002