Aspects Of Code Quality meetup

53
Aspects of Code Quality Maximilian Berghoff Andreas Haberberger Mayflower Meetup Berlin Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D- 97074 Würzburg

Transcript of Aspects Of Code Quality meetup

Page 1: Aspects Of Code Quality   meetup

Aspects of Code QualityMaximilian Berghoff Andreas Haberberger

Mayflower Meetup Berlin

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 2: Aspects Of Code Quality   meetup

Que

lle:

http

://xk

cd.c

om/8

44/

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 3: Aspects Of Code Quality   meetup

Der Fahrplan

Warum Code Quality?

Code Quality schaffen

Code Quality messen und sicherstellen

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 4: Aspects Of Code Quality   meetup

Warum Code Quality?

Was kosten Systemausfälle?

Was kostet Maintenance?

Was kostet Weiterentwicklung?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 5: Aspects Of Code Quality   meetup

Warum Code Quality?

Zufriedene Entwickler!

Warum?

CI mit Angst führt zu PI (procrastinated integration)

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 6: Aspects Of Code Quality   meetup

1.Qualität schaffen

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 7: Aspects Of Code Quality   meetup

Maßnahmen, die die

Lebensdauerund damit den

Wertdes Codes erhöhen.

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 8: Aspects Of Code Quality   meetup

Alle Maßnahmen, die dazu führen, dass Code

wartbar

verständlich

zugänglich

erweiterbar

austauschbar

bleibt.

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 9: Aspects Of Code Quality   meetup

Testing

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 10: Aspects Of Code Quality   meetup

Linting

Metriken

Unit

Service

Integration

e2e

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 11: Aspects Of Code Quality   meetup

Testqualität

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 12: Aspects Of Code Quality   meetup

...und wie schreibe ich “testbaren” Code?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 13: Aspects Of Code Quality   meetup

Test Driven Development

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 14: Aspects Of Code Quality   meetup

Verteilung

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 15: Aspects Of Code Quality   meetup

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 16: Aspects Of Code Quality   meetup

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 17: Aspects Of Code Quality   meetup

Testen an der DomainBDD

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 18: Aspects Of Code Quality   meetup

Ubiquitous Language

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 19: Aspects Of Code Quality   meetup

Business Need: Edit users In order to have customer support an Admin want's to edit a user. Scenario: Edit user data on behalf of a customer Given a user with email "[email protected]" When i change the username to "ElectricMaxxx" Then the user profile should display the username "ElectricMaxxx"

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 20: Aspects Of Code Quality   meetup

2. Qualität messenWarum?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 21: Aspects Of Code Quality   meetup

Indikatoren

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 22: Aspects Of Code Quality   meetup

Code Metriken(objektive Qualitätsmaßstäbe)

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 23: Aspects Of Code Quality   meetup

subjektive Qualitätsmaßstäbe

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 24: Aspects Of Code Quality   meetup

Agile Methoden

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 25: Aspects Of Code Quality   meetup

Im Deploy

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 26: Aspects Of Code Quality   meetup

Stetiges messen

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 27: Aspects Of Code Quality   meetup

Qualität sicherstellen

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 28: Aspects Of Code Quality   meetup

Wer kann Qualität sehen ?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 29: Aspects Of Code Quality   meetup

Entwickler sehen und merken Code Quality

Anzahl Tests

Geiler Code

Code lässt sich besser bearbeiten

Neue Kollegen schneller eingelernt

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 30: Aspects Of Code Quality   meetup

Bussiness kann Qualität sichtbar gemacht werden

Bugs - Weniger/Schneller gefixed

BDD um Anforderung und Entwicklung “kurzzuschließen”

Features schneller/planbarer

Entwickler austauschbar

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 31: Aspects Of Code Quality   meetup

Bewusst auf Qualität verzichten?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 32: Aspects Of Code Quality   meetup

Technische SchuldenWarum eingehen?

Welche Folgen entstehen?

Wie geht man damit um?

Wie wieder loswerden?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 33: Aspects Of Code Quality   meetup

Fragen ?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 34: Aspects Of Code Quality   meetup

Warum Code Quality?

Was kosten Systemausfälle?

Was kostet Maintenance?

Was kostet Weiterentwicklung?

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 35: Aspects Of Code Quality   meetup

- [email protected]

- @ElectricMaxxx

- https://github.com/ElectricMaxxx

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Kontakt

- [email protected]

- @A_Haberberger

- https://github.com/ahaberberger

Page 36: Aspects Of Code Quality   meetup

- Slides: “The pyramid is a lie”- Blog: “Testen an der Domaine”

Metrik:- Scrutinizer: https://scrutinizer-ci.com- Sonarqube: http://www.sonarqube.org/

Build:- Travis: https://travis-ci.org/- Shippable: https://app.shippable.com/- Teamcity: https://www.jetbrains.com/teamcity/

- Bamboo: https://de.atlassian.com/software/bamboo

- Jenkins: https://jenkins.io/

Code Review

- Crucible: https://de.atlassian.com/software/crucible

- Upsource: https://www.jetbrains.com/upsource/

- Github: Github

- Gitlab: https://about.gitlab.com/

- Gerit: https://www.gerritcodereview.com/Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Links und Quellen

Page 37: Aspects Of Code Quality   meetup

Thank You

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 38: Aspects Of Code Quality   meetup

“Sauberen” Code schreiben

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Robert C. Martin: Clean Code. A Handbook of Agile Software Craftsmanship. Prentice Hall, Upper Saddle River NJ u. a. 2008

Page 39: Aspects Of Code Quality   meetup

Agile Methoden

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 40: Aspects Of Code Quality   meetup

Tools

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 41: Aspects Of Code Quality   meetup

Metriken

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 42: Aspects Of Code Quality   meetup

Metriken

Scrutinizer Sonarqube

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 43: Aspects Of Code Quality   meetup

Build

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 44: Aspects Of Code Quality   meetup

Build

Travis CI

shippableTeamcity

Jenkins

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Bamboo

Page 45: Aspects Of Code Quality   meetup

Code Review

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 46: Aspects Of Code Quality   meetup

Code Review

Upsource

Github

Crucible

Gerrit Code Review

Gitlab

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Stash/Bitbucket

Page 47: Aspects Of Code Quality   meetup

Verständlicher Code

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 48: Aspects Of Code Quality   meetup

Deploy Workflow

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 49: Aspects Of Code Quality   meetup

Agile Methoden

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 50: Aspects Of Code Quality   meetup

3. Qualität sicherstellen

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 51: Aspects Of Code Quality   meetup

Behavior Driven Development

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 52: Aspects Of Code Quality   meetup

Resilience

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg

Page 53: Aspects Of Code Quality   meetup

Cucumber/Gherkin

Aspects of Code Quality - Maximilian Berghoff & Andreas Haberberger, Mayflower GmbH, Gneisenaustraße 10/11, D-97074 Würzburg