Die 7 Wege zum Clean Code



Ähnliche Dokumente
Kontinuierliche Architekturanalyse. in 3D

Karlsruher Entwicklertag Coding Dojos im Unternehmen

Rezension des Papers Recovery, Redemption and Extreme Programming von Peter Schuh

Extreme Programming. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825

Einführung in das Scrum Framework & welche 10 Praktiken helfen, Scrum wirklich gut zu machen

Abschlussvortrag Masterarbeit: Operationalizing Architecture in an agile Software Projec

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

Serbest Hammade / Resh serbest.hammade@hammade.de. Do, 21. Juni 2012

Agilität selbst erfahren. Agile Softwareentwicklung in der Praxis: Jetzt bewerben für das erste Agile Code Camp 2013!

Extreme Programming: Überblick

Test-Driven Design: Ein einfaches Beispiel

Agile Softwareprozess-Modelle

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

Softwareentwicklungsprozess im Praktikum. 23. April 2015

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Echolot Qualitätssicherung mit Sonar

Software - Testung ETIS SS05

Fortgeschrittenes Programmieren mit Java. Test Driven Development

GELEBTE ENTWICKLUNGSRICHTLINIEN

Continuous Integration

Entwicklungswerkzeuge

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Extreme Programming ACM/GI Regionalgruppe Bremen,

Soft Skills als Erfolgsfaktoren im anforderungsorientierten, agilen Projektmanagement am Beispiel der IT- Softwareentwicklung

- Agile Programmierung -

Prüfung Software Engineering II (IB)

Qualitätsmanagement mit Continuous Integration Untersuchung anhand einer Machbarkeitsstudie in der Praxis. Abschlußpräsentation zur Studienarbeit

Continuous Integration mit Jenkins

Vorstellung. Wie entsteht Architektur in Scrum

Lösungen zum Test objektorientierter Software

Agiler Healthcheck. Dieter Bertsch & Sabine Canditt Agile Center Allianz Deutschland München / Januar 2013

Effektiver Einsatz von Code-Reviews

Agile Softwareentwicklung

Qualitätssicherung leicht gemacht: Open Source Tools sinnvoll einsetzen und verzahnen

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

ZuuL - Entwicklung eines Adventures

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

Führung von agilen verteilten Teams

Refactoring relationaler Datenbank. Shaoke Wu

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

Test Driven Development

agil entwickeln CSD Certified Scrum Developer Schulungen in Deutschland

DIGICOMP OPEN TUESDAY AKTUELLE STANDARDS UND TRENDS IN DER AGILEN SOFTWARE ENTWICKLUNG. Michael Palotas 7. April GRIDFUSION

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

Was bringt TDD wirklich?

Qualitätssicherung von Software (SWQS)

Die Welt der SW-Qualität Ein Streifzug in 30 Minuten! Johannes Bergsmann Eigentümer

Testen im Software- Entwicklungsprozess

Agile Systemadministration (ASA)

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

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

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Inspektionen, Reviews und Walkthroughs. Christian Peucker

Erster Bug: eine Motte

Agile Methoden. David Tanzer. Oliver Szymanski

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

Ganzheitliches IT-Projektmanagement

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

Iterativ. Inkrementell

Qualitätssicherung. Was ist Qualität?

Qualitätserlebnis statt Qualitätssicherung. Eine Mehrfachfallstudie agiler Teams

Applikationsvirtualisierung in der Praxis. Vortrag an der IHK Südlicher Oberrhein, Freiburg Thomas Stöcklin / 2007 thomas.stoecklin@gmx.

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Softwaretechnikpraktikum SS Qualitätsmanagement I. 1. Überblick. Qualität. Qualitätsmerkmal

Andrea Grass & Dr. Marcus Winteroll oose Innovative Informatik GmbH. Geschäftsprozessmanagement und Agilität geht das zusammen?

Product Line Engineering (PLE)

Software Systems Engineering

Projektmanagement Vorlesung 14/ 15: Wiederholung ausgewählter Themen zur Klausurvorbereitung. Prof. Adrian Müller, PMP, PSM-1, CSM FH Kaiserslautern

CONTINUOUS LEARNING. Agile Anforderungsanalyse mit Impact Mapping

Eclipse User Interface Guidelines

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick Flache Aufwandskurve Qualitätskriterien für den inkrementellen Entwurf...

ITIL und Entwicklungsmodelle: Die zwei Kulturen

Selbstorganisiert ein Ziel erreichen Analyse, Architektur und Design in agilen Software-Projekten

Einreichung zum Call for Papers

Von der Gegenwart mit Vollgas in die agile Zukunft!

Agile Software-Entwicklung im Kontext der EN50128 Wege zum Erfolg

Extremes Programmieren

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Code Retreat Softwerkskammer Stuttgart / JUGS 17. Nov. Oliver Böhm JUGS / Daniel Georges Softwerkskammer Stuttgart

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

BIF/SWE - Übungsbeispiel

Trends in der Agilität Dr. Martin Geier

Testen mit JUnit. Motivation

Agile Java-Entwicklung in der Praxis

Kommt Clean Code in Studium und Ausbildung zu kurz?

Gestaltung wissenschaftlicher Poster

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

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

Der frühe Tester fängt den Bug

16 Architekturentwurf Einführung und Überblick

Agile Software Entwicklung. Agile Software Entwicklung, DHBW Karlsruhe, SS-2009 Collin Rogowski

Erfahrungen aus einem großen agilen Projekt. Dipl.-Inform. Henning Wolf Geschäftsführer

Das chronische Problem der Anforderungsanalyse und die Frage: Fehler vermeiden oder früh entdecken? Oral Avcı ZU KÖLN

BDI-Agenten für agile zielorientierte Geschäftsprozesse

Risikogetriebene Softwarearchitektur. STEFAN TOTH Agile Bodensee

Build-Pipeline mit Jenkins

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Transkript:

Die 7 Wege zum Clean Code

Über mich Claudio Altamura Softwareentwickler Certified ScrumMaster Interessen Agile Softwareentwicklung Softwarearchitekturen Java ccd2013@claudioaltamura.de 2

Inhalt 1. Statische Codeanalyse 2. Testdriven Development 3. Refactoring 4. Continuous Integration 5. Reviews 6. Coding Standards 7. Coding Dojos ccd2013@claudioaltamura.de 3

Statische Codeanalyse Automatische Erkennung von Fehlern Sicherstellung von Coding-Standards Prüfung zum Softwaredesign Einhaltung diverser Metriken Namen, Größen, Anzahl weitere Verifikationen ccd2013@claudioaltamura.de 4

Statische Codeanalyse Welche Tools gibt es? Checkstyle, Findbugs, PMD, etc. mvn checkstyle:checkstyle mvn findbugs:findbugs Was messen? Anzahl Zeilen, Methoden und Klassen Duplicate Code Abhängigkeiten, Komplexität Anzahl von Tests, Anzahl fehlgeschlagener Tests ccd2013@claudioaltamura.de 5

SONARQUBE Statische Codeanalyse ccd2013@claudioaltamura.de 6

Vorteile Testdriven Development Senkt die Entwicklungskosten Produktivere Programmierer Einfache Validierung Positive Auswirkungen auf das Design Vorgehen ccd2013@claudioaltamura.de 7

Best Practices Testdriven Development Zuerst die Tests schreiben "Keep it simple stupid" (KISS) "You aren't gonna need it" (YAGNI). Keep the unit small Der Testcode ist genau so wichtig Nicht auf Zustände vorhergelaufenen Tests bauen ccd2013@claudioaltamura.de 8

Vorsicht! Testdriven Development Nicht für alle Bereiche geeignet: z.b. Oberflächen Unterstützung durch Management wichtig Schlecht geschriebene Tests Betriebsblindheit bei Unit Tests ccd2013@claudioaltamura.de 9

Refactoring By continuously improving the design of code, we make it easier and easier to work with.... If you get into the hygienic habit of refactoring continuously, you'll find that it is easier to extend and maintain code. Joshua Kerievsky, Refactoring to Patterns Vorteile Erhöhung der Lesbarkeit und Verständlichkeit Verbesserung der Wartbarkeit und Erweiterbarkeit Senkung von Kosten für Erweiterungen ccd2013@claudioaltamura.de 10

Mögliche Refactorings Refactoring Abstraktion Code in mehr logische Einheiten unterteilen Name und Ort von Code ccd2013@claudioaltamura.de 11

Risiken Refactoring Risiko ungewünschter Änderungen und Fehler große Änderungen erschweren die Ursachenanalyse Unit-Tests senken lediglich die Risiken ccd2013@claudioaltamura.de 12

Continuous Integration Praktiken Automatisierte Übersetzung Kontinuierliche Test-Entwicklung Häufige Integration Kurze Testzyklen Gespiegelte Produktionsumgebung Einfacher Zugriff Automatisiertes Reporting Automatisierte Verteilung ccd2013@claudioaltamura.de 13

Vorteile Continuous Integration Integrations-Probleme werden laufend gefixt frühe Warnungen, Feedback-Zyklus Unit-Tests entdecken Fehler zeitnah ständige Verfügbarkeit eines lauffähigen Standes ccd2013@claudioaltamura.de 14

Continuous Integration ccd2013@claudioaltamura.de 15

Reviews Reviewarten Informelles Review Walkthrough Inspektion Lightweight Reviews Over the Shoulder Pair Programming ccd2013@claudioaltamura.de 16

Vorteile Reviews Kostengünstige Behebung von Fehlern Identifizierung von Verbesserungsmöglichkeiten Wissentransfer Erfolgsfaktoren Konstruktive Kritik üben Kultur von Lernen und Prozessverbesserung Taktgefühl des Reviewers ccd2013@claudioaltamura.de 17

Reviews Gerrit ccd2013@claudioaltamura.de 18

Coding Standards Why Have Code Conventions? Code conventions are important to programmers for a number of reasons: 80% of the lifetime cost of a piece of software goes to maintenance. Hardly any software is maintained for its whole life by the original author. Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly. Code Conventions for the Java Language Was sind Coding Standards? ccd2013@claudioaltamura.de 19

Coding Standards Beispiele für Coding Standards Naming Conventions, Anweisungen, White Space Deklarationen, Kommentare, Einrückung Dateiorganisation, Praktiken, Prinzipien und Regeln Vorteile Erleichterung der Arbeit Steigerung der Lesbarkeit, Verständlichkeit und Wartbarkeit Elimierung von vermeidbaren Fehlerquellen ccd2013@claudioaltamura.de

Coding Standards Prozess Basis Language Coding Conventions Festlegung in einem Dokument Schrittweise Justierung der Regeln, z.b. Tools für die statische Codeanalyse Codeformatter ccd2013@claudioaltamura.de 21

Coding Dojos Dojo = Trainingsraum Kata = vorgegebener Bewegungsablauf Code Kata = vorgegebene Programmieraufgabe viele Male hintereinander ausgeführt es geht nicht um die Lösung, sondern um den Weg Muster sollen in Fleisch und Blut übergehen Ziel: besserer Entwickler zu werden ccd2013@claudioaltamura.de 22

Ablauf Coding Dojos zwei Entwickler im Team an einem Rechner restliche Teilnehmer schauen auf den Beamer nach einer Zeitspanne Wechsel eines Entwickler bis nichts mehr zu verbessern ist am Ende Retrospektive ccd2013@claudioaltamura.de 23

Coding Dojos Für was eignen sich Coding Katas? TDD zu lernen Neue Sprache oder Sprachfeatures zu lernen besser zu programmieren ccd2013@claudioaltamura.de 24

Fragen & Antworten ccd2013@claudioaltamura.de

Links Statische Codeanalyse SonarSource (http://www.sonarqube.com) Continuous Integration Martin Fowler CI (http://www.martinfowler.com/articles/continuousintegration.html) TDD Introduction to TDD (http://www.agiledata.org/essays/tdd.html) Refactoring Refactoring to Patterns Catalog (http://industriallogic.com/xp/refactoring/catalog.html) Reviews Best Kept Secrets (http://smartbear.com/smartbear/media/pdfs/best-kept-secrets-of-peer-code-review.pdf) Coding Standards Code Conventions for the Java Programming Language (http://www.oracle.com/technetwork/java/codeconv-138413.html) Coding Dojos CodersDojo (http://codersdojo.org) ccd2013@claudioaltamura.de 26

Vielen Dank für eure Aufmerksamkeit. www.claudioaltamura.de ccd2013@claudioaltamura.de