Wiederverwendung als Methode im Softwareengineering.Die Präsentation stellt eine Zusammenfassung des Kapitels 24 aus dem bekannten Lehrbuch "Software
Engineering" von Ludewig & Lichter dar.
2. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Wiederverwendung von Software-Einheiten
(1) Definition von Wiederverwendung und
Wiederverwendbarkeit
(2) Kosten & Nutzen, Vorteile & und Nachteile
(3) Rahmenbedingungen
(4) Entwicklungstechniken für
wiederverwendbare Software-Einheiten
(5) Codierung vs. Komposition
3. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendung (1)
Wiederverwendung
Die Verwendung bereits existierender musikalischer Werke
Die Reproduktion von Werken der bildenden Künste
Das Zitat und das Plagiat in der Literatur
4. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendung (2)
Wesentliche Merkmale der Wiederverwendung
Aufwand wird reduziert
Implikation von sozialem Gefälle zwischen ursprünglichen
Urheber und Wiederverwender
Möglichkeit zur günstigen Beeinflussung der Qualität des
Neuen durch die Wiederverwendung
5. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendung (3)
Im Software Engineering findet keine Wiederverwendung
physischer Artefakte statt.
Kauf einer kopierten Software (Wiederverwendung der gesamten
Software)
Verwendung von Routinen des Betriebssystems
(Wiederverwendung einer bestimmten Prozedur)
Wiederverwendung eigener Erfahrungen mit bereits geschriebenen
Programmen (Wiederverwendung eines Algorithmus)
6. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendung (4)
Erneutes Nutzen vorhandener Vorlagen zur Erstellung von
Dokumenten (Wiederverwendung von Strukturen)
Übersetzen eines Programms in eine andere
Programmiersprache (Wiederverwendung von Code)
Vererbung in der Objektorientierten Programmierung
(Wiederverwendung eines bestehenden Typ)
Prüfen eines neuen Programms mit alten Testdatensätzen
(Wiederverwendung von Testdaten)
7. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendung (5)
„ Software reuse is the process whereby an organization
defines a set of systematic operating procedures to
specify, produce, classify, retrieve, and adapt software
artifacts for the purpose of using them in its development
activities“
[Mili et al. (2002)]
8. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendung (6)
Wiederverwendung ist im weiten Sinne die erneute
Verwendung von
Software-Produkten
Lösungsstrukturen, Methoden und Sprachen
Komponenten von Betriebssystem, Compiler oder
Bibliotheken
Im engeren Sinne besteht bei der Wiederverwendung
Wahlfreiheit zwischen Neuentwicklung und Anpassung
von bestehenden Komponenten
9. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendbarkeit (1)
„ reusability – The degree to wich a software module or
other work product can be used in more than one
computer program or software system.“
[IEEE Std. 610.12 (1990)]
10. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendbarkeit (2)
Unterschieden werden kann zwischen geplanter und
ungeplanter Wiederverwendung
Die Wiederverwendbarkeit (reusability) einer Software-Einheit
hängt von deren Einsatzspektrum und dem nötigen
Anpassungsaufwand ab
11. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Definition von Wiederverwendbarkeit (3)
[Ludewig et al., 2010]
12. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Kosten der Wiederverwendung (1)
Mehraufwand bei der Entwicklung wiederverwendbarer
Software-Einheiten [55% (Tracz) bis 100% (Margono
und Rhoads)]
Kosten für die Verwaltung der Software-Einheiten in einem
Repository
Kosten für die Recherche, Anpassung und Integration der
Software-Einheit
13. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Kosten der Wiederverwendung (2)
[Ludewig et al., 2010]
14. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Nutzen der Wiederverwendung (1)
Merkmale des Nutzen sind die gesparten
Entwicklungskosten (E) und die bessere Qualität (Q)
der wiederverwendeten Software-Einheiten
Zu berücksichtigen sind die Anpassungskosten (A) und die
Entwicklungs- und Verwaltungskosten (EV)
15. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Nutzen der Wiederverwendung (2)
K = K EV ∑ i K A
N = ∑i N E N Q
16. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Nutzen der Wiederverwendung (3)
Beispielrechnung
Mehraufwand bei Entwicklungskosten: 80% der
Entwicklungskosten
Kosten für Recherche und Anpassung: 20% der
Entwicklungskosten
Nutzen durch höhere Qualität: 10% der
Entwicklungskosten
17. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Nutzen der Wiederverwendung (4)
Unter der Bedingung, dass der Nutzen die Kosten übersteigt
ergibt sich:
Nach der 1. Wiederverwendung: Kosten und Nutzen
halten sich die Waage
Nach der 2. Wiederverwendung: Nutzen überwiegt
18. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Vorteile der Wiederverwendung
Senkung von Entwicklungskosten und Verkürzung von
Entwicklungszeit durch Einsparung von Entwicklungsarbeit
Präzisere Kalkulation von anfallenden Kosten, durch bessere
Abschätzbarkeit von Anpassungs- und Integrationskosten
Höhere Qualität der entwickelten Software durch
wiederverwendete, ausgereiftere Software-Einheiten
Bessere Wartung durch zentral verwaltete Repositories
Schnelleres Auffinden von Fehlern durch mehrfach eingesetzte
Software-Einheiten in unterschiedlichen Systemen
19. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Nachteile der Wiederverwendung
Entwicklung und Einsatz von wiederverwendbaren Software-
Einheiten stehen hohe Investitionskosten gegenüber
Ohne die Möglichkeit zur langfristigen Planung bleibt die
Entwicklung wiederverwendbarer Software-Einheiten
unrentabel.
Zwingende Voraussetzung ist die Stabilität der eingesetzten
Software-Einheiten.
20. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Wiederverwendbarkeit nach Programmklassen
(Lehman)
S-Programme mit stabilen Spezifikationen
Wiederverwendung von Programm-Bibliotheken
P-Programme auf der Grundlage stabiler Modelle
Wiederverwendung als Lösungspaket oder
Wiederverwendung von Teilen als S-Programme
Meist instabile E-Programme
Wiederverwendung nur durch massive Anpassung möglich
21. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Rahmenbedingungen (1)
[Ludewig et al., 2010]
22. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Rahmenbedingungen (2)
Wiederverwendung muss belohnt werden!
Mehraufwand rechtfertigen
Nutzen des Einsatzes von Software-Einheiten ersichtlich
machen
23. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Rahmenbedingungen (3)
Der Nutzen der Wiederverwendung muss durch
Metriken belegt sein!
Messbarkeit zentraler Aspekte der Wiederverwendung
wie Kosten und Nutzen sicherstellen
24. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Rahmenbedingungen (4)
Die Qualitätssicherung muss Wiederverwendung
unterstützen!
Höhere Qualitätsanforderungen an wiederverwendbare
Software stellen
Systematische und intensive Prüfung der Software-
Einheiten
Prüfung im Kontext der zu Anwendung
25. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Rahmenbedingungen (5)
Standards und Richtlinien müssen definiert und
eingehalten werden!
26. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Rahmenbedingungen (6)
Bibliotheken von Standardkomponenten müssen zur
Verfügung stehen und auch genutzt werden!
Auf vorhandene Datenstrukturen und Funktionen
zurückgreifen
Sicherstellen, dass bereitgestellte Bibliotheken auch in
der Entwicklung eingesetzt werden
27. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (1)
[Ludewig et al., 2010]
28. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (2)
Prozeduren
Befehlssequenzen können erneut aufgerufen und durch
Parameter angepasst werden
Konkrete Implementierung der Funktionalität wird irrelevant
29. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (3)
Module, Information Hiding [Ludewig et al.: 17.3.3]
Modulkonzept ermöglicht Trennung von Schnittstelle und
Implementierung
Gekapselte Datenstrukturen und abstrakte Datentypen
fördern Wiederverwendung
Sicherheit in der Implemetierung durch Information Hiding
30. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (4)
Objekte, Vererbung [Ludewig et al.: 17.4.1]
Vererbung ermöglicht Anpassung wiederverwendeter
Software-Einheiten
Einbindung in Klassenhierarchie erschwert
Wiederverwendung einzelner Software-Einheiten
31. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (5)
Programmgeneratoren
Wisse über Funktionsweise und Aufbau bestimmter
Anwendungen kann in Programmgeneratoren abgelegt
werden
Der Entwickler kann die Anwendung auf hohem
Abstraktionsniveau beschreiben und generieren lassen
32. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (6)
Rahmenwerke [Ludewig et al.: 17.5.3]
Anwendungen auf der Basis von Rahmenwerken können
deren Architektur und bestimmte Code-Komponenten
wiederverwenden
33. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (7)
Muster [Ludewig et al.: 17.5.1/2]
Möglichkeit der Wiederverwendung abstrakter Bestandteile
des Software-Engineerings
34. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (8)
Komponenten
Wiederverwendung abgeschlossener, unveränderbarer
Software-Einheiten innerhalb eines bestimmten
Komponentenmodell
Loslösung von der Klassenhierarchie der Objektorientierung
35. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (9)
Produktlinien
Produktion und Einsatz wiederverwendbarer Einzel-
Komponenten zur Entwicklung von sich ähnelnden
Anwendungen (Produktreihen)
36. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Entwicklungstechniken (10)
Model Driven Architecture [Ludewig et al.: 15.4]
Wiederverwendung technologisch unabhängiger, abstrakter
Modell die die fachlichen Anforderungen spezifizieren
Wiederverwendung von Transformationsvorgängen zwischen
abstraktem Modell und Zieltechnologie
37. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Codierung vs. Composition (1)
„ [...] one aspect of this weakness is the absence of a
software components subindustrie … [that] will offer
families of routines for any given job [...] He [the
customer] will consult a catalog offering routines in
varying degrees of precision, robustness, time-space
performance, and generality [… ] he should be able safely
to regard components as black-boxes.“
[M.D. McIlroy (1969)]
38. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Codierung vs. Composition (2)
[http://www.knowledgerush.com/wiki_image/9/95/Software
_components_lecture_large.jpg]
39. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Codierung vs. Composition (3)
Methaper der Software-ICs [Cox, (1986)]
ICs haben präzise Spezifikation
ICs haben einfache, standardisierte Schnittstellen
ICs sind ausreichende universell
ICs lassen sich spezialisieren
ICs zuverlässig und billig
40. Alexander Bazo
Wiederverwendung von Software-Einheiten
Ludewig & Lichter, Software Engineering Kapitel 24
Codierung vs. Composition (4)
Die Methaper der Software-ICs beschreibt einen
möglichen Softwaremarkt der Zukunft anhand der
heutigen Vermarktung Integrierter Schaltungen
Gewöhnliche Programmierer würde ihre Programme dann
nicht mehr codieren, sondern aus einer Reihe, auf dem
Markt erhältlicher Software-Einheiten komponieren