software evolution: einführung · 15 software-evolution ws 2015/2016 •softwareentwicklung ist...

16
Software Evolution: Einführung Dr. Thorsten Arendt Marburg, 15. Oktober 2015

Upload: others

Post on 28-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Software Evolution: Einführung

Dr. Thorsten Arendt

Marburg, 15. Oktober 2015

Page 2: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Überblick

• Was ist Software-Evolution?

• Warum ist Software-Evolution wichtig?

• Was sind die Prinzipien der Software-Evolution?

• Ist Evolution von Open-Source-Software anders?

2 Software-Evolution WS 2015/2016

Page 3: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Warum ist Software-Evolution wichtig?

• Immer mehr Softwaresysteme existieren und müssen gewartet

werden.

• Der Evolutionsanteil an der Softwareentwicklung wird immer höher.

– „Faktor 2 bis 100 je nach Anwendung“ [Sommerville]

– „1976 – 1998: Wartungskosten mehr als 67%“ [Schach]

– „Through 2008, at least 65 percent of custom-developed services

for new SOA projects will be implemented via wrapping or re-

engineering of established applications.“ [Gartner]

• Software-Evolution ist häufig nicht genügend systematisch.

3 Software-Evolution WS 2015/2016

Page 4: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Was ist Software-Evolution?

4 Software-Evolution WS 2015/2016

Definitionen

Wartung (eines SW-Systems): Beseitigung von Fehlverhalten des Systems

nach seiner Inbetriebnahme

Pflege (eines SW-Systems): Anpassung des Systems an geänderte

Bedingungen oder dessen Weiterentwicklung aufgrund neuer oder

geänderter Anforderungen

Betreuung (eines SW-Systems): Zusammenfassung der Pflege- und

Wartungstätigkeiten.

Im laufenden Betrieb in ihrer Zielumgebung ist Software in der Regel

Änderungen unterworfen. Die dafür notwendigen Tätigkeiten kann man - je

nach Ursache und Zielsetzung - in Pflege- und Wartungstätigkeiten einteilen.

Alle Änderungen an Softwaresystemen nach der ersten Auslieferung, die auch

Architekturänderungen einschließen können, werden als Software-Evolution

bezeichnet.

Page 5: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Software-Wartung und Software-Pflege

5 Software-Evolution WS 2015/2016

Reparatur von Software-Fehlern: Diese ist i.A. umso teurer, je früher die

Ursache im Entwicklungsprozess liegt. D.h. Codierungsfehler lassen sich relativ

billig beheben, Fehler in den Anforderungen sind am teuersten.

Anpassung an veränderte Betriebsbedingungen: Diese können sich z.B.

durch neue Hardware, Betriebssysteme oder sonstige Basis-Software ergeben.

Erweiterung oder Änderung der Funktionalität: Diese können sich z.B. aus

organisatorischen oder geschäftlichen Änderungen ergeben.

Functionality

addition or

modificat ion

(65%)

Fault repair

(17%)

Software

adaptation

(18%)

[Sommerville]

Page 6: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Software altert – Warum???

6 Software-Evolution WS 2015/2016

„Programs, like people, get old. We can‘t prevent aging, but we can

understand its causes, take steps to limit its effects, temporarily reverse

some of the damage it has caused, and prepare for the day when the

software is no longer viable.“ [Parnas]

• zu wenig Anpassung an neue Anforderungen

• durch Anpassungen

– Einschränkungen im Design

– abnehmende Performanz

– abnehmende Zuverlässigkeit

• Nötige Aufräumarbeiten werden nicht durchgeführt.

– fehlende Dokumentation nachreichen

– Restrukturierung der Software

– Testsuite anpassen

Page 7: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Woran erkennt man Software-Alterung?

7 Software-Evolution WS 2015/2016

• Veraltete oder fehlende Dokumentation

• Fehlende Tests

• Die ursprünglichen Entwickler sind gegangen.

• Das Wissen über das Innere der Software ist weg.

• Das Gesamtsystem wird nicht voll verstanden.

• Die Entwickler brauchen zu viel Zeit für einfache Änderungen.

• Kontinuierliches Fehlersuchen

• Lange Build-Zeiten

• Duplizierter Code und andere Code Smells

Page 8: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Warum wollen wir ein Software-System ändern?

8 Software-Evolution WS 2015/2016

• Neue Anforderungen

• Die Performanz verbessern

– „First do it, then do it right, then do it fast.“

• Das System auf eine neue Plattform portieren.

– Eine neue Technologie ausprobieren

– Dazu muss plattformspezifischer Code identifiziert werden.

• Extraktion des Designs

– Um eventuell Teile neu zu schreiben

• Abhängigkeit vom Menschen reduzieren

• Ein monolithisches System in individuelle Teile zerlegen

Page 9: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Gesetze der Software-Evolution [Lehman]

9 Software-Evolution WS 2015/2016

1. Fortlaufende Änderungen:

– Wird ein System in realer Umgebung wirklich genutzt, so wird es notwendigerweise zum Gegenstand von Änderungen.

2. Wachsende Komplexität:

– Je länger ein System genutzt und fortlaufend geändert wird, desto komplexer wird seine Struktur. Vereinfachung erfordert zusätzlichen Aufwand.

3. Stabile Kenngrößen:

– Software-Evolution folgt festen Regeln. Kenngrößen wie SW-Umfangszuwachs, Zeit zwischen zwei Auslieferungen (Releases) oder Fehlerhäufigkeit sind (nahezu) invariant.

4. Organisatorische Stabilität:

– Große SW-Systeme entwickeln sich stabil - und relativ unabhängig von den dafür aufgewandten Kosten und Ressourcen.

Page 10: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Gesetze der Software-Evolution [Lehman]

10 Software-Evolution WS 2015/2016

5. Notwendige Vertrautheit:

– Im langfristigen Mittel ist der inkrementelle Zuwachs pro Version nahezu konstant. (Z.B. muss ein zu großer Evolutionsschritt durch mehrere kleinere wieder kompensiert werden.)

6. Kontinuierliche wachsende Software:

– Der funktionale Anteil eines Programms muss kontinuierlich wachsen, um den Anwender weiterhin zufrieden zu stellen.

7. Abnehmende Qualität:

– Programme scheinen eine abnehmende Qualität zu haben, es sei denn, sie werden systematisch gepflegt und an Änderungen in der Umgebung angepasst.

8. Feedback:

– Entwicklungsprozesse sind Feedback-Systeme und müssen als solche behandelt werden, um erfolgreich geändert oder verbessert zu werden.

Page 11: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Open Source Software: Projekte (1) (1969-2000)

11 Software-Evolution WS 2015/2016http://www.unlu.edu.ar/~tyr/tyr/TYR-2004/poster--open_source_software_evolution.gif

Page 12: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Open Source Software: Projekte (2) (1995-2006)

12 Software-Evolution WS 2015/2016

[Deshpande,Riehle]

Page 13: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Einige Hypothesen zur Evolution von Open

Source Software (OSS)

13 Software-Evolution WS 2015/2016

Beispiel: Die Linux-Entwicklung startete 1994 (v 1.0). Die

Evolution bis 2003 zeigt, dass Linux mehr als linear wächst.

Hypothesen:

1. OSS wächst schneller als Closed Source Software (CSS).

2. OSS-Projekte zeigen mehr Kreativität. (z.B. Hinzugefügte

Funktionalität pro Zeiteinheit)

3. OSS ist weniger komplex als CSS. (z.B. Komplexitätsmaße)

4. OSS-Projekte haben weniger Fehler; Fehler finden und

fixen erfolgt schneller. (z.B. modifizierte Funktionen pro

Zeiteinheit)

5. OSS-Projekte haben eine bessere Modularisierung. (z.B.

Korrelation von hinzugefügten Funktionen zu geänderten)

Page 14: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Gesetz Messungen / Metriken

Fortlaufende Änderungen z.B. Anzahl der Änderungen (kumuliert)

Wachsende Komplexität Komplexitätsmaße (z.B. McCabe)

Stabile Kenngrößen Inkrementelle Änderungen der Modulanzahl

Organisatorische

Stabilität

Durchschnittliche Anzahl der Änderungen pro Tag,

Änderungs- und Wachstumsraten der Funktionen

Notwendige Vertrautheit z.B. Anzahl der Änderungen an Programmelementen

Kontinuierliches

Wachstum

Lines of Code (LoC), Anzahl der Module, Anzahl der

Definitionen (Typen, globale Variablen, Funktionen)

Abnehmende Qualität Externe und interne Qualitätsmetriken

FeedbackFunktionaler Zusammenhang zwischen Modulanzahl

und inkrementellem Aufwand

Die Gesetze von Lehman in Open Source

Software [Xie, Chen, Neamtiu]

14 Software-Evolution WS 2015/2016

Page 15: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Zusammenfassung

15 Software-Evolution WS 2015/2016

• Softwareentwicklung ist vielfach langfristig angelegt.

• Software-Evolution umfasst die Wartung und Pflege von

Softwaresystemen sowie ihre Erweiterung bezüglich neuer

Anforderungen.

• Software altert.

• Meir M. Lehman hat eine Reihe von Gesetzen aufgestellt,

die die Prinzipien der Software-Evolution beschreiben.

– Obwohl diese Gesetze ursprünglich für Closed-Source-

Projekte aufgestellt worden sind, wollen wir sie anhand von

Open-Source-Projekten studieren.

Page 16: Software Evolution: Einführung · 15 Software-Evolution WS 2015/2016 •Softwareentwicklung ist vielfach langfristig angelegt. •Software-Evolution umfasst die Wartung und Pflege

Sekundär-Literatur

16 Software-Evolution WS 2015/2016

• Ian Sommerville: Software Engineering, 9. Auflage, 2013

• Stephen Schach: Object Oriented Software Engineering, 1. Auflage, 2007

• David Lorge Parnas: Software Aging, ICSE, 1994

• Meir M. Lehman: Laws of Software Evolution Revisited, EWSPT, 1996

• Amit Deshpande, Dirk Riehle: The Total Growth of Open Source, OSS,

2008

• Guowu Xie, Jianbo Chen, Iulian Neamtiu: Towards a Better Understanding

of Software Evolution: An Empirical Study on Open Source Software,

ICSM, 2009