Webcam Diggs Cam


Reengineering und Programmierungskonzepte

Kapitel 9 - Reengineering und Programmierungskonzepte

Inhalt
  • Legacy Systeme
  • Reengineering und Wartung
  • Programmierungskonzepte wir STL und Patterns

Legacy-Systeme - Charakteristik und Probleme

  • Wurden mit Anahme einer kurzen Lebenszeit entwickelt, sind aber immernoch im Einsatz
  • Altsysteme sind Komplex und Austausch wäre sehr teuer
  • Altsysteme verursachen hohe Wartungskosten
  • Komplexe software, viel Support, wenig Dokumentation
  • Bei Austausch gefahr, daß Geschäftswissen verloren geht
  • Falsche Entscheidungen können schwere Folgen haben

Probleme mit der veralteten Softwarearchitektur

  • Systeme bestehen aus vielen verschiedenen Einzelsystemem, welche Daten gemeinsam nutzen
  • Systeme benutzen Teilweise Files und keine DBMS
  • Daten sind of Redundant

Reengineering - wann und warum?

  • Software Evolution zwischen zwei Extremfällen der Systemersetzung und weiterlaufender Wartung
  • Reengineering meist billiger als Neuentwicklung eines Systems
  • Ausgangspunkt für RE ist exisitierenedes System
  • Geringeres Risiko (inkrementell) und Kosten

Methoden des Reengineerings

Source Code Translation
  • Programmübersetzung in andere Programmiersprache
  • Zielsprache in neue Version updaten (z.B. wenn alte Compiler nicht mehr kompatibel)
Programm Neustrukturierung
  • Programme mit "Spagetti"-Struktur schwer zu untersuchen
  • Viele Automatische Neustrukturierungstools vorhanden
System Neustrukturierung
  • Programm Neustrukturierung verbessert nicht die Systemarchitektur, da nur isolierte Betrachtung
  • System muss selbst Restrukturiert werden
Inkremental Evolution bei Systemersetzung weniger Riskobehaftet als Bing Bang

Wartung von Software - Ursachen, Methoden

  • Um Guten Zustand eines Systemes aufrechterhalten
  • Einbringen von Änderungen nachdem das System verkauft wurde
Die Drei Arten der Wartung
  1. Korrigierende (Fehler beheben)
  2. Adaptive (neues Umfeld in HW/SW)
  3. Perfektive (neue Anforderungen)
  • Vorausschauende Wartung (vorher einfach und gut strukturieren, dass Wartung billig wird)
  • Kosten für Änderungen wärend Wartung extrem hoch
  • Data Reengineering (Datenübernahme, Datenabgleich, Datenredefinition)
  • Datenzentralisierung (RDBMS...)

Programmierungskonzepte

Generische Progammierung, Templates, Patterns und Frameworks...

Generische Progammierung und Templates

  • Generische Units sind parametrisierte Templates
  • Sie müssen initialisiert werden, um dem Compiler den verwendeten Datentypen mitzuteilen
  • DT kann auch abstrakt sein
  • BSP: Sortierungsalgorithmus, Datentyp ist formeller Parameter

STL Library - die Idee

  • Gemeinsame Komponenten zusammenfassen in Bibliothek
  • STL mehrdimensionaler Raum (Alg, Containers / DS , DT) aus dem benötigte Prozedure mit benötigtem Datentyp und Datenstrukturen (Array, Listen...) gewählt werden kann
  • STL verringert notwendige LOC, da ohne Templates i * j * k verschiedene Codeversionen
  • Mit Template-Funktionen nur noch j * k zu programmierende Codesstücke
  • Mit Template-Klassen für Container sogar nur j + k

Patterns

  • Viel Allgemeiner als Template
  • Kein Softwarestück, sindern ein Konzept von bewährten Lösungen
Jedes Pattern besteht aus
  • Kontext
  • Problem
  • Lösung
Arten von Patterns
  • Konzeptuelle
  • Architektonische
  • Entwurfsmuster
  • Programmierungsmuster
  • Dokumentationsmuster

Frameworks

  • Idee ist Erweiterung der virtuellen Maschine
  • Framework ist wiederverwendbare mini-Architektur welche generische Struktur und Verhalten von Softwarefamilien abstrahiert
  • Kontext spezifiziert Struktur
  • In Klassen geteilt
  • Wie Klassen und Objekte zusammenarbeiten
  • Framework (Executable) ist eine Implementation von Design-Pattern
  • Framework und Wiederverwendbarkeit
  • Dynamisches Binden, z.B. dynamische Konfiguration von Features während Laufzeit
Wiederverwendbar steigt, aber auch Nachteile:
  • Schwer zu durchschauen und zu verstehen
  • Erhöhte Komplexität
  • Alle Features von Vater-Klassen werden geerbt, auch wenn nicht benötigt -> somit steigende Größe
  • Performancenachlass durch dynamisches Binden

Metaprogrammierung (generative Programmierung)

  • Applikationen bei denen Kontext zur Kompilierungszeit bekannt, somit statisches Binden anstatt von dynamischen möglich
  • Meta-Programming benutzt Templatespezialisierungen (if-tool) und Templaterekursion (loop-tool) zum schreiben von C++ programmen, welche zur Komilierungszeit vom C++ Compiler interpretiert werden
  • Compile Time Computation und Code Generation

Adaptive Programmierung

  • OO Technologie kapselt Daten und Funktionen in Klassen
  • Implementation ist geschützt gegen Änderungen an DS, da nur über Schnittstellen Zugriff
  • Mancha Applikationen leiden unter periodischen Änderungen in Klassenstrukturen und Klassenhierachien
  • Apdaptive Programmierung ermöglicht den Applikationen eine Schnittstelle zur Klassenhierarchie

Aspektorientierte Programmierung

Funktionalität ist bei OO in Klassen gekapselt

Problem:
  • Es gibt Dienste die nicht nur in einer Klasse gekapselt werden können (z.B. Tracing)
  • So ein Service ist auf viele Objekte verteilt
  • Wie kann man einen solchen Dienst trotzdem zentralisiert Implementieren?
  • Aspekte sind Funktionalitäten, Modelle solcher Dienste
  • Asprekte werden in eigenen separaten Units gekapselt
  • Während des Preprocessings werden die Aspekte durch einen WEAVER im Programm verteilt
Printansicht Inhalt Anfang zurück EOT
Kapitel 1Einleitung
Einführung, Geschichte...
Kapitel 2Eigenschaften
Filtern und Trennen, Modularisierung...
Kapitel 3Strukturierte Analyse
Strukturierte und OO-Analyse, Petri-Netze
Kapitel 4Spezifikation
Risikoanalyse, Modellierungshilfen, Spezifikationen
Kapitel 5Entwurfsprozess
Entwurf, DFD, Tests, UI...
Kapitel 6Prozessmodelle
Softwarekrise, Lebenszyklusmodelle...
Kapitel 7CASE und PM
CASE, Projektmanagement...
Kapitel 8Software-Metriken
Softwarequalität, Entwurfsmetriken...
Kapitel 9Programmierungskonzepte
Legacy Systeme, Reengineering...
PDF download:
Ausarbeitung STKomplett
Quellen:
Petr Kroha
Softwaretechnologie
Prof. Kroha
Vorlesungsskript
L. Rosenhainer
Vorlesungsskript
Word Wide Web
Verschiedenste Seiten
Links:
Introduction to Software Engineering
University Of California
UML Einführung
Uni Hannover

login

last change 06.04.2008 16:28:34  © 2002 - 2005 Holger Kreissl