Abstrakt: Mit der ubiquitären Präsenz des World Wide Web und neuer web-basierter, kollaborativer Softwareanwendungen ergeben sich für das Software Engineering zumindest zwei neuartige, theoretisch bedeutsame Heraus-forderungen mit praktischen Implikationen:
(1) Zum einen entstanden durch diese Entwicklung neue Formen von Software, deren Eigenschaften und Gestaltung sich von traditioneller Software deutlich unterscheiden. Sogenannte soziale Software unterscheidet sich zum Beispiel von anderen Arten an Software (wie z.B. Software für Autos oder die Flughafensicherung) durch (i) den sozialen Zweck (ii) die Verwendung auf freiwilliger Basis und (iii) die beispiellose Integration von sozialen Daten über Benutzerverhalten, -ziele und -motivationen in die Struktur und Benutzerschnittstellen der Software. In sozialer Software wird die Interaktion zwischen einzelnen Benutzern und dem System typischerweise durch die Aggregation von Daten einer grossen Menge anderer Benutzer vermittelt und gestaltet. Ein Beispiel derartiger sozialer Softwareeigenschaften findet sich in der tag-basierten Navigation. In sozialer Software können somit traditionell kontrollierbare, nicht-funktionale Softwareeigenschaften (wie zum Beispiel die Navigierbarkeit) dynamisch, d.h. durch das soziale Verhalten ihrer Benutzer, beeinflusst werden. Dies stellt die Entwickler derartiger Software vor grosse Probleme und existierende Softwareentwicklungsmethoden und –verfahren vor neue Herausforderungen.
(2) Zum anderen bewirkt die Verfügbarkeit von sozialer Software, dass sich Softwareentwicklung heute in der Praxis zunehmend als eine verteilte und soziale Aktivität darstellt, bei der Benutzer, Softwareentwickler, Tester und andere Anspruchsgruppen gemeinsam Anforderungen abstimmen, Konflikte lösen, Software entwerfen und Code warten. Unser derzeitiges Verständnis über effektive Methoden und Werkzeuge zur Unterstützung derartiger sozialer Aspekte der Softwareentwicklung ist ungenügend, und eine tiefergehende Auseinandersetzung mit den sozialen Prozessen und Strukturen ist eine unabdingbare Voraussetzung für die Weiterentwicklung von Theorie und Praxis des Software Engineering.
Der Vortrag beleuchtet vergangene und aktuelle Arbeiten meiner Forschungsgruppe im Kontext dieser zwei Herausforderungen, und skizziert einen Forschungsplan für zukünftige Arbeiten.