GELEBTE ENTWICKLUNGSRICHTLINIEN VOM VERSTAUBTEM PAPIERSTAPEL ZUM SPICKZETTEL FÜR ENTWICKLER BORIS WEHRLE
ENTWICKLUNGSRICHTLINIEN Ein Programmierstil (engl. code conventions, coding conventions, coding standards) ist in der Programmierung das Erstellen von Quellcode nach bestimmten vorgegebenen Regeln. Er gilt als Teilaspekt von Softwarequalität, der insbesondere die Verständlichkeit und Wartbarkeit von Software, dies sind Kriterien für Softwarequalität gem. ISO/IEC 9126, unterstützen soll. https://de.wikipedia.org/wiki/programmierstil 3
ENTWICKLUNGSRICHTLINIEN Softwarequalitätsmerkmale (nach ISO 9126) Funktionalität Zuverlässigkeit Benutzbarkeit Effizient Wartbarkeit Portabilität Genauigkeit Robustheit Zeitverhalten Verständlichkeit Analysierbarkeit Anpassbarkeit Angemessenheit Fehlertoleranz Erlernbarkeit Verbrauchsverhalten Änderbarkeit Installierbarkeit Interoperabilität Wiederherstellbarkeit Bedienbarkeit Stabilität Koexistenz Sicherheit Attraktivität Testbarkeit Austauschbarkeit 4
ENTWICKLUNGSRICHTLINIEN 5
ENTWICKLUNGSRICHTLINIEN ZWECK Erleichterung der Zusammenarbeit Schnelle Einbindung neuer Mitarbeiter Schaffung von Verbindlichkeit Sicherstellung Qualität Wartbarkeit Analysierbarkeit Verständlichkeit 6
ENTWICKLUNGSRICHTLINIEN 7
PRINZIPIEN Standards haben stets Vorrang Reduzierung auf das Wesentliche Lege nichts fest was nicht überprüft werden kann Toolunterstützung wo immer möglich Gemeinsame Festlegung im Team Loslegen und ändern bei Bedarf 8
PRINZIPIEN FORTLAUFENDE ÜBERPRÜFUNG DER EINHALTUNG Was nicht überprüft wird, wird auch nicht eingehalten. Verantwortung jedes einzelnen Verantwortung im Team Ich prüfe selbst Automatisierte Überprüfung Gegenseitige Überprüfung 9
ICH PRÜFE SELBST AUTOMATISCHE ÜBERPRÜFUNG DURCH DIE ENTWICKLUNGSUMGEBUNG 10
ICH PRÜFE SELBST AUTOMATISCHE ÜBERPRÜFUNG DURCH DIE ENTWICKLUNGSUMGEBUNG Fortlaufend im Hintergrund Unterstützung bei der Korrektur Ich erkenne Fehler bevor es jemand anderes tut! 11
KOMPILER SYNTAX, DOKUMENTATION Richtlinie: Keine Warnings 12
CODE ANALYSE NAMENSKONVENTIONEN, SICHERHEIT, Richtlinie: Keine Warnings 13
STYLECOP NAMENSKONVENTIONEN, FORMATIERUNG Richtlinie: Keine Warnings 14
LAYER DIAGRAM Richtlinie: Jede Projektmappe enthält ein Layerdiagramm Keine Fehler bei der Validerierung 15
RESHARPER Richtlinie: Eine Klasse wir nur grün verlassen 16
DEMO REGELSATZ Festlegung des Regelsatzes Statische Code Analyse Style Cop ReSharper Apply Company Policy https://www.nuget.org/packages/ait.companypolicy https://github.com/aitgmbh/applycompanypolicy.template http://aitgmbh.github.io/applycompanypolicy.template/ 17
ICH PRÜFE MICH SELBST ÜBERPRÜFUNG ANHAND VON KENNZAHLEN 18
ICH PRÜFE MICH SELBST ÜBERPRÜFUNG ANHAND VON KENNZAHLEN Klare Entscheidungskriterien Zeitnahe Korrektur solange ich im Kontext bin Ich erkenne Fehler bevor es jemand anderes tut! 19
CODE METRIKEN Richtlinie: Wartbarkeitsindex > 60
CODE COVERAGE Richtlinie: Code Coverage > 40 %
DUPLIKATSANALYSE Richtlinie: keine Duplikate (Exact, Strong)
KLASSENDIAGRAMM Richtlinie: jedes Projekt enthält ein Klassendiagramm
DEMO KENNZAHLEN Code Metriken Code Coverage Duplikatsanalyse 24
TOOLS, TOOLS, TOOLS WENN DAS NICHT REICHT JSLint (JavaScript) SonarLint (Roslyn) PSScriptAnalyser (PowerShell) Liste von Werkzeugen zur Statischen Code Analyse 25
AUTOMATISIERTE ÜBERPRÜFUNG TOOLGESTÜTZTE ÜBERPRÜFUNG IM BUILDPROZESS 26
CHECK-IN POLICIES Richtlinie: Kein Check-In ohne Work Item Kein Check-In ohne Kommentar
AUTOMATISIERTE ÜBERPRÜFUNG TOOLGESTÜTZTE ÜBERPRÜFUNG IM BUILDPROZESS Kompiler Statische Code Analyse Style Cop Layervalidierung Unit- und Integrationstests Code Coverage Code Metrics 28
BUILDPROZESS REPORTING https://msdn.microsoft.com/library/dd380683.aspx 29
SONARQUBE Plugins 30
AUTOMATISIERTE ÜBERPRÜFUNG TOOLGESTÜTZTE ÜBERPRÜFUNG IM BUILDPROZESS Reports geben eine gute Übersicht, aber Main Branch als Quality Gate Nur geprüfter Code kommt in das Repository 31
BUILDPROZESS
BUILDPROZESS
GEGENSEITIGE ÜBERPRÜFUNG REGELMÄßIGE GEGENSEITIGE REVIEWS 34
GEGENSEITIGE ÜBERPRÜFUNG Wechselnde Rollen Fokus Architektur Testing Implementierung UI-Design Termin und Timebox
GEGENSEITIGE ÜBERPRÜFUNG TEAM-QUALITÄT Weitergabe von Wissen und Erfahrung Neue Impulse und Denkanstöße Eliminierung von Engpässen Risiko-Minimierung durch Fehlentscheidungen einzelner Personen
ERARBEITUNG DER RICHTLINIEN 38
ERARBEITUNG DER RICHTLINIEN VORGABE VON AUßEN Automatisierung der Richtlinien soweit möglich Erstellung eines Company Policy Packages Integration In den Buildprozess 39
ERARBEITUNG DER RICHTLINIEN FESTLEGUNG IM TEAM Brainstorming Einbeziehung aller Teammitglieder Loslegen und bei Bedarf ändern Konsistente Einstellung der Werkzeuge schwierig 40
ENTWICKLUNGSRICHTLINIEN BEISPIEL AIT 41
AIT DEVELOPMENT GUIDELINES 42
BEST PRACTICES Standards haben stets Vorrang Reduzierung auf das Wesentliche Lege nichts fest was nicht überprüft werden kann Toolunterstützung wo immer möglich Gemeinsame Festlegung im Team Loslegen und ändern bei Bedarf Früh starten, sonst wird s aufwändig! 43
WEITERFÜHRENDE INFORMATIONEN Spickzettel für Entwickler Entwicklungsrichtlinien auf einem Blatt Effizient im Team mit Architektur- und Code-Reviews Kurz, knackig und konstruktiv AIT Apply Company Policy https://www.nuget.org/packages/ait.companypolicy https://github.com/aitgmbh/applycompanypolicy.template 44
WEITERE VORTRÄGE VON AIT 01.10.2015 15:45, Gutenbergsaal 1 TFS 2015: Build und Release der neuen Generation Nico Orschel, Marc Müller 45
BESUCHEN SIE UNSEREN STAND Holen Sie den kostenlosen AIT Debugger Gewinnen Sie ein Microsoft Band 46
WIR UNTERSTÜTZEN SIE KONTAKT info@aitgmbh.de +49 711 49066430 AIT GmbH & Co. KG Leitzstr. 45, 70469 Stuttgart www.aitgmbh.de BERATUNG Agile ALM und TFS.NET und Architektur ENTWICKLUNG Dienstleister für individuelle Lösungen mit.net und Azure AIT GmbH & Co. KG Alle genannten und gezeigten Marken oder Warenzeichen sind eingetragene Marken oder eingetragene Warenzeichen ihrer jeweiligen Eigentümer und ggf. nicht gesondert gekennzeichnet. Aus dem Fehlen der Kennzeichnung kann nicht geschlossen werden, dass es sich bei einem Begriff oder einem Bild nicht um eine eingetragene Marke oder ein eingetragenes Warenzeichen handelt. 47