6.14 Meta-Diskussion

Auch an diesem Beispiel sieht man deutlich, dass trotz sorgfältiger Planungen immer wieder Teile in der Software vergessen werden. Im Datenmodell wurde berücksichtigt, dass Einheiten Ausrüstungen haben können, aber ich habe übersehen, dass die Funktion fehlt, eine Einheit mit dieser Ausrüstung zu bestücken.

Durch die zyklische Entwicklung kann ich aber ohne das Modell zu verlassen die vorhandenen Diagramme erweitern und die fehlenden Funktionen einbauen. Natürlich heißt das nicht, dass man nachlässig planen sollte, aber gerade im Bereich der Command-Tabelle habe ich so weit abstrahiert, dass man beliebige Befehle darüber abbilden kann. So kann ich nun einfach eine neue Klasse von der abstrakten Klasse AbstractCommand ableiten und habe mit sehr kleinen Schnittstellenänderungen (in diesem Fall kommt ein Attribut für die Equipment-ID hinzu) die neue Funktion mit eingebunden.

Solche Dinge fallen oft erst auf, wenn man mit einem Prototypen arbeitet. Daher habe ich auch ein Modell gewählt, bei dem ich schnell Prototypen produziere. Bei vielfach komplexeren Softwaresystemen sind es oft Funktionen, die der Kunde erst wünscht, wenn er den ersten Prototypen ausprobiert. Daher sollte man in der Praxis immer ein Modell wählen, bei dem der Kunde schon während der Entwicklung Prototypen ausprobieren kann, sonst könnte es passieren, dass man dem Kunden eine Software liefert, die er gar nicht oder nur eingeschränkt benutzen kann.