Behutsame Modernisierung

Ähnliche Dokumente
Bessere Software durch AOP? Achim Demelt OOP 2008

Re-Engineering: Test-First-Ansatz. Dr. Thorsten Arendt Marburg, 17. Dezember 2015

Model Querys zur Überprüfung von sicherheitsrelevanten Eigenschaften

Aspektorientierte Programmierung (aspect-oriented programming, AOP)

Instrumentation von Android Anwendungen mit ExplorViz

Aspektorientierte Modellierung

Inhaltsverzeichnis. Teil I Grundlagen 1

Aspekt Orientierte Programmierung

AOSTA. Aspects in Operating Systems: Tools and Applications

7. Zusammenfassung (1)

Christoph Behounek, eggs unimedia

windream SDK Einfache System-Erweiterungen und Software-Integrationen mit windream

Olaf Seng Thomas Genßler Benedikt Schulz. Forschungszentrum Informatik, Karlsruhe

AOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach

Software-Refactoring. 29. Mai 2013

Viele Entwickler finden Testen langweilig.

Software-Refactoring. 27. Mai 2015

Hauptseminar AOSD. Design-by-Contract

Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg

Das Softwaresystem BASEMENT

Model Driven Architecture Praxisbeispiel

Ziele und Tätigkeiten von Architekten

Vortrag von: Ilias Agorakis & Robert Roginer

SAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld

Erläuterungen zu Darstellung des DLQ-Datenportals

ANGEWANDTE LINGUISTISCHE DATENVERARBEITUNG PROF. DR. JÜRGEN ROLSHOVEN UTE WINKELMANN

Einführung in Generatives Programmieren. Bastian Molkenthin

Service Virtualisierung

Thema: Aspekt-orientierte Entwicklung: Einführung

Make-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm

Software Engineering

Performance Monitoring Warum macht es Sinn?

1 Einleitung zum Thema Softwaremigration 1

RTLOpen - Eine Methode zur interdisziplinären Entwicklung von software-intensiven Echtzeit-Systemen

secunet Security Networks AG A priori Policies zum Schutz von Fahrzeug Bordnetzen

Gemeinsam mehr erreichen.

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

2 Softwarearchitektur in der Organisationsstruktur 25

Softwarearchitektur als Mittel für Qualitätssicherung und SOA Governance

Model Driven Architecture

Continuous Everything

Software Evolution: Einführung. Dr. Thorsten Arendt Marburg, 15. Oktober 2015

Mustersuche in Quellcode

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

AOP im Einsatz mit OSGi und RCP. Martin Lippert, Peter Friese und Heiko Seeberger

Software Engineering II (IB) Softwareevolution

Verbesserung der Architektur und Dokumentation der DPP-Software Saros. Slawa Belousow Institut für Informatik FU Berlin

Software Engineering II (IB) Softwareevolution

Aspektorientierte Middleware Florian Wagner

MDRE die nächste Generation des Requirements Engineerings

CiAO (CiAO is Aspect-Oriented)

Test-driven development JUnit-Test. Lars Varain

OOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen

Schnelles Prototyping für die medizinische Bildverarbeitung

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 11. Februar 2015

SOAP Simple Object Access Protocol. Dr. Reinhard Riedl Universität Zürich/Universität Rostock

Software Engineering. 7) SW Wartung. Prof. Dr. Anja Metzner Hochschule Augsburg, Fakultät für Informatik. Studiengang WiBac 4 (Stand:

Aspektorientierte Programmierung

Kernprozess zur System- und Softwareentwicklung. Logische Systemarchitektur f 1. f 2 f 3. f 4 Funktion. Technische Systemarchitektur SG 1 SG 2 SG 3

ZUSAMMENARBEIT TU MÜNCHEN

Erweiterung von objektorientiertem Refactoring für die aspektorientierte Sprache ObjectTeams/Java

Einführung in AOP. Rico Schiekel rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn

Kostengünstige Performance Engineering Lösungen (Java Forum Stuttgart 2009)

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Die 5 Leben des AspectJ

Anwendung der Aspektorientierung : Security

VIRTUALISIERUNG IN MIKROKERN BASIERTEN SYSTEMEN

JUnit. Software-Tests

Software Engineering für kritische Systeme

Potentiale modellgetriebener Softwareentwicklung

Team Foundation Server & Ranorex Workshop

Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.

Schnelle systematische Entwicklung von Internet-Anwendungen

Software Engineering

Programmverstehen 3: Detailliertes Verständnis. Dr. Thorsten Arendt Marburg, 10. Dezember 2015

SW-Archäologie mit AOP (Praxisbericht)

Wirtschaftsingenieurwesen (Informationstechnik) Modulname. Programmierung I/ Software Engineering I Modulnummer

Institut für Informatik Betriebliche Informationssysteme Graph-basiertes Reengineering

Hauptseminar AOSD. Aspektorientierte Programmierung am Beispiel AspectJ

Neue Funktionen in Innovator 11 R5

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

Vorlesung Software aus Komponenten

Softwareentwicklungsumgebungen

Validierung von System- Architekturen

MDA-Praktikum, Einführung

Design Patterns. 3. Juni 2015

Use Cases vs. Funktionale Spezifikation

Testen mit JUnit. Motivation

Vom Wiegen wird die Sau nicht fett: PL/SQL-Qualitätsanalysen

Aspekt-orientierte Programmierung

Grundlagen Software Engineering

J. Reinier van Kampenhout Robert Hilbrich Hans-Joachim Goltz. Workshop Echtzeit Fraunhofer FIRST

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Refactoring von Legacy Systemen. Jochen Winzen andrena objects ag

Die SOLID-Prinzipien Fünf Grundsätze für bessere Software

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Mögliche Wege Ihrer Legacy-Applikationen in die Moderne mit Bison Technology. Diego Künzi, Produktmanager Bison Technology, Bison Schweiz AG

Software- und Systementwicklung

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

Transkript:

Software Evolution mit Legacy Systemen Forum Forschungsförderung / ViSEK Trends im Software Engineering Software Evolution mit Legacy Systemen Behutsame Modernisierung Jan Wloka <Jan.Wloka@first.fraunhofer.de>

Bekannte Situationen und Ursachen Situationen mit alter Software Ein System läuft stabil aber auf veralteter Hardware Wartung des Systems ist kostspielig Integrationsbemühungen werden massiv behindert Erweiterung der Funktionalität ist schwierig, wenn nicht sogar unmöglich Häufige Ursachen Starke Abweichungen zwischen Implementierung und Dokumentation "Featurerismus" Personal Fluktuation Seite 3 Das Problem Legacy Information System Definition Legacy System:... any information system that significantly resists modification and evolution... [Brodie, Stonebraker, 1995] Das Problem im Detail: Einzige Dokumentationsquelle ist der Quellcode Quellcode-Strukturen sind häufig spröde (brittle), Unflexibel, nicht erweiterbar Mangel an Offenheit für neue Funktionalitäten Isolierte Funktionalität Seite 4

Drei Kategorien von LösungsmL sungsmöglichkeitenglichkeiten Re-Development Neu-Entwicklung from scratch Neue Technologien, Architektur, Werkzeuge, etc. ABER: Sehr aufwendig, Keine Weiterverwendung, Ohne Erfolgsgarantie Wrapping Kapseln des Systems oder einzelner Systemteile Neue Schnittstellen zur Funktionalität Domäne der Komponenten-basierten Ansätze ABER: Keine Fehlerbehebung, Keine Verbesserung von System-Eigenschaften, Kaum erweiterbar Doch warum ist Wrapping häufig schwierig??????? Seite 5 Komplexe Strukturen und crosscutting crosscutting Funktionalitäten Besondere Probleme Komplexe Strukturen Beispiele: Starke Abhängigkeiten durch Vererbungs-/Benutzungsbeziehungen, Sehr lange Methoden Kaum verständlich da zu komplex crosscutting Funktionalitäten Liegen quer zur Struktur Schwer kappselbar Beispiele: Verteilung, Synchronisation, Notification, Logging, Exception-Handling, Memory-Management ClassA ClassB ClassC X X X Funktionalität 1 Funktionalität 2 X X X Funktionalität 3 Seite 6

crosscutting Funktionalitäten Ein Beispiel Werkzeug: Aspect Browser Identifikation von einzelnen Funktionalitäten mit Textanalyse (Regular Expressions) Beispiel: XML Parser Log ROT Write GRÜN Parse BLAU Seite 7 Re-Development Wrapping Re-Engineering Re-Engineering Analysieren/Verstehen und Abändern der existieren Quellen: Quellcode Analyse Zugang zur Funktionalität Modularisierung Separierung der Funktionalität Komposition Integration der Funktionalität Ziel: Die Implementierung in einer neuen Form wiederherzustellen??? Welche Möglichkeiten zur Modularisierung habe ich? Seite 8

Möglichkeiten zur Modularisierung Inkrementelle Strukturverbesserung Refactoring = methodisch fundierte Herangehensweise um strukturelle Änderungen in bestehenden Systemen gezielt und sicher durchzuführen Refactoring als Technik und vor allem methodischer Ansatz Bekannte, erprobte und Werkzeug-gestützte Technologie Strukturen werden zerlegt, entkoppelt und vereinfacht Verständnis und Modularität des bestehenden Systems werden verbessert Refactoring von OO-Strukturen Seite 9 Möglichkeiten zur Modularisierung Beschränkungen von Refactoring Quer zur Struktur liegende Funktionalität wird nur hin und her verschoben Komplexität wird nur lokal beseitigt (Wegräumen ohne Aufräumen) Designkonflikte können nicht immer aufgelöst werden z.b. Modularisierung nach Struktur (OO) vs. Modularisierung nach Funktion (Funktionale Psrogrammierung) OO Modularisierungsmöglichkeiten reichen nicht aus! Seite 10

Erweiterte Modularisierungskonzepte Aspektorientierte Softwareentwicklung Aspekte liegen quer zur Struktur Kapselung der crosscutting Funktionalitäten Aspektorientierte Programmierung: Kernsystem (OO) Aspekte beziehen sich auf das Kernsystem Aspekte müssen Quellen nicht verändern Integration durch Weaver ClassA m1() m2(p1) ClassB m2() m3(p1, p2) m4() ClassC m2() m5(p1) joinpoints Alle Methoden aus ClassA Alle Methoden m2 Alle parameterlosen Methoden Beispiele für Aspekte: Verteilung, Synchronisation, Logging, Exception-Handling, Memory-Management Techniken/Werkzeuge für unterschiedliche Sprachen verfügbar Kern Aspekte Seite 11 advice before after around Aspektorientierte Modularisierungstechniken Aspektorientierte Erweiterungen Für Java: AspectJ, Hyper/J, Object Teams Für C++: AspectC++, Object Teams AspectJ Erste Aspektorientierte Erweiterung Quellcode-Manipulation von außen Hyper/J Byte-Code Modifikation von außen Kein Quellcode nötig Object Teams Verbindung der Möglichkeiten verschiedener AO-Sprachen Seite 12

Lösungen und Probleme Separierung von quer zur Struktur liegender Funktionalität war unmöglich Aspekte ermöglichen deren Modularisierung und Komposition Aspekte für verschiedene Programmiersprachen verfügbar Offene Probleme: Methodisch richtige Separierung von Funktionalität in Aspekte Werkzeuge zum Auffinden und automatisierten Modularisierung Refactoring-Werkzeug für Aspekte FhI FIRST: Weiterentwicklung der Programmiersprache Object Teams Werkzeuge zur automatisierten Modularisierung in Aspekte Seite 13 Fazit Modernisierung ist Bestandteil fast jedes Softwareentwicklungsprojektes Für viele Probleme sind bereits Lösungen vorhanden Techniken der AOSD scheinen besonders geeignet, dabei Quellcode-Analyse technisch noch nicht ganz ausgereift, aber hilfreich Modularisierungstechniken ausreichend vorhanden, methodische Unterstützung? Kompositionsmöglichkeiten Teillösungen sind vorhanden, aber nicht vereint Was Fehlt: Integrierte Werkzeugunterstützung die Einzelwerkzeuge vereinigt Seite 14

Haben Sie Fragen? Jan Wloka <Jan.Wloka@first.fraunhofer.de> Seite 15