Continuous Architecture Management

Ähnliche Dokumente
Continuous Architecture Management

Der agile Software Architekt

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

Reengineering und Refactoring von Softwarearchitekturen

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

Umfrage zum Informationsbedarf im Requirements Engineering


Langlebige Softwarearchitekturen

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Echolot Qualitätssicherung mit Sonar

Testen mit JUnit. Motivation

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Was bringt TDD wirklich?

Übung: Verwendung von Java-Threads

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Cloud Architektur Workshop

Open Source. Hendrik Ebbers 2015

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Thomas Schoen hello2morrow GmbH. Six-Sigma für Software Architekten

BIF/SWE - Übungsbeispiel

Iterativ. Inkrementell

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Windows Server 2012 R2 Essentials & Hyper-V

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

teischl.com Software Design & Services e.u. office@teischl.com

Grundlagen Software Engineering

Zeichen bei Zahlen entschlüsseln

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Versionsverwaltung mit SVN

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Informationswirtschaft II Rational Unified Process (RUP)

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Informationswirtschaft II

5. Business Rules Der Business Rules Ansatz. 5. Business Rules. Grundbegriffe um Umfeld von Business-Rule-Management-Systemen kennen und

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Konzentration auf das. Wesentliche.

GPP Projekte gemeinsam zum Erfolg führen

Software Systems Engineering

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Comparing Software Factories and Software Product Lines

Der Gabelstapler: Wie? Was? Wer? Wo?

SEMINAR Modifikation für die Nutzung des Community Builders

Verwendung von Anforderungsbasierten Verfolgbarkeitsmetriken im Projektmanagement

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

How to do? Projekte - Zeiterfassung

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Was ist Sozial-Raum-Orientierung?

SPI-Seminar : Interview mit einem Softwaremanager

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Lead Architects Forum Architekten im Dialog zu ILOG BRMS Moderation: Lars Klein, S&D

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

EIDAMO Webshop-Lösung - White Paper

Agile Software Verteilung

Scrum, ISIS und ISO 9001 zertifiziertes Qualitätsmanagement. Joachim Meyer

Einreichung zum Call for Papers

Transparente SOA Governance mit Modellierung. OOP 2010 München, 28. Januar 2010, 12:30 Uhr Modeling Day

InfoPoint vom 9. November 2011

Konfigurationsmanagement und Evolution: Änderungsverwaltung und Repository-Analyse. Dr. Thorsten Arendt Marburg, 12. November 2015

Nicht über uns ohne uns

Agile Softwareprozess-Modelle

Kleines Handbuch zur Fotogalerie der Pixel AG

Fortgeschrittenes Programmieren mit Java. Test Driven Development

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

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Client-Server-Beziehungen

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Menü auf zwei Module verteilt (Joomla 3.4.0)

Backup-Server einrichten

Checkliste zur Planung einer Webseite

FAQ The FAQ/knowledge base. Version 2.1.1

Agilität auf Unternehmensebene - Was hält uns davon ab?

Erfahrungen mit Hartz IV- Empfängern

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Was versteht man unter Softwaredokumentation?

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Marketing Intelligence Schwierigkeiten bei der Umsetzung. Josef Kolbitsch Manuela Reinisch

Neue Funktionen in Innovator 11 R5

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

Adami CRM - Outlook Replikation User Dokumentation

Die Invaliden-Versicherung ändert sich

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt

Generative Prozessmodelle Patrick Otto MDD Konferenz

SEP 114. Design by Contract

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Alle gehören dazu. Vorwort

Dominik Stockem Datenschutzbeauftragter Microsoft Deutschland GmbH

User Interface Design und Icon Library

Einführung und Motivation

TFS Customzing. in der Praxis. Thomas Gugler. seit 2005 bei ANECON. .NET seit 2002 (happy bday!) Schwerpunkte: MCPD.Net 4.0, MCTS TFS, Scrum Master,

How to Survive an Audit with Real-Time Traceability and Gap Analysis. Martin Kochloefl, Software Solutions Consultant Seapine Software

Transkript:

Continuous Architecture Management Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH April 2012

How to draw the architecture of your system http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef016764fffd81970b-pi 2

Agenda Motivation Theoretischer Hintergrund Entwicklungsprozess Demonstration von Sonargraph Architect 2012, hello2morrow GmbH 3

Motivation Als Software Architekt will man dass die Software eine hohe Qualität hat wissen, wie die interne Struktur wirklich aussieht strukturelle Erosion verhindern wissen, wo aktuell die Problemstellen sind existierende Software Module wiederverwenden eine aktuelle Dokumentation der Architektur Spaß haben bei der Arbeit! 2012, hello2morrow GmbH 4

Widerstände Zeitdruck Was bedeutet gute Qualität? Es ist zu kompliziert Metriken zu berechnen und sinnvolle Schwellwerte zu definieren Es ist aufwändig, die Architekturdokumentation mit der Entwicklung abzugleichen Die Abhängigkeiten zwischen Teilen der Software manuell zu überprüfen ist nicht machbar Fehlende Toolunterstützung, z.b. zeigt die IDE keine Warnung an, wenn eine unerlaubte Abhängigkeit eingebaut wird. 2012, hello2morrow GmbH 5

Und das ist oft die Folge: 2012, hello2morrow GmbH 6

Einige Gründe für die strukturelle Erosion Wissen und Fähigkeiten im Team sind ungleich verteilt Kopplung und Komplexität wachsen schnell Vielfach gibt es keine formale Architektur In den meisten Projekten wird die Qualität am Schluss betrachtet Desinteresse an Qualität: Management betrachtet die Software als black box Das Gesetz der Software Entropy Eine Software, die benutzt wird, wird verändert werden. Wenn eine Software verändert wird, steigt die Komplexität, es sei denn, man arbeitet aktiv dagegen. 2012, hello2morrow GmbH 7

Man weiß, dass man ein Problem hat, wenn das System schwierig ist anzupassen, weil jede Änderung viele andere Änderungen nach sich zieht. [Rigidity] Änderungen zu Fehlern in konzeptionell verschiedenen Stellen führen. [Fragility] es schwierig ist, das System in wiederverwendbare Komponenten zu unterteilen. [Immobility] es schwieriger ist etwas richtig zu machen als falsch. [Viscosity] der Source Code schwierig zu verstehen ist. [Opacity] The software starts to rot like a bad piece of meat [Robert C. Martin in ASD] 2012, hello2morrow GmbH 8

Was ist technische Qualität? Unsere Definition: Technical quality of software can be defined as the level of conformance of a software system to a set a set of rules and guidelines derived from common sense and best practices. Those rules should cover software architecture, programming in general, testing and coding style. Technische Qualität lässt sich nicht allein durch Testen erreichen Technische Qualität manifestiert sich in jeder Codezeile Vier Aspekte technischer Qualität: Architektur und Abhängigkeitsstruktur Software Metriken Programmierregeln Testbarkeit und Testabdeckung Welcher dieser Aspekte hat den größten Einfluss auf die Gesamtkosten? Messung erfolgt über Metriken und Zählung von Regelverletzungen 2012, hello2morrow GmbH 9

Kosten von struktureller Erosion / Technical Debt 2012, hello2morrow GmbH 10

Motivation Theoretischer Hintergrund Entwicklungsprozess Demonstration von Sonargraph Architect 2012, hello2morrow GmbH 11

Sichtbares Verhalten und interne Struktur Das sichtbare Verhalten wäre ausreichend zu verifizieren, wenn sich Anforderungen nicht ändern würden Software fehlerfrei wäre Technologien sich nicht ändern würden Aber Software muss angepasst, erweitert und korrigiert werden! Die maintenance Phase ist für ca. 90% aller Entwicklungskosten verantwortlich. [The Mythical Man Month] Der Aufwand für die maintenance ist hauptsächlich bestimmt durch die technische Qualität und die interne Struktur Software muss normalerweise eine gewisse Zeit erfolgreich eingesetzt werden, um sich zu armortisieren. 2012, hello2morrow GmbH 12

Makro Ebene: Bsp einer einfachen relaxed layered architecture 2012, hello2morrow GmbH 13

Was ist mit fachlichen Aspekten? Technische Aspekte sind die Grundlage für die Geschäftslogik Fachliche Aspekte sind orthogonal zu technischen Schichten Auch fachliche Aspekte müssen klare Abhängigkeiten aufweisen 2012, hello2morrow GmbH 14

Eine logische Architektur mit fachlichen Schnitten 2012, hello2morrow GmbH 15

Contract Customer User Common Erstellen einer logischen Architektur Presentation Domain Persistence Schritt 1: Teile horizontal in technische Aspekte Schritt 2: Teile vertikal in fachliche Aspekte Schritt 3: Definiere erlaubte Abhängigkeiten 2012, hello2morrow GmbH 16

Der Source Code implementiert die logische Architektur Entwickler setzen use cases um, indem sie Klassen und Interfaces in Paketen anlegen und berücksichtigen die vorhandenen Architektur-Restriktionen und ordnen über eine Namenskonvention die physikalischen Artefakte in die logische Architektur ein. Der Source Code ist nicht isoliert Es ist keine Magie involviert es gibt nichts Expliziteres als den Source Code The software is the design [Robert C. Martin in ASD] 2012, hello2morrow GmbH 17

Abhängigkeiten und Level LEVEL Element A 3 Element A Element B 2 Element B Element C 1 Element C cyclic acyclic 2012, hello2morrow GmbH 18

Der Effekt von zyklischen Abhängigkeiten Zyklische Abhängigkeiten haben einen negativen Einfluss auf: Testen Verständlichkeit Wiederverwendung Erweiterbarkeit Team building Cyclic physical dependencies in large, low-level subsystems have the greatest capacity to increase the overall cost of maintaining a system [John Lakos in LSD] 2012, hello2morrow GmbH 19

Beispiel für eine Zyklengruppe 2012, hello2morrow GmbH 20

Berechnung des Kopplungsgrades [LSD] Depends upon = Die Anzahl von Komponenten, von der eine Komponente abhängt (+1 für sich selbst). In Java gilt Source File == Komponete. ACD (Average Component Dependency) = Die Summe aller depends upon Werte, geteilt durch die Anzahl aller Komponenten 6 3 6 Cycles 3 3 1 1 6 6 1 1 1 2 3 2 1 6 1 ACD = 15/6 = 2,5 Dependency Inversion ACD = 12/6 = 2 ACD = 26/6 = 4,33 2012, hello2morrow GmbH 21

Bsp für das Auflösen eines Zyklus 2012, hello2morrow GmbH 22

Umkehrung der Abhängigkeit durch ein Callback Interface 2012, hello2morrow GmbH 23

Regeln für die Mikro Ebene Methoden implementieren Verhalten Beschränkung der Komplexität (Cyclomatic Complexity) Typen gruppieren Methoden Typen sollten klare Abstraktionen repräsentieren Typen sollten klare Verantwortlichkeiten haben Compilation units / Komponenten / Typen Zyklen sollten vermieden werden Beschränkung der Größe Kopplungsgrad im Auge behalten Packages gruppieren compilation units Zyklen sollten verboten sein Auch packages sollten klare Verantwortlichkeiten haben Beschränkung der Anzahl enthaltener compilation units 2012, hello2morrow GmbH 24

Motivation Theoretischer Hintergrund Entwicklungsprozess Demonstration von Sonargraph Architect 2012, hello2morrow GmbH 25

Workflow Ein Architektur Team etabliert die strukturellen Regeln. Aufgaben können definiert werden, basierend auf vorgeschlagenen Refactorings oder erkannten Verletzungen. Entwickler können leicht die Einhaltung der Regeln in ihrer IDE überprüfen. Entwickler können leicht ihnen zugeordnete Aufgaben erkennen. Das Architekturteam bekommt Rückmeldung zu den gelösten Aufgaben. Die Qualität (== Einhaltung der Regeln) wird kontinuierlich überprüft. 2012, hello2morrow GmbH 26

Architektur Workflow ARCHITECT Definiert Architektur, Schwellwerte und Aufgaben Überprüft die Einhaltung der Regeln DEVELOPERS Implementieren Use Cases und Aufgaben unter Beachtung der Architektur und Schwellwerten BUILD Server 2012, hello2morrow GmbH 27

Architecture Workflow with Sonargraph ARCHITECT Version Control System DEVELOPER BUILD Reports TASK MANAGEMENT METRIC HISTORY 2012, hello2morrow GmbH 28

Motivation Theoretischer Hintergrund Entwicklungsprozess Demonstration von Sonargraph Architect 2012, hello2morrow GmbH 29

Step 1: Define the workspace 2012, hello2morrow GmbH 30

Step 1: Status after initial workspace setup 2012, hello2morrow GmbH 31

Step 2: Definition of Layer Groups 2012, hello2morrow GmbH 32

Step 2: Definition of Layers 2012, hello2morrow GmbH 33

Step 2: Using Stereotypes <<public>> : If an element has the stereotype public, it may be accessed by any other non-public element in the same container. <<unrestricted>> : If a non-public element has the stereotype unrestricted, it may access any other element in the same container. A public element which is unrestricted may access any other public element in the same container. <<hidden>> : If an element has the stereotype hidden, it may not be accessed from outside its parent container. <<local>> : If an element has the stereotype local, it may not access any other element outside its parent container, except external elements. 2012, hello2morrow GmbH 34

Step 2: Assignement of types 2012, hello2morrow GmbH 35

Step 3: Definition of vertical slices 2012, hello2morrow GmbH 36

Step 4: Definition of dependencies 2012, hello2morrow GmbH 37

Step 5: Exploration of the System 2012, hello2morrow GmbH 38

Step 6: Cut dependency and move types 2012, hello2morrow GmbH 39

Step 7: Overview of Tasks 2012, hello2morrow GmbH 40

Sonargraph Eclipse Integration into Source Editor 2012, hello2morrow GmbH 41

Sonargraph Sonar Plugin - Dashboard 2012, hello2morrow GmbH 42

Sonargraph Sonar Plugin Violation Drilldown 2012, hello2morrow GmbH 43

Sonargraph Adapter for Atlassian JIRA Task Management 2012, hello2morrow GmbH 44

Take away: Wenige Regeln können viel bewirken Definition einer Zyklen-freien logische Architektur und einer konsistente Package Namenskonvention. Alle Packages müssen logischen Architekturelementen zugeordnet werden. Keine Zyklen zwischen Packages Kontrolle des Kopplungsgrades (ACD und NCCD mit vernünftigen Schwellwerten) Beschränkung der Größe von Java Sourcen (700 Zeilen) Beschränkung der Zyklomatischen Komplexität von Methoden (z.b. 20) Regelmäßige Überprüfung der Regeln 2012, hello2morrow GmbH 45

Weitere Informationen Whitepaper auf unserer Web-Seite: http://www.hello2morrow.com Community Lizenz für Projekte < 50 000 Byte Code Instructions 14 Tage Evaluierung ohne Einschränkung Referenzen [GOF] Design Patterns, Gamma et al., Addison-Wesley 1994 [LSD] Large-Scale C++ Software Design, John Lakos, Addison-Wesley 1996 [EXP] Extreme Programming, Kent Beck, Addison-Wesley 1999 [AUP] Applying UML and Patterns, Craig Larman, Prentice Hall 2000 [TOS] Testing Object-Oriented Systems, Beizer, Addison-Wesley 2000 [ASD] Agile Software Development, Robert C. Martin, Prentice Hall 2003 2012, hello2morrow GmbH 46