Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2008/09 Überblick I 1
1 Softwarearchitektur Idealisierte Softwarearchitektur Softwarearchitektur in der Praxis Definition von Softwarearchitektur Softwarearchitekturrekonstruktion Views und Viewpoints Viewpoints im Forward-Engineering Architekturrekonstruktion Beobachtungen Goal Question View( Metric) Zusammensetzung von Prozessen durch Sichten Prozessebenen Prozessentwurf Prozessausführung Wiederholungsfragen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 3 / 25 Lernziele Ziele und Notwendigkeit von Architekturrekonstruktion kennen Schritte der Architekturrekonstruktion kennen: Problemanalyse Sichtenbestimmung Datensammlung Inferenz von Wissen Informationspräsentation und -interpretation statische und dynamische Techniken der Datensammlung kennen Techniken der Inferenz von Wissen im Reverse-Engineering beherrschen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 4 / 25
Softwarearchitektur in Lehrbüchern Kanonische Compilerarchitektur nach Shaw und Garlan (1993) Symbol Table Text Lexical Analysis Syntactic Analysis Semantic Analysis Optimization Code Generation Code AST Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 9 / 25 Softwarearchitektur in der Praxis Compilerarchitektur im echten Leben Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 10 / 25
Definition von Softwarearchitektur Definition Software architecture is the fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution. IEEE Std. 1471-2000 (2000) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 11 / 25 Architekturrekonstruktion und Reverse-Engineering Definition Reverse Engineering is the process of analyzing a subject system to identify the system s components and their interrelationships and create representations of the system in another form or a higher level of abstraction. Chikofsky und Cross II. (1990) Definition Architecture reconstruction is the process of analyzing a subject system to reconstruct architectural views. Rainer Koschke, 2008 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 12 / 25
Views und Viewpoints IEEE Std. 1471-2000 (2000) Definition A view (deutsch: Sicht) is a representation of a whole system from the perspective of a related set of concerns. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 13 / 25 Views und Viewpoints IEEE Std. 1471-2000 (2000) Definition A viewpoint (deutsch: Blickwinkel) is a specification of the rules and conventions to construct and use an architectural view. var-access calls module type-dep cloned Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 14 / 25
Viewpoints im Forward-Engineering Zachman Perry and Wolfe 4+1 Siemens... Clements et al. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 15 / 25 Viewpoints-Kategorien nach Clements u. a. (2002) M: module: static structure decomposition use generalization layers CC: component & connectors: runtime structure pipe and filter shared data publish and subscribe client server peer-to-peer communicating processes A: allocation: embedding in organizational development context deployment implementation work assignment Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 16 / 25
Beobachtungen Architekturrekonstruktion ist problemgetrieben Probleme sind kontextabhängig verschiedene Kontexte erfordern verschiedene Architektursichten es gibt keinen detailierten Rekonstruktionsprozess, der immer passt Rekonstruktionsprozesse müssen im Kontext entworfen werden Rekonstruktion basiert meist auf vielen Architektursichten der Rekonstruktionsprozess lässt sich durch Architektursichten definieren Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 17 / 25 Goal Question View( Metric) Problemgetriebene Architekturrekonstruktion rekonstruiert Sichten systematisch: Goals: Was ist das Problem, weswegen die Rekonstruktion erfolgt? Was ist das Ziel der Rekonstruktion? Beispielproblem: Änderungen betreffen immer viele Module. Ziel: Existierende Modularisierung bewerten und verbessern. Questions: Was muss ich wissen, um das Ziel zu erreichen? Bsp.: Was sind die Abhängigkeiten zwischen Modulen? Wie kann die Modularisierung verbessert werden? Views: Welche Architektursichten werden benötigt, um die Antwort zu finden? Bsp.: Module-Use Viewpoints: as-is und verbessert + Lücke Metrics: Wie können die Antworten quantifiziert werden? Bsp.: Kopplungs- und Kohäsionsmetriken für existierende und verbesserte Modularisierung, Anzahl und Gewicht der Unterschiede Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 18 / 25
Zusammensetzung von Prozessen durch Sichten input view 1 output view input view 2 input view 3 van Deursen u. a. (2004) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 19 / 25 Prozessebenen Prozessentwurf Was ist das Problem? Welche Sichten werden rekonstruiert? Wie werden diese Sichten rekonstruiert? Prozessausführung Datensammlung Inferenz von Wissen Informationspräsentation und -interpretation Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 20 / 25
Architekturrekonstruktion: Prozessentwurf Datenfluss Akteur in Problem analyse Problem darstellung Bibliothek von Viewpoints Sichten bestimmung Quell Viewpoints Abbildungsregeln Ziel Viewpoints Quell Viewpoints Daten sammlung Verfeinerung Problemdarstellung Ziel Viewpoints Inferenz von Wissen Informations interpretation Interessenten Prozess Designer Rekonstrukteur Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 21 / 25 Architekturrekonstruktion: Prozessausführung Daten Daten sammlung Quell sichten Wissensbank Ziel sichten Architektur Informations sichten interpretation Quell sichten Abbildung Ziel sichten Datenfluss Akteur in Inferenz von Wissen Rekonstrukteur Interessenten Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 22 / 25
Wiederholungsfragen Erläutere die Begriffe View (Sicht) und Viewpoint. Wie kann man Viewpoints klassifizieren? Erläutere die Schritte der Architekturrekonstruktion. Welche Rolle spielen Views (Sichten) und Viewpoints in der Architekturrekonstruktion? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 23 / 25 1 Chikofsky und Cross II. 1990 Chikofsky, Elliot J. ; Cross II., James H.: Reverse Engineering and Design Recovery: A Taxonomy. In: IEEE Software 7 (1990), Januar, Nr. 1, S. 13 17 2 Clements u. a. 2002 Clements, Paul ; Bachmann, Felix ; Bass, Len ; Garlan, David ; Ivers, James ; Little, Reed ; Nord, Robert ; Stafford, Judith: Documenting Software Architecture. Boston : Addison-Wesley, 2002 3 van Deursen u. a. 2004 Deursen, Arie van ; Hofmeister, Christine ; Koschke, Rainer ; Moonen, Leon ; Riva, Claudio: Symphony: View-Driven Software Architecture Reconstruction. In: IEEE/IFIP Working Conference on Software Architecture, IEEE Computer Society Press, Juni 2004, S. 122 132 4 IEEE Std. 1471-2000 2000 IEEE P1471: IEEE Recommended Practice for Architectural Description of Software-intensive Systems Std. 1471-2000. 2000 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 24 / 25
5 Shaw und Garlan 1993 Shaw, Mary ; Garlan, David: An Introduction to Software Architecture. In: Advances in Software Engineering and Knowledge Engineering. River Edge, NJ : World Scientific Publishing Company, 1993 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2008/2009 25 / 25