../../icons/Logo.png


Verfeinerung und parallele Softwareentwicklung

Softwaresysteme sind häufig komplex. Im Laufe einer Entwicklung selbst bedarf es weiterer Verfeinerung der Software in Komponenten.

Bezüglich der Verfeinerung ergeben sich zwei interessante Aspekte:

  • Hierarchie von Softwarekomponenten
  • Parallele Entwicklung von Komponenten

Zerlegung in Komponenten

Üblicherweise wird Software in Komponenten (Module) zerlegt. Fast immer werden diese wieder in Subkomponenten zerlegt usw.

In manchen Prozessen wird dem dadurch Rechnung getragen, dass ein Feindesign vorgesehen wird. Damit es nicht zu Missverständnissen kommt, ist hier ausdrücklich das Design von Subkomponenten gemeint und nicht eine detailliertere Beschreibung vor der Codierung.

Dieser hier angedeutete Prozess der Verfeinerung wird nachfolgend genauer betrachtet.

Prozess der Verfeinerung

Ausgehend von der Idee eines Systems wird es immer feiner spezifiziert. Das System wird immer konkreter beschrieben. Es ergeben sich Subsysteme und Komponenten.

Nachfolgend werden einfachheitshalber System und Subsystem auch als Komponenten bezeichnet.

Verfeinerung.png

Bild 8: Verfeinerung eines Systems

Wie in Bild 8 dargestellt, wird die Verfeinerung in einer Folge von Design-Aktivitäten durchgeführt. Es wird das Was eines höheren Abstraktionsniveaus durch das Wie eines tieferen Abstraktionsniveaus beschrieben. Aus der Spezifikation eines höheren Niveaus werden Spezifikationen von Komponenten eines tieferen Niveaus entwickelt. Es wird außerdem beschrieben, wie die Komponenten eines höheren Niveaus mit den spezifizierten Subkomponenten realisiert werden sollen.

Hier wurde, um das Prinzip zu beschreiben, die Aktivität Design verwendet. Eigentlich handelt es sich um zwei Aktivitäten:

  • Analyse und
  • Design.

In der Analyse wird genauer untersucht, was gefordert wurde, während im eigentlichen Design das Wie im Vordergrund steht. In der Analyse wird eine vage Spezifikation vervollständigt und in dem Sinne konkretisiert, dass die einzelnen Anforderungen überprüft werden können.

Im eigentlichen Design wird die Realisierung einer Spezifikation beschrieben. Es werden möglicherweise Spezifikationen von Subkomponenten erstellt. Diese sind meistens unvollständig und vage, so dass sie einer weiteren Analyse auf der nächsten Ebene bedürfen.

Die hier beschriebene Vorgehensweise ist eindeutig Top-Down.

Hierarchie der Komponenten

Die Verfeinerung von Komponenten ergibt eine natürliche Hierarchie der Komponenten.

Hierarchie.png

Bild 9: Hierarchie der Komponenten eines Systems

Bild 9 verdeutlicht, dass sich Komponenten eines Systems immer weiter auffächern. Bezogen auf die Designaktivitäten bedeutet das, dass auf jeder Ebene der Verfeinerung mehr und mehr Komponenten nebeneinander stehen.

Grundsätzlich können die Komponenten nebeneinander, d.h. parallel entworfen werden. Die Designaktivitäten laufen parallel. Dieses ist ein normales Vorgehen in der Softwareentwicklung.

Parallele Entwicklung von Komponenten

Selbstverständlich werden die Softwarekomponenten nicht nur eine nach der anderen, sondern auch parallel implementiert. Die parallel implementierten Komponenten werden schließlich in einem Integrationsschritt zusammengefasst.

Problematik.png

Bild 10: Parallele Implementation und Integration

Nach der Entwicklung aller Komponenten entsteht dann aus diesen das Gesamtprodukt.

Die Entwicklung (Analyse, Design und Implementation) der Komponenten eines Systems erfolgt somit in hohem Maße parallel.

Fazit

  • Software wird in Komponenten zerlegt, die in natürlicher Weise eine Hierarchie bilden.
  • Sowohl Analyse und Design als auch die Implementation von Komponenten kann im Prinzip parallel verlaufen.