../../icons/Logo.png


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

Problematik.png

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.

Referenzen

[18]
Barry Boehm: Get Ready for Agile Methods, with Care, IEEE Computer, January 2002, pp 2-7