Theme 1 Theme 2 Theme 3 Theme 4 Theme 5 Theme 6 Theme 7
Home Impressum Print
kreissl.info[rmation science]
best practices
 
Reengineering und Programmierungskonzepte

Kapitel 9 - Reengineering und Programmierungskonzepte


  • 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
Einleitung
Einführung, Geschichte...
Eigenschaften
Filtern und Trennen, Modularisierung...
Strukturierte Analyse
Strukturierte und OO-Analyse, Petri-Netze
Spezifikation
Risikoanalyse, Modellierungshilfen, Spezifikationen
Entwurfsprozess
Entwurf, DFD, Tests, UI...
Prozessmodelle
Softwarekrise, Lebenszyklusmodelle...
CASE und PM
CASE, Projektmanagement...
Software-Metriken
Softwarequalität, Entwurfsmetriken...
Programmierungskonzepte
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



last change 16.12.2009 10:05:11  © 2002 - 2009 Holger Kreissl


Valid XHTML 1.0 Transitional