Post on 23-Aug-2020
Softwaretechnik 1Vorlesung
Prof. Dr. Bernhard RumpeSoftware Systems EngineeringTechnische Universität Braunschweig
http://www.sse-tubs.de/
Farbe!
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 2
Software Systems Engineering
Prof. Dr. Bernhard RumpeMühlenpfordtstraße 23, 3.OGZimmer 347Email b.rumpe @ sse-tubs.deSprechzeit: Do, 12.30-13.00 und nach Email-Vereinbarung
Alexej Beresnev, Claas PinkernellMühlenpfordtstraße 23, 4.OGRaum 412 Email beresnev / pinkernell @ sse-tubs.deSprechzeit: Di, 10.00-11.00 und nach Email-Vereinbarung
Internet-Seite zur Vorlesung:http://www.sse-tubs.de/teaching/ws0809/se1/
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 3
SSE in der Lehre:Softwaretechnik im 3-Stufen-Konzept
� (1) Softwaretechnik I im 3+4ten Semester (4LP) + SEP (6LP)
� (2) Vertiefungsgebiet-Vorlesungen im Bachelor, Auswahl:
• Software Engineering Management (4LP)
• Modellbasierte Softwareentwicklung (4LP)
• Softwarearchitektur (4LP)
• Leitlinien großer IT-Projekte in der Praxis (Dr. Teille)
• Management von Software-Entwicklungsprojekten(Prof. Dr. Axmann)
• Prozesse und Methoden beim Testen von Software (Dr. Kriebel)
� + Praktikum + Seminar
� (+ Studienarbeit + Diplomarbeit)
� + Teamarbeit + Bachelorarbeit + Masterarbeit
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 4
Vorlesung Softwaretechnik
� Voraussetzungen:
• gute Programmierkenntnisse (ideal ist Java)• Wissen über Programmieren wird hier nicht mehr vermittelt.
� Hörerkreis: Studierende der
• Informatik im 3. Semester
• Wirtschaftsinformatik im 3. Semester
• Informationssystemtechnik im 3. Semester
• Medienwissenschaft im Hauptstudium
• sowie Nebenfächer
� Weitere Infos: Mailingliste sse-teaching abonnieren!
Literatur: • Sommerville 1.1• Balzert Band 1, LE 1
Prof. Dr. Bernhard RumpeSoftware Systems EngineeringTechnische Universität Braunschweig
http://www.sse-tubs.de/
1. Softwaretechnik
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 6
� Was ist Softwaretechnik eigentlich?
� Warum ist Softwaretechnik notwendig?
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 7
4. Juni 1996: Erster Start der "Ariane-5"
� Während des Fluges läuft ein unnötiges Kalibrierungs-programm für die Trägheitssensoren.
� Die gemessenen Werte der Ariane-5 überschreiten die in der Ariane-4-Software vorgesehehen Bereiche.
� Die (Ada-)Exception wird durch Anhalten des Steuerungscomputers behandelt, um auf ein zweites redundantes System umzuschalten.
� Im zweiten System tritt der gleiche Software-Fehler auf und wird identisch behandelt.
� Kosten des Ariane-5-Programms bis 1996:ca. 8 Milliarden US-$
� Wert des zerstörten Satelliten: ca. 500 Millionen US-$
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 8
Software-Katastrophen: Kein Einzelfall
� Terminliche, finanzielle und technische Katastrophen:• 1999: Fehlstart einer Titan/Centaur-Rakete wegen falscher Software-
Version
• 1999: Verlust der Sonde "Mars Climate Orbiter" wegen falscher Einheitenumrechnung
• 1994: Eröffnung des Denver International Airport um 9 Monate verzögert wegen Softwareproblemen im Gepäcktransport-System
• 2002: Verzögertes und unfertiges Buchhaltungssystem führt zum Zusammenbruch eines US-Lebensmittelsherstellers
• 2003/4: Toll Collect: Termin u.a. wegen Softwareproblemen mehrfach verschoben, Kosten > 1 Milliarde Euro
• 2006: Gesundheitskarte, ...
� USA: Verlust im Jahr 2004 ca. 160 Milliarden US-$ wegen defekter Software.
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 9
Die permanente Softwarekrise ?
� 1965: Der Begriff der Softwarekrise etabliert sich
� Studie von 1979 zu Softwareprojekten (USA):
• 75% der Ergebnisse nie eingesetzt
• 19% der Ergebnisse stark überarbeitet
• 6% benutzbar.
� Studie von 1994 zu Software-Großprojekten (IBM Consulting):
• 55% Kostenüberschreitung
• 68% Terminüberschreitung
• 88% Bedarf für starke Überarbeitung
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 10
Erfolgsstatistik von IT-Projekten
Quelle: CHAOS Report, Standish Group International, Inc.
16
27
26
28
29
31
40
28
23
18
53
33
46
49
53
0% 20% 40% 60% 80% 100%
1994
1996
1998
2000
2004
Succeeded
Failed
Challenged
Literatur: • Sommerville 1.1• Balzert Band 1, LE 1
Prof. Dr. Bernhard RumpeSoftware Systems EngineeringTechnische Universität Braunschweig
http://www.sse-tubs.de/
1. Softwaretechnik
1.1. Softwaresysteme und Softwaretechnik?
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 12
Softwaresysteme
� Softwaresystem
• Ein System (oder Teilsystem), dessen Komponenten aus Software bestehen.
� Software-Produkt
• Ein Produkt ist ein in sich abgeschlossenes, i.a. für einen Auftraggeber bestimmtes Ergebnis eines erfolgreich durchgeführten Projekts oder Herstellungsprozesses. Als Teilprodukt bezeichnen wir einen abgeschlossenen Teil eines Produkts
• SW-Produkt: Produkt, das aus Software besteht.
software: computer programs, procedures, rules, and possiblyassociated documentation and data pertaining to the operation of a computer system.
(IEEE Standard Glossary of Software Engineering)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 13
Klassifikation von Software
� Generisches Produkt oder Einzelanfertigung (vereinbartes Produkt)?
� Systemsoftware (Betriebssystem, Compiler, Editor, ...) oder
Anwendungssoftware (application software)?
� Produktintegriert (embedded) oder für reine Computersysteme?
� Echtzeitanforderungen oder flexiblere Zeitanforderungen?
� Datenintensiv oder berechnungsintensiv?
� Monolithisch oder verteilt?
� Standalone oder mit anderen Anwendungen integriert?
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 14
Besonderheiten von Software
� Software ist immateriell.
� Software wird nicht durch physikalische Gesetze begrenzt.
� Software unterliegt keinem Verschleiß.
� Es gibt keine Software-Ersatzteile:
Defekte sind immer Konstruktionsfehler.
� Software ist schwer zu vermessen
(„Technische Daten“ von Software?).
� Software gilt als relativ leicht änderbar
(im Vergleich zu materiellen technischen Produkten).
� Software unterliegt einem ständigen Anpassungsdruck.
� Software veraltet.
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 15
Angestrebte Eigenschaften von Software
� Zuverlässigkeit
• Software darf im Fall des Versagens keine physischen oder ökonomischen Schäden verursachen.
� Benutzbarkeit
• Software muss sich nach den Bedürfnissen der Benutzer richten.
• Die Benutzerschnittstelle muss ergonomisch und selbsterklärend sein.
• Dokumentation muss in allen Detaillierungsgraden ausreichend zur Verfügung stehen.
� Wartbarkeit
• Software muss anpassbar an neue Anforderungen sein.
• Software sollte möglichst plattformunabhängig sein.
� Effizienz
• Software muss ökonomischen Gebrauch von Ressourcen des unterliegenden Systems machen.
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 16
Wachsende Komplexität (1)
10 MOI
20 MOI
30 MOI
40 MOI
50 MOI
60 MOI1960 1970 1980 1990 2000
MOI: Millionen Objektcode-InstruktionenEWSD: Elektronisches Wählsystem DigitalQuellen: Boehm 87, S.45 und Siemens (Unterlagen zum Seminar Industrielle
MERCURY
APOLLO
SPACESHUTTLE
EWSD-APSDBP-14
EWSD fürBB-ISDN
LUNARMISSIONCONTROL
EWSD-APSWM4.2
GEMINI
7 % jährlichesProduktivitäts-wachstum
� Siemens EWSD V8.1: 12,5 Millionen LOC, ca.190.000 S. Dokumentation
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 17
Wachsende Komplexität (2)
� Enterprise-Resource-Planning Software R/3® von SAP
� Weitere Zahlen zu R/3 Release 4:
• 11 000 externe Tabellen (Datenbank)
• 500 000 Tabellenfelder (extern und intern)
Jahr Lines of Code AnzahlFunktionsbausteine
1994 7 Millionen 14 0001997 (Rel. 3.1) 30 Millionen 200 0001999 (Rel. 4.5) 50 Millionen 400 000
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 18
Wachsende Komplexität (3)
� Gesamtumfang der verwendeten Software einzelner Unternehmen (Anfang 2000):
• Chase Manhattan Bank: 200 Mio. Code-Zeilen
• Citicorp Bank: 400 Mio. Code-Zeilen
• AT&T: 500 Mio. Code-Zeilen
• General Motors: 2 Mrd. Code-Zeilen
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 19
Komplexitätswachstum und Fehlerrate
Anzahl Fehler auf 1000 LOC
20
0,2
1977 1994
Programmgröße (1000 LOC)
10
800
1977 1994
Resultierende absolute Fehleranzahl
200160
Echte Qualitätsverbesserungensind nur möglich, wenn die
Steigerung der Programmkomplexitätüberkompensiert wird !
(Durchschnittswerte, aus Balzert 96)
1977 1994
animated
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 20
Zunehmende Qualitätsanforderungen
� Gefundene Defekte in 1000 Zeilen Quellcode (M. Cusumano, MIT 1990):
• 1977: 7 - 20 Defekte
• 1994: 0,05 - 0,2 Defekte
� Steigerung des Qualitätsniveaus um den Faktor 100 in 13 Jahren.
� Aber: Komplexitätssteigerung muss kompensiert werden !
• Komplexitätssteigerung ca. Faktor 10 in 5 Jahren
� Zunehmende „Altlasten“:
• Anwendungssoftware wird oft 20 Jahre und länger eingesetzt.
• In manchen Betrieben sind 60-70% der Softwarekosten für Anpassung von Altsoftware!
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 21
Warum ist Software so schwer zu entwickeln?
• 0,1%-Defektniveau bedeutet:• pro Jahr:
• 20.000 fehlerhafte Medikamente • 300 versagende Herzschrittmacher
• pro Woche:• 500 Fehler bei medizinischen Operationen
• pro Tag:• 16.000 verlorene Briefe in der Post• 18 Flugzeugabstürze
• pro Stunde:• 22.000 Schecks nicht korrekt gebucht
• Auch in Zukunft:• Massive QM-Anstrengungen notwendig.
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 22
Software Engineering
� 1968: erste Konferenz zum Thema „Software Engineering“
� Der Begriff wird geprägt:
Software Engineering:
The establishment and use of sound engineering principles in order to obtain economically software that is reliable and runs on real machines.
(F.L. Bauer, NATO-Konferenz Software-Engineering 1968)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 23
Software Engineering
� „Software Engineering zielt auf die ingenieurmäßige Entwicklung, Wartung, Anpassung und Weiterentwicklung großer Softwaresysteme unter Verwendung bewährter systematischerVorgehensweisen, Prinzipien, Methoden und Werkzeuge“
• (Manifest der Softwaretechnik, 2006)
� Berücksichtigung der folgenden Aspekte:
• Kosten
• Termine
• Qualität(Korrektheit, Zuverlässigkeit, Performanz, Sicherheit, Nutzbarkeit, Verständlichkeit, Weiterentwickelbarkeit, Anpassbarkeit, Wartbarkeit)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 24
Aufgabenstellungen der Softwaretechnik
� Softwareentwicklung ist viel mehr als nur Programmieren!
� Dazu gehören:• Management großer und komplexer Projekte• Schätzung von Terminen und Kosten • Erfassung von Kunden- und Marktanforderungen• Änderungsmanagement• Sicherstellung eines hohen Qualitätsniveaus• Wartung und Weiterentwicklung von Altsystemen• Guter Programmierstil• Entwicklungswerkzeuge• Prinzipien wie
Abstraktion, Strukturierung, Hierarchisierung und Modularisierung
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 25
Gliederung des Software Engineering
System-technik
FormaleMethoden
Prozesstechnik
Empirie
Grundlagen:
Informatik / Mathematik
ModellierungstechnikenStatecharts, Petri-Netze, UML
ArchitekturMusterModularisierungProduktlinien OO
VorgehensmodelleProzesseManagementOrganisation, PlanungQualitätssicherungSoftwareökonomie
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 26
Software Engineering vs. Informatik
� Software Engineering ist der ingenieurwissenschaftliche Teil der Informatik(analog zur Beziehung Maschinenbau und Physik)
Software Engineering
BetriebswirtschaftInformatik PsychologiePhysik
Elektrotechnik
Maschinenbau
Mathematik
Ingenieur-wissenschaften
Grundlagen-wissenschaften
Basis-Wissenschaften
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 27
Portfolio der SE-Techniken
� ... ist vergleichbar mit einer Werkzeugbank:• Für jedes Problem das richtige Werkzeug• in der Hand eines Experten, der damit umgehen kann
� Nicht jeder muss alle Werkzeuge beherrschen� Aber: je mehr, um so besser.
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 28
Themengebiet “Softwaretechnik”
RequirementsEngineering
Software-Architektur
und -Entwurf
Software-Wartung
Re-Engineering(Sanierung)
Projektmanagement
Vorgehensmodellierung
Software-Entwicklungsmethoden
Notationen und Sprachen (UML, Java, ...)
Werkzeugunterstützung (incl. CASE, CVS, make)
Qualitätsmanagement (incl. Testverfahren)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 29
Zusammenfassung: Softwaresysteme und Softwaretechnik
� Softwaretechnik ist die Lehre von der ingenieurmäßigenEntwicklung von Software und softwarebasierten Systemen.
� Diversifikation der Anwendungsbereiche, Größe, etc. erfordert die Portfolio der anzuwendenden Techniken.
� Kritischer Faktor ist die Qualität der erstellten Software.
� Softwaretechnik ist anwendungsnah und erfordert, dass ihre Methoden und Techniken geübt werden.
Literatur: • Sommerville 1.2
Prof. Dr. Bernhard RumpeSoftware Systems EngineeringTechnische Universität Braunschweig
http://www.sse-tubs.de/
1. Softwaretechnik
1.2. Vorgehensmodelle
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 31
Phasen- und Vorgehensmodelle
� Phasenmodell:Einteilung des Herstellungsprozesses für ein (Software-) Produkt in definierte und abgegrenzte Abschnitte
• Vorgabe einer Reihenfolge in der Bearbeitung der Phasen
• Richtlinie für die Definition von Zwischenergebnissen
� Vorgehensmodell:Detailliertes Phasenmodell + Festlegung der Zwischenergebnisse
� Bekannte Vorgehensmodelle?
• V-Modell, RUP.
• Agile Softwareentwicklung, Extreme Programming, ...
• Feature Driven Development, OMT, Booch Method, Shlaer/Mellor, OOSE (Jacobson),
• Open Source (als Vorgehensweise), Hacking
discuss
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 32
Aktivitäten in der Softwareentwicklung
� Trennung der zeitlich abgegrenzten Phasen und der darin stattfindenden inhaltlich bestimmten Aktivitäten.
� Grundaktivitäten:
• Analyse• Entwurf• Implementierung• Test (Integration, Validierung)• Deployment (Installation, Schulung)• Evolution (Wartung)• (Versionsmanagement, Reviews, ...)
discuss
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 33
Aktivitäten in der Softwareentwicklung
� Trennung der zeitlich abgegrenzten Phasen und der darin stattfindenden inhaltlich bestimmten Aktivitäten.
� Grundaktivitäten:
• Analyse
• Entwurf
• Implementierung
• Test (einschließlich Integration, synonym: Validierung)
• Deployment (Installation, Schulung)
• Evolution (vor allem Wartung)
• und viele weitere (Versionsmanagement, Reviews, ...)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 34
Das klassische Wasserfall-Modell
Entwurf
Implementierung
Test,Integration
Wartung
W. Royce (1970)
Produkt-definition
Entwurfs-Spezifikation
Code
geprüfterCode
Änderungswünsche
Analyse
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 35
Ungefähre Verteilung des Arbeitsaufwands
Entwurf
Implementierung
Test,Integration
Wartung
W. Royce (1970)
Produkt-definition
Entwurfs-Spezifikation
Code
geprüfterCode
Änderungswünsche
Analyse10 %
20 %
50 %20 %
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 36
Qualitätssicherung im V-Modell
Analyse
Grobentwurf
Feinentwurf
Implementierung
Abnahmetest
Systemtest
Integrationstest
Modultest
Testfälle
Testfälle
Testfälle
Boehm 1979 (altes „V-Modell“)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 37
Evolutionäre Entwicklung
� Typisch für kleinere Projekte oder experimentelle Systeme
� Zunehmend auch für größere Projekte angewendet
Aufgabe
Prototypen,Vorversionen
Analyse
Entwurf Validierung
Implementierung
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 38
Zweidimensionales Modell
Rational Unified Process 1999 (Jacobson et al., Kruchten)
Tätigkeit
Zeit
Analyse
Entwurf
Implementierung
Test
Konfigurations-management
Projekt-management
Entstehung(inception)
Ausarbeitung(elaboration)
Erstellung(construction)
Übergang(transition)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 39
Aufwandsverteilung und Schwerpunkte
Rational Unified Process 1999 (Jacobson et al., Kruchten)
Tätigkeit
Zeit
Analyse
Entwurf
Implementierung
Test
Konfigurations-management
Projekt-management
Entstehung(inception)
Ausarbeitung(elaboration)
Erstellung(construction)
Übergang(transition)
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 40
eXtreme Programming (XP)
� Entwicklungsmethodik für kleinere Projekte� Konsequente evolutionäre Entwicklung in sehr kleinen Inkrements� Tests + Programmcode sind das Analyseergebnis, das
Entwurfsdokument und die Dokumentation.� Code wird permanent lauffähig gehalten� Diszipliniertes und automatisiertes Testen als Qualitätssicherung� Paar-Programmierung als QS-Maßnahme� Refactoring zur evolutionären Weiterentwicklung � Codierungsstandards
� Aber auch: Weglassen von traditionellen Elementen • kein explizites Design, ausführliche Dokumentation, Reviews
� „Test-First“-Ansatz• Zunächst Anwendertests definieren, dann den Code dazu
entwickeln
vl07.se1/02/01
Prof. Dr. B. RumpeSoftware Systems EngineeringTU Braunschweig
Seite 41
Literatur (neben Balzert, Sommerville)
� Philippe Kruchten: Rational Unified Process. Addison-Wesley. 2000
� Kent Beck: Extreme Programming Explained. Addison-Wesley. 1999
� Testframework JUnit. www.junit.org