SlideShare ist ein Scribd-Unternehmen logo
Wiederverwendung
[Ludewig & Lichter: Software
Engineering, Heidelberg 2010²,
Kapitel 24]
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
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
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
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)
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)
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)]
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
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)]
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
Alexander Bazo
                        Wiederverwendung von Software-Einheiten
                        Ludewig & Lichter, Software Engineering Kapitel 24




Definition von Wiederverwendbarkeit (3)




                           [Ludewig et al., 2010]
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
Alexander Bazo
                       Wiederverwendung von Software-Einheiten
                       Ludewig & Lichter, Software Engineering Kapitel 24




Kosten der Wiederverwendung (2)




                          [Ludewig et al., 2010]
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)
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
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
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
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
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.
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
Alexander Bazo
                        Wiederverwendung von Software-Einheiten
                        Ludewig & Lichter, Software Engineering Kapitel 24




Rahmenbedingungen (1)




                              [Ludewig et al., 2010]
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
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
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
Alexander Bazo
                             Wiederverwendung von Software-Einheiten
                             Ludewig & Lichter, Software Engineering Kapitel 24




Rahmenbedingungen (5)

Standards und Richtlinien müssen definiert und
   eingehalten werden!
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
Alexander Bazo
                   Wiederverwendung von Software-Einheiten
                   Ludewig & Lichter, Software Engineering Kapitel 24




Entwicklungstechniken (1)




                      [Ludewig et al., 2010]
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
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
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
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
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
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
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
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)
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
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)]
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]
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Starters 2
Starters 2Starters 2
Starters 2
Lauresirvin31
 
Manejo de prototipos
Manejo de prototiposManejo de prototipos
Die Einführung von SEPA - leicht verständlich und übersichtlich
Die Einführung von SEPA - leicht verständlich und übersichtlichDie Einführung von SEPA - leicht verständlich und übersichtlich
Die Einführung von SEPA - leicht verständlich und übersichtlich
Jörg Günther
 
inteligencias multiples
inteligencias multiplesinteligencias multiples
inteligencias multiples
Andrea Rubiano
 
Memorias ram
Memorias ramMemorias ram
5HBC2012 11-01 MacLaurin Power Series
5HBC2012 11-01 MacLaurin Power Series5HBC2012 11-01 MacLaurin Power Series
5HBC2012 11-01 MacLaurin Power Series
A Jorge Garcia
 
Mitos de la so
Mitos de la soMitos de la so
Algebra de boole
Algebra de booleAlgebra de boole
Introduccin a la logica
Introduccin a la logicaIntroduccin a la logica
Introduccin a la logica
Colegio Agropecuario de San Carlos
 
Londres
Londres Londres
Londres
fabimaiorano
 
Genética
GenéticaGenética
Sistemas de numeración
Sistemas de numeraciónSistemas de numeración
Sistemas de numeración
Colegio Agropecuario de San Carlos
 
Diaposit rev rusa
Diaposit rev rusaDiaposit rev rusa
Diaposit rev rusa
chiqui63
 
Introhtml
IntrohtmlIntrohtml
Linux
LinuxLinux

Andere mochten auch (17)

Practica decimo
Practica decimoPractica decimo
Practica decimo
 
Starters 2
Starters 2Starters 2
Starters 2
 
Manejo de prototipos
Manejo de prototiposManejo de prototipos
Manejo de prototipos
 
Die Einführung von SEPA - leicht verständlich und übersichtlich
Die Einführung von SEPA - leicht verständlich und übersichtlichDie Einführung von SEPA - leicht verständlich und übersichtlich
Die Einführung von SEPA - leicht verständlich und übersichtlich
 
inteligencias multiples
inteligencias multiplesinteligencias multiples
inteligencias multiples
 
Memorias ram
Memorias ramMemorias ram
Memorias ram
 
5HBC2012 11-01 MacLaurin Power Series
5HBC2012 11-01 MacLaurin Power Series5HBC2012 11-01 MacLaurin Power Series
5HBC2012 11-01 MacLaurin Power Series
 
Mitos de la so
Mitos de la soMitos de la so
Mitos de la so
 
Algebra de boole
Algebra de booleAlgebra de boole
Algebra de boole
 
Introduccin a la logica
Introduccin a la logicaIntroduccin a la logica
Introduccin a la logica
 
Londres
Londres Londres
Londres
 
Genética
GenéticaGenética
Genética
 
gener febrer 2010
gener febrer 2010gener febrer 2010
gener febrer 2010
 
Sistemas de numeración
Sistemas de numeraciónSistemas de numeración
Sistemas de numeración
 
Diaposit rev rusa
Diaposit rev rusaDiaposit rev rusa
Diaposit rev rusa
 
Introhtml
IntrohtmlIntrohtml
Introhtml
 
Linux
LinuxLinux
Linux
 

Wiederverwendung

  • 1. Wiederverwendung [Ludewig & Lichter: Software Engineering, Heidelberg 2010², Kapitel 24]
  • 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