Industrielle SW-Entwicklung
graphicWas bedeutet "Industrielle SW- Entwicklung"?
Bevor wir damit beginnen, eine neue Art der Software-Entwicklung zu propagieren, sollten wir erst den Begriff selbst klären. Dazu ein paar Parallelen aus der Vergangenheit:
Das 19. Jahrhundert konfrontierte die Menschheit mit verstärkter wissenschaftlicher Entwicklung und der daraus mündenden rasanten technischen Weiterentwicklung und der industriellen Revolution. Gemeinhin wird die industrielle Revolution mit dem vermehrten Einsatz von Maschinen und strukturierterer Konstruktion in Verbindung gebracht.
Diesen Aspekt versuchen auch die Paradigmen der Software- Entwicklung nachzuahmen, indem Sie eine mechanisierte Software- Entwicklung anstreben. Konzepte wie Prototyping, Objektorientierung (und früher die strukturierte Programmierung) oder auch die Methoden zur Systemplanung entsprechen der strukturierteren Konstruktion, die vielfältigen Tools übernehmen die Rolle der Maschinen.
Vergessen wird dabei ein wichtiger Aspekt. Konnte der frühere Handwerker seine Produkte noch individuell entsprechend seinen Fähigkeiten und Neigungen ohne großen Plan fertigen, so mußte ein Produktionsbetrieb ausdrücklich die fertigungstechnischen Möglichkeiten und die Bearbeitungsreihenfolgen berücksichtigen - er benötigte einen vollständigen Produkt- und Produktionsplan, bevor die Fertigung beginnen konnte!
Die industrielle Revolution führte durch den vermehrte Maschineneinsatz also implizit zu einer viel stärkeren Betrachtung der Produkteigenschaften. Die Konstruktion konnte nicht mehr einfach irgendwas "hinpinseln", sie mußte berücksichtigen, ob und wie das Produkt gefertigt werden kann - manches Merkmal ist vielleicht gewünscht, aber technisch nicht realisierbar. Bei anderen Merkmalen muß darauf geachtet werden, daß ihre Implementierung nur an einer bestimmten Maschine und daher nur mit begrenzten Variationen möglich ist. Wiederholter Einsatz bewährter konstruktiver Techniken wurde notwendig. Die Eigenschaften - sprich der Funktionsumfang - der Produkte mußte viel besser definiert werden, allein weil die Produkte komplexer wurden und die Kunden höhere Anforderungen hatten (Eine Spezialmaschine mußte auch vor hundert Jahren bereits komplexen Anforderungen genügen).
graphic Kurzum: die industrielle Revolution revolutionierte den Fertigungsprozeß, damit aber auch den Konstruktionsprozeß. Letzteres trat nicht so ins Bewußtsein, aber neuere Ansätze der Industrie bezüglich Wiederverwendung, Produktplanung (QfD-Techniken) und verschiedene Qualitätsmanagement-Methoden greifen genau diese Aspekte auf und versuchen sie als ausdrückliche Denkweisen in den gesamten Konstruktionsprozeß zu integrieren.
Was bedeutet dies jetzt genau für die Software- Entwicklung?
Wenn wir unsere Produkte wirklich industriell produzieren wollen, dann genügt es nicht, den Entwurf und die Erstellung "maschinell" und technisch zu unterstüzen. Sondern wir müssen bereits die Art und Weise verändern, wie der Entwurf zustande kommt! Wir müssen sicherstellen, daß ein umfassender Entwicklungsplan entsteht:
graphic Wir müssen im Konstruktionsprozeß viel stärker als bisher Produktanforderungen definieren und transparent halten können,
graphic wir müssen bereits vorab die möglichen und beabsichtigten Realisierungsverfahren berücksichtigen und definieren.
graphic Und wir müssen in der Realisierung viel stärker nach konstruktiven Vorgaben vorgehen, weniger nach individuellen Präferenzen und handwerklichen Fähigkeiten.
Nicht der Programmier überlegt sich, welche Funktionen er in ein Programm packt und wie er es repräsentiert, sondern beides ist ihm bereits vorgegeben. Seine Aufgabe kann nur noch die Umsetzung in Quellcode unter Berücksichtigung der definierten technischen Verfahren sein. Entwicklung und Programmierung müssen also viel stärker getrennt werden.
Oder glauben Sie, der Arbeiter an der Maschine zeichnet seine eigenen Konstruktionspläne?
Dies sind keine neuen Erkenntnisse. Sie stehen in ähnlicher Form in jedem Buch über Software-Entwicklung. Sie kennen sie mit Sicherheit. Aber jede neue Programmierergeneration erfindet die immer gleichen Räder neu. Techniken, die in einem Projekt durchgängig verwendet wurden, werden von einer anderen Projektgruppe neu und anders implementiert - oder vergessen. Auch das kennen Sie bereits mit Sicherheit.
graphic
Jetzt können wir endlich den Begriff "Industrielle Software- Entwicklung" definieren:
Eine industriell erzeugte Software unterscheidet sich von handwerklich gefertigter Software dadurch, daß in der Konstruktion bereits alle wesentlichen Aspekte berücksichtigt sind, und der Produktionsprozeß darauf aufbauend anhand fixer Regeln ohne eigene Design- und Entwurfstätigkeiten erfolgt.
graphic Sie unterscheidet sich damit also dadurch, daß all die seit Jahren propagierten Zielsetzungen von Software - Vollständigkeit, Bedienbarkeit, Erweiterbarkeit, Wiederverwendung, Wartbarkeit - auch tatsächlich berücksichtigt werden.
graphic Sie ist industriell, weil zu ihrer Entwicklung ein umfassenderes und zukunftsgerichtetes Denkmodell verwendet wurde, daß die Einhaltung dieser Zielsetzungen ermöglicht.
graphic Sie ist herkömmlicher handwerklicher Software im Durchschnitt deutlich überlegen, weil diese kurzfristige gegenwartsbezogene Probleme in den Vordergrund stellt und damit den eigentlichen Zielsetzungen kontraproduktiv entgegenwirkt.
graphic
Die nachstehenden Artikel beantworten die Frage, welche Aspekte für eine systematische und steuerbare Systementwicklung im Vordergrund stehen müssen. Wir werden zeigen, welchen Einfluß die Qualität auf die Zielerreichung hat und daß der zukunftsorientierte Weg zu guter und zügig entwickelter Software wirklich mit guten Vorsätzen gepflastert und konsequent durchgezogen werden muß. Weiterhin wird die immense Bedeutung des Projektcontrolling klar.
Ausgestattet mit diesem Wissen können wir dann im nächsten Kapitel die Grundsätze und Ziele des 3RPC-Ansatzes betrachten.
Folgende Unterpunkte sind in Planung:
  • Denk mal (nach)!
  • Verfolgen wir neue Ziele!
  • Wir BRAUCHEN Qualität
  • Konsequenzen
  • Benötigen wir 100%- Lösungen?