Josef Altmann: Kooperative Softwareentwicklung - Rechnerunterstützte Koordination und Kooperation in Softwareprojekten, Dissertation, Institut für Wirtschaftsinformatik, Johannes Kepler Universität Linz, Mai 1998.


Die Realisierung komplexer Softwaresysteme ist zunehmend durch intensive Teamarbeit gekennzeichnet. Softwareentwicklung ist häufig ein zeitlich und räumlich verteilter, kooperativer Arbeitsprozeß, der innerhalb und zwischen spezialisierten Arbeitsgruppen stattfindet. Das Ziel kooperativer Softwareentwicklung ist die Unterstützung der Kommunikation, Koordination und Kooperation während des Entwicklungsprozesses, um eine kontinuierliche Qualitätsverbesserung von Produkt und Prozeß zu erreichen.

In dieser Arbeit werden in vier aufeinander aufbauenden Teilen folgende Schwerpunkte behandelt: die Gestaltungsgrundsätze für die Entwicklung kooperativer Softwareentwicklungsumgebungen, die Potentiale und Grenzen bestehender Forschungsansätze und Werkzeuge, ein Modell für kooperative Arbeitsprozesse in Softwareprojekten und eine verteilte, objektorientierte Arbeitsumgebung für kooperative Softwareentwicklung.

Der erste Teil der Arbeit umfaßt eine problemorientierte Betrachtung verteilter, kooperativer Softwareentwicklung. Auf Grundlage der darin identifizierten Merkmale werden allgemeine Gestaltungsgrundsätze für die Entwicklung kooperativer Softwareentwicklungsumgebungen definiert. Im Zuge der Formulierung der Gestaltungsgrundsätze wird gezeigt, daß sich ein Softwareentwicklungsprozeß einer präzisen und vollständigen Beschreibung entzieht und daher nur teilweise automatisierbar ist.

Ausgehend von den Gestaltungsgrundsätzen werden im zweiten Teil Forschungsansätze und Werkzeuge im Hinblick auf die Unterstützung verteilter, kooperativer Softwareentwicklung untersucht und bewertet. Die Untersuchung konzentriert sich auf computerunterstützte Gruppenarbeit (computer-supported cooperative work), prozeßgesteuertes Software Engineering (process-centered software engineering), computerunterstütztes Software Engineering (computer-aided software engineering) und kooperative Softwareentwicklung (cooperative software development). Die Untersuchung zeigt, daß die überwiegende Anzahl der verfügbaren Ansätze und Werkzeuge ungeeignet ist, die rechnergestützte Koordination und Kooperation von Softwareentwicklern genügend zu unterstützen.

Auf Basis der definierten Gestaltungsgrundsätze und der Defizite existierender Ansätze und Werkzeuge wird im dritten Teil der Arbeit ein Modell für kooperative Arbeitsprozesse in Softwareprojekten entwickelt. Das vorgestellte Modell setzt bei den gemeinsam genutzten Arbeitsgegenständen an und stellt eine einheitliche Begriffswelt zur Verfügung. Dies steht im Gegensatz zu üblichen Ansätzen, bei denen die Erweiterung von Einbenutzer- zu Teamwerkzeugen in Vordergrund steht, ohne eine konzeptionelle Basis für kooperative Arbeit zu schaffen. Das Modell gliedert sich in ein fachliches Modell, ein Kooperationsmodell und ein softwaretechnisches Modell.

Der vierte Teil beschreibt eine verteilte, objektorientierte Kooperationsumgebung, die kleine, räumlich und zeitlich getrennt agierende Entwicklergruppen im Kontext typischer Entwicklungstätigkeiten unterstützt. Die in der Kooperationsumgebung realisierten Konzepte beruhen auf dem erarbeiteten Modell für kooperative Arbeitsprozesse in Softwareprojekten und ermöglichen die Integration von produkt- mit prozeßorientierten Aspekten eines Entwicklungsprojektes. Den Abschluß der Arbeit bildet eine vergleichende Bewertung mit anderen Ansätzen sowie ein Ausblick auf künftige Entwicklungen und mögliche Forschungsarbeiten.

The development of complex software systems is increasingly characterized by intensive teamwork. Software development often represents a temporally and geographically distributed, cooperative work process that takes place within and among specialized teams. The goal of cooperative software development is to support communication, coordination and cooperation during the development process in order to continuously improve the quality of the product and the process.

This work is divided into four main parts: design principles for the development of cooperative software development environments, potentials and boundaries of existing research approaches and tools, a model for cooperative work processes in software projects, and a distributed, object-oriented environment for cooperative software development.

The first part of the work contains a problem-directed reflection on distributed, cooperative software development. Based on the identified characteristics, we define general design principles for the development of cooperative software development environments. In the course of the formulation of the design principles, we show that a software development process emerges from a precise and complete description and so is only partly automatable therefore.

On the basis of the defined design principles, the second section examines approaches and tools and evaluates them regarding the support of distributed, cooperative software development. The investigation concentrates on computer-supported cooperative work, process-centered software engineering, computer-aided software engineering and cooperative software development. In summary, the investigation shows that most available approaches and tools provide too little support for computer-supported coordination and cooperation in a software development project.

Based on the design principles and the deficits of existing research approaches and tools, in the third part of the work we develop a model for cooperative work processes in software projects. The presented model leads to a stronger focus on the common work artefacts and supplies a uniform terminology. This is contrary to usual approaches, which try to extend single-user to multi-user tools without creating a conceptual basis for cooperative work. The model is divided into a domain model, a cooperation model and a system model.

Finally, the fourth section describes a distributed, object-oriented cooperation environment that supports small, geographically and temporally separated groups of developers in the context of typical development activities. The concepts implemented in the cooperation environment are based on the defined model for cooperative work processes in software projects. The model facilitates the integration of product-centric with process-centric views of software development. The work concludes with a comparative evaluation with other approaches as well as a discussion of future developments and possible research directions