Anti-Patterns. Zuverlässige Software SS2009 Friedrich Gensicke



Ähnliche Dokumente
How To Design Software

- Antipatterns - der Softwareentwicklung. Tanja Brockmeier

Die 7 Todsünden der Softwareentwicklung Sascha Kohlmann 7 Todsünden der Softwareentwicklung

Softwaretechnik 2015/2016

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Software Engineering

Methoden der agilen Softwareentwicklung für eingebettete Systeme

2 Softwarearchitektur in der Organisationsstruktur 25

7. Zusammenfassung (1)

Software-Engineering Grundlagen des Software-Engineering 7 Implementierungsphase (Programming Phase)

Notationen zur Prozessmodellierung

Entwurfsmuster Design Patterns by Erich Gamma et al.

Kleine Refactoring-Muster

Jochen Ludewig Horst Lichter. Software Engineering. Grundlagen, Menschen, Prozesse, Techniken. dpunkt.verlag

m a r k u s r a a b d a p r ä s e n t a t i o n

Software Engineering

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung Reisebeschreibung Zielpublikum Fallbeispiel...

Architekturrefactorings

Corporate Governance

Design Patterns (dt. Entwurfsmuster)

ISO 9001:2015 Prozessorientierte IT-Lösungen als Schlüsselfaktor. [[ Projekt GESINE ]] AristaFlow GmbH. Jürgen Huhle,

Reengineering und Refactoring von Softwarearchitekturen

Der Rational Unified Process

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

22. Januar Gruppe 2: TOPCASED

Inhaltsverzeichnis. Teil I Grundlagen 1

Realität zu modellieren eine

- Agile Programmierung -

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn

WEBCAMPUS FÜR IHR UNTERNEHMEN

Software Engineering

Model Driven Development im Überblick

Überarbeitung der auf zur. Verfügung gestellten Informationen zum. BWZ Münster

Reduzierung der Komplexität gewachsener Unternehmensarchitekturen (EAs)

Agile Softwareentwicklung

Der agile Software Architekt

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

IT-Projektmanagement Teil 2: Der Gegenstand von SW-Projekten Kaiserslautern, WS 2008/2009 Dr. Gerhard Pews

Remote Methode Invocation (RMI) ETIS SS05

Data Warehousing. DWH Projekte. Ulf Leser Wissensmanagement in der Bioinformatik

Komponentenbasierter

11/2009 Bernhard Gangl. Steuerungen mit OOP entwickeln 11 / Themenübersicht. Übersicht und Begriffsklärung: Objektorientierte Programmierung

Orchestrator. IT-Paradigmenwechsel im Zeitalter des Cloud Computing. Mohammad Esad-Djou, Solution Architect OPITZ CONSULTING Deutschland GmbH

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Programmiermethodik Vorlesung und Praktikum SS 2001

Software Engineering. Fakultät Elektrotechnik Bachelor-Studiengänge, 4. Semester Prof. Dr.-Ing. Dagmar Meyer

a. Was tut das Tier, welches beobachtbare und messbare Verhalten führt es aus?

BACnet - Compare Intrinsic and Algorithmic Reporting DE doc Page 1 / 17. BACnet

Wettbewerb. Computer creative Wettbewerb...

Ziele und Tätigkeiten von Architekten

Agile Development vs. Security Requirements

Zustandsdiagrammeditor Pflichtenheft, Version 3.0

LASTENHEFT. Copyright Michael Rattun 1

Model-View-Controller

Prozesse Last oder Lust?

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

1.3.3 Der naive Optimismus der Jugend oder»wir können es übers Wochenende schaffen!« Die»Start-Up-c-Mentalität von Gründungsuiiternehmen

Objektorientierte Systementwicklung

Einführung in das Google Web Toolkit am Beispiel eines Projektes aus der Verkehrstelematik

Ein Blick auf die Grid-Architektur

Vortrag Iterative Prozessmodelle/SCRUM

Entwurfsmustern in der industriellen Praxis. Erfahrungen mit. Bayave Software GmbH. Dirk Riehle

Objektorientierte und Funktionale Programmierung SS 2014

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

MBT RAT Risk Assessment Tool Maschinenrichtlinie 2006/42/EG kostenlose Risi

Potentiale modellgetriebener Softwareentwicklung

Software Engineering mit Übungen. Franz-Josef Elmer, Universität Basel, HS 2015

Lehrbuch der Objektmodellierung

Refactoring Transformationen. Martin Freund Januar 2003 Seminar Refactoring in extreme Programming AG Kastens Universität Paderborn

Vorstellung. Wie entsteht Architektur in Scrum

Die Wissensgebiete der Simulationstechnik Durak, U., Gerlach, T.

Programmieren I. Überblick. Institut für Angewandte Informatik

Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software (Programmer's Choice) Click here if your download doesn"t start automatically

SIRIUSsap Instandhaltung und IT mit Weitblick

Softwareentwicklung: Variablen, Risiken, wirtschaftliche Gesichtspunkte. Jens Müller TU-Dresden

Modellgetriebene Softwareentwicklung. Gabriele Taentzer WS 2012/2013 Philipps-Universität Marburg

Refactoring von Legacy Systemen. Jochen Winzen andrena objects ag

Unterschiede in der Implementierung einer Software mit Datenbankanbindung in Java bzw. PHP am Beispiel einer Zeiterfassungssoftware

Strukturierte Entwicklung von APEX- Anwendungen

Software Engineering. Produktivitätsfaktoren! Kapitel 18

Virtuelle und physische Welt kombinieren

Nicolai Josuttis. SOA in der Praxis. System-Design für verteilte Geschäftsprozesse. dpunkt.verlag

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Lösungen zum Test objektorientierter Software

IT-Projektmanagement

Software Engineering. 5. Architektur

modellzentrierter Test

Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET

Einführung in die objektorientierte Programmierung

Entwurfsmuster. Marc Monecke

DOORS Schema IBM Rational DOORS Start-Up Training - Teil 3

Agile Methoden. David Tanzer. Oliver Szymanski

Softwareprozessmodelle

6. PRINCE2-Tag Deutschland Erfolgsfaktoren für Projekt Audits

Komponentenbasierter Taschenrechner mit CORBA

Informationswirtschaft II Rational Unified Process (RUP)

Transkript:

Anti-Patterns Zuverlässige Software SS2009 Friedrich Gensicke

Gliederung 1. Einführung Was sind Anti Patterns? Unterschiede Design Pattern Anti Pattern Grundursachen Klassifizierung 2. Anti Patterns in der Software-Entwicklung 3. In der Software-Architektur 4. Im Projektmanagement 5. Zusammenfassung Anti-Pattern Friedrich Gensicke 2

Was sind Anti-Patterns? Einführung und Motivation Wie sollte man es nicht machen? Beschreibt eine Lösung zu einem Problem, die negative Folgen hat Gründe: zu wenig Wissen, geringe Erfahrung, falsches Muster, Besteht aus: Symptome, Konsequenzen, Lösungsvorschlag Anti-Pattern Friedrich Gensicke 3

Unterschiede zu Design-Pattern Einführung und Motivation Design Patterns geben Lösung zu Problem an Anti Patterns geben bessere Lösung zu geg. Lösung an Anti-Pattern Friedrich Gensicke 4

Grundursachen Einführung und Motivation Liegen in der Natur des Menschen Eile Teilnahmslosigkeit Engstirnigkeit Faulheit Geiz Ignoranz Hochmut Anti-Pattern Friedrich Gensicke 5

Klassifikation Einführung und Motivation Grundlage sind unterschiedliche Sichtweisen Entwickler: Programmierung Architekt: Struktur des Systems Manager: Organisation der Entwicklung Anti-Pattern Friedrich Gensicke 6

Anti-Patterns in der Software-Entwicklung Anti-Pattern Friedrich Gensicke 7

Cut-And-Paste Programming Starke Verbreitung Ähnlicher Code überall in Software zu finden Wenig erfahrene Programmierer Effiziente Code-Produktion Schlechte Dokumentation wieder verwendbarer Komponenten Neue Technologien Anti-Pattern Friedrich Gensicke 8

Cut-And-Paste Programming Konsequenzen Fehlerverteilung durch Cut-And-Paste Aufblähung von Reviews Keine Standardlösung zur Fehlerbehebung extreme Steigerung der Wartungskosten Anti-Pattern Friedrich Gensicke 9

Cut-And-Paste Programming Lösungsvorschlag Organisation des Codes in Bibliotheken Schritte des Refactoring: 1. Aufsuchen der ähnlichen Code-Segmente 2. Erstellen einer Standardversion 3. Einführung Konfigurationsmanagement Vorbeugende Maßnahmen Anti-Pattern Friedrich Gensicke 10

TheBlob Die Gott-Klasse Funktionalität liegt bei EINER Klasse Klassendiagramm: Eher bei prozeduralem Design auftretend Häufig Konsequenz iterativer Entwicklung Ungenutzter Code Lava-Flow AP Hauptgrund: fehlende OO-Architektur Anti-Pattern Friedrich Gensicke 11

TheBlob Die Gott-Klasse Konsequenzen Klasse ist Ansammlung verschiedenartiger Funktionen und Attribute geringe Kohäsion Fehlendes OO-Design: Klasse enthält main- Loop und sämtliche Funktionalität Zu komplex für Wiederverwendung und Testen Speicherplatzverschwendung Anti-Pattern Friedrich Gensicke 12

TheBlob Die Gott-Klasse Lösungsvorschlag Funktionalität auslagern kleine Klassen einbeziehen 1. Identifizieren und Katalogisieren der Funktionen 2. Ermitteln der richtigen Position und Klasse 3. Indirekte Assoziationen zwischen Klassen entfernen Anti-Pattern Friedrich Gensicke 13

Lava Flow Code Leichen Lava-ähnliche Entwicklungsstränge, die im System verbleiben Hauptsächlich in Forschungsprojekten Oft keine Erinnerung bei Entwicklern Teuer zu analysieren, Ressourcen verschwendend Anti-Pattern Friedrich Gensicke 14

Lava Flow Code Leichen Gründe Code aus F&E ohne Konfigurationsmanagement übernommen Einzelne Entwickler schreiben den Code Keine Architektur-getriebene Entwicklung Unkontrollierte Verteilung von unfertigem Code Anti-Pattern Friedrich Gensicke 15

Lava Flow Code Leichen Konsequenzen Undokumentierte, komplexe, wichtig aussehende Funktionen und Klassen Auskommentierter Code, to be replaced Ungenutzter Code Nicht möglich zu dokumentieren oder zu verstehen Anti-Pattern Friedrich Gensicke 16

Lava Flow Code Leichen Lösungsvorschlag Erstellung einer Architektur vor Implementierung (keine Änderungen) Überwachung der Umsetzung Versionskontrollsysteme Reengineering der Systemarchitektur Grundlage für Analyse Anti-Pattern Friedrich Gensicke 17

Anti-Patterns in der Software-Architektur Anti-Pattern Friedrich Gensicke 18

Architecture-By-Implication Fehlende Architektur bei Systemen unter Entwicklung Verzicht auf Grund von erfahrenen Architekten Architekturdefinitionen fehlen häufig in allen Bereichen Refactoring nach der Entwicklung Anti-Pattern Friedrich Gensicke 19

Architecture-By-Implication Konsequenzen Versteckte Risiken in Größe, Technologie und Komplexität Probleme erst spät im Projekt Mögliches Scheitern durch Schlechte Performanz Ausschweifende Komplexität Missverstandene Anforderungen Unkenntnis von neuen Technologien Anti-Pattern Friedrich Gensicke 20

Architecture-By-Implication Lösungsvorschlag Erstelle eine Architekturdefinition! Autor empfiehlt Methode nach GQM iterativer Prozess Vor allem bei neuen Technologien und Anforderungen Ständige Verfeinerung auch während der Entwicklung Anti-Pattern Friedrich Gensicke 21

Anti-Patterns im Software-Projektmanagement Anti-Pattern Friedrich Gensicke 22

Corncob - Quertreiber Corncob nach OMG allgemein schwierige Menschen Destruktives Verhalten Machtspielchen, Mobbing Nicht an der eigentlichen Arbeit interessiert Management unterstützt Corncobs unbewusst Verhärtete Fronten Anti-Pattern Friedrich Gensicke 23

Corncob Quertreiber Symptome und Konsequenzen Keine Entwicklungsfortschritte Corncob oftmals im Projektteam niemandem direkt untergeordnet Fehlender Entscheidungsfindungsprozess Anti-Pattern Friedrich Gensicke 24

Corncob Quertreiber Lösungsvorschlag Taktische Lösungen: Verantwortlichkeit verteilen Operative Lösungen: Individuelles Interview Freundliche Versetzung Strategische Lösungen: Die Corncob-Gruppe Leere Abteilung Rauswurf Anti-Pattern Friedrich Gensicke 25

Zusammenfassung und Bewertung Möglichkeit Probleme anhand der geg. Symptome zu entdecken Ursache der Probleme meist unbekannt Liefern dazu passende Lösungen durch Refactoring Können Scheitern von Software-Projekten verhindern Kenntnisse über Anti Patterns können Probleme vorbeugen Sensibilisierung Anti-Pattern Friedrich Gensicke 26

Literatur AntiPatterns Refactoring Software, Architectures and Projects in Crisis William J. Brown et al., 1998 Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software Erich Gamma et al., 2004 Anti-Pattern Friedrich Gensicke 27

Vielen Dank für die Aufmerksamkeit! Anti-Pattern Friedrich Gensicke 28