- Individualprogrammierung
-
Individualsoftware zeichnet sich dadurch aus, dass sie gemäß den Anforderungen eines einzelnen Kunden maßgeschneidert erstellt wird, im Gegensatz zu Standardsoftware, die für eine große Menge (potenzieller) Kunden entwickelt wird.
Inhaltsverzeichnis
Gründe für die Entscheidung für eine Individuallösung
Wenn sich ein Unternehmen für die Erstellung einer Individualsoftware entscheidet, kann dies unterschiedliche, einander nicht ausschließende Gründe haben:
- Es gibt keine bekannte, geeignete Standardsoftware.
- Es gibt eine geeignete Standardsoftware, die Entwicklung einer Individualsoftware wird jedoch monetär günstiger bewertet.
- Man möchte eine vollkommene Kontrolle über die künftige Entwicklung der Software und Beherrschung des Quellcodes garantieren
- Die Software soll dem einsetzenden Unternehmen gegenüber anderen Mitbewerbern einen Wettbewerbsvorteil verschaffen.
- Man möchte "das Rad neu erfinden", weil die angestrebte Lösung noch besser werden soll, als diese von vorhandenen Produkten bereits angeboten werden.
Die Entwicklung von Individualsoftware hat häufig den Charakter eines Forschungsprojektes. Denn nicht nur die Zielvorgaben sind in der Regel (mangels Kenntnis der Softwaretechnologie, des technisch machbaren oder wegen nicht genügend tief durchdachter Thematik) unscharf. Die Lösung ist oft auch für den Entwickler ein zumindest teilweise unbekanntes Terrain. Häufig herrscht beim Auftraggeber der Gedanke vor "wenn ich mich schon in so ein Projekt stürze, dann soll es auch alle meine Wünsche erfüllen". Dies wird später aus Kostengründen häufig relativiert.
Pflichtenheft
In der Regel gibt es einen konkreten Anwendungsfall, und es werden, oft in einem sogenannten Pflichtenheft genaue Anforderungen festgelegt, die in der Lösung realisiert werden müssen. Falls der spätere Nutzer und der Entwickler nicht identisch sind, arbeiten häufig beide gemeinsam an dem Pflichtenheft, um hier eine Fusion des gewünschten und des realistischerweise machbaren festzuschreiben.
Ziel-Modifikation
Allerdings steht häufig zu Beginn eines Softwareprojektes noch gar nicht fest, was am Ende alles enthalten sein wird. Vieles ergibt sich erst in der Entwicklungsphase, da sich sowohl dem Entwickler als auch dem Auftraggeber erst durch die andauernde Arbeit an und mit dem Projekt neue interessante Standpunkte eröffnen. Dies dient in der Regel dem Gesamtergebnis, und sollte von vornherein eingeplant werden, beispielsweise durch eine etappenweise Neuformulierung von Teilen des Pflichtenheftes, durch entsprechende Neukalkulierung des Preises (falls nicht ohnehin nach Aufwand abgerechnet wird) und durch Anpassung des Zeitplans und der verwendeten Mittel (Systemumgebung und Werkzeuge).
Kosten
Es sind verhältnismäßig hohe Kosten für Entwicklung, Pflege und Wartung einzukalkulieren, wenn man den Erwerb von Individualsoftware mit dem Erwerb einer Standardsoftware vergleicht.
Die Entwicklungskosten bei Individualsoftware können enorm hoch sein. Denn abgesehen von den unten aufgezählten Ersparnissen entsteht im Großen und Ganzen bei einer Individualsoftware ein vergleichbarer Entwicklungsaufwand wie bei einer Standardsoftware, mit dem Unterschied, dass diese Kosten hierbei nicht auf Hunderte, Tausende oder Millionen von Nutzern umgelegt werden, sondern häufig nur von einem einzelnen Auftraggeber aufzubringen sind. Denn diese Kosten werden nicht auf viele Anwender verteilt, sondern sind alle vom Entwickler bzw. Auftraggeber zu tragen.
Kostensenkende Faktoren
Es gibt einige Kostenfaktoren, die bei der Entwicklung von Individualsoftware nicht oder nur in geringerem Maße anfallen:
- Es gibt eine sehr geringe oder zumindest besser überschaubare Anzahl von Benutzern sowie Anzahl von Arbeitsplätzen, an denen die Software installiert ist, als bei Standardsoftware
-
- Daher sind die Kosten für Hilfs- und Unterstützungsleistungen ("Support") gegenüber der Vielzahl von Benutzern bei Standardsoftware bei der Individualsoftware geringer. Oft sind die Benutzer und die Person, die die Unterstützung bietet, bei Individualsoftware räumlich besser verbunden.
- Die Kosten für Dokumentation sind geringer, wenn man davon ausgehen kann, dass die Benutzer in den Entwicklungsprozess in der Regel eingebunden sind und das Programm so schon kennen oder sogar selbst auf die Gestaltung der Oberfläche Einfluss genommen haben.
- Es ist nicht ein so hoher Standardisierungsgrad zu erreichen. Das heißt, dass bei der Software nicht mit einer so hohen Vielzahl von Anwendungsfällen gerecht werden muss. Sie muss auch nicht einer so hohen Anzahl von Hardware-Umgebungen gerecht werden.
- Die Fehlerbehebung verläuft einfacher, da in der Regel einfach nur an einem Ort eine neue Version eingespielt werden muss. Bei der Standardsoftware sind die Kosten zur Verteilung von neuen Programmversionen, die verteilt werden müssen, da sie Fehler beheben, erheblich.
- Auf eine Installationssoftware kann oft verzichtet werden. Bei Standardsoftware ist ein Mechanismus, in der Regel ein Installationsprogramm, Bestandteil des Vertriebsapparates, das die fehlerfreie und automatische Installation auf den Zielsystemen durch in der Regel Laien ermöglicht. Dieser Mechanismus muss mit einer Vielzahl von unbekannten Zuständen auf den Zielsystemen zurechtkommen und es muss außerdem ein sauberer Deinstallations-Mechanismus zur Verfügung gestellt werden, um die Software wieder zu entfernen. Dies kann erhebliche Kosten verursachen und ist auch in Test, Fehlersuche und Support sehr umfangreich.
- Die Kosten für Werbung und Verteilung entfallen in der Regel.
- Falls eine Software auf relative vielen Rechnern eingesetzt werden soll, entstehen relativ hohe Lizenzkosten bei Standardsoftware, da entsprechend viele Lizenzen gekauft werden müssen. Eine Individualprogrammierung kann hier durchaus günstiger sein, da die Entwicklung nur einmal bezahlt werden muss.
- Durch die Abrechnung nach Aufwand können in Individualprojekten ebenfalls Kosten gespart werden, wenn Auftraggeber und Auftragnehmer partnerschaftlich, professionell und offen miteinander arbeiten (Siehe auch "Vorteile der Abrechnung nach Aufwand").
Kostenerhöhende Faktoren
Andererseits wird in der Praxis der Kostenaufwand häufig enorm unterschätzt. Dies mag darin begründet sein, dass die Anwender oder Auftraggeber aus den geringen Kosten für den Erwerb einer Standardsoftware irrtümlich auf die Kosten einer Individualsoftware schließen.
Weitere Faktoren für hohe Kosten bei Individualsoftware. (Die meisten dieser Punkte können bei der Standardsoftware auch auftreten, jedoch zeigt die Erfahrung, dass sie sich hier mit der Zeit selbst aus dem Projekt eliminieren.):
- Die (im Vergleich zu Standardsoftware) häufig kurze Entwicklungszeit und damit verbundener zeitlicher Erfolgsdruck führen zu allerlei Fehlentscheidungen oder voreiligen Entscheidungen oder Entwicklungsabläufen. Oft wird sich nicht die Zeit genommen, um die am Markt verfügbaren Entwicklungsumgebungen, Bausteine oder Teillösungen in Betracht zu ziehen.
- Der Auftraggeber möchte, da er beispielsweise auch Teilzahlungen geleistet hat, vorzeitig Teilergebnisse sehen. Häufig sind jedoch in der Softwareentwicklung über lange Zeiträume keine sichtbaren Erfolge vorweisbar, jedenfalls nicht gegenüber dem Auftraggeber, wenn dieser ein softwaretechnischer Laie ist. Daher werden oft vorzeitig gewisse wichtige Entwicklungsschritte vernachlässigt, um schnell zu vorzeigbaren Ergebnissen zu kommen. Dies rächt sich später durch hohen Zeitaufwand, der nötig ist, um dadurch entstandene Fehler wieder auszubügeln. Ein Großteil des Entwicklungsaufwandes besteht in Planungen, in vorbereitender Entwicklung, der Entwicklung von Modulen oder Teilprogrammen, der Vorbereitung von Umgebungen, dem Test und der Anpassung von Teilsystemen, der Dokumentation der Quelltexte und der Systementwicklung und dergleichen.
- Die Wahl von falschen oder unangemessenen Entwicklungswerkzeugen- oder Umgebungen.
- Der Auftraggeber greift durch nicht sachgerechte Weisungen in den Entwicklungsprozess ein, die zu Kostenerhöhungen führen. Oder er hat gewisse sachfremde Vorgaben (z.B. Aufsetzen auf nicht mehr zeitgemäße vorhandene Software oder Hardware, Zusammenarbeit mit von ihm vorgeschlagenen Mitarbeitern oder Firmen oder Systemen).
- Beauftragung oder Einbeziehung von nicht qualifizierten Firmen oder Personen durch die Entwickler.
- Der Auftraggeber entscheidet sich während des Entwicklungsprozesses um, was Umfang und Art der Aufgabenstellung betrifft
- Die Entwickler entscheiden sich während des Entwicklungsprozesses um, was die Art der eingesetzten Entwicklungssysteme und Werkzeuge betrifft.
- Fehlender Konkurrenzdruck. Auf dem Markt für Standardsoftware besteht dadurch ein gewisser Konkurrenzdruck, dass sich das Endprodukt mit ähnlichen am Markt befindlichen Produkten messen muss.
Einführung von Individualsoftware
Zur produktiven Einführung von Individualsoftware gehört, wie bei Standardsoftware auch, neben Implementierung und Installation, die Schulung von Mitarbeitern, sowie die Umstellung firmeninterner Prozesse. Prinzipiell gibt es zwei Strategien zur Einführung von Individualsoftware: Der Big Bang und die iterative Einführung.
Big Bang
Die neue Software wird vollständig implementiert und zu einem einzigen, klar definierten Zeitpunkt (üblicherweise zu Zeiten, an denen die Nichtverfügbarkeit eines Systems weitgehend unkritisch ist, beispielsweise an einem Wochenende) in Betrieb genommen, so dass sie anschließend vollständig verfügbar sind. Zur Risikominimierung erfordert diese Art der Softwareeinführung umfangreiche Planungen und Vorbereitungen im Vorfeld (Schulung der Administratoren, des Operatings und der Endbenutzer, Planung eines Rollbacks für den Fall, dass kurzfristig nicht behebbare oder unvorhergesehene Fehlersituationen auftreten).
Ein Risiko dieser Strategie ist, dass die Software nie oder mit großer Verspätung fertig implementiert und eingesetzt wird (etwa, weil sich die Anforderungen an die Software häufig und kurzfristig ändern, so dass ständig nachgebessert werden muß). Darüber hinaus lassen sich technische Schwierigkeiten (Lastsituationen, Performance) im Vorfeld oftmals nur schlecht abschätzen, wodurch sich oftmals erst nach Inbetriebnahme zeigt, ob die Lösung tatsächlich für den produktiven Betrieb geeignet ist.
Iterative Einführung
Dem Big Bang gegenüber steht eine iterative Einführung eines neuen Systems, also die Einführung in mehreren, kleineren Schritten. Im Vorfeld sind kleinere Bestandteile, sowie die Abhängigkeiten zwischen diesen zu identifizieren und zu analysieren. Beides ist bei der iterativen Einführung entsprechend zu berücksichtigen (so kann beispielsweise eine Webanwendung nicht installiert werden, bevor der dafür benötigte Web- oder Application Server nicht installiert ist).
Durch den iterativen Ansatz sollen Risiken durch einen möglichen Ausfall des gesamten Systems reduziert werden. Weiterhin gibt es den Benutzern der Software die Möglichkeit, frühzeitig Erfahrungen mit Teilen des Systems zu sammeln, die wiederum bei der Entwicklung und Einführung der nächsten Teile berücksichtigt werden können. Oftmals wird man allerdings über einen längeren Zeitraum mit unvollständigen Zwischenlösungen leben müssen.
Ein nicht zu unterschätzendes Risiko bei der iterativen Einführung eines neuen Systems sind firmenpolitische Veränderungen während der Entwicklung: Projekte werden aus Kostengründen gestoppt/verkleinert, eine Firmenumstrukturierung erfordern neue Planungen, die Firmenleitung setzt neue Schwerpunkte. Diese kann dazu führen, dass das Gesamtsystem in seiner ursprünglichen Planung, niemals vollständig eingeführt wird und somit als Ganzes nur stark eingeschränkt verwendbar oder schlimmstenfalls unbrauchbar ist.
Siehe auch
Wikimedia Foundation.