Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Ähnliche Dokumente
Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

...we make the invisible visible...

Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen

...we make the invisible visible... Qualitätsanalyse, Code Comprehension und Reengineering

Softwarearchitektur-Management

Software-Qualität sichtbar machen

Technische Schulden in Architekturen erkennen und beseitigen

Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen

Langlebige Softwarearchitekturen der Weg aus den technischen Schulden

DATA ANALYSIS AND REPRESENTATION FOR SOFTWARE SYSTEMS

V-Modell mit UML. Max Kleiner

Vom Pair Programming zur Mob-Architekturverbesserung

Architekturmanagement in der Praxis

Der agile Software Architekt

Visualisierung von Softwaremetriken

Objektorientierte Programmierung III

Ziele und Tätigkeiten von Architekten

Einführung: Verteilte Systeme - Remote Method Invocation -

Objektdiagramm Komponentendiagramm Paketdiagramm. 6. Weitere Strukturdiagramme

Refactorings in großen Softwareprojekten

Sonargraph in 15 Minuten. Andreas Hoyer blog.hello2morrow.com

Software- /Systemarchitektur

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Kontinuierliche Architekturanalyse. in 3D

Langlebige Softwarearchitekturen

ConQAT Ein Toolkit zur kontinuierlichen Qualitätsanalyse. Proseminar IT Kennzahlen und Softwaremetriken Alexander Ried

Build Management Tool?

Workshop Visualisierung 2011 Diskussionsnotizen

Softwaremetriken verstehen und nutzen

Karlsruhe Institute of Technology Die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)

ISO Reference Model

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Tim Krämer. Archimetrix - Improved Software Architecture Recovery in the Presence of Design Deficiencies. 08. Mai 2013

UML Modellierung und Model Driven Architecture (MDA) für Java mittels Rational Software Architect (RSA)

Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe

Tutorium Softwaretechnik I

Model-Driven Development in der Praxis. mit objectif. Herzlich willkommen

Komponentenbasierter

DWH Automation - Steigerung von Qualität, Effektivität und Transparenz in der DWH Implementierung und dem Betrieb. Referent: Raphael Henneke

Algorithmen und Datenstrukturen

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Berechnung von Kennzahlen mit der SQL Model Clause

Build Management Tool?

Tränen lügen nicht Dashboards schon!

Objekt-orientierte Programmierung

Build Management Tool

Visual Studio 2010 Neues für Architekten

Oracle Data Integrator Ein Überblick

Objektorientierte und Funktionale Programmierung SS 2014

Vgl. Oestereich Kap 2.4 Seiten

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Auf der Suche nach Q Andr eas Havenstein 1

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Was ist Wartung und welche vier Arten der Wartung unterscheidet die Norm ISO/IEC 12207? Wie lautet die Regel von Boehm? (ein Beispiel ausrechnen)

Erfahrungen mit kontinuierlichem Architektur- und Qualitätsmonitoring in einer großen Anwendungsfamilie im Bankenumfeld

Modeldriven SOA Modellgetriebene Entwicklung von SOA Anwendungen. Java Forum Stuttgart,

Datenzugriffskomponente mit JPA 2.1

Automatisierte Software-Qualitätsmessung Erfahrungsbericht aus einem agilen Team

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

Best of Oracle Weblogic Diagnostic Framework

Modul Software Komponenten 01 Komponenten

Das Interface-Konzept am Beispiel der Sprache Java

Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution

Reengineering und Refactoring von Softwarearchitekturen

Measurement-based Product Analysis

Reengineering mit Sniffalyzer

Programmierkurs Java

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Application Engineering Grundlagen für die objektorientierte Softwareentwicklung mit zahlreichen Beispielen, Aufgaben und Lösungen

Management von Softwaresystemen Systembewertung: Metriken und Prozess

Artefakte, Linktypen und Besonderheiten von OOSE/RUP

Metriken, Patterns und Refactorings

Automatisierte Architekturanalyse mittels UML2.0 Diagrammen

Komponentenbasierter Taschenrechner mit CORBA

Modellierungstipps für die Anwendungsfallmodellierung

v i r t u a l 7 G m b H Consulting- und Softwarepartner Unternehmergeführt 1996 gegründet 85 Mitarbeiter 1 Team aus Spezialisten W E R W I R S I N D

Engineering-Werkzeug komplexe Softwaresysteme

7. Zusammenfassung (1)

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Programmierung Nachklausurtutorium

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Reuse Economics. Harald GALL. Universität Zürich Technische Universität Wien.

VisualDependencies Fachhochschule Köln

Gemeinsam mehr erreichen.

Konzept / Architektur Diagramme

Logo in neuer Logosystematik einfügen: Bewertung der Softwarequalität eines bestehenden Softwaresystems an Hand von

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

Modellierung CORBA-basierter Anwendungssysteme mit der UML

Comparing Software Factories and Software Product Lines

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Zwei Arten von Attributen

Wiederholung. Klassenhierarchie:

Tube Analyzer LogViewer 2.3

Informatik II Übung 6

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Languages and Tools for Object-Oriented Development Klausur Wintersemester 2007/2008

Transkript:

...we make the invisible visible... 1 Inhalt Fragestellungen Analysen und deren Anwendung Erfahrungen 2

Projektleiter Hat unsere Software eine klare, verständliche Struktur? Gibt es problematischen Code, der letzte Woche schlechter geworden ist? Hält sich unser Subcontractor an die Vorgaben? 3 Architekt Entspricht die Implementierung der geplanten Architektur? Hat jemand gestern Code implementiert, der die Architektur bricht? Konvergiert die IST- gegen die SOLL- Architektur während unserem Umbau? Werden meine Komponenten ausschliesslich über EJBs verwendet? 4

Qualitätsspeziali tsspezialist st Halten sich die Ingenieure an die Qualitätsvorgaben? Wie gehe ich mit der Datenflut um, die mein Metrikwerkzeug liefert? Kann ich einfach eigene Metriken definieren? 5 Softwareingenieur Wie brauchen Klienten meinen Code? Ich muss etwas basierend auf einer Komponente implementieren. Wie wird diese Komponente durch ihre typischen Klienten benutzt/erweitert? Welche Subsysteme/Packages/ Klassen werden durch eine Änderung betroffen? 6

Architektur Java Parser IDE Interaction Query Developer Architecture Scope Java Source Parser Query Scope SNiFF+ C/C++ EJB Analyzer Repository Fill Interface Repository (RDBMS) Xref- Scope Graph Scope Component Structure Custom Fill Interfaces Metrics & Transformation Engine Metrics Scope 7 Software -Analyse mit Sotograph Subsysteme Architekturanalyse Metrikbasierte Analyse Code Comprehension 8

Navigieren auf Abstraktionsebenen: Symbole Pfeile stellen beliebige Abhängigkeitsbeziehungen dar: Call Referenzen (auch polymorph) Vererbung Typ Verwendung Lese/Schreibzugriff auf Variabeln/Attribute 2.000.000 LOC 200.000 Symbole 9 Navigieren auf Abstraktionsebenen: Klassen / Files 20.000 Klassen 10

Navigieren auf Abstraktionsebenen: Packages / Directories 1.000 Packages 11 Navigieren auf Abstraktionsebenen: Subsysteme / Komponenten 100 Subsysteme 12

Navigieren auf Abstraktionsebenen: Subsysteme / Komponenten Interfaces 13 Schichtenarchitektur Überspringen von Schichten (optional) Product Line 1 Product Line 2 Benutzung am Interface vorbei (optional) Abhängigkeit innerhalb einer Schicht (optional) Layer 1 Interface Layer 2 Aufwärts- Benutzung: Immer illegal Layer 3 Illegale Benutzungsbeziehungen: 14

Überspringen von Schichten Von (optional) Subsystemen nach Packages/Directories nach Klassen/Files Verfolgung illegaler Beziehungen: nach Methoden/Funktionen bis zum Sprung in die entsprechende Source-Code-Stelle Aufwärts- Benutzung: Immer illegal Benutzung am Interface vorbei (optional) Zoomen bis in den Code Product Line 1 Product Line 2 Abhängigkeit innerhalb einer Schicht (optional) Layer 1 Aufwärts- Benutzung: Immer illegal Interface Layer 2 Layer 3 Illegale Benutzungsbeziehungen: 15 Beispiel Architekturbeschreibung ArchitectureModel Sotograph { Trend True; // Calculate differences between different version. Uses Default; // Architecture model is based on the subsystem model Default. ArchitectureLayer Manager { // Artifacts in layer are allowed to use all layers below. InterLayerUsage = True; // Artifacts within the layer are allowed to use each other. IntraLayerUsage = True; Subsystem Tools.manager; } ArchitectureLayer ToolsAndServices { InterLayerUsage = True; // Artifacts within the layer are NOT allowed to use each other. IntraLayerUsage = False; SubsystemsByPackagePath "sotogra/qualit/tools/'[a-ln-z].*'"; Subsystem Tools.metric; } ArchitectureLayer ToolInfrastructure {... } ArchitectureLayer Frameworks {... } } ArchitectureLayer Toolkits { Subsystem Base.util; Subsystem Db; } 16

Illegale Beziehungen - Subsystemebene Referencing Subsystem Referenced Subsystem 0.95 0.96 Differenz 17 Illegale Beziehungen Details Package-Ebene Referenz-Ebene 18

Illegale Beziehungen Details Source Code 19 Illegal referenzierte Subsysteme 20

Metrik- und regelbasierte Analyse Arten Architekturmetriken Z.B. Stabilitätsmetriken von Robert C. Martin Grössen- und Kopplungsmetriken Z.B. Anzahl Klassen pro Package, Anzahl verwendeter Packages Komplexitätsmetriken Z.B. Cyclomatic Complexity Regeln Z.B eine Klasse darf die von ihr abgeleiteten Klassen nicht kennen Bad Smells Z.B. Flaschenhälse, unbenutzte Artefakte 21 Metrik- und Regelbasierte Analyse Schwierigkeiten Sehr grosse Menge Messwerte Filtern Verstehen der Ursache eines Messwerts Erklärungen Visualisierung im Kontext des Softwaresystems Das Untersuchen einer Version genügt oft nicht Trend-Unterstützung Definieren eigener Metriken Ermöglicht durch Einfaches Datenmodell im Repository 22

Strukturanalyse Fragestellungen Was ist die Struktur meines Softwaresystems? Wie wird Subsystem X typischerweise benutzt oder erweitert? Welche Teile meiner Anwendung sind betroffen wenn ich die Schnittstelle von Subsystem X ändere? Gibt es Bad Smells? Gibt es instantiierte Entwurfsmuster? 23 Was ist die Struktur meines Softwaresystems? Z.B. Vererbungsbeziehungen aus Packag-Ebene Dicke der Pfeile zeigt Stärke der Kopplung 24

Typische Überschreiberschnittstelle von Pckg Standard Typischerweise Überschriebene Klasse Vererbungshierarchie der Klassen von Standard Typischerweise Überschriebene Methoden 25 Impact Analyse Z.B. mit dem XrefScope Erlaubt es beliebige Beziehungen zwischen Artefakten auf unterschiedlichen Abstratkions ebenen zu untersuchen. Typische Fragestellungen Welche Subsysteme sind betroffen wenn ich eine Klasse verändere Welche Klassen erben von einer Klasse dieses Packages Oder für C: welche Directories hängen von einem File ab. 26

XrefScope Welche Klassen erben von einer Klasse von Standard 27 Analyseabfragen Bad Smells Flaschenhälse Abstrahierbare Methoden und Attribute Bidirektionale Abhängigkeiten Entwurfsmuster Factories, Wrappers, Bridges, Composites, Template Methods, Singletons Testabdeckung Klassen die nicht direkt von JUnit Testklassen angesprochen werden 28

Entwickeln eigener Abfragen, Regeln und Metriken 29 Dimensionen der Software-Tomographie Analysis Tools Analysis Frequency Metrics Architecture Analysis Comprehension Visualization Trend Analysis Point in Time Analysis Rule Checking Java / C / C++ Component Specs SQL Configuration Mgmt Input Sources 30

Erfahrungen aus der Praxis Software Qualitätsanalyse durch SQS Sehr tiefgehende Qualitätsanalysen grosser, komplexer Softwaresysteme mit zwei Personenwochen Aufwand Kann nur durch erfahrene Spezialisten mit Werkzeugunterstützung in so kurzer Zeit durchgeführt werden. Architektur-Reengineering bei einer Schweizer Grossbank 2'000'000 LOC 600Mhz Rechner Identifizierung des Problems Überwachung der iterativen Verbesserung Basisanalyse und Einarbeitung: drei Tage 31 Software-Tomography GmbH Cottbus, München, Zürich www.software-tomography.com 32