SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
#dwx14
Mit agilen Praktiken
SOLIDe
Systeme bauen
Sven Günther
it-agile GmbH
2
Kennen Sie das?
… und das?
Red
GreenRefactor
… und das?
S O L I D
Kurz vor Sprintende
TODO DOING DONE
gerade noch geschafft!
TODO DOING DONE
technische Schulden
Velocity
z.B. 20
Storypoints
Velocity
z.B. 30
Storypoints
TODO DOING DONE
Fertig!
eigentlich
müsste man mal
TODO DOING DONE
Visualisiert
es!
Culture eats
strategy for
breakfast
Software Craftsmanship
Agile Developer Skills
• Clean Code & Refactoring
• Design Prinzipien anwenden
• Automatisierte Tests erstellen
• Code kontinuierlich integrieren (CI)
• Clean Code & Refactoring
• Design Prinzipien anwenden
• Automatisierte Tests erstellen
• Code kontinuierlich integrieren (CI)
Agile Developer Skills
Smells als Auslöser
• Kommentare
• Duplikate
• Unverständlicher Code
• Enge Kopplung
• Toter Code
• Komplexer Code
• zu große Module / Klassen / Methoden
Don’t boil Frogs
React Early,
React Small
Broken Window
Boy Scout Rule
Wie mache ich
Refactoring richtig?
Tiny little Babysteps …
… auf dem grünen Pfad
Mikado Method
http://mikadomethod.org
Bridge Pattern
• Clean Code & Refactoring
• Design Prinzipien anwenden
• Automatisierte Tests erstellen
• Code kontinuierlich integrieren (CI)
Agile Developer Skills
Design Prinzipien
S
O
L
I
D
ingle Responsibility Principle
pen Closed Principle
iskov Substitution Principle
nterface Segregation Principle
ependency Inversion Principle
©Telerik,	
  Inc.
Single Responsibility Principle
SRP

!
Jede Klasse hat nur einen
Grund sich zu ändern.
Mit agilen Praktiken SOLIDe Systeme bauen
Currency
Converter
hole die aktuellen Kurse
parse das Ergebnis
rechne um mit gegebenem Kurs
Verteile Verantwortlichkeiten
©Telerik,	
  Inc.
Open Closed Principle
OCP

!
Eine Klasse ist offen für
Erweiterungen aber
geschlossen gegenüber
Änderungen
unflexibel und fragil
flexibel erweiterbar
©Telerik,	
  Inc.
Liskov Substitution Principle
LSP

!
Sei q(x) eine beweisbare
Eigenschaft von Objekten x des
Typs T. Dann soll q(y) für Objekte y
des Typs S wahr sein, wobei S ein
Untertyp von T ist.
Beispiel
Rechteck
Quadrat
?
Beispiel
Rechteck
Quadrat
Lösung
Polygon
Quadrat
Rechteck
©Telerik,	
  Inc.
Interface Segregation
ISP

!
Die Methoden einer
Schnittstelle sollen eine
hohe Kohäsion aufweisen
Interface Segregation
Database
Service
Suchanfrage
Entitäten
manipulieren
Administration
Database
Service
Impl
Interface Segregation
QueryServiceSuchanfrage
Entitäten
manipulieren
Administration
Persistence
Service
DBAdminService
Database
Service
Impl
©Telerik,	
  Inc.
Dependency Inversion Principle
DIP

!
High-Level-Konzepte
sollen nicht von
Low-Level-Konzepten
abhängen
Dependency Inversion Principle
Copy
Write PrinterRead Keyboard
<<uses>>
HighLevel
LowLevel
… write to disk
Copy
Write PrinterRead Keyboard
<<uses>>
HighLevel
LowLevelWrite Disk
Copy
<<uses>>
HighLevel
LowLevel
<<interface>>
File
Keyboard
Reader
Printer
Writer
Copy
Keyboard
Reader
Printer
Writer
<<interface>>
File
HighLevel
LowLevel
DIP + SRP + ISP
Copy
Keyboard
Reader
<<interface>>
Reader
Printer
Writer
<<interface>>
Writer
HighLevel
LowLevel
DIP + SRP + ISP
• Clean Code & Refactoring
• Design Prinzipien anwenden
• Automatisierte Tests erstellen
• Code kontinuierlich integrieren (CI)
Agile Developer Skills
Testpyramide
Unit-Tests
Akzeptanz- /
Integrationstests
explorative Tests
Automatisierungsgrad
Testpyramide
Unit-Tests
Akzeptanz- /
Integrationstests
explorative Tests
fachlicheBreite
Testdriven Development
Red
GreenRefactor
ATDD - Akzeptanztestdriven Development
• Clean Code & Refactoring
• Design Prinzipien anwenden
• Automatisierte Tests erstellen
• Code kontinuierlich integrieren (CI)
Agile Developer Skills
Keine Big Bang Integration
Kein Code Freeze
Length of
Feedback
Cycle
Cost
• Clean Code & Refactoring
• Design Prinzipien anwenden
• Automatisierte Tests erstellen
• Code kontinuierlich integrieren (CI)
Agile Developer Skills
Mit agilen Praktiken SOLIDe Systeme bauen
Fragen?
Sven Günther
@inevs
sven.guenther@it-agile.de

Más contenido relacionado

Similar a Mit agilen Praktiken SOLIDe Systeme bauen

Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Torsten Kleiber
 
DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?Digicomp Academy AG
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuCédric Hüsler
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItJSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItTorsten Fink
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickUdo Pracht
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Qualität, aber bitte agil.
Qualität, aber bitte agil.Qualität, aber bitte agil.
Qualität, aber bitte agil.Hendrik Lösch
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 

Similar a Mit agilen Praktiken SOLIDe Systeme bauen (20)

Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
 
DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neu
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItJSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptIt
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
 
Design OOA OOD
Design OOA OODDesign OOA OOD
Design OOA OOD
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Qualität, aber bitte agil.
Qualität, aber bitte agil.Qualität, aber bitte agil.
Qualität, aber bitte agil.
 
ConSol Unternehmenspräsentation 2019
ConSol Unternehmenspräsentation 2019ConSol Unternehmenspräsentation 2019
ConSol Unternehmenspräsentation 2019
 
Xidra 2016 DevOps
Xidra 2016 DevOpsXidra 2016 DevOps
Xidra 2016 DevOps
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 

Más de Sven Günther

Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317Sven Günther
 
Was Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssenWas Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssenSven Günther
 
Continuous Integration for iOS Developer
Continuous Integration for iOS DeveloperContinuous Integration for iOS Developer
Continuous Integration for iOS DeveloperSven Günther
 
iOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsiOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsSven Günther
 
iOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile WegiOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile WegSven Günther
 
iOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile WegiOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile WegSven Günther
 
Pitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-EntwicklungPitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-EntwicklungSven Günther
 

Más de Sven Günther (7)

Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317Agile Transitionen mit Kanban - Meetup 20210317
Agile Transitionen mit Kanban - Meetup 20210317
 
Was Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssenWas Manager über agile Entwicklungspraktiken wissen müssen
Was Manager über agile Entwicklungspraktiken wissen müssen
 
Continuous Integration for iOS Developer
Continuous Integration for iOS DeveloperContinuous Integration for iOS Developer
Continuous Integration for iOS Developer
 
iOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsiOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click Deployments
 
iOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile WegiOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile Weg
 
iOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile WegiOS-Entwicklung - der agile Weg
iOS-Entwicklung - der agile Weg
 
Pitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-EntwicklungPitfalls bei der iOS-Entwicklung
Pitfalls bei der iOS-Entwicklung
 

Mit agilen Praktiken SOLIDe Systeme bauen