Karl Kurbel (unter Mitarbeit von Rastsislau Datsenka)
Outsourcing der Anwendungsentwicklung ist eine Form des Outsourcing, bei der eine Einrichtung (z.B. ein Unternehmen) die Neu- oder Weiterentwicklung an eine andere Einrichtung (i.d.R. ein Dienstleistungsunternehmen) auslagert. Je nach Projektumfang kann dies eine, mehrere oder aller Phasen des Lebenszyklus von Anwendungssoftware umfassen.
Begriffsabgrenzung
Outsourcing der Anwendungsentwicklung bedeutet, dass eine Einrichtung (z.B. ein Unternehmen, Verwaltung) eine andere Einrichtung (i.d.R. ein Dienstleistungsunternehmen) mit der Durchführung einer, mehrerer oder aller Phasen des Lebenszyklus von Anwendungssoftware beauftragt [Corriveau 2007, S. 1]. Die Phasen Wartung und Betrieb werden allerdings meist unter anderen Outsourcing-Begriffen angesprochen (Outsourcing der Wartung bzw. des Systembetriebs).
Da es häufig nicht um einmalige Vorhaben, sondern um eine mittel- oder langfristige Auslagerung bisher innerbetrieblich erfüllter IT-Aufgaben geht, muss eine geeignete Infrastruktur aufgebaut werden, die insbesondere die Schnittstellenfunktion zwischen der auslagernden und der dienstleistenden Einrichtung wahrnimmt.
Motivation
Die Gründe für das Outsourcing sind vielfältig [Kurbel 2008, S. 55 ff.]: Nichtverfügbarkeit von Knowhow/Expertise, Kapazitätsengpässe im eigenen Unternehmen, bessere Qualität (Outsourcing-Anbieter weisen häufig einen hohen Reifegrad auf) u.a. Im Vordergrund stehen jedoch meist die erwarteten Kosteneinsparungen. Diese sind besonders hoch, wenn das Dienstleistungsunternehmen nicht in einem Industrieland, sondern in einem Niedriglohngebiet ansäßig ist (oder selbst Teilaufgaben dorthin auslagert). Deshalb wird Outsourcing heute großenteils auf dem Wege des Offshoring abgewickelt, d.h., die Anwendungsentwicklung findet überwiegend in anderen Ländern statt (z.B. in Indien, China, Osteuropa, Südamerika).
Für eine Diskussion der generellen Vor- und Nachteile des Outsourcing wird auf den gleichnamigen Übersichtsbeitrag in dieser Enzklopädie verwiesen.
Umsetzung
Da Anwendungssysteme i.d.R. in Projekten entwickelt werden, muss auch beim Outsourcing unterschieden werden, welche Phasen eines Projekts ausgelagert werden und welche beim Auftraggeber verbleiben. Davon hängen der Schwierigkeitsgrad und das Fehlschlagsrisiko entscheidend ab. Abbildung 1 unterscheidet die Outsourcing-Stufen und die Schnittstellen zwischen Auftraggeber und Auftragnehmer anhand eines vereinfachten Wasserfallmodells.
-
Am Unkompliziertesten ist es, wenn “nur” die Programmierungs- und Testphase ausgelagert wird. Voraussetzung sind eindeutige System- und Modulspezifikationen, die im Idealfall Missverständnisse ausschließen.
-
Wenn auch der Feinentwurf der Module ausgelagert wird, liefert der Kunde die Systemarchitektur und einen Grobentwurf, der die erwarteten Module mit ihren Aufgaben enthält.
-
Auslagerung aller Phasen ab dem Grobentwurf bedeutet, dass der Auftraggeber die Anforderungsanalyse selbst durchführt. Der Auftragnehmer entwickelt auf dieser Grundlage die Systemarchitektur und die Module des Systems.
-
Wenn der Kunde dem Dienstleister das “Gesamtproblem” übergibt, führt dieser auch die Anforderungsanalyse durch, i.d.R. in einem Projektteam, in dem Personal des Kunden mitwirkt. Der Einfluss des Kunden auf das resultierende Anwendungssystem ist hier am geringsten, da alle weiteren Aufgaben im Wesentlichen vom Auftragnehmer erledigt werden.
Abb. 1: Auslagerung von Aufgaben und Schwierigkeitsgrad [Kurbel 2008, S. 67]
Global Delivery Models
Eine neue Dimension hat das Outsourcing durch global auftretende IT-Dienstleistungsanbieter wie Accenture, Tata Consultancy Services (TCS), Wipro und Infosys erhalten. Diese greifen auf komplexe Netzwerke regionaler Entwicklungszentren zurück (s.a. Globally Distributed Software Development), die eine hohe Verfügbarkeit von Kompetenzen und Expertise sicherstellen [Gronwald 2012, S. 37]. Die großen indische Unternehmen treten sowohl direkt als Anbieter auf dem Markt für IT-Dienstleistungen in den westlichen Ländern auf, kooperieren aber auch mit einheimischen Softwarefirmen und erhalten auf diese Weise indirekt Outsourcing-Aufträge.
Die Zusammenarbeit erfolgt meist auf der Basis sog. Global Delivery Models – das sind Modelle der weltweit verteilten Leistungsbringung –, deren Entstehung hauptsächlich mit den o.g. Anbietern verbunden ist.
Outsourcing-Projekte
Je nach Umfang der Auslagerung sind unterschiedliche Formen der Zusammenarbeit zwischen den Projektteams beim Auftraggeber und Auftragnehmer erforderlich. Abbildung 2 zeigt beispielhaft eine mögliche Rollenverteilung in einem globalen Softwareprojekt, bei dem der Auftraggeber durchgängig eingebunden ist.
Zusätzlich zu anderen Projektrollen sind Koordinatoren der beiden Partner vorgesehen, die insbesondere die Schnittstellenfunktion wahrnehmen und jeweils vor Ort arbeiten. Sie steuern die Kommunikation zwischen den beteiligten Organisationen und klären Missverständnisse bzw. Fehlinterpretationen.
Abb. 2: Aufgaben und Rollen in einem globalen Softwareprojekt [Kurbel 2008, S. 530]
Literatur
Corriveau, Jean-Pierre: Testable Refinable Requirements for Offshore Outsourcing. In: Proceedings of the First International Conference on Software Engineering Approaches for Offshore and Outsourced Development. Zurich 2007.
Kurbel, Karl Eugen: The Making of Information Systems: Software Engineering and Management in a Globalized World. Berlin: Springer 2008.
Gronwald, Klaus-Dieter: Global Sourcing: Shifting the Focus from Cost Saving to a Strategic Set-up.In: Bäumer, Ulrich et al. (Eds.), Globalization of Professional Services. Berlin, Heidelberg: Springer 2012, pp. 33-39