138
Softwaretechnik Sommer 2019: Teil 1: Einleitung Henning Schnoor Institut für Informatik, Christian-Albrechts-Universität zu Kiel 1

Softwaretechnik - ilearn.informatik.uni-kiel.de

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Softwaretechnik - ilearn.informatik.uni-kiel.de

SoftwaretechnikSommer 2019: Teil 1: Einleitung

Henning Schnoor

Institut für Informatik, Christian-Albrechts-Universität zu Kiel

1

Page 2: Softwaretechnik - ilearn.informatik.uni-kiel.de

Vorstellung

Bio

2004 Diplom Mathematik / Informatik in Hannover

2007 Promotion in HannoverAlgebraic Techniques for Satisfiability Problems

2007/8 Postdoc in Rochester, NY, USA

2015 Habilitation in Kiel, AG Theoretische InformatikKnowledge-based, Strategic, and Temporal Security Properties

s. 2016 Privatdozent, AG Software Engineering

Forschungsinteressen• Metriken für Softwarequalität

• Formale Methoden für IT Sicherheit

• Komlexitätstheorie

• Logik

• Computational Social Choice2

Page 3: Softwaretechnik - ilearn.informatik.uni-kiel.de

Erstellung komplexer Softwaresysteme

Früherer “Ansatz”Komplexe System zweimal konstruieren:

• erster Schritt: “learn from failure”

• zweiter Schritt: Erfahrungen im tatsächlichen System umsetzen

Anforderungen Heute

• Systeme müssen schnell entwickelt werden, time-to-market niedrig

• Systeme müssen nach Auslieferung noch leicht, schnell und zuverlässig änderbar sein

• Websysteme: leichter änderbar als lokal installierte Anwendungen

KonsequenzBrauchen Techniken, die Erstellung von Softwaresystemen beschleunigen und planbar machen

3

Page 4: Softwaretechnik - ilearn.informatik.uni-kiel.de

Wissen über Softwareerstellung

Fragen

• Welches Wissen entstehtim (hypothetischen)ersten Schritt?

• WelchesprojektübergreifendesWissen entsteht währendder Entwicklung einesSoftwaresystems?

Erfahrungen

• Domänen-Wissen, Konkrete Lösungen für dieses Produkt

• Algorithmen für Probleme von allgemeinem Interesse

• Best Practices• Qualitätsindikatoren für Software• Design Patterns: “Schablonen” für Standard-Fälle• Vorgehensweisen bei Planung und Implementierung

• Tools• technisch: IDEs, VCS, Build-Prozesse, . . .• konzeptuell: Modellierung, Vorgehensmodelle, . . .• Qualitätssicherung: Tests, Metriken, . . .

4

Page 5: Softwaretechnik - ilearn.informatik.uni-kiel.de

Implementierung zu Deployment

−→

Nötige Schritte?• Implementieren

• Review

• Features einfügen

• Testen (automatisch)

• Release-Entscheidung

• Bauen

• Auslieferung

• (virtuelle) Maschinen skalieren

• . . . 5

Page 6: Softwaretechnik - ilearn.informatik.uni-kiel.de

Was fehlt?

Wichtiger Schritt

• diskutiert: Implementierung bis Deployment

• was fehlt?

6

Page 7: Softwaretechnik - ilearn.informatik.uni-kiel.de

Konzeption zu Implementierung

−→

Nötige Schritte?• Auftrag erhalten

• Anforderungen erfassen

• Umfang und Funktionenfesthalten

• System planen und entwerfen

• passende Technologien auswählen

• . . .

7

Page 8: Softwaretechnik - ilearn.informatik.uni-kiel.de

Struktur Vorlesung

Abschnitte1. Einleitung

2. Konfigurationsmanagement

3. Modellierung und UML

4. Modellierung der Struktur

5. Modellierung der Dynamik

6. Anforderungsermittlung

7. Entwurfsmuster

8. Komponenten und Schnittstellen

9. Qualitätssicherung

10. Projektmanagement und Vorgehensmodelle

8

Page 9: Softwaretechnik - ilearn.informatik.uni-kiel.de

Organisatorisches

Page 10: Softwaretechnik - ilearn.informatik.uni-kiel.de

Formalia zur Modulbewertung

• Die Belegung des Moduls erfolgt über die StudiDB.

• Es findet eine schriftliche Klausur statt.

• Klausurzulassung: mindestens 50% aller Hausaufgabenpunkte müssen erreicht werden.

• Nötig für das Bestehen ist das Erreichen von 50% der Klausurpunkte.

• Übungen liefern Bonuspunkte in der Klausur. Prozentpunkte P in Klausur wegeben sich wie folgt:

P = 100% ∗ kK, falls

kK

< 0.5, ansonsten

P = 100% ∗ kK

+max(0, 20% ∗ (2h

H− 1)

)k = erreichte Punktsumme in der Klausur,K = erreichbare Punktsumme in der Klausur,h = erreichte Punktsumme in den Hausaufgaben,H = erreichbare Punktsumme in den Hausaufgaben.

9

Page 11: Softwaretechnik - ilearn.informatik.uni-kiel.de

Termine

VorlesungMo 16-18 CAP2 C

Di 16-18 CAP2 H

• V+Ü 3/2 SWS (7 ECTS)

• V 4-stündig

• nur 34 der Termine

Feiertage

• 22. April: Ostern

• 10. Juni: Pfingsten

• 22.-30 Juni: Kieler Woche

Termine1. 8. April

2. 9. April

3. 15. April

////16.//////April

////23.//////April

4. 29. April

5. 30. April

6. 6. Mai

7. 7. Mai

8. 13. Mai

9. 14. Mai

10. 20. Mai

11. 21. Mai

////27./////Mai

12. 28. Mai

13. 3. Juni

14. 4. Juni

////11.//////Juni

15. 17. Juni

16. 18. Juni

////24.//////Juni

////25.//////Juni

17. 1. Juli

18. 2. Juli

10

Page 12: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übung - Betreuer

• Christian Zirkelbach Link

• Di: 10:15-11:45 + 12:15-13:45 Uhr• Mail: [email protected]• Korrektur: Johannes Brück ([email protected])

• Alexander Krause Link

• Do: 10:15-11:45 + 12:15-13:45 Uhr• Mail: [email protected]• Korrektur: Pascal Stücker ([email protected])

• Björn Vonheiden• Mi: 10:15-11:45 Uhr• Mail: [email protected]

SprechstundenNach Vereinbarung

11

Page 13: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übung - Anmeldung

StudiDB Link

• Für das Modul anmelden

iLearn Link

• Anmeldung wird heute Abend um 20:00 Uhr freigeschaltet.

• Partner zur Kleingruppe einladen.• Übungspartner besuchen den gleichen Termin.• Es wird keine Ein-Personen-Gruppen geben.

• Sicherstellen, dass valide E-Mail eingetragen ist.

12

Page 14: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übung - Betrieb

• Übungsserien werden im iLearn ausgegeben und im iLearn und Git abgegeben.

• Serien werden montags um 10:00 Uhr aus- und abgegeben.

• Serie 1 ist heute Abend im iLearn verfügbar(Abgabe: 15.04.19 um 10:00 Uhr).

• Erster Übungstermin: nächste Woche (ab 16.04.19).

13

Page 15: Softwaretechnik - ilearn.informatik.uni-kiel.de

Einleitung

Page 16: Softwaretechnik - ilearn.informatik.uni-kiel.de

Software Engineering (Softwaretechnik)

Programmierung

• Programmierung: EigentlichesImplementieren

• Resultat: Programmcode

• einziger nicht-optionaler Aspekt derSoftware-Entwicklung

vs.

Software-Entwicklung

• Gesamter Prozess von Projektbeginn

• Resultat: Laufende Software

• Beinhaltet Planung, Organisation undBetrieb

14

Page 17: Softwaretechnik - ilearn.informatik.uni-kiel.de

Was ist (Software) Engineering?

Engineering (Wikipedia)Engineering is the application of mathematics, as well as scientific, economic, social, andpractical knowledge, to invent, innovate, design, build, maintain, research, and improvestructures, machines, tools, systems, components, materials, processes, solutions, andorganizations.

Ingenieurwissenschaften (nach Wikipedia)Galten als angewandte Naturwissenschaft. Es geht den Ingenieurwissenschaften insbesondereum Wissen, das geeignet ist, Handlungen, etwa von Ingenieuren, anzuleiten. Sie werden daherauch den Handlungswissenschaften zugerechnet.

15

Page 18: Softwaretechnik - ilearn.informatik.uni-kiel.de

Engineering vs. Non-Engineering [PW17; LL13]

Technisches Produkt Nicht-Technisches Produkt

Voraussetzungen Technisches Wissen Inspiration

Deadlines planbar mit hoher Genauigkeit nicht planbar

Preis kostenorientiert, kalkulierbar abhängig von Marktwert

Standards existieren und werden eingehalten unüblich

Vergleich objektive, quantitative Kriterien schwierig und subjektiv

Autor anonym, oft keine emotionaleVerbindung zum Produkt

starke Bindung (für Autor undKunden)

Haftung gesetzlich geregelt, kann nichtausgeschlossen werden

nicht anwendbar

Wo steht Software? 16

Page 19: Softwaretechnik - ilearn.informatik.uni-kiel.de

Definitionen von Software Engineering nach [PW17]

F. L. Bauer, 1971the establishment and use of sound engineering principles to obtain economically software thatis reliable and works efficiently on real machines.

IEEE 610.12 (1990)

1. The application of a systematic, disciplined, quantifiable approach to the development,operation, and maintenance of software; that is, the application of engineering to software.

2. The study of approaches as in (1).

ISO/IEC/IEEE 24765 (2019)

1. the systematic application of scientific and technological knowledge, methods, andexperience to the design, implementation, testing, and documentation of software.

2. see IEEE 610.12 (1)17

Page 20: Softwaretechnik - ilearn.informatik.uni-kiel.de

Typische Fragen in Ingenieur-Disziplinen

nach [PW17]

• Wie beschreiben wir Anforderungen und vermeiden Missverständnisse mit dem Kunden?

• Wie beschreiben wir Design-Ideen und vermeiden Missverständnisse mit denImplementierern?

• Wie gehen wir sicher dass wir• das richtige Produkt bauen? (Validation)• das Produkt richtig bauen? (Verifikation)

• Wie messen wir Produktqualität?

• Wie planen wir Reihenfolge und Prioritäten von Aktivitäten im Projekt?

18

Page 21: Softwaretechnik - ilearn.informatik.uni-kiel.de

Softwaretechnik im Kontext des Studiums

Softwaretechnik / Software EngineeringFrage: Wie verwenden wir Methoden der Informatik, umgroße Softwaresysteme

• korrekt,

• zuverlässig,

• kosteneffizient

zu erstellen?

Insbesondere

• Viele (aber nicht alle!) Techniken zahlen sich erst bei “großen” Projekten aus

• Schwierigkeit für Übung, (etwas) realistischer im Softwareprojekt

19

Page 22: Softwaretechnik - ilearn.informatik.uni-kiel.de

Softwaretechnik im Kontext des Studiums

Vorlesung Bezug

Programmierung Java in Vorlesung, Übung und Softwareprojekt

Informationssysteme Datenbanken zentral für viele moderne Anwendungen. Anknüp-fungspunkt für Software Engineering als Abstraktionsschicht: Ob-ject Relational Mapping

Algorithmen und Daten-strukturen

Verwenden Datenstrukturen wie Graphen, Arrays, Listen

Theoretische Grundlagender Informatik

Verwenden Automaten-Modellierung, formale Analyse (semanti-scher) Eigenschaften von Software 20

Page 23: Softwaretechnik - ilearn.informatik.uni-kiel.de

Softwareprojekt

Übersicht

• Anschlussveranstaltung zu Softwaretechnik

• Programmierung „im Großen“

• 4 Wochen Blockveranstatung: 19. August bis 13. September(IT-Sicherheit: 16. September bis 27. September)

• Begrenzte Plätze

56 im Softwareprojekt30 in IT-Sicherheit

Anmeldung

• Anmeldung jetzt über StudiDB

• Zuteilung der Plätze durch Prüfungsamt

• Absicht: „keine zwei Absagen“ 21

Page 24: Softwaretechnik - ilearn.informatik.uni-kiel.de

Referenzen

BasisWilhelm Hasselbring (2018). Softwaretechnik Folienskript.

Lehrbücher I

• Ian Sommerville (2018). Software Engineering. 10. Auflage.http://software-engineering-book.com. Pearson. ISBN: 978-3-86326-835-0Liefert eine breiten Überblick, jedoch ohne sehr tief zu gehen.

• Helmut Balzert (2011). Lehrbuch der Softwaretechnik: Entwurf, Impementierung,Installation und Betrieb. 3. Spektrum Akademischer VerlagLiefert eine breiten Überblick, mit Betonung auf den Entwurf.

• Thomas Grechenig, Mario Bernhart, Roland Breiteneder und Karin Kappel (2010).Softwaretechnik. Pearson StudiumLiefert einige Fallbeispiele aus der Praxis.

22

Page 25: Softwaretechnik - ilearn.informatik.uni-kiel.de

Referenzen

Lehrbücher II

• B. Brügge und A. Dutoit (2010). Object Oriented Software Engineering Using UML,Patterns, and Java. 3rd. Prentice Hall. ISBN: 978-0138152215 Betont objektorientierteTechniken.

• C. Rupp, S. Queins u. a. (2012). UML 2 glasklar: Praxiswissen für die UML-Modellierung.4. Auflage. Hanser. ISBN: 978-3-446-43057-0 UML. Online-Ausgabe im CAU-Netz:http://dx.doi.org/10.3139/9783446431973

• C. Kecher und A. Salvanos (2015). UML 2.5: Das umfassende Handbuch. GalileoComputing. Rheinwerk Verlag GmbH. ISBN: 9783836229777 UML-Teil basiert zum großenTeil hierauf

Original-LiteraturWissenschaftliche Arbeiten, siehe Referenzen am Ende

23

Page 26: Softwaretechnik - ilearn.informatik.uni-kiel.de

Was ist Software?

Software„Software: Computer programs, procedures, rules, and possibly associateddocumentation and data pertaining to the operation of a computer system“

IEEE Standard Glossary of Software Engineering Terminology [90]

Zu unterscheiden:

• Software as a Service

• Software as Code

24

Page 27: Softwaretechnik - ilearn.informatik.uni-kiel.de

Softwaresysteme und Software Engineering

• Ein Softwaresystem ist ein System, dessen Komponenten aus Software bestehen.• Softwaresysteme sind Produkte von Softwareprojekten.• Betrachtet wird im Software Engineering vor allem die Entwicklung „großer“

Softwaresysteme, z.B.:• Betriebssysteme,• Datenbankmanagementsysteme,• Web-Informationssysteme,• Steuerung von Industrieanlagen.

• Komplexe Softwaresysteme finden sich mittlerweise in allen Bereichen des Lebens,beispielsweise

• Eingebettete Software in PKWs, Haushaltsgeräten,• Steuerungen in der Verkehrs- und Energietechnik,• Informationssysteme in Unternehmen, und• die neue elektronische Gesundheitskarte (genauer gesagt, die dazugehörigen Server).

25

Page 28: Softwaretechnik - ilearn.informatik.uni-kiel.de

Zunehmende Bedeutung von Software

Soft

war

e Com

plex

ity

1977100

Lines of Code

198150.000

Lines of Code

20081–10 Mio.

Lines of Code

Heute50–100 Mio.Lines of Code

Zukünftig200–300 Mio.Lines of Code

5% 8% 15% 40% 80%

Erstes Auto mit Software:

GM Oldsmobile Toronado

Komplexität/Größe (Lines of Code) und Anteil Gesamtwertschöpfung26

Page 29: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

27

Page 30: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

28

Page 31: Softwaretechnik - ilearn.informatik.uni-kiel.de

Erwartungen an Softwaresysteme

Was wir nicht wollen:Fehlerhafte Software

DennFehler sind teuer:

• Personenschäden,

• Sachschäden,

• Konventionalstrafen (für zu späte und/oder fehlerhafte Software),

• Kosten für Fehlersuche und Fehlerbehebung,

• Schaden für das Unternehmens-Image,

• Rechtliche Konsequenzen, z.B. Schadenersatz.

29

Page 32: Softwaretechnik - ilearn.informatik.uni-kiel.de

Boing 737 Abstürze

30

Page 33: Softwaretechnik - ilearn.informatik.uni-kiel.de

Boing 737: Was ist passiert?

MCAS

• Maneuvering Characteristics Augmentation System

• andere Aerodynamik als Vorgängermodell: Zusätzlicher Auftrieb führt zum “Nasehochziehen”

• MCAS steuert mit Höhenleitwerk gegen um Flugzeug zu stabilisieren

31

Page 34: Softwaretechnik - ilearn.informatik.uni-kiel.de

Boing 737: Falsche Dokumentation

DokumentationMCAS verstellt Leitwerk um bis zu 0, 6 Grad

Realität

• Verstellung bis 2, 5 Grad, mehrmals

• MCAS hat “volle Kontrolle überBewegung des Höhenleitwerks bis zumAnschlag”

Konsequenzen

• Zertifizierung aufgrund falscher Informationen

• Falsche Informationen für Piloten

32

Page 35: Softwaretechnik - ilearn.informatik.uni-kiel.de

Boing 737: Mangelnde Redundanz

MCAS Verhalten

• System triggert abhängig von Lage des Flugzeugs

• Lage wird (für MCAS) durch nur einen Anstellwinkelsensor gemessen

• Sensordaten fehlerhaft

33

Page 36: Softwaretechnik - ilearn.informatik.uni-kiel.de

Boing 737: Mangelnde Kontrolle

Zulassung

• zuständig: FAA (Federal Aviation Administration)

• Prüfungen z.T. an Hersteller delegiert

• enger Zeitplan für Zulassungen

34

Page 37: Softwaretechnik - ilearn.informatik.uni-kiel.de

Security-Beispiel: Meltdown

OS-Sicherheit

• Betriebssysteme: Prozess-Isolation

• Prozess A kann nicht auf Daten von Prozess B zugreifen

(Bsp: kryptografische Schlüssel, Login-Daten, . . . )

Angriff

• Isolation größtenteils wirkungslos

• Zusammenspiel von verschiedenen Prozessor-Features

• „Fehler“ in Prozessor-Microcode

• Reine Software-Lösung: Bis zu 30% Performance-Einbußen

35

Page 38: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beispiel: Meltdown Angriff

RückblickMikroprozessor Design

Gründe für nicht-Ausführung von Code

• unerlaubter Speicherzugriff

• Abzweigung in „unerwartete“ Richtung

Spekulative Ausführung

• Code dennoch ausführen

• roll-back wenn Code doch nicht ausgeführtwerden soll (backtrack)

36

Page 39: Softwaretechnik - ilearn.informatik.uni-kiel.de

Meltdown Übersicht

Angriff

• Angreifer will Wert b erfahren,gespeichert an Stelle x desSpeichers K

• legt Array A von Objekten Q an(Größe = Cache-Seitengröße)

• Array wird nur angelegt, nichtgelesen oder initialisiert

→ Inhalt von A nicht im Cache

Fälle

b 6= 0 while-Schleife wird beendet, A[b] im Cache → Zugriff auf A[b] danach schneller

b = 0 race condition Behandlung (evtl. kein fetch) 37

Page 40: Softwaretechnik - ilearn.informatik.uni-kiel.de

Meltdown Referenz

PaperMoritz Lipp, Michael Schwarz, Daniel Gruss, Thomas Prescher, Werner Haas, Stefan Mangard,Paul Kocher, Daniel Genkin, Yuval Yarom und Mike Hamburg (2018). “Meltdown”. In: ArXive-prints. arXiv: 1801.01207

Kernpunkte

• Betriebssysteme: Linux, Windows

• Docker

• Intel: Lesegeschwindigkeit 503 KB/sec

• nur „Spielzeugbeispiele“ für AMD, ARM

38

Page 41: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beispiel: Airbus A320 (1993)

Bruchlandung beim Landeanflug auf Flughafen WarschauFolgen: 2 Tote, erheblicher Sachschaden

39

Page 42: Softwaretechnik - ilearn.informatik.uni-kiel.de

Warum stürzte der Airbus ab?

• Die Maschine hatte Probleme durch Scherwinde, so dass das rechteHauptfahrwerk der Maschine erst nach 770 Metern ersten Bodenkontakt hatte, daslinke Fahrwerk nach 1525 Metern.

• Bereits beim ersten Bodenkontakt betätigte der Pilot die Radbremsen, welcheaber aufgrund der ungenügenden Haftung auf der nassen Landebahn nicht griffen.

• Erst nach dem Aufsetzen des linken Fahrwerkes gab das Programm desFly-by-Wire-Systems die Störklappen und die Schubumkehr als Bremshilfen frei.

• Zum Stand des damaligen Wissens seitens des Herstellers galt Bodenkontakt erstdann als erreicht, wenn das Fahrwerk mit mindestens 12 t belastet wurde und sichdie Räder des Hauptfahrwerkes in Drehung befanden.

• Aufgrund des starken Wasserfilms und des dadurch entstehenden Aquaplaningssetzte die Maschine zwar auf, die Räder drehten sich jedoch so langsam, dass derBordcomputer davon ausging, die Maschine befinde sich noch nicht auf demBoden, und deshalb jegliches Bremsmanöver verhinderte.

40

Page 43: Softwaretechnik - ilearn.informatik.uni-kiel.de

Was waren die Konsequenzen?

• Die Software des Fly-by-Wire-Systems aller Typen der Airbus-A320-Familie wurdeüberarbeitet und der notwendige Aufsetzdruck des Fahrwerks für die Freigabe vonStörklappen und Schubumkehr von 12 t auf 2 t gesenkt.

• Ferner ist die Aktivierung der Störklappen und der Schubumkehr nicht mehr an dieRaddrehung gekoppelt, die Bremsaktivierung jedoch nach wie vor.

• Somit soll gewährleistet sein, dass die aerodynamische und triebwerksseitigeBremsung in jedem Fall funktioniert, auch wenn sich die Räder nicht ausreichendschnell drehen.

41

Page 44: Softwaretechnik - ilearn.informatik.uni-kiel.de

Update 1:

• Am 1. März 2008 musste Flug LH 044 am Hamburger Flughafen mitten imOrkantief Emma durchstarten.

• Der Airbus 320 schrammt mit der Flügelspitze über die Landebahn.

• Weil ein Reifen der Maschine bereits kurz den Boden berührt hatte, schaltete derComputer vom Anflug- in den Bodenmodus.

• Letzterer aber erlaubt keinen so starken Einschlag des Querruders, damit es nichtzum Aufschaukeln kommt – bei extrem starken Seitenwinden ist dies jedoch eineerhebliche Einschränkung für die Piloten.

• „Bei Landungen mit starkem Seitenwind, sieht die BFU in der beschriebenenSystemauslegung eine designbedingte Schwäche, speziell im Übergangsbereich vomFlight Mode zum Ground Mode, wenn das Flugzeug nach dem Aufsetzen denBodenkontakt wieder verliert.“

42

Page 45: Softwaretechnik - ilearn.informatik.uni-kiel.de

Aus dem abschließenden Untersuchungsbericht durch die Bundesstelle fürFlugunfalluntersuchung aus dem März 2010 (http://www.bfu-web.de/):Besonders sei auf Abschnitt 2.2.4 „Designbedingtes Systemverhalten des Flugzeuges“hingewiesen. Im letzten Absatz wird sehr deutlich auf die vorhandene Problematik beider Modellierung der realen Vorgänge unter den vielen verschiedenenWetterbedingungen hingewiesen. Es lässt sich nicht einfach als ein Problem vonunzureichender Anforderungsanalyse einordnen. Hier kann jedoch deutlich gesagtwerden, dass eine widerspruchsfreie und korrekte Dokumentation nicht vorgelegen hat.Vorfälle im Luftfahrtbereich – das zeigt die Geschichte – sind stets sehr komplexeVorgänge, bei denen eine einfache Ursachenermittlung nicht möglich ist.

43

Page 46: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beispiel: Airbus A400M

Update 2:

• Am 9. Mai 2015 sützte ein nagelneues Militärtransportflugzeug vom Typ A400M inSevilla ab.

• Die Nachforschungen ergaben ein deutliches Ergebnis:• Kurz nach dem Start der Testmaschine hatten drei Triebwerke von den Computern

widersprüchliche Befehle erhalten und daraufhin die Leistung abgeschaltet.

• „Es handelt sich sehr wahrscheinlich um ein Qualitätsproblem in unserem Werk“,heißt es aus Airbus-Kreisen.

• Eine „Dringliche technische Empfehlung des Herstellers“ vom 19. Mai 2015 (AOT)sieht die Durchführung eines einmaligen Kontroll-Checks der elektronischenTriebwerkskontrolleinheit bei jedem Flugzeugtriebwerk vor dem nächsten Flug vor.Quelle: http://airbusdefenceandspace.com/wp-content/uploads/2015/05/ma-10-2015-n-19052015-de.pdf

44

Page 47: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beispiel: Ariane 5 (1996)

Ca. 40 Sek. nach dem Start kam die Rakete vom Kurs ab und wurde gesprengt.

Folgen: Gesamtschaden von mehr als 1 Milliarde Euro

45

Page 48: Softwaretechnik - ilearn.informatik.uni-kiel.de

Warum ist die Ariane 5 beim Erstflug explodiert?

• Die Software für das Trägheitsnavigationssystem wurde unverändert von der Ariane4 übernommen.Ein Test dieser Software-Komponente unterblieb daher.

• Die übrigen Systeme der Rakete wurden komponentenweise gründlich getestet.Ein gemeinsamer Test der gesamten Steuerungssoftware der Rakete unterblieb ausKosten- und Machbarkeitsgründen.

• In der Software für das Trägheitsnavigationssystem gibt es eine Abgleichsfunktion,deren Werte eigentlich nur sinnvoll sind, solange die Rakete noch nicht fliegt.Diese Funktion arbeitet programmgemäß bis ca. 40 s nach der Zündung weiter,weil das bei der Ariane 4 im Fall eines Countdownabbruchs kurz vor dem Abhebensinnvoll war.

46

Page 49: Softwaretechnik - ilearn.informatik.uni-kiel.de

Chronik der Ereignisse

1. Flug 501 startet am 4. Juni 1996. Die Triebwerke zünden um 933:59 Uhr.

2. Die ersten 36 Sekunden des Flugs verlaufen normal.

3. Die Ariane 5 hat eine andere Flugbahn als die Ariane 4, deshalb berechnet dieAbgleichsfunktion einen Wert, der wesentlich größer ist als erwartet

4. Bei der Konvertierung dieses Werts tritt ein Überlauf auf (64 Bit Gleitkommazahlin 16 Bit Ganzzahl)

5. Das Programm erzeugt eine Ausnahmebedingung (Fehlermeldung)

47

Page 50: Softwaretechnik - ilearn.informatik.uni-kiel.de

Chronik der Ereignisse (Forts.)

6. Die Ausnahmebedingung wird nicht behandelt (obwohl dies in der verwendetenProgrammiersprache Ada möglich wäre)

7. Der Trägheitsnavigationsrechner setzt eine Fehlermeldung an den Steuerrechner abund schaltet sich 36,75 s nach Start ab.

8. Das Trägheitsnavigationssystem ist doppelt ausgelegt

9. Ein Umschalten auf das zweite System schlägt fehl, da dieses System das gleicheProblem hatte und sich vor 0,05 s ebenfalls abgeschaltet hat

10. Der Steuerrechner ist nicht auf den Ausfall beider Trägheitsnavigationssystemeausgelegt und interpretiert die gemeldeten Fehlercodes als Flugbahndaten

48

Page 51: Softwaretechnik - ilearn.informatik.uni-kiel.de

Chronik der Ereignisse (Forts.)

11. Dies führt zu völlig unsinnigen Berechnungen und als Folge davon zu unsinnigenStellbefehlen an die Steuerdüsen der Rakete:Diese werden bis zum maximal möglichen Anstellwinkel ausgeschwenkt.

12. Aufgrund der Schwerkräfte zerbricht die Rakete.

13. Der Selbstzerstörungsmechanismus wird aktiviert.

14. Rakete und Nutzlast werden gesprengt um zu verhindern, dass größereTrümmerteile auf den Boden fallen.

49

Page 52: Softwaretechnik - ilearn.informatik.uni-kiel.de

Schaden durch den Absturz

Juni 1996

• Vier Satelliten verloren: 400 - 500 Millionen Euro

• Zwei Jahre Verzug im Entwicklungsprogramm: > 500 Millonen Euro

• Zwei zusätzliche Erprobungsstarts bei Gesamtkosten des Projekts von 1987 bis1998 von 6.700 Millionen Euro

50

Page 53: Softwaretechnik - ilearn.informatik.uni-kiel.de

Folgerungen für das Software Engineering

Spezifikation: Bestehende Software darf nicht unbesehen für eine neueAufgabe wiederverwendet werden.

Dokumentation: Die Fähigkeiten einer Software sowie alle Annahmen, die sieüber ihre Umgebung macht, müssen dokumentiert sein.Andernfalls ist die Prüfung auf Wiederverwendbarkeit extremaufwändig.

Design by Contract: Kooperieren zwei Software-Komponenten miteinander, somüssen eindeutige Regeln definiert, dokumentiert undeingehalten werden.Wer liefert wem was unter welchen Bedingungen?

Abstraktionen: Welche Systemeigenschaften gehen bei Abstraktion verloren?Welchen Einfluss hat das auf systemrelevante Eigenschaften?

51

Page 54: Softwaretechnik - ilearn.informatik.uni-kiel.de

Folgerungen für das Software Engineering

Fehlerbehandlung: Jede potentielle Fehlersituation in einer Software muss• entweder behandelt werden,• oder die Gründe für die Nichtbehandlung müssen so dokumentiert

werden, dass die Gültigkeit der dabei getroffenen Annahmen überprüfbarist.

Software 6= Hardware: Mehrfache identische Auslegung von Systemen hilft nichtgegen logische Fehler in der Software.

Sicherheit: Bei Störungen in sicherheitskritischen Systemen ist Abschalten nur danneine zulässige Maßnahme, wenn dadurch wieder ein sicherer Zustand erreichtwird.

Fehlertoleranz: Eine hundertprozentige Absicherung gegen Fehler ist nicht möglich,daher müssen Verfahren zur Tolerierung von Fehlern entwickelt werden.

52

Page 55: Softwaretechnik - ilearn.informatik.uni-kiel.de

Qualitätsmanagement

Test: Bei der Prüfung von Software, die aus mehreren Komponentenbesteht, genügt es nicht jede Komponente einzeln zu prüfen.Umfangreiche Integrations- und Systemtests unter möglichstrealistischen Bedingungen sind notwendig.

Review: Jedes Programm sollte (neben einem sorgfältigem Test) durchkompetente Fachleute inspiziert werden, weil insbesondere dieErfüllbarkeit und Adäquatheit von Annahmen und Ergebnissenhäufig nicht testbar ist.

Risikomanagement: Die Risiken erkennen, angemessene technische Maßnahmen(siehe oben) planen, durchsetzen und überprüfen.Evtl. Entscheiden, Projekte frühzeitig zu beenden.

53

Page 56: Softwaretechnik - ilearn.informatik.uni-kiel.de

Weitere Beispiele für versagende Software I

Korrektheit Versicherer Ergo hat sich bei Hunderttausenden Kunden verrechnet(2015):Ursache des Problems sind nach Ergo-Angaben Fehler in denteilweise Jahrzehnte alten Computerprogrammen, mit denen dieErträge berechnet wurden.http://heise.de/-2761451

Sicherheit/Safety Ford Explorer und Mountaineer: Der Tempomat erhöht gelegentlicheigenständig die Geschwindigkeit (2000):Software-Fehler in Antriebselektronik

54

Page 57: Softwaretechnik - ilearn.informatik.uni-kiel.de

Weitere Beispiele für versagende Software II

Verfügbarkeit Die Verfügbarkeit der webbasierten Hartz-IV-Software A2LL sinktvon 99,7 Prozent im Jahr 2005 auf 98,3 Prozent im Jahr 2006[Bun06].

Zuverlässigkeit Transporter Vito und Viano von Mercedes-Benz: Ausfall derKraftstoffzufuhr (2004):Die Software der Dieselsteuergeräte aktiviert in Situationen, indenen dies eigentlich nicht vorkommen sollte, dieKraftstoffabschaltung

55

Page 58: Softwaretechnik - ilearn.informatik.uni-kiel.de

Weitere Beispiele für versagende Software III

Performance Polizei-Informationssystem: NiedersächsischeVorgangsbearbeitungs-, Analyse-, Dokumentations- undInformationssystem NIVADIS (2003):Extrem lange Wartezeiten bei der Bearbeitung von VorgängenÄhnliche Probleme in Bayern mit Mängeln desComputerprogramms für die Dienstplangestaltung (DiPlaZ).http://heise.de/-124385

Sicherheit/Security W32.Sasser.Worm: Systemabstürze (2004):Schwachstelle im “Local Security Authority Subsystem Service” vonWindows

56

Page 59: Softwaretechnik - ilearn.informatik.uni-kiel.de

Weitere Beispiele für versagende Software IV

Privacy Hacker-Einbruch im Web-Informationssystem der MelbourneTransurban CityLink (2002):Veröffentlichung von Kreditkartendetails von über 500000 Kundenauf einer Web-Seite

Stromausfall Acht Staaten im Nordosten der USA und Teile Kanadas blieben imAugust für fünf Tage ohne Strom (2003):Schuld am Blackout war ein Softwarefehler desManagementsystems zur Überwachung und Steuerung vonStromnetzen.

57

Page 60: Softwaretechnik - ilearn.informatik.uni-kiel.de

Performance und Verfügbarkeit

https://www.healthcare.gov/ Progress and Performance Report, December 2013:

• The assessment highlighted a number of significant problems, most notably anunacceptable user experience marked by very slow response times, inexplicableuser error messages and frequent website crashes and system outages.

• At the same time, the team identified the root cause problems that needed to beaddressed to fix the site.

• These root causes included: hundreds of software bugs, inadequate hardware andinfrastructure, and a general lack of system monitoring and incident responsecapabilities.

• The assessment also identified weaknesses in how the project was being managed,with slow decision making and diffuse or unclear accountability.

Quelle: https://www.cms.gov/newsroom/mediareleasedatabase/press-releases/2013-press-releases-items/2013-12-01.html 58

Page 61: Softwaretechnik - ilearn.informatik.uni-kiel.de

Lösung der Probleme

Siehe auch die Monitoring-FrameworksKieker (http://kieker-monitoring.net/) undExplorViz (https://www.explorviz.net/).

59

Page 62: Softwaretechnik - ilearn.informatik.uni-kiel.de

Sichten auf Software Engineering

DefensivSoftware Engineering ist defensiveWissenschaft: „Verhindert Katastrophen“

KonstruktivSoftware Engineering ist konstruktiveWissenschaft: Erlaubt Konstruktion vonkomplexen Softwaresystemen

„Success Stories“Große Software-Systeme sind ohne strukturierte Herangehensweise nicht möglich.

60

Page 63: Softwaretechnik - ilearn.informatik.uni-kiel.de

„Große“ Software-Systeme I

Linux Kernel

It’s the largest software development project ever, in the historyof computing – by the number of people using it, developing it,and now using it, and the number of companies involved.

Greg Kroah-Hartman

• über 25 Millionen Code-Zeilen (LoC)

• über 4000 Entwickler von über 440 Unternehmen

61

Page 64: Softwaretechnik - ilearn.informatik.uni-kiel.de

Linux Kernel Map (http://makelinux.net/kernel_map/)

62

Page 65: Softwaretechnik - ilearn.informatik.uni-kiel.de

Linux Kernel Map (freeCodeCamp)

63

Page 66: Softwaretechnik - ilearn.informatik.uni-kiel.de

„Große“ Software-Systeme II

Webshop otto.de

• 2,5 Milliarden Euro Umsatz (2015/16), 90% online

• 500 deployments / Woche

64

Page 67: Softwaretechnik - ilearn.informatik.uni-kiel.de

„Große“ Software-Systeme III

65

Page 68: Softwaretechnik - ilearn.informatik.uni-kiel.de

Allgemeingültige Methoden?

Beispiele

• Linux Kernel „Groß“ nach LoC, Anzahl Entwickler, Einsatz

• otto.de „Groß“ nach Deployment-Infrastruktur, Kosten für Ausfall

• Netflix „Groß“ nach Anzahl Nutzer, Datenverarbeitung

KonsequenzVerschiedene Methoden für verschiedene Projekte!

Weitere Faktoren?

• Web-Anwendung vs. eingebettete Systeme

• sicherheitskritische Systeme

• Verhältnis Entwickler / Betreiber

• . . .

„no silver bullet!“

66

Page 69: Softwaretechnik - ilearn.informatik.uni-kiel.de

Arten von Softwaresystemen

Beispiele

• Stand-Alone Anwendungen

• Interaktive transaktionsbasierteAnwendungen

• Eingebettete Steuerungssoftware

• Batch Processing Systeme

• Unterhaltungssysteme

• Systeme für Modellierung und Simulation

• Datenerfassungssysteme

• Systeme von Systemen

nach [Som18]

Konsequenzen?Welche Konsequenzen ergeben sich für denEntwicklungsprozess?

67

Page 70: Softwaretechnik - ilearn.informatik.uni-kiel.de

Software Engineering

AnliegenWissen über Erstellung vonSoftwaresystemen allgemein nutzbar machen

• Planung

• Entwurf

• Implementierung

• Betrieb und Wartung

68

Page 71: Softwaretechnik - ilearn.informatik.uni-kiel.de

Tools in der Informatik

Tools„Informatiker“ brauchen Tools für verschiedene Zwecke.

69

Page 72: Softwaretechnik - ilearn.informatik.uni-kiel.de

Tools in der Informatik

Beispiel: Theorie

• LATEX+ pdf-Viewer

• EMail

• Browser

Beispiel: Software-Entwicklung• java(c)

• Maven

• Jenkins

• Tomcat

• docker

• gradle

• git

• Visual Paradigm

• FindBugs

• CheckStyle

• JUnit

• PMD

• ant

• svn

• eclipse

• npm

• gitlab

• . . .

70

Page 73: Softwaretechnik - ilearn.informatik.uni-kiel.de

Tools in Softwaretechnik

Tools in dieser Vorlesung (Auswahl)• Code-Editor (IDE)

• eclipse, IntelliJ, Android Studio, . . .

• Compiler• gcc, javac, . . .

• Management von Abhängigkeiten undBibliotheken

• Maven, Gradle

• Source Code Management• svn, git

• Statische Analyse• PMD• FindBugs• CheckStyle

• Automatisches Testen: JUnit

• Deployment und Virtualisierung:Docker

• Modellierung: VisualParadigm

• Continuous Intrgration: Jenkins, Gitlab

71

Page 74: Softwaretechnik - ilearn.informatik.uni-kiel.de

Umgang mit Tools

Entwicklungstools im Informatikstudium

• Schwerpunkt in Softwaretechnik und Softwareprojekt!

• z.T. eigene Einarbeitung nötig

Schwierigkeiten

• viele Tools

• komplexe Tools

• oft sehr system-spezifische Probleme

Hilfen

• Diskussion in Übungsgruppen

• Installation von Zweit-OS? Für vieleTools Linux einfacher

72

Page 75: Softwaretechnik - ilearn.informatik.uni-kiel.de

Mehr als Tools

Begriff „Tool“ =̂ Werkzeug

• konkretes Programm

• Vorgehensweise, Verfahren

Begriffe werden nicht immer sauber getrennt

„Tools“ im Software EngineeringVerfahren und Werkzeuge zur “Erstellung” komplexer Software-Produkte

• Planung und Entwurf

• Implementierung und Auslieferung (Deployment)

• Anpassung und Wartung

73

Page 76: Softwaretechnik - ilearn.informatik.uni-kiel.de

Qualität der Software

Externe Qualität Korrektheit, Stabilität,Performance (Effizienz, Skalierbarkeit),Benutzungsfreundlichkeit und Benutzbarkeit,Sicherheit (Safety, Security),Zuverlässigkeit, Verfügbarkeit, usw.

Interne Qualität Modularität, Strukturiertheit, Wartbarkeit, Wiederverwendbarkeit,Portierbarkeit, Interoperabilität, Programm-Dokumentation,systematischer Entwicklungsprozess, Konfigurationsmanagement,usw.

74

Page 77: Softwaretechnik - ilearn.informatik.uni-kiel.de

Qualität der Software I

Die Produktqualität wird von der Prozessqualität, d.h. der Güte desEntwicklungsprozesses, abgegrenzt. Für die Produktqualität unterscheiden wir zwischeninterner, externer und Gebrauchsqualität:

• Interne Qualität ist die Gesamtheit der Gütemerkmale aus einerherstellungsorientierten Sicht. Sie umfasst die Qualitätsattribute an alleZwischenprodukte der Entwicklung.

• Externe Qualität beinhaltet die technischen Gütemerkmale des Produkts aus einerexternen Sicht. Die externe Qualität wird i. Allg. durch Messungen und Testswährend der Ausführung der Software in einer definierten Umgebung bestimmt.

75

Page 78: Softwaretechnik - ilearn.informatik.uni-kiel.de

Qualität der Software II

• Gebrauchsqualität beschreibt die Gütemerkmale aus Sicht des Benutzers, dabei istnicht nur der Kontext der Benutzung zu berücksichtigen, sondern auch inwieweitder Benutzer die angestrebten Ziele mit der Software erreichen kann.

Process

quality

Internal

properties

External

properties

Quality

in use

influences influences influences

depends on depends ondepends on

Process Software product Effect of software product

Process

measures

Internal

measuresQuality in use measures

Context

of use

External

measures

76

Page 79: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

77

Page 80: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

78

Page 81: Softwaretechnik - ilearn.informatik.uni-kiel.de

Geschichte des Software Engineering

1968: Sogenannte Software-Krise

• Symptome• Software fehlerhaft,• Kostenschätzung für Software völlig fehlerhaft,• Termine kaum eingehalten,• Änderung von Programmen kaum möglich.

• Ursachen• Die Komplexität der zu konstruierenden Softwaresysteme überstieg die Möglichkeiten

der verfügbaren Methoden und Techniken zu ihrer Konstruktion bei weitem!• Insbesondere gab (und gibt) es Defizite im Management großer Teams.

• Ausweg• 1968: Prägung des Begriffs Software Engineering als Antwort auf die Software-Krise

79

Page 82: Softwaretechnik - ilearn.informatik.uni-kiel.de

Ziele des Software Engineering

Zentrales Ziel des Software EngineeringInterne Qualität erhöhen, um externe Qualität zu erreichen

EssenzQualität wird sowohl vom Produkt als auch vom Prozess seiner Konstruktion gefordert.

„Axiom“ im Software EngineeringGuter Entwicklungsprozess

=⇒ Gute interne Qualität=⇒ Gute externe Qualität

=⇒ Gute Nutzungsqualität

80

Page 83: Softwaretechnik - ilearn.informatik.uni-kiel.de

Charakterisierung: Software Engineering

Ingenieurmäßiges Entwickeln von Software

• Komplexe Softwaresysteme werden im Team entwickelt.

• Hohe Qualität der Software ist ein zentrales Ziel zur Erfüllung der• funktionalen (fachlichen) Anforderungen und der• nicht-funktionalen (technischen) Anforderungen.

Software Engineering hat etwas mit Beherrschung von Komplexität zu tun:

• Die zu konstruierende Software hat viele Komponenten.

• Die zu konstruierende Software wird von vielen Anwendern benutzt.

• Die zu konstruierende Software wird von vielen Entwicklern realisiert.

• Die zu konstruierende Software soll auf vielen Plattformen laufen.

81

Page 84: Softwaretechnik - ilearn.informatik.uni-kiel.de

Benötigte Fähigkeiten im Software Engineering

Zitat aus [GJM03, Seite 5]A software engineer must of course be a good programmer, be well-versed in datastructures and algorithms, and be fluent in one or more programming languages. Thesoftware engineer must be familiar with several design approaches, be able to translatevague requirements and desires into precise specifications, and be able to converse withthe user of a system in terms of the application rather than in „computerese“.

Einige daraus folgende, notwendige Fähigkeiten• Programmiertechniken

• Erstellung und Nutzung von Modellen / Spezifikationen auf verschiedenenAbstraktionsebenen

• Kommunikation mit Personen mit unterschiedlichen Zielsetzungen, Vorstellungen,Ausbildungen (Stakeholder)

• Arbeitsplanung und -koordination82

Page 85: Softwaretechnik - ilearn.informatik.uni-kiel.de

System- vs. Software-Entwicklung I

Software-Entwicklung

• Ausschließliche Betrachtung der Entwicklung von Software

Software Engineering ist die Lehre von den Methoden der Softwarekonstruktion. Zielder Disziplin ist die Entwicklung methodischer Hilfsmittel zur Erstellung korrekter undeffizienter Software. Zum Repertoire des Software Engineering gehören Prozesse,Modelle, Werkzeuge und Prinzipien. Dies orientiert sich am sogenanntenSoftwarelebenszyklus, in dem die Entwicklung in allen Phasen vorangetrieben wird. DasLeben eines komplexen Softwaresystems beginnt mit der Anforderungsanalyse, aufderen Basis ein erster Entwurf des Systems entsteht. Nach weiterenVerfeinerungsschritten kann eine Implementierung zunächst von Einzelkomponenten

83

Page 86: Softwaretechnik - ilearn.informatik.uni-kiel.de

System- vs. Software-Entwicklung II

erzeugt werden, die nach Einzeltests integriert werden, um das Gesamtsystem zurealisieren. Dem Integrationstest folgt das “Deployment”, also die Installation desSystems auf den Zielrechnern. Bis zur Außerdienststellung der Software wird dasSystem nun typsicherweise regelmäßig gewartet.

System-Entwicklung

• Entwicklung eines Systems, das aus Hardware- und Software-Komponenten bestehtund/oder in einen organisatorischen Kontext eingebunden ist.

• Bei der Entwicklung müssen zusätzliche Randbedingungen berücksichtigt werden.

84

Page 87: Softwaretechnik - ilearn.informatik.uni-kiel.de

System- vs. Software-Entwicklung III

Systems Engineering ist ein interdisziplinärer Ansatz, um erfolgreich Systeme zuentwickeln und zu realisieren. Dabei bezieht sich die Disziplin nicht auf einen speziellenBereich wie etwa Software, sondern erhebt einen allgemeineren Anspruch. Betrachtetman jedoch die Methoden des Systems Engineering, so fällt eine Übereinstimmung inmehreren Punkten auf:

• Projektmanagement, um die Organisation des Entwicklungsprozesses unterKontrolle zu halten;

• Anforderungsanalyse, Anforderungsdefinition und Anforderungsmanagement, dieGrundlage der Systementwicklung;

• Systementwurf (Modellbildung, Simulation und Bewertung), die Entwicklung desSystems;

85

Page 88: Softwaretechnik - ilearn.informatik.uni-kiel.de

System- vs. Software-Entwicklung IV

• Veränderungsmanagement, in der Entwicklung gibt es oft Veränderungen diesemüssen jedoch nachvollziehbar sein;

• Systemintegration (Schnittstellen-Spezifikation beziehungsweise-Produktentwicklung), um eine perfekte Einbindung in das nächst größere Systemszu gewährleisten;

• Systemverifikation und -validation um sicherzustellen, dass die Anforderungenerfüllt wurden;

• Risikomanagement (also zum Beispiel Fehlerbäume, Fehleranalyse, FMEA), derEinfluss von Risiken sollten bei der Systementwicklung minimiert werden;

• Nachhaltige Entwicklung, anpassbar sollte jedes System entwickelt werden.

86

Page 89: Softwaretechnik - ilearn.informatik.uni-kiel.de

System- vs. Software-Entwicklung V

Der wesentliche Unterschied zum Software Engineering besteht in einer deutlichstärkeren Konzentration auf den Systemgedanken, d.h. der Blick auf das Ganze steht inallen Schritten im Vordergrund. Dabei werden auch die Schnittstellen zu anderen alssoftwaretechnischen Systemkomponenten (insbesondere Mensch, Organisation, Umwelt)umfassend berücksichtigt. Dies drückt sich durch eine Vielzahl vonManagement-Funktionen aus, die sowohl zu Projektbeginn als auch während derLaufzeit eine ständige Kontrolle des Gesamtprojekts gewährleisten sollen.

Software Systems Engineering kombiniert nun die beiden Disziplinen miteinander, indemdie eher übergreifenden Funktionen des Systems Engineering in die softwarebezogenenProzesse, Methoden, Werkzeuge und Prinzipien integriert.

87

Page 90: Softwaretechnik - ilearn.informatik.uni-kiel.de

Worum geht es also?

• Software Engineering dient zum Konstruieren von Softwaresystemen nachbestimmten Prinzipien.

• Wir verwenden einen Prozess zur Konstruktion dieser Systeme:• Arbeitsteilung, Prüfungen bei Übergabe.

• Anforderungen an• den Entwicklungsprozess, u.a. Effizienz, bzgl. Kosten,• das Produkt, u.a. Erfüllung von Qualitätskriterien.

• Wir benötigen Werkzeuge, um diesen Prozess zu unterstützen.

88

Page 91: Softwaretechnik - ilearn.informatik.uni-kiel.de

Der Softwareentwicklungsprozess

Machbarkeits-studie

Anforderungs-analyse

System-entwurf

Codieren & Modultest

Integrations- & Systemtest

Auslieferung & Installation

Wartung & Betrieb

→ LE 6

→ LE 7

→ LE 4, 5, 8

→ LE 9

89

Page 92: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

90

Page 93: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

91

Page 94: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzipien des Software Engineering

Prinzip Grundsatz, dem man seinem Handeln zugrunde legt.Noch unabhängig von konkreten Methoden und Techniken

http://prinzipien-der-softwaretechnik.blogspot.de/

92

Page 95: Softwaretechnik - ilearn.informatik.uni-kiel.de

Komplexität als Herausforderung

Beten wir Komplexität an? https://heise.de/-4170914

93

Page 96: Softwaretechnik - ilearn.informatik.uni-kiel.de

Abstraktion in der Physik (Zeichnung: Dr. Christian Jäkel)

Quelle: http://www.zeichen.uni-kiel.de/geschichte/abstraktion/

94

Page 97: Softwaretechnik - ilearn.informatik.uni-kiel.de

Abstraktion in der Physik (Prof. Dr. Reimer Lincke)

„Bekanntlich ist es ein zentrales Arbeitsprinzip der Physik, jedes reale Problem zuerstauf das Wesentliche zu reduzieren und reale Abweichungen von dieser Idealisierung erstspäter als ’Störung’ zu berücksichtigen.

Mein Mitarbeiter Dr. Christian Jäkel hat diesen Abstraktionsvorgang für meineVorlesung illustriert: das gegebene Realproblem ’War das Huhn zuerst da oder das Ei?’ist für einen Physiker natürlich viel zu kompliziert.

Zuerst lässt er die Federn des Huhnes weg, dann approximiert er die tatsächlichenFormen durch einfachere geometrische Körper, am Ende durch elementar zuberechnende Würfel und Quader.

Schließlich wird das Problem noch auf zwei Dimensionen reduziert.

Der Physiker geht nun davon aus, dass die Erkenntnisse, die er an dieser idealisiertenSituation gewinnt, dann das reale Problem (nach einigen Korrekturen) angemessenbeschreibt.“

Quelle: http://www.zeichen.uni-kiel.de/geschichte/abstraktion/

95

Page 98: Softwaretechnik - ilearn.informatik.uni-kiel.de

Abstraktion vom Unwichtigen

Wichtigkeit und Unwichtigkeit ist relativ zum Zweck der Abstraktion

Realität Modell

verkürzendeEigenschaft

erweiternde Eigenschaft

Ergänzte Eigenschaften :

- Längen- und Breitengrade- Legende

, z.B.Verkürzende Eigenschaften, z.B.:

- Temperatur- Luftfeuchtigkeit

Erde Landkarte

96

Page 99: Softwaretechnik - ilearn.informatik.uni-kiel.de

Unterschiedliche Sichten erfordern unterschiedliche Abstraktionen [Boo94; Boo+07]

“The entire history of software engineering is that of the rise in levels of abstraction.”[Grady Booch]

Warum?

97

Page 100: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Abstraktion

Abstraktion bedeutet Verallgemeinerung:

• Zerlegung in Hinblick auf die Identifizierung wichtiger und (zunächst) wenigerwichtiger Aspekte

• Statt direkt ein spezielles Problem zu lösen, kann es sinnvoll sein, zunächst einallgemeineres Problem zu lösen, dessen Lösung dann als Grundlage zur Lösung desspeziellen Problems verwendet wird.

• Abstraktion ist notwendig, um Komplexität meistern zu können.

• Vielzahl von Abstraktionen erfordern eine weitere Gliederung:Modularisierung, Kapselung, Separation of Concerns

• Eine Abstraktion kann auch verschiedene Sichten auf ein zu lösendes Problemliefern.

98

Page 101: Softwaretechnik - ilearn.informatik.uni-kiel.de

Modell als Abstraktion I

Ein Modell hat nach [Sta73] grundsätzlich

• einen Zweck,

• einen Bezug zu einem Original, und

• abstrahiert bestimmte Eigenschaften des Originals.

Aufgrund der Immaterialität von Software, die bei einem weit gefassten Modellbegriffauch ein Modell von sich selbst bzw. den durch sie beschriebenen Abläufen ist, bestehenzwischen dem Original und seinen Modellen vielfältige Beziehungen, die sich auch durchden jeweiligen Einsatzzweck bemerkbar machen. So werden Modelle nicht nur zurErringung eines substantiellen Anforderungs- bzw. Systemverständnisses, sondern häufigauch zur konstruktiven Generierung von Code oder zur qualitätssichernden Ableitungvon Tests eingesetzt.

99

Page 102: Softwaretechnik - ilearn.informatik.uni-kiel.de

Modell als Abstraktion in der Softwaretechnik

Modell

Programm

Reale Welt

Abstrahiert vonImplementierungs-Details

Abstrahiert von un-wichtigen Details

@@

@@@I

@@@

@@R

101

Page 103: Softwaretechnik - ilearn.informatik.uni-kiel.de

Achtung: „Unwichtige Details“?

102

Page 104: Softwaretechnik - ilearn.informatik.uni-kiel.de

Modellierung und Abstraktion

[Kra07]Abstraktionsfähigkeit ist eine derKern-Qualifikationen für die Informatik,bzw. für ein Informatikstudium.Bitte lesen Sie sich dieses Papier für dieVorlesung durchWas ist Ihre Meinung dazu?

IS ABSTRACTION THE KEYTO COMPUTING?

Why is it that some software engineers and computer scientists are able to produce clear, elegant designs and programs, while others cannot?

Is it possible to improve these skills through education and training? Critical to these questions is the notion of abstraction.

For over 30 years, I have been involved in teaching and research in computer science and software engineering.My teaching experience ranges from courses in programming,to distributed systems, distributed algorithms, concurrency,and software design. All these courses require that students areable to perform problem solving, conceptualization, modeling,and analysis. My experience is that the better students are clearly able to handle complexity and to produceelegant models and designs. The same students are also able to cope with the complexities of distributed algorithms, theapplicability of various modeling notations, and other subtle issues.

By JEFF KRAMER

36 April 2007/Vol. 50, No. 4 COMMUNICATIONS OF THE ACM COMMUNICATIONS OF THE ACM April 2007/Vol. 50, No. 4 37

103

Page 105: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Strukturierung

Arten der Strukturierung

• zeitliche Strukturierung:Anforderungsanalyse / Entwurf / Programmierung / Test

• qualitative Strukturierung:Effizienz / Robustheit / Korrektheit

• perspektivische Strukturierung:Verwendung von Datenstrukturen / Datenfluss / Kontrollfluss

• Dekomposition (Strukturierung in Bestandteile):Komponente 1, Komponente 2Diese Strukturierung ist so wesentlich, dass sie unter dem Prinzip Modularisierunggesondert betrachtet wird!

Strukturierung ist wichtig für Teamarbeit und Arbeitsteilung, um Verantwortlichkeitenzuordnen zu können. 104

Page 106: Softwaretechnik - ilearn.informatik.uni-kiel.de

Zyklenfreiheit und Hierarchisierung

Semantik der Pfeile?

105

Page 107: Softwaretechnik - ilearn.informatik.uni-kiel.de

Modularisierung: Produkteigenschaften

Kohäsion Innerhalb einzelner Module sollte ein enger Zusammenhang bestehen.⇒ hohe Modul-Kohäsion

Kopplung Zwischen Modulen sollten möglichst wenig Abhängigkeiten bestehen.⇒ geringe inter-modulare Kopplung

Modularisierung hilft Programme zu verstehen

• Es ist leichter mit Änderungen umzugehen (Information Hiding, Kapselung).

• Es ist leichter Verantwortlichkeiten zuzuordnen (Separation of Concerns).

• Es ist leichter bereits implementierte und evtl. benutzte Modulewiederzuverwenden.

106

Page 108: Softwaretechnik - ilearn.informatik.uni-kiel.de

Kohäsion und Kopplung

hohe Kohäsion /geringe Kopplung

geringe Kohäsion /geringe Kopplung

geringe Kohäsion / hohe Kopplung

hohe Kohäsion / hohe Kopplung

107

Page 109: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Modularisierung

bottom up Zuerst werden unabhängige Module konstruiert, die dann später‚zusammengebaut‘ werden.⇒ Zusammensetzbarkeit

top down Zuerst wird das Gesamtsystem in unabhängige Module aufgeteilt, die danneinzeln implementiert werden.⇒ Zerlegbarkeit

108

Page 110: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Kapselung

Die Kapselung dient dem “Information Hiding.”

• Begrenzen der Details (Geheimnisse) eines Moduls, die von außen sichtbar sind,• Secrets are key to sustainability

• Abgrenzen von Verantwortungsbereichen,

• Verringern von Abhängigkeiten zwischen Modulen,

• Zusammenhang mit anderen Prinzipien:• Modularisierung wird unterstützt.• Abstraktionen werden abgegrenzt.

109

Page 111: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Separation of Concerns

Trennung von Belangen / Zuständigkeiten:

• Aufteilen in unabhängige Belange / Aspekte, z.B.• in Kontroll- und Datenfluss,• in fachlich und technisch geprägte Lösungsteile,• nach Produkteigenschaften,• nach externen und internen Qualitätskriterien.

110

Page 112: Softwaretechnik - ilearn.informatik.uni-kiel.de

Separation of Concerns

“Let me try to explain to you, what to my taste is characteristic for all intelligent thinking.It is, that one is willing to study in depth an aspect of one’s subject matter in isolation forthe sake of its own consistency, all the time knowing that one is occupying oneself only withone of the aspects. We know that a program must be correct and we can study it fromthat viewpoint only; we also know that it should be efficient and we can study itsefficiency on another day, so to speak. In another mood we may ask ourselves whether,and if so: why, the program is desirable. But nothing is gained—on the contrary!—bytackling these various aspects simultaneously. It is what I sometimes have called ‘theseparation of concerns’, which, even if not perfectly possible, is yet the only availabletechnique for effective ordering of one’s thoughts, that I know of. This is what I mean byfocussing one’s attention upon some aspect: it does not mean ignoring the other aspects, itis just doing justice to the fact that from this aspect’s point of view, the other is irrelevant.It is being one- and multiple-track minded simultaneously.”

E.W. Dijkstra, On the role of scientific thought, 1974

111

Page 113: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Änderbarkeit

Software ist Gegenstand von Änderungen.

Typische Ursachen für Änderungen:

Korrektive Wartung Beseitigung von Fehlern

Perfektive Wartung Verbesserung nicht-funktionaler Eigenschaften

Adaptive Wartung Anpassung der Funktionalität wegen sich ändernderRahmenbedingungen

Inkrementelle Wartung Erweiterung der Funktionalität wegen Erkenntnisgewinnwährend der Entwicklung

112

Page 114: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Inkrementalität

• Schrittweises vorgehen, Rückkopplung nach jedem Schritt

• Anders sind große Projekte oft nicht zu organisieren

• Erlaubt frühzeitiges Feedback vom Kunden

Beispiel:

• es werden einzelne Software-Komponenten entwickelt und integriert, bevor alleKomponenten entwickelt werden

113

Page 115: Softwaretechnik - ilearn.informatik.uni-kiel.de

Prinzip: Gründlichkeit und Formalität

Aspekte u.a.:

• Formale Anforderungsspezifikation

• Formale Dokumentation des Software-Prozesses und seiner Ergebnisse

• Formaler Entwurf

• Formale Verifikation der Korrektheit von Software

Formalität ist (zumeist) Voraussetzung für einen Werkzeugeinsatz.

Formalität benötigt i.A. mathematische Fertigkeiten und zumeist auch eine gewisseDisziplin.

114

Page 116: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

115

Page 117: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

116

Page 118: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beziehungen zu anderen Bereichen der Informatik

Programmierung und Programmiersprachen

• Unterstützung für Modularität spielt eine zentrale Rolle.

• Strenge (statische) Typisierung erhöht die Zuverlässigkeit.

• „Generierung“ von Programmen aus formalen Spezifikationen (z.B.Compiler-Compiler oder modellgetriebene Softwareentwicklung)

• Domänenspezifische Sprachen (Domain Specific Languages, DSLs) enthaltenvorgefertigte Elemente für bestimmte Anwendungsbereiche.

• Beispielprojekte dazu:• Xbase: http://kosse-sh.de/projekte/xbase/• MENGES: http://menges.informatik.uni-kiel.de/• Sprat: http://www.sprat.uni-kiel.de/en/

117

Page 119: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beziehungen zu anderen Bereichen der Informatik

Datenbanksysteme

• Die Trennung von Modellbildung und Implementierung hat hier seine Ursprünge.Der Begriff „Modell“ wird hier jedoch nicht immer konsistent verwendet.

• Modellierung in Software Engineering und Datenbanken ähnlich:• Vergleich Klassendiagramm ↔ ER-Diagramm• starke inhaltliche Bezüge, siehe ORM später

• Datenbanksysteme können zur Integration verschiedenerSoftware-Entwicklungswerkzeuge dienen.

118

Page 120: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beziehungen zu anderen Bereichen der Informatik

Theoretische Informatik

• Entwicklung von Modellen zur formalen Spezifikation

• Problem: Reale Systeme sind so komplex, dass sie praktisch nicht vollständigformal beschrieben werden können.

• Ausweg: Kompositionalitätsergebnisse

• In der Praxis werden überwiegend semi-formale Methoden eingesetzt (z.B. dieUML).

• Formale Methoden spielen jedoch bei der Entwicklung sicherheitskritischer Systemeeine wichtige Rolle und werden dort auch eingesetzt.

119

Page 121: Softwaretechnik - ilearn.informatik.uni-kiel.de

Beziehungen zu anderen Disziplinen

Wirtschaftswissenschaften

• Betriebswirtschaftliche AspekteLohnt sich EDV finanziell?

• Volkswirtschaftliche AspekteWelche informationstechnische Infrastruktur benötigt die Republik?

• Muss die Softwareindustrie durch den Staat bzw. die EU subventioniert werden?Beispiel: „Konferenz - Förderung der Künstlichen Intelligenz“ in SH, März 2019

Psychologie

• User Experience: Nutzungsschnittstellen und Ergonomie• Organisation, Personalführung, Projektmanagement• Persönliche Qualifikation (Soft Skills): Kommunikation, Diskussionsleitung,

Projektleitung, Vortragspräsentation120

Page 122: Softwaretechnik - ilearn.informatik.uni-kiel.de

Unterschiede zu klassischen Ingenieurdisziplinen

Ingenieure (Bau, Elektro, Maschinenbau)

• Haben zumeist präzise Anforderungen an die zu entwickelnden Systeme,z.B. Abschalteinrichtung in der Motorsteuerung.

• Verwenden Mathematik,z.B. Differentialgleichungen.

• Arbeiten nach etablierten Prinzipien und Prozessen.

Die Informatik kommt sowohl aus der Mathematik als auch aus denIngenieurwissenschaften:

• Mathematik: Produktbezogene Strukturwissenschaft

• Ingenieurwesen: Eher Prozessbezogen

121

Page 123: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

122

Page 124: Softwaretechnik - ilearn.informatik.uni-kiel.de

Übersicht

Einleitung

Herausforderungen in derSoftwareentwicklung

Software Engineering als Lösung

Prinzipien des Software Engineering

Abstraktion

Strukturierung

Modularisierung

Kapselung

Separation of Concerns

Änderbarkeit

Inkrementalität

Gründlichkeit und Formalität

Beziehungen zu anderen Bereichen undDisziplinen

Professionelle Verantwortung

123

Page 125: Softwaretechnik - ilearn.informatik.uni-kiel.de

Professionelle Verantwortung

Software-Entwickler sollten sich nicht nur mit technischen Fragestellungen beschäftigen.Sie haben auch ethische, soziale und professionelle Verantwortung. Für viele Tätigkeitengibt es keine klaren Vorgaben:

• Entwicklung von militärischen Systemen

• Entwicklung von Systemen zur Überwachung

• Was ist das Beste für die Profession?

124

Page 126: Softwaretechnik - ilearn.informatik.uni-kiel.de

Software Engineering Code of Ethics I

ACM / IEEE Computer Society:

PUBLIC Software engineers shall act consistently with the public interest.

CLIENT / EMPLOYER Software engineers shall act in a manner that is in the bestinterests of their client and employer consistent with the publicinterest.

PRODUCT Software engineers shall ensure that their products and relatedmodifications meet the highest professional standards possible.

JUDGMENT Software engineers shall maintain integrity and independence intheir professional judgment.

125

Page 127: Softwaretechnik - ilearn.informatik.uni-kiel.de

Software Engineering Code of Ethics II

MANAGEMENT Software engineering managers and leaders shall subscribe to andpromote an ethical approach to the management of softwaredevelopment and maintenance.

PROFESSION Software engineers shall advance the integrity and reputation of theprofession consistent with the public interest.

COLLEAGUES Software engineers shall be fair to and supportive of their colleagues.

SELF Software engineers shall participate in lifelong learning regarding thepractice of their profession and shall promote an ethical approach tothe practice of the profession.

126

Page 128: Softwaretechnik - ilearn.informatik.uni-kiel.de

Software Engineering Code of Ethics III

Quelle: http://www.computer.org/web/education/code-of-ethics

Update:https://ethics.acm.org/code-2018

Kommentare?

127

Page 129: Softwaretechnik - ilearn.informatik.uni-kiel.de

Spezifischer

Recognize when a computer system is becoming integrated into theinfrastructure of society, and adopt an appropriate standard of care for thatsystem and its users.

When organizations and groups develop systems that become an important part ofthe infrastructure of society, their leaders have a responsibility to be good stewardsof these socially integrated systems.Part of that stewardship requires establishingpolicies for fair system access, including for those who may have been excluded.. . .Continual monitoring of how society is using a system will allow theorganization or group to remain consistent with their ethical obligations outlined in theCode. As the level of adoption changes, there are likely to be changes in theethical responsibilities of the organization or group. When appropriate standards ofcare do not exist, computing professionals have a duty to ensure they are developed.

128

Page 130: Softwaretechnik - ilearn.informatik.uni-kiel.de

Aktuelle Beispiele

Gesellschaftliche Fragen

• „Fake News“ und politische Beeinflussung

• Datenschutz, Big Data Analysen von Nutzerdaten

• „Attention is media’s true currency“

129

Page 131: Softwaretechnik - ilearn.informatik.uni-kiel.de

Verantwortung von Software-Ingenieuren: Entwicklung militärischer Systeme

1983: SDI (Strategic Defense Initiative von Ronald Reagan)⇒ „Software ist die Achillesferse von SDI“David L. Parnas (SDI-Software-Berater bis 1985)

Seit 2001: NMD (National Missile Defence von George W. Bush) – Nationale Raketenabwehr der USA2007–2009 Planungen der USA zur Installation einer Raketenabwehr in Polen und Tschechien; wurden

dann jedoch wieder verworfen.2010 Diskussion in der NATO zur Installation einer europäischen Raketenabwehr: Das Medium

Extended Air Defense System (MEADS)2011 Die USA und Deutschland steigen aus MEADS aus.

Herbst 2011 Lockheed Martin gibt MEADS nicht auf: erster Testschuss am 17.11.2011April 2014 Im Zuge der Krise in der Ukraine 2014 forderte der SPD-Wehrexperte Rainer Arnold die

Luftverteidigung als besondere deutsche Schwerpunktfähigkeit zu sichern und unter Rückgriffauf die Entwicklungsergebnisse MEADS zukunftsfähig zu machen.

Juni 2015 Die Verteidigungsministerin kündigt die Beschaffung von MEADS an. Von der Leyen sprachvon einer „Käseglocke“, die eine Großstadt oder ein Feldlager schützen könne.

März 2017 DPA: „Die Beschaffung des mehrere Milliarden Euro teuren RaketenabwehrsystemsMEADS für die Bundeswehr verzögert sich.“

. . . To be continued

130

Page 132: Softwaretechnik - ilearn.informatik.uni-kiel.de

Berufsaussichten von Software-Ingenieuren

Rank Job TitleNumber ofPostings perMillion

Average BaseSalary

Average Growth inPostings 2013-2016

1Full StackDeveloper

641 $110,770 122%

2 Data Scientist 360 $129,938 108%

3DevelopmentOperationsEngineer

731 $123,165 106%

4SalesforceAdministrator

80 $89,702 103%

5 IT Engineer 41 $85,563 89%

6SalesforceDeveloper

230 $108,089 83%

7 Quality Engineer 311 $71,111 83%

8Digital ProductManager

58 $73,169 75%

9 Cloud Engineer 217 $118,878 67%

10ManagementConsultingAnalytics Manager

47 $90,994 66%

http://spectrum.ieee.org/view-from-the-valley/at-work/tech-careers/software-engineering-jobs-dominate-list-of-best-careers-for-2017

131

Page 133: Softwaretechnik - ilearn.informatik.uni-kiel.de

Lernziele

• Lernen aus den Fehlern der Vergangenheit• Würdigen, dass ein planmäßiges Vorgehen bei der Entwicklung komplexer

Softwaresysteme im Team sinnvoll ist.Bei der Entwicklung kleiner „Progrämmchen“ ist das i.A. nicht erforderlich.

• Wissen, dass die Fähigkeit zur Zerlegung komplexer Probleme schon Teil derLösung ist. Insbesondere den Unterschied verstehen zwischen

• Programmieren im Kleinen,• Programmieren im Großen.

• Erkennen, dass vielfältige Beziehungen zu anderen Bereichen der Informatik und zuanderen Disziplinen existieren.

• Software-Entwickler haben auch Verantwortung.• Ein Verständnis der Prinzipien ist wichtiger als das Kennen konkreter Methoden.• Die konkreten Methoden ändern sich, die Prinzipien bleiben.

Trotzdem sehen wir uns im Folgenden einige konkrete Methoden an . . .132

Page 134: Softwaretechnik - ilearn.informatik.uni-kiel.de

Lernziele

ZielQualität ist das Ziel.

HerausforderungKomplexität und Evolution.

133

Page 135: Softwaretechnik - ilearn.informatik.uni-kiel.de

References I

Balzert, Helmut (2011). Lehrbuch der Softwaretechnik: Entwurf, Impementierung,Installation und Betrieb. 3. Spektrum Akademischer Verlag.

Booch, G. (1994). Object-Oriented Analysis and Design with Applications. 2nd.Benjamin/Cummings.

Booch, G., R.A. Maksimchuk, M.W. Engel, B.J. Young, J. Conallen und K.A. Houston(2007). Object-Oriented Analysis and Design with Applications. 3nd.Addison-Wesley. ISBN: 0-201-89551-X.

Brügge, B. und A. Dutoit (2010). Object Oriented Software Engineering Using UML,Patterns, and Java. 3rd. Prentice Hall. ISBN: 978-0138152215.

134

Page 136: Softwaretechnik - ilearn.informatik.uni-kiel.de

References II

Bundestag (2006). Verfügbarkeit der webbasierten Hartz-IV-Software A2LL.http://www.heise.de/newsticker/meldung/88318,http://dip.bundestag.de/btd/16/049/1604938.pdf.

Ghezzi, C., M. Jazayeri und D. Mandrioli (2003). Fundamentals of SoftwareEngineering. 2nd. Prentice Hall.

Grechenig, Thomas, Mario Bernhart, Roland Breiteneder und Karin Kappel (2010).Softwaretechnik. Pearson Studium.

Hasselbring, Wilhelm (2018). Softwaretechnik Folienskript.Standard Glossary of Software Engineering (1990). IEEE Std 610.12-1990. The Institute

of Electrical und Electronics Engineers. New York.Kecher, C. und A. Salvanos (2015). UML 2.5: Das umfassende Handbuch. Galileo

Computing. Rheinwerk Verlag GmbH. ISBN: 9783836229777.

135

Page 137: Softwaretechnik - ilearn.informatik.uni-kiel.de

References III

Kramer, Jeff (2007). “Is abstraction the key to computing?” In: 50.4, S. 36–42. DOI:10.1145/1232743.1232745.

Lipp, Moritz, Michael Schwarz, Daniel Gruss, Thomas Prescher, Werner Haas,Stefan Mangard, Paul Kocher, Daniel Genkin, Yuval Yarom und Mike Hamburg(2018). “Meltdown”. In: ArXiv e-prints. arXiv: 1801.01207.

Ludewig, J. und H. Lichter (2013). Software Engineering: Grundlagen, Menschen,Prozesse, Techniken. dpunkt.verlag. ISBN: 9783864912993. URL:https://books.google.de/books?id=OMtNDAAAQBAJ.

Podelski, Andreas und Bernd Westphal (2017). Softwaretechnik / Software-Engineering.

Rupp, C., S. Queins u. a. (2012). UML 2 glasklar: Praxiswissen für dieUML-Modellierung. 4. Auflage. Hanser. ISBN: 978-3-446-43057-0.

136

Page 138: Softwaretechnik - ilearn.informatik.uni-kiel.de

References IV

Sommerville, Ian (2018). Software Engineering. 10. Auflage.http://software-engineering-book.com. Pearson. ISBN: 978-3-86326-835-0.

Stachowiak, H. (1973). Allgemeine Modelltheorie. Wien: Springer-Verlag.

137