22
Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 1 Einführung: Software, Qualität und Prinzipien

Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

Vorlesung Software Engineering I

WS 2019/20

Prof. Dr. Dirk Müller

1 Einführung: Software, Qualität und Prinzipien

Page 2: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

2/22

Software-Enthusiasmus in 1950ern

Software mit riesigen Vorteilen gegenüber Hardware● auf Universalrechnern für alle Zwecke einsetzbar

– ja, aber das zeigt die Verantwortung eines Informatikers

● einfach zu schreiben, testen und zu pflegen– 2012 nur 39% aller Projekte erfolgreich

● einfach zu replizieren– zu kopieren ja, aber zu portieren nein

● kein Verschleiß– ja, aber relative Alterung

● keine flüchtigen Fehler– für einfache Programme ja, aber bei Multithreading

auf Mehrkern-Prozessoren Heisenbugs durchz. B. Race Conditions sogar typisch

Page 3: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

3/22

Software

Quelle: [Bal09], S. 11Kosten von Software im Automobilbereich

Page 4: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

4/22

Übersicht

● Einführung– Organisatorisches– Begriff– Qualität von Software– Prinzipien der Softwaretechnik

● Software-Entwicklungsprozesse● Anforderungsanalyse● Prozessanalyse und -modellierung● Objekt-orientierte Analyse● UML

Page 5: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

5/22

Organisatorisches

● Modul: I-150 Software Engineering I● Gruppen: 18/043/01 + 61 + 62● Vorlesung

– ungerade Woche: Mittwoch 9.20 Uhr – 10.50 Uhr, Raum S 327– gerade Woche: Mittwoch 11.10 Uhr – 11.40 Uhr, Raum S 331– 14 Termine

● zweistündige Klausur am Semesterende (mit Unterlagen)● Die APL (Beleg) für Software Engineering II im

Sommersemester 2020 wird vorbereitet.– Die Vorbereitung (Dez/Jan) zählt in SE I als PVL.

● Praktikum: Herr J. Roeper, Raum S 131– 18/043/01: Mi 13:20-14:50 (13 Sitzg.)– 18/043/61+62: Di 13:20-14:50 (W1), Do 9:20-10:50 (W2) (13 Sitzg.)

Page 6: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

6/22

Lehrbücher

● Ian Sommerville: „Software Engineering 9“,Addison-Wesley, 2010 [Som10]

● Helmut Balzert: „Lehrbuch der Softwaretechnik. Softwaremanagement“, 2. Auflage,Springer-Verlag, 2008 [Bal08]

● Helmut Balzert: „Lehrbuch der Softwaretechnik. Basiskonzepte und Requirements Engineering“,3. Auflage, Springer-Verlag, 2009 [Bal09]

● Helmut Balzert: „Lehrbuch der Softwaretechnik. Entwurf, Implementierung, Installation und Betrieb“,3. Auflage, Springer-Verlag, 2011 [Bal11]

● Heinz-Peter Gumm, Manfred Sommer: „Einführung in die Informatik“, 10. Auflage, Oldenbourg-Verlag, Kapitel 12

Page 7: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

7/22

● Software-Engineering (engl.), F. L. Bauer, 1968– Softwaretechnik, auch: Softwaretechnologie, Abk.: SWT, SE

● Software, John W. Tukey, 1958– Programm + Dokumentation + Konfigurationsdaten + Modelle– Gegensatz: Hardware, Zwischenstufe Firmware– spezielle Form von Daten, die zusammen mit Hardware und

Anwendungsdaten einen Computer ausmachen

● Engineering, ca. 1300– planvolles, gezieltes Vorgehen zum Entwurf, Bau,

zur Erhaltung und Verbesserung von Maschinen,Geräten, Systemen, Strukturen und Prozessen

– Gegensatz: Kunst und Wissenschaft– military engineering vs. civil engineering

● Metapher liefert Bezeichnung, aber Analogien begrenzt

Begriffe

Page 8: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

8/22

Software und Computer

● Software als eine spezielle Form von Daten– immateriell, keine physikalischen Gesetze– kein Verschleiß, aber relative Alterung– keine SI-Einheit, aber Anzahl der Codezeilen

(lines of code, LOC) oft genutzt: SW-Metriken– fragwürdiges Leistungsmaß Produktivität in

LOC/Monat (motiviert aufgeblähten Code)– Wiss. Leistung in eingeworbener Drittmittelrate z. B. in

€/Jahr (Geld ist ein Mittel, nicht das Forschungsziel) [9]– Energieeffizienzklasse Pkws (Bezug des

CO2-Ausstoßes auf Masse, nicht auf Nutzflächeoder -volumen, Masse ist Mittel und nicht Ziel) [8]

● Freiheit: sehr flexibel● Verantwortung: sehr komplex● Computer nicht einfach neue Maschinen,

sondern neue Qualität: digitale Revolution

Page 9: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

9/22

Kritik am Begriff

● Donald Knuth: Kunst und Wissenschaft, aberkeine Ingenieurwissenschaft [2]

● Edsger W. Dijkstra: Engineering ist derfalsche Begriff, Ziel ist widersprüchlich in sich,„How to program if you cannot.“ [3]

● nur sehr selten als anerkannter Berufsabschluss● Revolutionen statt Evolution legen nahe, dass es sich

(noch?) nicht um eine Ingenieurwissenschaft handelt.– Strukturierte Programmierung seit ca. 1970– Objekt-orientierte Programmierung seit ca. 1980– Modellgetriebene Programmierung seit ca. 2000– Aspektorientierte Programmierung seit ca. 2000

Page 10: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

10/22

Definitionen

● Ziel: kostengünstige Entwicklung von SW hoher Qualität● David Parnas [1]: Design for Change

„multi-person construction of multi-version programs“● Helmut Balzert: „Zielorientierte Bereitstellung und

systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Ent-wicklung und Anwendung von umfangreichen Software-systemen. Zielorientiert bedeutet die Berücksichtigungz. B. von Kosten, Zeit, Qualität.“ [Bal09], S. 17

● IEEE [4]: „The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.“

Page 11: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

11/22

Qualität von Software: ISO/IEC 9126 von 2001

Design for Change

Was?

Wie?(nichtfunktionaleEigenschaften)

Page 12: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

12/22

Qualität von Software: ISO/IEC 250mn von 2011

● Software product Quality Requirements and Evaluation (SQuaRE)

● zwei neue Hauptkriterien, somit jetzt insgesamt acht– Sicherheit (Security)– Kompatibilität: Koexistenz und

Interoperabilität

● Funktionalität heißt jetzt funktionale Angemessenheit

● Effizienz heißt jetzt Leistungseffizienz● Änderbarkeit mit Modularität und

Wiederverwendbarkeit● Zuverlässigkeit mit Verfügbarkeit

Page 13: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

13/22

Herausforderungen der SW-Technikim 21. Jahrhundert

● Heterogenität– verteilte Systeme, Internet– Betriebssysteme– Altsysteme (Legacy-Software)

– Programmiersprachen

● Auslieferungsdruck (Produktzyklen)– vs. hohe Qualität und geringe Kosten

● Vertrauen– Internet: potenziell jeder hat Zugriff– medizinische Daten (z. B. elektronische

Gesundheitskarte)– Bankdaten (Online-Banking)– diplomatische/politische Geheimnisse– Wahlen über Internet

Qualität

Zeit Kosten

Windows

Linux

Mac OS

COBOL

Fortran

Pascal

Quelle: [Som10]

Page 14: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

14/22

Umfang von Software-Systemen

Quelle: [Bal09], S. 12

Page 15: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

15/22

Disziplinen der Softwaretechnik

1. Software requirements Anforderungen

2. Software design Entwurf

3. Software construction Konstruktion

4. Software testing Testen

5. Software maintenance Wartung

6. Software configuration management z. B. Versionsverwaltung

7. Software engineering management z. B. Projektplanung

8. Software engineering process Verbesserung der Prozesse

9. Software engineering tools and methods Werkzeuge und Methoden

10. Software quality QualitätQuelle: [4]

Page 16: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

16/22

Prinzipien der Softwaretechnik

Quelle: [Bal09], S. 49

Page 17: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

17/22

Prinzipien der Softwaretechnik

● Abstraktion, auch: Modellierung [5]– Abbildung (von etwas)– Verkürzung (Abb. nur der relevanten Aspekte)– Pragmatismus (Für wen? Wann? Wozu?)

● Strukturierung– Zusammenhänge z. B. durch Graphen mit Knoten und Kanten

● Hierarchisierung– gerichtete, azyklische Graphen (DAGs); Bäume

● Modularisierung– Gliederung, z. B. Klassen, Methoden, Funktionen und Prozeduren

● Bindung und Kopplung– Bindung: Grad des Intrakomponenten-Datenaustauschs → max.– Kopplung: Grad des Interkomponenten-Datenaustauschs → min.

Page 18: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

18/22

Prinzipien der Softwaretechnik

● Geheimnisprinzip– information hiding, David Parnas [6]– Trennung in Schnittstellen und Implementierungen– nur benötigte Daten nach außen– erleichtert konsistente Haltung der internen Daten

● Lokalität– jeweils alle semantisch zusammengehörenden Daten sind auf

einer Seite (max. 30 Anweisungen) zu finden.

● Verbalisierung– Namensgebung (Bezeichner)– geeignete Kommentare– selbstdokumentierende Konzepte und Sprachen

(z. B. Ada vorbildlich, C++ als Gegenteil)

Page 19: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

19/22

Software-Lebenszyklus

● meist Unterschätzung der Lebensdauer von SW-Systemen– Design for Change– z. B. Space Shuttle der NASA 1981-2011

● Betrieb ist normalerweise die längste und teuerste Phase– Größenordnung Jahrzehnte ist typisch– Wartung und Evolution

● Software-Alterung [7]– kein Verschleiß wie bei materiellen Dingen– Umgebung ändert sich (Anforderungen

und Hardware sowie andere Software)=> relative Alterung

– Anpassungen verschlechtern Struktur,was zu noch mehr Alterung führt(Gegenmaßnahme: Refactoring)

Alterung

Hardware

SW-Umgebung

Anforderungen

Änderungen

Page 20: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

20/22

Software-Lebenszyklus

Spezifikation

Entwurf

Implemen‑tierung

Installation

Betrieb

Start derEntwicklung

Abschaltungbzw. Ablösung Änderbarkeit

Funktionale AngemessenheitBenutzbarkeitSicherheit

KompatibilitätÜbertragbarkeitÄnderbarkeit

Funktionale AngemessenheitBenutzbarkeitLeistungseffizienzZuverlässigkeit

Quelle: [Bal11], S. 1 f.

Page 21: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

21/22

Zusammenfassung

● Softwaretechnik als Reaktion auf Softwarekrise seit 1968– Umfang und Komplexität wachsen exponentiell– Heterogenität– Auslieferungsdruck (Produktzyklen immer kürzer)– Vertrauen

● Erstellung von Programmen mit mehreren Versionen durch mehrere Personen

● Qualität von Software: Funktionale Angemessenheit und nichtfunktionale Eigenschaften mit wichtigster darunter Änderbarkeit: Design for Change

● Magisches Dreieck aus Qualität, Zeit und Kosten– meist Fokussierung auf zwei der drei Ziele nötig

● SW-Lebenszyklus mit 5 Phasen: Spezifikation, Entwurf, Implementierung, Installation und Betrieb

Page 22: Software Engineering I - htw-dresden.demuellerd/SWEngI_WS... · WS 2019/20 Dirk Müller: Software Engineering I 2/22 Software-Enthusiasmus in 1950ern Software mit riesigen Vorteilen

WS 2019/20Dirk Müller: Software Engineering I

22/22

Literatur[1] David Lorge Parnas : „Software engineering or methods for the multi-

person construction of multi-version programs“, Programming Methodology, Springer Berlin Heidelberg, 1975, S. 225-235

[2] Knuth, Donald. „Computer Programming as an Art.“ Comm. of the ACM 17 (12): 667-673, 1975, Transcript of the 1974 Turing Award lecture.

[3] Dijkstra, E. W. „On the cruelty of really teaching computing science.“ 1988, http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html, Download am 20.03.2014

[4] Abran, A. and J.W. Moore (exec. eds); P. Borque and R. Dupuis (eds.). 2004. „SWEBOK: Guide to the Software Engineering Body of Knowledge.“ Piscataway, NJ, USA: IEEE

[5] Herbert Stachowiak. „Allgemeine Modelltheorie.“ Springer Wien, 1973[6] Parnas, D. L. „Information Distribution Aspects of Design Methodology“, in:

Proc. Information Proc. 71, Amsterdam, North-Holland, 1971, S. 339-344.[7] Parnas, D. L.: Software Aging. In: Int'l Conf. on Software Engineering.

IEEE Computer Society Press, Sorrento, Italy 1994, S. 279-287[8] ADAC: „CO2-Label für Pkw: Effizienzklassen mit wenig Aussagekraft“,

25.2.2019, Download am 11.10.2019, https://www.adac.de/rund-ums-fahrzeug/auto-kaufen-verkaufen/neuwagenkauf/co2-label-pkw-effizienzklassen/

[9] D. Jansen, A. Wald, K. Franke, U. Schmoch und T. Schubert: „Drittmittel als Performanzindikator der wissenschaftlichen Forschung“, Koelner Z. Soziol. u. Soz. Psychol. (2007) 59: 125.,https://doi.org/10.1007/s11577-007-0006-1