Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Jeden Tag wird irgendwo auf der Welt eine neue Anwendung programmiert, ein neues System produktiv gesetzt oder ein Fehler in einer bestehenden Software behoben. Die Entwicklung von Software ist etwas Alltägliches, doch genauso, wie es nicht zweimal die gleiche Anwendung gibt, so unterschiedlich ist auch die Herangehensweise, wie Software entwickelt wird. Eine Grundvoraussetzung an die Softwareentwicklung ist, dass "clean" entwickelt wird. "Clean" heißt zum Beispiel, dass es möglich ist, Fehler nachhaltig, dauerhaft und dabei schnell zu beheben. In diesem Buch finden sich Konzepte, Prinzipien und Denkanstöße, wie man "saubere" Software entwickelt.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 63
Veröffentlichungsjahr: 2018
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Für meine wunderbare Familie(Nadine, Lena und Nina)
Prolog
KISS – Keep it simple, stupid!
Struktur
Motivation
Bad Design
Fehlertoleranz
Broken-Window Effect
Principle of least Astonishment
Don’t be afraid to break it!
Boy scout rule
You ain’t gonna need it!
Clean Code
Gib den Dingen einen Namen
Ebenen der Abstraktion
Too much information
Don’t repeat yourself
Kapselung
SOLID
Single responsibility principle
Open-Close principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
Law of Demeter
Convention over Configuration
Clutter
Root Cause Analysis
Optimierungen
The 9 golden debugging rules
Rule 0: Always fix the first error first
Rule 1: Understand the system
Rule 2: Make it fail
Rule 3: Quit thinking and look
Rule 4: Divide and conquer
Rule 5: Change one thing at a time
Rule 6: Keep an audit trail
Rule 7: Check the plug
Rule 8: Get a fresh view
Rule 9: If you didn’t fix it, it ain’t fixed!
Berechtigungen
Kaizen – Veränderung zum Besseren
Nebenläufigkeit
Macht’s gut, und danke für den Fisch
Über den Autor
Jeden Tag wird irgendwo auf der Welt eine neue Anwendung programmiert, ein neues System produktiv gesetzt oder ein Fehler in einer bestehenden Software behoben. Die Entwicklung von Software ist etwas Alltägliches, doch genauso wie es nicht zweimal die gleiche Anwendung gibt, so unterschiedlich ist auch die Herangehensweise wie Software entwickelt wird. Dabei ist die Erwartung an eine fertig gestellte Software immer die gleiche: Sie soll möglichst alle an sie gestellten Anforderungen erfüllen, sich einfach bedienen lassen und dabei fehlerfrei funktionieren.
Doch um dieses Ziel zu erreichen, ist es eine Grundvoraussetzung, dass die Software "clean" entwickelt wurde. Clean heißt zum Beispiel, dass es eine kluge Architektur gibt, die es ermöglicht Fehler nachhaltig, dauerhaft und dabei schnell zu beheben. In den nachfolgenden 42 Abschnitten finden sich Konzepte, Prinzipien und Anleitungen wie solide Software entwickelt werden sollte. Für etwas Auflockerung sorgt dabei eine nicht immer ernst gemeinte Zeichnung, die die Materie auf etwas andere Weise veranschaulicht.
Das wohl bekannteste und nach wie vor wichtigste Prinzip in der Softwareentwicklung: KISS. Das Akronym wird gerne übersetzt mit "Keep it simple and stupid", "Keep it smart and simple" oder "Keep it sweet and simple". Alle Übersetzungen haben die Gemeinsamkeit, dass sie das Wort "simple" beinhalten.
Doch obwohl die meisten Entwickler dieses Prinzip bereits kennen, ist es gleichzeitig das Prinzip, das am meisten verletzt wird. Viele Systeme sind nicht smart und simple, sondern eher komplex und kompliziert. Dies liegt wohl daran, dass dieses Prinzip gerne vergessen wird. Deswegen sollte man sich mit der praktischen Umsetzung des KISS-Prinzips bei der Softwareentwicklung näher befassen.
Komplexe Probleme löst man am besten, indem man sie in kleine Einzelprobleme zerlegt, für die es alle einfache Lösungen gibt. Genauso entwickelt man Software, schreibt man Code, entwirft Datenstrukturen, gestaltet Oberflächen, entwirft Anwendungen...
Indem man jedes Teil des Gesamten in seine jeweiligen Einzelteile zergliedert, für das es jeweils eine einfache Umsetzung gibt. Am Ende müssen diese Einzelteile wieder zusammengefügt werden, nicht alles auf einmal, sondern Stück für Stück und das wiederum möglichst einfach. Das Resultat mag am Ende ein sehr komplexes Gesamtbild geben - jedes Teil für sich betrachtet ist aber "simple" genug, um leicht verstanden zu werden. So ist es möglich, dass jeder - ein gewisses Fachwissen vorausgesetzt - es verstehen kann.
Struktur... wird gerne vergessen. Im Zeitalter von agilen Entwicklungsmethodiken und SCRUM wird gerne bei der Softwareentwicklung vergessen, dass es immer eine gewisse Ordnung geben muss: eine Struktur. Das bedeutet, dass es für alles eine Art Rahmen geben sollte. Erst die Struktur ermöglicht es, das zwangsläufig auftretende Chaos in der Softwareentwicklung beherrschbar zu machen. Natürlich gibt es auch hier Ausnahmen, aber auch diese Ausnahmen sollten strukturiert vorliegen.
So sollte man sich am Anfang eines Softwareprojekts über bestimmte Abläufe Gedanken machen. In welchen Rahmen finden Meetings statt? Wie sind die Hierarchien und Entscheidungswege? Wer hat welche Berechtigungen? Wann sollte man kommen, wann darf man von Zuhause arbeiten? Wer übernimmt welche Aufgaben?
Struktur heißt nicht, dass alles geregelt sein muss. Es bedeutet nur, dass bestimmte Entscheidungen von Einzelnen besser getroffen werden können, da sie die Rahmenbedingungen kennen. Es bedeutet auch, dass man erkennt wo noch Strukturen fehlen - und man so eventuelle Probleme besser identifizieren kann. Wichtig dabei ist: Strukturen sind nicht in Stein gemeißelt - sie sind flexibel. Zwar sollte man davon absehen, sie zu häufig zu ändern, aber sie dürfen auch nicht starr sein und müssen sich den Gegebenheiten und Anforderungen anpassen.
Die Entwicklung von Software ist ein Vorgang, der (noch1) ausschließlich durch Menschen mit bestimmten geistigen Fähigkeiten durchgeführt werden kann. Dieser Vorgang liefert ein Ergebnis - z.B. eine Anwendung - das man als Produkt bezeichnet. Betrachtet man den Zeitraum, um solch ein Produkt zu entwickeln, kann man sagen, dass es so etwas wie Produktivität auch in der Softwareentwicklung gibt.
Aus der Betriebswirtschaftslehre (oder durch allgemeine Erfahrung) weiß man, dass Produktivität steigen oder sinken kann. Dabei können bestimmte Faktoren diese Produktivität beeinflussen. Leider ist es schwer, Produktivität in der Softwareentwicklung zu messen oder zu vergleichen: Es kommt nicht vor, dass eine Anwendung mit exakt den gleichen Funktionen zweimal entwickelt wird, noch gibt es Vergleichswerte was ein Mitarbeiter in einer bestimmten Zeit programmieren kann. Deswegen kann nur darüber gemutmaßt werden, wie man Produktivität in der Softwareentwicklung steigert.
Ein als sicher geltender Faktor für die Beeinflussung der Produktivität in der Softwareentwicklung ist die Motivation des Mitarbeiters. Nur ein hoch motivierter Mitarbeiter wird das Maximum an Produktivität liefern. Analog gilt: Wer nicht motiviert ist, der leistet wenig.
Natürlich hängt die Leistungsfähigkeit eines Mitarbeiters noch von anderen Bedingungen ab, wie z.B. die Qualifikation oder Erfahrung in bestimmten Fachgebieten. Selbst ein noch so motivierter Java-Entwickler wird sich mit seinem ersten Perl-Programm lange abmühen, bevor er etwas Nutzbares produziert. Aber geht man davon aus, dass das Basiswissen vorhanden ist und der Mitarbeiter grundsätzlich fähig ist seine Aufgabe in absehbarer Zeit zu beenden, so ist die Motivation ausschlaggebend für die Dauer. Ein motivierter Mitarbeiter kann und wird wesentlich mehr leisten als ein Mitarbeiter mit weniger Motivation - teilweise um ein Vielfaches.
Stellt sich die Frage wie man jemanden motiviert? Im Folgenden ein paar Beispiele zur Motivationssteigerung. Finanzielle Belohnungen als Motivation funktionieren nur begrenzt und sind deswegen bewusst nicht als Beispiel ausgewählt worden. Es wird zwischen externen (von außen beeinflussbaren) und intrinsischen (durch jeden selbst steuerbaren) Motivationsfaktoren unterschieden.
Von außen steuerbare Motivationsfaktoren wären:
der Führungsstil
die Teamkollegen und das soziale Miteinander
die Ausstattung vom Arbeitsplatz und die räumliche Lage
Was jeden Einzelnen antreibt wäre:
beim Entwickeln autonom und frei entscheiden zu können
sein Fachwissen zu vertiefen
einfach ein tolles Produkt zu entwerfen, das einem guten Zweck dient
Deswegen sollte man bei der Softwareentwicklung niemals die Motivation aller Beteiligten außer Acht lassen, sie kann die Dauer der Entwicklung entscheidend beeinflussen.
1 In der Zukunft kann es natürlich sein, dass Software durch Roboter oder intelligente Affen entwickelt wird.
Betrachtet man eine Anwendung oder ein Modul einer Anwendung genauer, ist man schnell verleitet der Software ein schlechtes Design zu attestieren. Aber wann handelt es sich wirklich um ein schlechtes Design?
Ein schlechtes Design ist dann gegeben, wenn ein oder mehrere der folgenden Punkte erfüllt sind: