• embedded Clean code

Handwerkliche Kunst in der industriellen Softwareentwicklung



ese

Benutze Sonnencreme,
da deren Wirkung
wissenschaftlich bewiesen ist.

- Thomas Winz -

Vom Entwickler für Entwickler

Der Entwickler trägt die alleinige Verantwortung für die Softwarequalität und Wartbarkeit.

Unsere Werte

Fundament der Entwicklung


Embedded clean code (Kurz eCc) soll ein Fundament für ordentliche und vernünftige industrielle Softwareentwicklung werden. Das Regelwerk besteht aus vier Themengebieten. Viele der aufgeführten Praktiken sind landläufig als „best pratice“ anerkannt.

Eine Handwerkliche Kunst


Embedded clean code soll das Rad nicht neu erfinden. Es erneuert allerdings den Fokus der Softwareentwicklung auf die langweilige, vorhersehbare und alltägliche Arbeit. Ohne handwerkliche Grundlagen sind aggressive Releasezyklen von innovativer, sicherheitskritischer Software nicht steuerbar.

Verantwortung wahren


eCc ist unser Versuch einer nachhaltigen Softwareentwicklung. Das bedeutet für uns, den Softwareentwickler ins Zentrum der Softwareentwicklung zu stellen. Unsere Vorstellung trägt die Verantwortung für den Zustand der Software der Softwareentwickler.

Überflüssige Codierung Vermeiden

Mit diesen drei Prinzipen wird der überflüssigen Codierung ein Riegel vorgeschoben


Prinzip der Redundanzvermeidung
(siehe orangener Kasten)

Jede Duplizierung von Informationen bedeutet, dass Softwarekonstrukte und Instruktionsketten in verschiedenen Teilen der Software doppelt geführt werden. Dies ist einer der häufigsten Gründe, weswegen im Laufe eines Projektes Funktionen nicht mehr an ihrem Namen zu erkennen sind. Außerdem ist die Synchronisierung zwischen nicht sauber dokumentierter Redundanz ein erheblicher Aufwand.

Prinzip der geringsten Überraschung
(siehe grüner Kasten)

Der Name einer Schnittstelle weckt gewisse Erwartungen an deren Nutzung. Dies gilt natürlich auch für Funktionen, Datensätze und alles, was in der Software durch einen Namen beschrieben wird. Diese Erwartung nicht zu erfüllen, führt zu hohen Aufwänden im Verstehen. Im schlimmsten Fall führt die Unkenntnis über das Verhalten zum Fehlverhalten der Software.

Prinzip der Datenkapslung
(siehe blauer Kasten)

Es muss eine Trennung zwischen Zugriff und Speicherung von Datensätzen geben. Ohne die Datenkapslung erodiert der Sinn vom Dateninhalt. Der Sinn der Daten wird dann über redundante Informationen im System verteilt gespeichert. Diese Redundanz führt im Lebenszyklus einer Software bei Änderung zu nicht vorhersehbarem Verhalten.



Die graphische Interpretation der drei Prinzipien gegen symptomatische Codierung

Gutes Design ist immer angemessen

Mit den drei Prinzipien des angemessenen Designs werden kontinuierlich Änderungen an der Software handhabbar


Prinzip der eindeutigen Verantwortung
(siehe orangener Kasten)

Grundsätzlich hat jede Funktion nur eine Verantwortung. Die von der Funktion umgesetzte Verantwortung ist zwangsläufig einmalig im Software System vorhanden. Eine Funktion kann somit auf eine Anforderung zurückgeführt werden. Änderungen an den Anforderungen können durch diese Trennung leichter in die Software eingeführt werden.

Prinzip der eindeutigen Abstraktionsstufe
(siehe grüner Kasten)

Jedes Softwaresystem lässt sich in verschiedene Abstraktionsschichten strukturieren. Die Instruktionen einer Funktion sollten immer zu einer Schicht gehören.

Prinzip der eindeutigen Aufgabenteilung
(siehe blauer Kasten)

Entsteht die Gliederung der Abstraktionsstufen in der Software „natürlich“, ist die horizontale Gliederung der Software in Aufgaben deutlich abstrakter. Diese Aufteilung in Subsysteme ist dann wichtig, wenn im Laufe einer Software sich die Aufgaben (z.B. Technologien) ändern.



Die graphische Interpretation der drei Prinzipien des angemessenen Designs

Es ist immer einfacher Code zu schreiben als zu verstehen

Diese drei Prinzipien helfen, dabei den Fokus nicht zu verlieren.


Prinzip der Entwurfsvereinbarung
(siehe orangener Kasten)

Die Entwurfsvereinbarung zwingt der Software genau spezifizierte Komponentenstrukturen auf. Der Grund liegt in der weitreichenden Formulierung der einzelnen Modulschnittstellen zueinander. Diese Vor- und Nachbedingungen können dann auf abstraktere Anforderungen zurückgeführt werden.

Prinzip der Notwendigkeit
(siehe grüner Kasten)

Erwünschtes Verhalten sind Codestrukturen, die von mindestens einer Anforderung (dazu gehört auch der Testfall) abgedeckt werden. Unerwünschtes Verhalten sind Ausführungspfade der Software, die nicht getestet wurden und nicht gefordert waren. Der Entwickler sollte sich auf die Umsetzung von erwünschter Funktionalität konzentrieren.

Prinzip der Code-Reinigung
(siehe blauer Kasten)

Ist der Entschluss gefallen eine unerwünschte Funktionalität zu entfernen, erfolgt eine Auswirkungsanalyse. Ziel ist die Aufdeckung des kompletten unnötigen Ausführungspfades. Ansonsten entstehen in der Software tote Ausführungspfade. Durch tote Ausführungspfade wird das Systemverständnis unnötig komplizierter.



Die graphische Interpretation der drei Prinzipen der Fokus Softwareentwicklung

Die Aktivitäten

Die eCc Aktivitäten sollten nicht gelesen sondern gelebt werden. Deswegen beschränken wir uns in diesem Beitrag auf eine Auflistung dieser Aktivitäten.


Gib der einfachen Umsetzung den Vorrang

Bevorzuge eine klare und verständliche Lösung um die Anforderung umzusetzen.

Bei Software-Optimierung ist Vorsicht geboten

Optimiere nur wenn der Engpass identifiziert wurde und die Verbesserung gemessen werden kann.

Verlasse eine Funktion verständlicher als vorgefunden

Minimalinvasive Restrukturierungen sollte zeitnah durchgeführt werden.

Entferne niemals Software unvorsichtig

Nur mit einem Code unter Versionsverwaltung ist es möglich, mit Bedacht Funktionen vollständig zu löschen.

Lebe eine freie Review Kultur

Regelmäßige Reviews gewährleisten langfristige Zuverlässigkeit sowie eine ordentliche Software

Lebe konservative Codekonventionen

Unifomität im Code kann nur durch regelmäßige Pflege bewahrt werden.

Periodisches Refactoring mit Hilfe statischer Analysen

Statische Analysen dienen der Legimitation jeder geplanten Software-Verbesserung

embeddedcleancode@softwareinmotion.de
Heinkelstraße 27a, 73614 Schorndorf

Kontakt

Sie interessieren sich für embedded Clean code? Dann melden Sie sich für den Newsletter an.

Der professionelle Entwickler wird zukünftig daran zu erkennen sein, dass dieser eCc-Prinzipien und -Aktivitäten selbstverständlich lebt.


Das Regelwerk eCc ist unter der Creative Commons Lizenz veröffentlicht. Wir suchen Partner um das Regelwerk deutschlandweit bekannt zu machen.

Download des eCc Posters hier: Poster herunterladen