Erfolgreiche digitale Transformation erfordert eine bestimmte Art von Software und Wissen
Egal, ob eine (klassische) Software auf der Grundlage bestimmter Eingaben spezifische Algorithmen ausführt, um daraus einen bestimmten Ausgabewert zu generieren, oder ob eine KI-Software auf der Basis von Trainingsdaten Algorithmen eigenständig generiert, um abhängig vom Kontext neuer Eingaben Ausgaben zu erzeugen: Software muss bestimmte Eigenschaften aufweisen.
Informationssysteme haben eine herausragende Bedeutung in der Epoche der globalen Digitalisierung für alle Bereiche des Lebens und sie betrifft jede Organisation und jedes Individuum (siehe Bedeutung von Informationssystemen).
Es stellen sich grundsätzliche Fragen zum Thema Informationssysteme. Wir gehen davon aus, diese Fragen sind längst beantwortet. Trotzdem wollen wir Sie nochmals beleuchten, um darauf aufmerksam zu machen, dass die Beantwortung dieser grundsätzlichen Fragen bei einige Anbietern digitaler Leistungen nicht zu Verhaltensanpassungen führt, d.h. sie sind teilweise in Vergessenheit geraten:
Was ist Software?
Ein Softwareprodukt besteht aus Computerprogrammen, Prozeduren, Regeln (z.B. für den Zugriff auf Datenbanken), sowie zugehöriger, verständlicher und aktueller Dokumentation und Daten. Komplexe Software ist für Benutzer eine Ressource, die ohne weiterführenden Dienstleistungen zumeist nicht nutzbringend eingesetzt werden kann. Erst wenn sie als Ressource verstanden wird, auf Basis welcher lösungsorientierte Services erbracht werden können und müssen, bevor sie zur Entfaltung kommen kann, wird eine Nutzenoptimierung ermöglicht. Das bedeutet: der reine Besitz von Software führt nicht zu dem gewünschten Ergebnis bei Unternehmen die Software beschaffen.
Was ist gute Software?
Gute Software ist
- wartbar (maintainable)
d.h. leicht modifizierbar, um zukünftige Anforderungen leichter erfüllen zu können
- zuverlässig (dependable)
- effizient (efficient)
Aufgaben in akzeptabler Zeit ohne übermäßigen Ressourcenverbrauch erfüllen
- akzeptabel und kann somit abgenommen werden (acceptable)
Was ist ein Softwaresystem?
Ein Softwaresystem ist ein System, dessen Teilsysteme und Komponenten ebenfalls aus Software bestehen.
Für komplexe Softwaresysteme (z.B. ERP) gilt grundsätzlich das gleiche wie für Software (oben). Je komplexer Softwaresysteme werden, desto schwieriger ist es, diese zu warten. Auch die Zuverlässigkeit und die Effizienz kann leiden, wenn die Komplexität zunimmt.
Diese Abhängigkeit zu verstehen ist wichtig für weiterführende Entscheidungen im Umfeld der Entwicklung und Einführung von Softwaresystemen.
Was ist ein System von Systemen?
Ein System von Systemen verbindet mehrere heterogene Systeme (z.B. ERP, CRM, MES, HCM…) zu einem komplexeren Systemen. In fast jeder Organisation findet man Systeme von Systemen. Dies macht die oben beschriebene Komplexität um den Faktor n komplexer.
Was ist Software-Engineering?
Systematisches Software-Engineering besteht aus
- Standards (standards)
- Methoden (methods)
- Werkzeugen (tools)
Software Engineering ist die Anwendung eines
- systematischen,
- disziplinierten,
- quantifizierbaren
Ansatzes für die Entwicklung, den Betrieb und die Wartung von Software.
Jeder kann irgendwie Software entwickeln. Wenn das irgendwie geschieht, erhöht sich die Wahrscheinlichkeit für das Auftreten grundsätzlicher Probleme.
Häufige Probleme bei der Softwareentwicklung
- Anforderungsspezifikation (müssen u.a. konkret sein) = Anforderungsentwicklung, Lastenhefterstellung, Pflichtenhefterstellung, Detaillierte Spezifikationen
- Kommunikation zwischen den beteiligten Gruppen (Effizienz in der Kommunikation)
- Akzeptanz (durch die Nutzer) und Integration (der Nutzer)
- Konfigurationsmanagement und Versionsmanagement
- Übertragbarkeit (Portabel, d.h. Software muss auf unterschiedlichen Plattformen laufen)
Diese Probleme können minimiert werden durch den Einsatz von Software-Engineering-Grundsätzen (oben).
Grundlagen des Software Engineerings
Aufgabenbereiche und Kenntnisse eines Softwareingenieurs:
- Software-Produkt (Software Product)
- Anwendungsbereich (sich kümmern um die Belange der Anwender, erforderliche Fachkompetenzen generieren)
- Benutzerfreundlichkeit und Ergonomie
- Architektur, Modelle und Pläne
- Ressourcen (Resources)
- Teamleitung
- Software, Hardware und Plattformen
- Werkzeuge (Tools)
- Software-Prozess (Software process)
- Software-Prozess-Methoden
- Software-Entwicklung
- Wiederverwendung von Software
- Projekt (Project)
- Projektmanagement (Projektplanung und -steuerung) – Details: siehe Plangesteuertes Projektmanagement, Gezielter Einsatz agiler Methoden und Agiles Projektmanagement …)
- Projekt-Modelle
- Schätzmethoden
Software-Prozesse
beschreiben die Reihenfolge von Aktivitäten zur Entwicklung eines Softwareprodukts.
Alle Softwareprozesse umfassen die folgenden Aktivitäten mit dem Ziel die Software systematisch, effizient, konsistent zu entwickeln:
Spezifikation
Nach der Spezifikation sind Hauptfunktionalitäten und Einschränkungen definiert
Entwicklung
Die Software wird konzipiert und realisiert
Validierung
Überprüfen, ob die Software mit der Spezifikation und den Kundenbedürfnissen übereinstimmt
Evolution
Verhindern von Alterung der Software durch Anpassung an neue Anforderungen und Bedürfnisse
Softwareprozess-Modelle stehen im direkten Zusammenhang mit den Projektmanagementmethoden und werden abhängig von dem Kontext gewählt, in welchem die Software entwickelt wird.
siehe Plangesteuertes Projektmanagement, Gezielter Einsatz agiler Methoden und Agiles Projektmanagement
Kosten im Softwareentwicklungsprozess
Je später die Änderung von Software im Entwicklungsprozess erfogt, desto mehr kostet sie im Allgemeinen. Aus diesem Grund ist der Einsatz von Software-Engineering-Methoden in der Regel kosteneffizient.
Kosten für Änderungen an der Software hängen somit von der Phase ab, in welcher sich der Softwareentwicklungsprozess befindet.
1. Phase: | Planung der Entwicklung | nahezu keine Kosten der Änderung |
2. Phase: | Definition der Entwicklung (Lastenheft, Grobspezifikation) | sehr geringe Kosten der Änderung |
3. Phase: | Design der Entwicklung (Pflichtenheft, Architektur, Designentscheidungen) | geringe Kosten der Änderung |
4. Phase | Entwicklung | hohe Kosten der Änderung |
5. Phase | Release (Veröffentlichung, Auslieferung der Software | sehr hohe Kosten der Änderung |
6. Phase | Maintenance (Wartung) | übertrieben hohe Kosten der Änderung, die entweder zu unwirtschaftlichen Wartungsaufwänden (Input > Output) oder zu Prohibitivpreisen bei den Wartungsgebühren führen würden, bzw. zu Unzufriedenheit (fehlende Akzeptanz) bei Kunden |