8. Softwareentwicklung



Ähnliche Dokumente
Software Engineering

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Prozess-Modelle für die Softwareentwicklung

Eberhard Lehmann: Projekte im Informatik-Unterricht Software Engineering, Ferd. Dümmlers Verlag, Bonn Inhaltsverzeichnis.

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

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

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

IT-Projekt-Management

Das Wasserfallmodell - Überblick

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

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

Abschnitt 16: Objektorientiertes Design

Kapitel 2: Der Software-Entwicklungsprozess

Einführung und Motivation

Wirtschaftsinformatik I Teil 2. Sommersemester Übung

Übungen zur Softwaretechnik

Übungsaufgaben zum Software Engineering: Management

Some Software Engineering Principles

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Die Softwareentwicklungsphasen!

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Vitaphone Software Entwicklung Vorgehensmodell 19. Oktober 2011 Berlin. Dr. Michael Hübschen

IT-Basics 2. DI Gerhard Fließ. Vorgehensmodelle

FACHHOCHSCHULE MANNHEIM

Qualitätsmanagement. Andreas Bäuml SWT-Projekt WS 07/08

16 Architekturentwurf Einführung und Überblick

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Einführung in die Informatik

Installation der Eicon Diva PCI Karte unter Windows XP

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

Grundlagen Software Engineering

Hilfen zur Verwendung der Word-Dokumentvorlage des BIS-Verlags

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Praktikant / Abschlussarbeit im Bereich Softwareentwicklung / Mechatronik (m/w)

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

Xesar. Die vielfältige Sicherheitslösung

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Ausgangslage, Rolle und Auftrag

Softwaretechnik. Fomuso Ekellem WS 2011/12

PROJEKTMANAGEMENT GRUNDLAGEN_2

Übung Einführung in die Softwaretechnik

Softwareentwicklung bei KMU - Ergebnisse einer Studie zum Entwicklungs-, Projekt- und Qualitätsmanagement

Requirements Engineering WS 11/12

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Softwareentwicklungspraktikum Sommersemester Grobentwurf

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

Software-Entwicklung

Viele Bilder auf der FA-Homepage

Info-Veranstaltung zur Erstellung von Zertifikaten

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Program = Logic + Control

Informatik I Debugging

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Einführung in die Programmierung der Schnittgrößenermittlung am Einfeldträger J. Lange

Objektorientierte Programmierung OOP

Erstellen von x-y-diagrammen in OpenOffice.calc

T1 - Fundamentaler Testprozess

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

Software Engineering

Empirische Softwaretechnik Kosten und Nutzen von UML in der Wartung Dr. Victor Pankratius Andreas Höfer Wintersemester 2009/2010

Software Engineering. Dokumentation. Wintersemester 2005/06. Kapitel 21. Universität Zürich Institut für Informatik

Kapitel 10: Dokumentation

Dienstprogramme. Dienstprogramme (Werkzeuge)

Software Systems Engineering

Installationsanleitung für das KKL bzw. AGV4000 Interface

Wahlpflichtfach Software Engineering

Prüfung Software Engineering I (IB)

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

1 Vom Problem zum Programm

Informationen zur Verwendung von Visual Studio und cmake

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

IKP Uni Bonn Medienpraxis EDV II Internet Projekt

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

QM: Prüfen -1- KN

Klausur Software-Engineering SS 2005 Iwanowski

Installationsanleitung für Update SC-Line

ecambria experts IT-Projekte in der Krise Ursachen und Vermeidungsstrategien aus Sicht eines Gerichtssachverständigen

Produktionsplanung und steuerung (SS 2011)

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

A-CERT ADVANCED pdf-signaturprüfung einrichten 2008

Was versteht man unter Softwaredokumentation?

Arbeiten mit UMLed und Delphi

mit attraktiven visuellen Inhalten

1. Grundbegriffe des Software-Engineering

Technische Dokumentation: wenn Englisch zur Herausforderung wird

Softwaretechnik (Allgemeine Informatik) Überblick

Erfolgreiche Realisierung von grossen Softwareprojekten

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Installationsanleitung

Der Einsatz von Open-Source-Produkten im Unternehmen, dargestellt am Beispiel von OpenOffice

Projektmanagement PPSAP WS 03/04. Inhaltsverzeichnis : 1. Projektmanagement

6. Programmentwicklung

SPI-Seminar : Interview mit einem Softwaremanager

Was versteht man unter einem Softwareentwicklungsmodell?

Transkript:

Schwerpunkte Problematik komplexer Programme 8. Softwareentwicklung (Software Engineering) Statistische Angaben zur Softwareentwicklung Eigenschaften von Software Qualitätskriterien für SW-Produkte Einbettung der Programmierung in der Gesamtprozess der Softwareentwicklung Vorgehensmodelle der SW-Entwicklung: Phasen Produkte Einbettung der Programmierung in der Gesamtprozess der Softwareentwicklung K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 20015/16 Version: 02.11..2015 2 Programmentwicklung: Edit-, Compile-, Run-, Debug-Zyklus Software Programmidee Editor class T {... } semantischer Fehler Debug Compilationsfehler Tatsächlich so in der Praxis? Compiler Laufzeitfehler 0 getstatic... 3 ldc... Ausgabe: inkorrekt Run (Abarbeitung) Ausgabe: korrekt 3 4

Software Software 6 5 6 Software Beispiele: Größe von Softwaresystemen Mio SLOC Space shuttle (2010) 0.4 Windows NT 3.1 (1993) 4 Windows NT 4.0 (1996) 12 Windows XP (2001) 40 Windows Vista (2007) 50 Windows 8 (2012) 60 Mac OS X 86 Car software, high-end (embedded system, 2014) 100 SAP NetWeaver (2007) 238 SLOC: Source Lines of Code 7 7 Quelle: http://www.informationisbeautiful.net/visualizations/million-lines-of-code/ K. Bothe, HU Berlin, Software Engineering 8

Probleme der Komplexität von Software Fragen: Statistische Angaben zur Softwareentwicklung (1) Software fehlerhaft, zu spät fertig, teurer als gedacht (Fragen nach Mynatt: Software Engineering, S. 1) F18 Kampfflugzeug: 1983 während einer Übung mit der neu entwickelten Flugzeugsoftware beim Überflug des Äquators stellte sich das Flugzeug auf den Kopf. Der Gr war ein Vorzeichenfehler im Programm (Wallmüller 1990, S. 1). 1. Ein typisches (durchschnittliches) Softwareentwicklungsprojekt dauert a) 1-6 b) 6-12 c) 12-24 d) 24-48 Monate Flughafen von Denver: konnte (Anfang 1994) nicht eröffnet werden - die Software für das Gepäcktransportsystem funktionierte nicht (Folgekosten...). LKW-Maut-System (Toll Collect) zwei Jahre später fertig als geplant: statt 2003 erst 2005 Software wurde nicht fertig 2. Für ein Software-System mittlerer Größe werden im Durchschnitt a) weniger als 10 b) 10-100 c) 100-300 d) mehr als 300 Zeilen Quellcode pro Person pro Tag während der gesamten Periode der Entwicklungszeit des Systems produziert. 9 10 Fragen: Statistische Angaben zur Softwareentwicklung (2) Fragen: Statistische Angaben zur Softwareentwicklung (3) (Fragen nach Mynatt: Software Engineering, S. 1) 3. Die durchschnittliche Anzahl von Fehlern in 1000 Zeilen Quellcode während der Entwicklung eines Software-Systems beträgt a) weniger als 30 b) 30-40 c) 40-50 d) 50-60 4. Die durchschnittliche Anzahl von Fehlern in 1000 Zeilen Quellcode in einem ausgelieferten System beträgt a) weniger als 4 b) 4-8 c) 8-12 d) mehr als 12 5. Wie viele Software-Systeme, mit deren Entwicklung begonnen wurde, werden auch beendet? a) 90-100 % b) 80-90 % c) 70-80 % d) 60-70 % 6. Die meisten Software-Fehler sind zurückzuführen auf a) Programmierfehler b) Probleme beim Verständnis des Problems c) Zeitdruck d) Fehler im Entwurf der Software (Struktur) 11 12

Fragen: Statistische Angaben zur Softwareentwicklung (4) Frage: Defektrate 7. Wie hoch ist der zeitliche Anteil der Programmierung bei der Softwareentwicklung? a) 99 % b) 70 % c) 50 % d) 20 % e) 10 % Defektrate = Anzahl der Fehler auf 1000 Zeilen Quellcode 8. Die Kosten für die Wartung von Software sind typischerweise a) halb so b) genauso c) doppelt so hoch wie die Entwicklungskosten für die Software (Wartung = Änderung, Weiterentwicklung von Software nach ihrer Fertigstellung) Die Defektrate hat sich aufgr der steigenden Komplexität der Software von 1977 bis 1994 wie folgt entwickelt: a) auf das 10fache gestiegen b) auf das Doppelte gestiegen c) gleich geblieben d) auf 1% gesunken (Gr: Fortschritte des Software Engineering) 13 14 Konsequenzen Komplexität von Software Nach Erhalt einer SW-Entwicklungsaufgabe: - nicht sofort "drauflos" programmieren - zunächst gründlich die Aufgabe durchdenken, Unklarheiten beim Ken nachfragen... Programmierung macht bei der SW-Entwicklung nur einen kleineren Anteil aus. Genauso wichtig sind Fähigkeiten wie 'exakte Problembeschreibung finden', systematische Fehlersuche u. a. Bereits bei der Programmierung muss an die Zeit nach der Auslieferung der SW gedacht werden (Wartung): lesbare, gut strukturierte, gut kommentierte Programme SW-Entwicklung bedeutet immer 'Teamarbeit' "Softwaresysteme gehören zu den komplexesten Gebilden, die je von Menschenhand geschaffen wurden. Strukturen Abläufe in großen Systemen sind im einzelnen oft nicht mehr überschaubar. Man kann sie weder im vorhinein, beim Entwurf, noch im nachhinein, beim Testen, im Betrieb in der Wartung vollständig verstehen." (Denert, Software-Engineering, S. 4) "Das entscheidende Charakteristikum der industriell einsetzbaren Software ist, daß es für den einzelnen Entwickler sehr schwierig, wenn nicht gar unmöglich ist, alle Feinheiten des Designs zu verstehen. Einfach ausgedrückt, überschreitet die Komplexität solcher Systeme die Kapazität der menschlichen Intelligenz. (Booch, Objektorientierte Analyse Design, S.18) 15 16

Eigenschaften von Software: (vgl. Balzert, S. 26 f., Denert) Klassifikation der Softwaregröße: (A. Macro, S. 70) - kein Verschleiß (keine Abnutzung beim Einsatz) Software = Programme, Daten, Dokumentation - lange in Benutzung **) klein: bis 2000 Zeilen Quelltext mittel: 2000-100 000 groß: 100 000-1 000 000 sehr groß: > 1 Mio - leicht kopierbar ( auch Fehler) - altert *) (SW wird ständig angepasst) - schwer zu vermessen (Metriken: Qualität, Quantität) - äußerst komplex (in der Praxis) Durchschnittliche Größe verwalteter Software unter den 100 größten USA-Firmen: 35 Mio Zeilen Quellcode (Hausi Müller, S. 3-12) *) nach 10 Jahren Einsatzzeit existiert oft keine Originalzeile mehr (Faustregel, nach Pagel, Six S. 35) **) durchschnittlich 10-15 Jahre, (Wallmüller 90, S. 3) bis zu 30 Jahren (Hausi Müller) 17 18 Qualitätskriterien für SW-Produkte (nach Pagel/Six, Pomberger, Meyer, Marciniak) Modelle der Softwareentwicklung Alternative Begriffe: Korrektheit Robustheit (z. B. bei Fehlbedienung) Effizienz Benutzerfrelichkeit Modifizierbarkeit Lesbarkeit (Verständlichkeit) (Kommentare, sinnvolle Bezeichnerwahl, Formatierung...) Wiederverwendbarkeit Modularität (zerlegt in Module / Komponenten) Portabilität übertragbar auf anderen Rechner... - Vorgehensmodelle - Phasenmodelle - Lebenszyklusmodelle Ziel: systematische Software-Entwicklung wesentlich für Entwicklung komplexer Software (vgl. Probleme: SW ist fehlerhaft, zu spät fertig...) Erfahrung: Ohne ein systematisches Herangehen an die SW-Entwicklung keine qualitativ hochwertige Software! 19 20

Analyse Definition Klassisches Wasserfallmodell für die Softwareentwicklung Entwurf SW-Entwicklung: Phasen Produkte Analyse Definition Analyse des Problems + Definition der Anforderungen an das SW-Produkt Gegenstand: Außenverhalten des SW-Systems Kooperation: Auftraggeber Auftragnehmer Produktdefinition (Systemspezifikation, Anforderungsdefinition, Pflichtenheft) Implementation Test Entwurf (Design) Struktur, Aufbau, Komponenten der SW ihre Beziehungen festlegen Software-Architektur Implementation GdP Software-Architektur "ausgefüllt": Programmierung der Komponenten Programm Einsatz Wartung Test Test der Komponenten, Test ihrer Integration, Systemtest Testprotokolle: Testfälle, Ergebnisse des Testlaufs 21 22 Dokumente der SW-Entwicklung Informationsübertragung im Laufe eines Software-Projektes Kenwünsche Spezifikation Entwurf Code Wie der Ke es erklärte Wie der Projektleiter es verstand Wie der Software- Architekt es entwarf Wie der Programmierer es schrieb Wie der Tester es hinterließ Ke Analytiker Entwerferin Programmierer Geforderte Eigenschaften (leer) gehen verloren, unnötige (gefüllt) kommen hinzu Quelle: Schneider, SEUH 43, S. 123 Wie der Business Wie das Projekt Consultant es beschrieb dokumentiert wurde Was dem Ken berechnet wurde Wie es betreut wurde Was der Ke eigentlich bräuchte Quelle: unbekannt 23 K. Bothe, HU Berlin, Software Engineering 24

Programmentwicklung: Edit-, Compile-, Run-, Debug-Zyklus Programmidee Analyse Definition Entwurf Programmidee Editor semantischer Fehler Implementation class T {... } Debug Test So nicht! Compiler Compilationsfehler Laufzeitfehler Editor semantischer Fehler class T { Debug... } Compilationsfehler Einsatz Wartung 0 getstatic... 3 ldc... Ausgabe: inkorrekt Compiler Laufzeitfehler Run (Abarbeitung) Ausgabe: korrekt 25 0 getstatic... 3 ldc... Ausgabe: inkorrekt Run (Abarbeitung) Ausgabe: korrekt 26 Studentische Softwareentwicklung - zu Beginn des Studiums - Softwareentwicklung in Job-Angeboten Read the problem (day 1) Code (day 1 to n-2) Debug (day n-1) Document (day n- ) Hand in (day n) Fig. 3. "Normal student view of software life cyle (Quelle: Modesitt, in LNCS, S. 42) (Quelle: Communications of the ACM) 27 28

Kostenverteilung im Software Life-Cycle Anforderungsanalyse; 3% Spezifikation; 3% Design; 5% Kodierung; 7% Modultest; 8% Analyse Definition Klassisches Wasserfallmodell für die Softwareentwicklung Entwurf Integrationstest; 7% Wartung; 67% Nachteil? Test Quelle: Klösch, Gall, 1995, S.3 Einsatz Wartung 29 30 Iteratives Phasenmodell für die Softwareentwicklung Vorgehensmodelle: Überblick Analyse Definition Entwurf - Klassisches Phasenmodell (Wasserfallmodell) - Iteratives Phasenmodell (Lebenszyklus) - Spiralmodell Implementation Implementation - Prototyping (evolutionäre Softwareentwicklung) - Inkrementelle Softwareentwicklung (z.b. RUP) Test - V-Modell Einsatz Wartung Vorlesung "Software Engineering" 31 32