close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

FUORA Q | FUORA R

EinbettenHerunterladen
Software-Evolution: Einführung
Dr. Thorsten Arendt
Marburg, 16. Oktober 2014
Ü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 2014/2015
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 reengineering of established applications.“ [Gartner]
• Software-Evolution ist häufig nicht genügend systematisch.
3
Software-Evolution WS 2014/2015
Was ist Software-Evolution?
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.
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.
4
Software-Evolution WS 2014/2015
Software-Wartung und Software-Pflege
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.
Fault repair
(17%)
Software
adaptation
(18%)
Functionality
addition or
modification
(65%)
[Sommerville]
5
Software-Evolution WS 2014/2015
Software altert – Warum???
„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
6
Software-Evolution WS 2014/2015
Woran erkennt man Software-Alterung?
• 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
7
Software-Evolution WS 2014/2015
Warum wollen wir ein Software-System ändern?
• 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
8
Software-Evolution WS 2014/2015
Gesetze der Software-Evolution [Lehman]
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.
9
Software-Evolution WS 2014/2015
Gesetze der Software-Evolution [Lehman]
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.
10
Software-Evolution WS 2014/2015
Open Source Software: Projekte (1) (1969-2000)
11
http://www.unlu.edu.ar/~tyr/tyr/TYR-2004/poster--open_source_software_evolution.gif
Software-Evolution WS 2014/2015
Open Source Software: Projekte (2) (1995-2006)
[Deshpande,Riehle]
12
Software-Evolution WS 2014/2015
Einige Hypothesen zur Evolution von Open
Source Software (OSS)
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 und finden und fixen
Fehler schneller. (z.B. modifizierte Funktionen pro Zeiteinheit)
5. OSS-Projekte haben eine bessere Modularisierung. (z.B.
Korrelation von hinzugefügten Funktionen zu geänderten)
13
Software-Evolution WS 2014/2015
Die Gesetze von Lehman in Open Source
Software [Xie, Chen, Neamtiu]
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
Feedback
Funktionaler Zusammenhang zwischen Modulanzahl
und inkrementellem Aufwand
14
Software-Evolution WS 2014/2015
Zusammenfassung
• 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-SourceProjekte aufgestellt worden sind, wollen wir sie anhand von
Open-Source-Projekten studieren.
15
Software-Evolution WS 2014/2015
Sekundär-Literatur
• 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
16
Software-Evolution WS 2014/2015
Document
Kategorie
Kunst und Fotos
Seitenansichten
2
Dateigröße
536 KB
Tags
1/--Seiten
melden