Prinzipien der Software-Erstellung
Abstraktion
Im Speziellen das Allgemeine sehen, um das Verallgemeinerte auf viele Spezialfälle anwenden zu können.
Beispiele: Prozeduren statt Code-Wiederholung, Design-Muster (z.B. Automaten), ...
Hierarchisierung
Gliederung von Objekten (oder allgemeiner Moduln) in einer Rangordnung.
So wird (bei uns) das Fachkonzept häufig durch ein "Steuerobjekt" vertreten, das wiederum Hilfsobjekte ("Wasserträger", für
speziell umrissene Aufgaben zuständig) benutzt, die nach außen unsichtbar sind.
Modularisierung
Allgemeine Problemlösetaktik: Ein komplexes Ganzes wird in überschaubare Teile zerlegt.
Diese Teile sollen dabei autonom sein und mit einer präzise beschriebenen Schnittstelle (Summe der öffentlichen Methoden)
versehen werden. So können einzelne Methoden ausgetauscht werden, ohne im übrigen System Veränderungen vorzunehmen. Für die
Zerlegung in Module bestehen Schemata wie EVA (Eingabe-Verarbeitung-Ausgabe) oder MVC(Model-View-Controller) im Großen bzw.
Objekte im Kleinen.
Geheimnisprinzip
Um Seiteneffekte unmöglich zu machen und um die Austauschbarkeit sicherzustellen, halten Module ihre innere Struktur so
weit es geht geheim. Eine Kommunikation ist nur über die Schnittstelle möglich. Die innere Struktur eines Moduls oder
Objekts kann ohne Probleme verändert/verbessert werden
Lokalisierung
Zusammengehörendes soll auch zusammen modelliert, dokumentiert bzw. kodiert werden.
Es wird empfohlen, nicht mehr als eine Seite Quelltext für ein Modul zu verwenden.
Beispiel für extreme Lokalität: Eine Laufvariable soll direkt vor der for-Schleife, wo sie benötigt wird, deklariert
werden (in Pascal i.A. unmöglich). Ein Datentyp soll direkt dort deklariert werden, wo er gebraucht wird.
Der gelegentlich zu lesende Tipp, Klassen jeweils in eigenen Units zu speichern, verstößt gegen dieses Prinzip:
Zusammengehörendes muss mühsam zusammengesucht werden. Andererseits wird in Delphi nur so das Geheimnisprinzip durchgehalten.
Delphi-Units bilden einen Sichtbarkeitsbereich unabhängig von der Direktive
private.
Einfachheit
Bei der Problemlösung ist strikt eine einfache Lösung anzustreben.
Die Techniker sagen: "Keep it simple, stupid!" (KISS)
Standardisierung
In allen Schritten der Software-Entwicklung ist eine weitgehende Standardisierung einzuhalten. Dies beginnt mit einer
schematischen Dokumentation (bei uns: Dokumentationsvorlage), der Verwendung von Standards zur grafischen Modellbeschreibung
(UML), der Verwendung bewährter Design- (Design-Pattern) und Implementierungs-Muster bis hin zu einer Kodierung, die strikt
vereinbarte Regel (Coding Guide, bei uns: "so wie im Handbuch bzw. in der Delphi-Hilfe") einhält. Nur so ist im Team
(bzw. für den Autor selbst nach einiger Zeit) eine reibungsfreie Verständigung möglich.
Kontinuität
Was sich bewährt hat, wird solange beibehalten, bis etwas "Besseres an die Stelle des Guten" tritt.
Prinzipien sind Grundsätze, keine Dogmen. Oft widersprechen sich Einzelprinzipien, dann muss man abwägen.
Links:
Allgemeine Prinzipien
bei der Entwicklung von Softwaresystemen,
Hartmut Härtl, OSZ Handel I,Berlin