Clean Code Developer
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Clean Code Developer

on

  • 1,824 views

Kurzbeschreibung...

Kurzbeschreibung

Softwareentwicklung braucht Profis. Wie aber definiert man einen "professionellen" Software-Entwickler ? Clean Code Development ist eine der ersten "Versuche", um diese Frage möglichst umfassend, technologieunabhängig und über die Bedürfnisse des Kunden hinaus zu beantworten.

Inhalt
Was ist ein professioneller Software-Entwickler
Professionlität
Qualität
Das CCD Werte-System
Prinzipien und Praktiken
Das Grad-System

Statistics

Views

Total Views
1,824
Views on SlideShare
1,824
Embed Views
0

Actions

Likes
1
Downloads
12
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Clean Code Developer Presentation Transcript

  • 1. Clean Code Developer Dipl.-Inform. Marco SeraphinMittwoch, 26. Januar 2011 1
  • 2. Professionalität Was ist ein professioneller Software-Entwickler ?Mittwoch, 26. Januar 2011 2
  • 3. ProfessionalitätMittwoch, 26. Januar 2011 3
  • 4. ProfessionalitätMittwoch, 26. Januar 2011 4
  • 5. ProfessionalitätMittwoch, 26. Januar 2011 5
  • 6. Professionalität • ..wenn man studiert hat • ..wenn man zertifiziert ist • ..wenn man sein Geld damit verdient • ..wenn man die Wünsche des Kunden erfüllt • ..wenn man..ja wenn man....Mittwoch, 26. Januar 2011 6
  • 7. Professionalität Professionalität = Wissen + Ethik Professionalität hat was mit Wissen und Erfahrung zu tun, aber auch mit EthikMittwoch, 26. Januar 2011 7
  • 8. Professionalität Ethik hat etwas mit Werten zu tunMittwoch, 26. Januar 2011 8
  • 9. Professionalität Hände wachen ist für den Chirug selbst verständlich. Bitte um Unterlassung wegen Kosten wird er ablehnen.Mittwoch, 26. Januar 2011 9
  • 10. Qualität Qualität Er wäscht sich die Hände um die Qualität seiner Arbeit sicherzustellen bzw. zu steigern.Mittwoch, 26. Januar 2011 10
  • 11. Qualität Qualität ist der „Grad, in dem ein Satz inhärenter Merkmale Anforderungen erfüllt“ Norm EN ISO 9000:2005, nach http://de.wikipedia.org/wiki/QualitätMittwoch, 26. Januar 2011 11
  • 12. Inhärente Merkmale • Usibility • Portabilität • Performance • Sicherheit • Fehler-Toleranz • Testbarkeit Solche Punkte wird ein Kunde selten von sich aus als erstes ansprechen.Mittwoch, 26. Januar 2011 12
  • 13. Anforderungen Wer gibt denn überhaupt Anforderungen vor ?Mittwoch, 26. Januar 2011 13
  • 14. Qualität Äußere Qualität Innere Qualität Diese beiden Qualitäten sind nicht immer gleich verteilt.Mittwoch, 26. Januar 2011 14
  • 15. Qualität Ein Clean Code Developer ist ein GegengewichtMittwoch, 26. Januar 2011 15
  • 16. Qualität Ein Clean Code Developer definiert ein Werte-System für mehr innere QualitätMittwoch, 26. Januar 2011 16
  • 17. Clean Code Developer Ein professioneller Softwareentwickler hat ein inneres Wertesystem. Gegen dieses Wertesystem, bestehend aus Gesetzen, Prinzipien und Best Practices, prüft er seine Ergebnisse und Handlungen. Nur, wenn seine Arbeit diesem Wertesystem entspricht, empfindet er sie als gut getan, als professionell. Sein Streben ist es daher, auch unter widrigen Umständen, unter Druck von Kunden oder Herstellern, diesem Wertesystem treu zu sein.Mittwoch, 26. Januar 2011 17
  • 18. Das Wertesystem Evolvierbarkeit Je einfacher die Software an geänderte Rahmenbedingungen angepasst werden kann, desto höher ist ihre Evolvierbarkeit. 18Mittwoch, 26. Januar 2011 18
  • 19. Das Wertesystem Korrektheit Die Software muss korrekt arbeiten, also zum Beispiel „richtig“ rechnen. Aber auch nicht-funktionale Anforderungen, wie Ressourcen-Verbrauch und z.B. Reaktionszeit müssen erfüllt werden. 19Mittwoch, 26. Januar 2011 19
  • 20. Das Wertesystem Produkteffizienz Preis, Entwicklungszeit, Fehlerraten, Automatisierung sind alles Aspekte von Produkteffizienz Eine gute Qualität nutzt nichts wenn man 2 Jahre über dem Zeitplan liegt. 20Mittwoch, 26. Januar 2011 20
  • 21. Das Wertesystem Reflexion Ständige Weiterentwicklung und Überprüfung der eigenen Arbeit. Dazu gehört auch: ExtremeProgramming Pairprogramming Code Reviews 21Mittwoch, 26. Januar 2011 21
  • 22. Prinzipen und Praktiken Alles schön....aber wie jetzt in der Praxis ? Wie kann ich die Werte umsetzen ? Dafür gibt es beim CCD Prinzipien und Praktiken. 22Mittwoch, 26. Januar 2011 22
  • 23. Das Grad-System Schwarz Als einzelner Entwickler Rot Orange Im Team Gelb Grün Blau Weiß Als UnternehmenDie Grade drücken keinen Wert aus. Wer am blauen Grad arbeitet ist nicht "besser" oder "weiter" alsjemand, der am orangen Grad arbeitet. Die Grade sind nur ein didaktisches Hilfsmittel, um die Gesamtheitdes Wertesystems "einfacher verdaubar" zu machen. Die vielen Werte lassen sich schlicht in kleinen Happenbesser aneignen, als in einem Anlauf. 23Mittwoch, 26. Januar 2011 23
  • 24. Prinzipien Don´t Repeat Yourself (DRY) • klassisches Copy & Paste • Behebung durch... • Refactoring (Zeit nehmen, machen) • Method Extraktion • Konstanten verwenden • Generische Typen • etc. 24Mittwoch, 26. Januar 2011 24
  • 25. Prinzipien Open Closed Principle Das Open Closed Principle ( OCP) besagt, dass eine Klasse offen für Erweiterungen sein muss, jedoch geschlossen gegenüber Modifikationen 25Mittwoch, 26. Januar 2011 25
  • 26. Prinzipien Favour Composition over Inheritance Für die Wiederverwendung von Funktionalität kennt die Objektorientierte Programierung (OOP) zwei sehr bekannte Kandidaten: Die Vererbung (whitebox – reuse) und die Komposition (blackbox – reuse). Verwendet man Funktionalität wieder durch das Ableiten von einer Klasse, so ist die Subklasse abhängig von der Elternklasse. Dies macht ein System in vielen Fällen unnötig komplex, schlechter testbar und erschwert das Austauschen von Funktionalität zur Laufzeit. CCD hat für das korrekte Ableiten das Liskov Substitution Prinzip (LSP) bereit, das es dabei zu befolgen gilt. Bei der Komposition verwendet eine Klasse eine andere. Verwendet man dazu eine klar definierte Schnittstelle, fördert das die Entkopplung. Auch können verschiedene Implementationen einfach ausgetauscht werden. Bevor man sich also der Liskov Substitution stellt, fordert Favour Composition over Inheritance, sich die Frage zu stellen, ob man der Komposition nicht Vorrang geben kann. 26Mittwoch, 26. Januar 2011 26
  • 27. Prinzipien Interface Segregation Principle Das Interface Segregation Principle ( ISP) ist ein weiteres SOLID Prinzip. Segregation bedeutet Abtrennung. Das Prinzip besagt, dass ein Client nicht von Details eines Service abhängig sein soll, die er gar nicht benötigt. Je weniger in dessen Interface enthalten ist, desto geringer ist die Kopplung zwischen den beiden Komponenten. 27Mittwoch, 26. Januar 2011 27
  • 28. Praktiken Versionskontrolle Refaktorisierung Testen Issue Tracking 28Mittwoch, 26. Januar 2011 28
  • 29. CCD http://www.clean-code-developer.de Robert C. Martin 29Mittwoch, 26. Januar 2011 29
  • 30. CCD Fragen ? 30Mittwoch, 26. Januar 2011 30
  • 31. Bild- und Quellennachweis http://www.klemm-bau.de/blog/wp-content/uploads/2009/03/geld.jpg http://tu-dresden.de/die_tu_dresden/fakultaeten/fakultaet_sprach_literatur_und_kulturwissenschaften/iz/ studium/studentenbild http://www.vhs-nord.de/images/5000/cert_AppSp_bL.jpg http://www.hygiene.bbraun.de/images/chirurgHaendedesinfekt.jpg http://www.flickr.com/photos/10087706@N07/2478485742/ http://www.cleokinderladen.de/images/_bilder/5505_waage_mit_5_gewichten.jpg Ralf Westphal & Stefan Lieser - http://www.clean-code-developer.de 31Mittwoch, 26. Januar 2011 31