Clean Code Developer

2.071 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.071
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
15
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Clean Code Developer

  1. 1. Clean Code Developer Dipl.-Inform. Marco SeraphinMittwoch, 26. Januar 2011 1
  2. 2. Professionalität Was ist ein professioneller Software-Entwickler ?Mittwoch, 26. Januar 2011 2
  3. 3. ProfessionalitätMittwoch, 26. Januar 2011 3
  4. 4. ProfessionalitätMittwoch, 26. Januar 2011 4
  5. 5. ProfessionalitätMittwoch, 26. Januar 2011 5
  6. 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. 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. 8. Professionalität Ethik hat etwas mit Werten zu tunMittwoch, 26. Januar 2011 8
  9. 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. 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. 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. 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. 13. Anforderungen Wer gibt denn überhaupt Anforderungen vor ?Mittwoch, 26. Januar 2011 13
  14. 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. 15. Qualität Ein Clean Code Developer ist ein GegengewichtMittwoch, 26. Januar 2011 15
  16. 16. Qualität Ein Clean Code Developer definiert ein Werte-System für mehr innere QualitätMittwoch, 26. Januar 2011 16
  17. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 28. Praktiken Versionskontrolle Refaktorisierung Testen Issue Tracking 28Mittwoch, 26. Januar 2011 28
  29. 29. CCD http://www.clean-code-developer.de Robert C. Martin 29Mittwoch, 26. Januar 2011 29
  30. 30. CCD Fragen ? 30Mittwoch, 26. Januar 2011 30
  31. 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

×