Problematik der Softwareentwicklung
An dieser Stelle sein nochmals darauf hingewiesen, dass es eine Illusion ist, Softwareentwicklung ausschließlich mithilfe guter Prozesse oder Abläufe in den Griff zu bekommen. Andererseits können komplexe Softwaresysteme nicht ohne definierte Prozesse bewältigt werden. Wir diskutieren hier die Problematik der Softwareentwicklung unter dem Aspekt der verwendeten Prozesse.
Mithilfe der im Abschnitt Softwareentwicklungsprozesse vorgestellten Strategien, Modellen und Vorgehensweisen der Softwareentwicklung gelingt es, Softwareentwicklungsprozesse zu beschreiben und durchzuführen. Es lassen sich allerdings zwei Problemkreise identifizieren, die durch diese Prozesse nur unzureichend beschrieben werden:
- Tiefe Hierarchie der Softwarekomponenten
- Parallele Entwicklung von Komponenten
Zerlegung in Komponenten
Wie bereits in Verfeinerung und parallele Softwareentwicklung beschreiben, ist es gängige und gute Praxis Software in Komponenten (Module) zu zerlegen und damit eine Hierarchie von Komponenten aufzubauen.
Falls in den üblichen Prozessen überhaupt explizit ein Design der Subkomponenten enthalten ist, wird deren Hierarchie in der Prozessstruktur meisten vernachlässigt. Manchmal ist ein Feindesign vorgesehen. Für tiefe Hierarchien müsste es dann noch ein Fein-Feindesign, Fein-Fein-Feindesign usw. geben. Mit anderen Worten, die gängigen Modelle der Softwareentwicklung sind für Hierarchien von Komponenten kaum geeignet.
Es bleibt festzustellen, dass zwar Softwarekomponenten entwickelt werden. Wie sie entwickelt werden, wird lediglich angedeutet.
Parallele Entwicklung von Komponenten
Bild 10: Parallele Implementation und Integration
Natürlich ist es sinnvoll und notwendig, Softwarekomponenten parallel zu entwickeln. Wie diese parallele Entwicklung zu erfolgen hat, wird in den gängigen Prozessmodellen nicht hinreichend beschrieben. Insbesondere wird die Synchronisation der parallelen Aktivitäten vernachlässigt.
Die Integration der Komponenten offenbart die Probleme des Verfahrens. Es kommt zu schwierigen Problemen, die nur durch den Einsatz des besten Personals oft unter hohem Zeitaufwand gelöst werden können.
Fazit
Weder die beiden Varianten moderner Softwareentwicklung,
- Plan-getriebene klassische Softwareentwicklung und
- Agile Softwareentwicklung
- noch Verbindungen [18] beider können das oben beschriebene Problem lösen.
- Mit Iteration, ob inkrementell oder evolutionär, können komplexe hierarchische Systeme nicht adäquat bearbeitet werden.