Zum Inhalt springen

Individualsoftware

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 28. April 2017 um 19:33 Uhr durch 92.208.228.137 (Diskussion) (Kostensenkende Faktoren: siehe querverlinkte Wiki-Artikel). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Individualsoftware (auch Individuallösung) ist ein Begriff der Informationstechnik, welcher eine individuell, d. h. für einen bestimmten Anwender angefertigte Anwendungssoftware bezeichnet.[1][2] Sie zeichnet sich dadurch aus, dass sie maßgeschneidert gemäß den Anforderungen eines einzelnen Auftraggebers erstellt wird – im Gegensatz zu Standardsoftware, die für eine größere Menge (potenzieller, zum Teil noch unbekannter) Anwender entwickelt wird.

Individualsoftware wird entweder von den Softwareentwicklern eines Unternehmens oder einer Institution, ggf. auch von Privatanwendern, erstellt oder bei einem externen Dienstleister für Softwareentwicklung in Auftrag gegeben. Eine Mischform aus beiden ist, wenn für spezielle Aufgabenstellungen („Spezialisten“) oder zum Ausgleich fehlender Entwicklungskapazitäten externe Dienstleister für das Projekt beauftragt werden. Typische Anwender von Individualsoftware sind Einrichtungen, die spezifische Anforderungen an ihre Software haben, für die keine exakt passenden marktgängigen Softwareprodukte verfügbar sind.

Erstellung und Pflege von Individuallösungen, ggf. auch der Betrieb und andere IT-Dienstleistungen werden oft, durch entsprechende Verträge in ihren Details festgelegt, an externe IT-Unternehmen ausgelagert. Die Auftraggeber sind dann Kunden dieser Dienstleister, bleiben aber Eigentümer der Software. Je nach Umfang der extern vergebenen Aktivitäten kann die Auslagerung rechtlich über einen Werkvertrag (bei weitgehend autonomer externer Erstellung) oder über einen Dienstvertrag abgewickelt werden.

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.
  • Die Kosten einer Individualsoftware werden niedriger geschätzt als die einer Standardsoftware.
  • Man möchte sich nicht an einen Softwareanbieter binden (Lock-in-Effekt), sondern die Kontrolle über die künftige Entwicklung der Software sicherstellen.
  • Die eigene Software soll dem Unternehmen Wettbewerbsvorteile gegenüber Mitbewerbern verschaffen (Funktionalität, Flexibilität, Stabilität).
  • Man möchte, obwohl es Standardprodukte für den angestrebten Zweck gibt, eine besser passende Lösung entwickeln (z. B. organisatorische und technische Eigenheiten/Anforderungen des Unternehmens individuell berücksichtigen).

Weitere Argumente/Gründe siehe auch [1] und [2].

Vorgehensweise und eingesetzte Technologien

Das einzige begriffsbildende Kriterium für den Begriff „Individualsoftware“ (ISW) ist, dass sie individuell – zum Einsatz bei einem bestimmten Anwender (i. S. von Auftraggeber/Eigentümer) – entwickelt wurde. Im Hinblick auf die Vorgehensweise bei der Softwareentwicklung (Vorgehensmodelle, eingesetzte Entwicklungsmethoden, Werkzeuge und Architekturen) muss sich diese deshalb nicht grundsätzlich und zwangsläufig vom Vorgehen bei Standardsoftware (SSW) unterscheiden. Die in mehr oder weniger vielen Details unterschiedlichen Eigenschaften von SSW und ISW (siehe z. B. in [2]) machen jedoch auch andere Vorgehensweisen erforderlich oder möglich. Beispiele:

Projektauslöser

Initiiert wird ein Projekt für ISW zumeist dann, wenn Anforderungen auftreten, die von existierender SSW nicht erfüllt werden, und wenn die Erweiterung der bisherigen Lösung (gleichgültig ob ISW oder SSW) nicht praktikabel ist.

Lasten- und Pflichtenheft

Die Anforderungen an die Software werden aus der Sicht eines einzigen Auftraggebers formuliert. Sie beziehen sich deshalb auf (nur) dort vorhandene Gegebenheiten, eine umfassende Anpassungsfähigkeit an Gegebenheiten bei unterschiedlichen Anwendern ist nicht erforderlich.[2] Gewünschte spätere Anpassungsmaßnahmen müssen bei SSW über einen ggf. langwierigen Genehmigungsprozess laufen, bei ISW ist ihre Umsetzung dagegen einfacher möglich, muss aber vom Anwender selbst geleistet oder beauftragt werden.

Technische Umgebungsbedingungen

In der Regel wird ISW für eine definierte technische Systemumgebung (wie JEE oder .NET etc.) erzeugt. Flexibilität bezüglich möglicher Anpassungen muss funktional nicht vorgesehen sein. Ebenso wird die Benutzerschnittstelle bei ISW exakt auf die Bedürfnisse und Gewohnheiten beim Anwender ausgerichtet; das System findet dann oft eine höhere Akzeptanz bei den Benutzern[2] als eine ungewohnte und evtl. funktional überdimensionierte SSW.

Qualität der Lösung

Häufig verfügen die Entwickler eines SSW-Herstellers über mehr Erfahrung. Fehler, die z. B. bei einem Anwender entdeckt wurden, können behoben und die SSW in Form eines Updates allen anderen zur Verfügung gestellt werden.[2]

Dokumentation

Da eine SSW so dokumentiert sein muss, dass ihr Inhalt von vielen Benutzern/Anwendern verstanden wird, ist sie in den meisten Fällen umfassender und systematischer gegliedert (lt. Seite 9 in [2]: „Volumen und Qualität des Handbuchs“) als eine Dokumentation, die nach den Regeln und Gewohnheiten eines einzelnen Unternehmens erzeugt wird.

Technische Einführung

Die bei SSW üblichen Installationsprogramme sind bei ISW häufig nicht oder nur in einfacher Form vorhanden, weil keine oder nur wenige Customizingfunktionen erforderlich sind, und weil die Software mit den gegebenen Verfahren der Zielumgebung installiert werden kann.

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 mehreren Rechnern eingesetzt werden soll, entstehen bei Standardsoftware höhere Lizenzkosten, 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.[3]
  • Durch Techniken wie Aspektorientierte Programmierung oder Feature Oriented Programming kann individuelle Software aus fertigen Standard-Komponenten, sowie individuellen Spezial-Komponenten zusammengesetzt werden.

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 nicht genug 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.

Siehe auch

Einzelnachweise

  1. a b Der Marki Standard-Software versus Individual-Software[1]
  2. a b c d e f g Uni Hannover [2] Potenziale und Risiken von Standard- und Individualsoftware
  3. Siehe auch Vorteile der Abrechnung nach Aufwand (Memento vom 24. Juli 2010 im Internet Archive).