Nicht nachmachen!

6 Todsünden der Softwareentwicklung und wie Sie diese vermeiden

Kypriani Sinaris

©Shutterstock/Alex Malikov

Entwickler scheinen keine Scheu vor religiösen Begriffen zu haben: Wir alle kennen den Technologie-Evangelisten oder den Programmiersprachen-Guru. Da verwundert es nicht, dass, anstatt nur von Fehlern zu reden, erfahrene Entwickler öffentlich ihre begangenen „Sünden der Softwareentwicklung“ bekennen. Wir hören den Beichtgesprächen einmal ein wenig zu…

Gottes Werk und Teufels Beitrag

Programmiersprachen sind flexibel – leider aber so flexibel, dass sie auch unsinnige Nutzungsweisen erlauben. In Java besteht z.B. ein Anti-Pattern darin, die gesamte Anwendung in eine einzige Klasse zu stecken. Wenn ein System zu viel weiß oder zu viel tut, spricht man von einem sogenannten „God object“. Teufels Beitrag lässt aber nicht lange auf sich warten: Auch wenn das Kompilieren einer Applikation trotz tausend verschiedener Funktionen durchführbar sein sollte, so ist die Anwesenheit von  Anti-Patterns gefährlich. Je größer ihre Anzahl, desto fehleranfälliger ist die Software. Wie Yegor Bugayenko anmerkt, droht diese Gefahr der Anti-Patterns vor allem bei objektorientierten Sprachen wie Java, da Entwickler vieles von prozeduralen Sprachen wie C, Fortran und COBOL übernehmen.

Like with cancer, the earlier you diagnose it, greater is the chance to survive.

Zu groß, zu komplex

Schnell kann ein Projekt, das einst überschaubar begann, zu einem unüberwindbaren Berg an offenen Aufgaben heranwachsen. Auf seinem Blog rät Paul Graham daher zu mehr Übersichtlichkeit. Teilen Sie ein großes Software-Projekt in mehrere kleine Projekte auf, sodass das Lesen, Testen und Debuggen der einzelnen Teile schnell und einfach durchzuführen ist. In seiner JAX-Session „Planlos mit Plan“ riet Frank Düsterbeck dazu, ganz im Sinne des Agilen Manifests kleine Sprints mit lauffähigen Ergebnissen durchzuführen, als am Ende vor einer Software zu stehen, die zu groß und komplex ist, um darin Fehler zu erkennen. Zusammenfassend: Nicht nur die Aufteilung des Projekts in kleinere Unterprojekte, sondern auch die Planung und Durchführung des Projekts sollte so übersichtlich wie möglich gestaltet werden.

Da war doch was…?

Bei jeder guten Softwareentwicklung sollten die gemachten Änderungen protokolliert und wiederauffindbar sein. Daher rät der Blogger Yegor Bugayenko, unbedingt ein Ticket-System zu verwenden. Dies mag wie ein unnötiges Selbstgespräch erscheinen, wenn man alleine für ein Projekt verantwortlich ist. Doch unabhängig von der Größe des Teams ist die Protokollierung der gemachten Änderungen wichtig: So formuliert, dass sie auch für Außenstehende nachvollziehbar sind, helfen sie dabei, den Überblick zu behalten. Bugayenko rät außerdem, keinen dieser Einträge zu löschen. Auch wenn manche Entwickler dazu neigen, für eine bessere Übersichtlichkeit Kommentare in Tickets zu löschen, sind diese doch Teil des Entstehungsprozesses und dokumentieren einzelne Schritte der Entwicklung.

Dokumentation ist nicht nur von Seiten der Entwickler, sondern auch von Seiten der User wichtig: Bezugnehmend auf das Agile Manifest räumt Bugayenko zwar ein, dass eine funktionierende Software natürlich besser sei als eine umfangreich dokumentierte. Gleichzeitig schlägt er aber auch eine „externe“ Dokumentation für User vor, welche die Interaktion der User mit der Software dokumentiert. Diese helfe dann auch neuen Entwicklern im Team, die Software besser zu verstehen.

Klasse UND Masse

Haben Sie einen Überblick über die Testabdeckung Ihrer Software? Nein? Todsünde! Auch wenn hohe Testabdeckung nicht gleichzusetzen ist mit guter Qualität – kennt man die Testabdeckung seines Projektes nicht, so ist das gleichzeitig auch ein Indikator für Wartbarkeitsprobleme. Definieren Sie schon vorab, wie groß die Testabdeckung in Ihrer Software sein soll und fügen Sie diesen Schritt als festen Bestandteil der Entwicklung ein.

Never-ending Story

Wann ist Ihre Software fertig? Nach dem nächsten Milestone? Nein. Nach dem nächsten Release? Auch nicht. Nie! So zumindest ist die Antwort von Yegor Bugayenko auf diese Frage. Die Weiterentwicklung der Software muss regelmäßig stattfinden. Aus der Sicht der Wartbarkeit hat das einen besonderen Stellenwert: Eine ständig weiterentwickelte Software dokumentiert gleichzeitig auch die veränderten Ziele der Entwickler. Git Tags und GitHub Release Notes eignen sich dafür, um diese Information bereitszustellen.

Reden, reden, reden

Wahrscheinlich können Sie es nicht mehr hören, scheint doch bei Prozessproblemen gleich jeder zu rufen: „Das müssen wir besser kommunizieren!“ Wenn man jedoch selbst mal zurückschaut auf vergangene Projekte, so war doch genau das oftmals das Problem: An einem bestimmten Punkt hört die Kommunikation auf. Das ist ein Fehler mit weitreichenden Folgen! Daher sollte die enge Zusammenarbeit aller Beteiligten gepflegt werden. Die empfohlene Dokumentation der einzelnen Schritte ist nur ein Baustein erfolgreicher Kommunikation. Um hier aber nochmal die Agilisten zu zitieren: Mithilfe regelmäßiger Scrum Meetings, also regelmäßig gepflegtem Austausch zwischen den Mitarbeitern, sollte der erfolgreichen Umsetzung eines Projektes nichts mehr im Wege stehen.

Fazit

Kein Mensch ist ohne Sünde. Wer die begangenen Fehler allerdings klar erkennt und daraus die richtigen Schlüsse zieht, kommt dem Paradies immerhin einen Schritt näher. Damit Novizen auch von Ihren Erleuchtungen profitieren können, führen Sie doch hier auf JAXenter Ihr ganz persönliches Beichtgespräch: Welche Todsünden der Softwareentwicklung haben Sie in Ihrer Karriere schon begangen?

Aufmacherbild: Dementor von Shutterstock / Urheberrecht: Alex Malikov

Geschrieben von
Kypriani Sinaris
Kypriani Sinaris
Kypriani Sinaris studierte Kognitive Linguistik an der Goethe Universität Frankfurt am Main. Seit 2015 ist sie Redakteurin bei JAXenter und dem Java Magazin.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "6 Todsünden der Softwareentwicklung und wie Sie diese vermeiden"

avatar
400
  Subscribe  
Benachrichtige mich zu:
trackback

[…] Beiträge: Herausforderungen bei der Softwareentwicklung und wie man diese vermeiden kann Probleme die auftreten […]

Sascha Thattil
Gast

Sehr gut geschrieben.

Ich kann das nur unterschreiben. Anstatt gross und komplex zu starten, sollte man mit kleinen Teilen anfangen. Auch um einfach eine realistische Zeiteinschaetzung geben zu können.

Das mit der „Never Ending Story“ ist auch interessant. Man sollte hier definitiv eine gute Dokumenation haben, auf die auch sptere Entwickler zugreifen können.

Sascha Thattil