Der Traum von der perfekten Software

Die Softwareentwicklung steht unter Druck. Fehlgeschlagene Projekte, mangelhafte Qualität und Sicherheitslücken bieten reichlich Angriffslücken. Aber ist der Einsatz einer Standardsoftware ein Ausweg aus demDilemma? Gerade durch die Diskussion um die Erhöhung der Wartungslasten bei Anbietern von Standardsoftware wie beispielsweise SAP, bekommt das Thema eine hohe Brisanz.

Die Softwareprobleme sind vielschichtig. In diesem Beitrag wollen wir uns jedoch auf die Aspekte der Entwicklung von Individualsoftware beschränken. Gerade vor den aktuellen Diskussionen um die Erhöhung der Wartungskosten bei Anbietern von Standardsoftware bekommt das Thema eine hohe Brisanz. Am Ende steht die Frage: Ist Individualsoftware zum Preis einer Standardssoftware nur ein Traum oder könnte Sie Realität werden?

Anzeige

Die Standardsoftware ist nämlich nicht das was sie einmal war. Die Komplexität der Programme hat dazu geführt, dass die Unternehmen sich durch eine Unmenge von individuellen Änderungen längst vom ursprünglichen Anspruch, der Standardisierung, verabschiedet haben. Die Folge: Kosten ohne ein absehbares Ende, ein Wildwuchs, der nicht mehr kontrollierbar ist und nun als Krönung erhöhte Wartungsgebühren. Wo soll da noch ein Vorteil liegen? Ein Vorteil liegt doch einzig und allein in den Prozessen jedes einzelnen Unternehmens. Die Software hat doch nur die Aufgabe diese abzubilden und das flexibelst, schnell, automatisiert und zu niedrigen Kosten. Spricht das für SAP, Oracle und Co?

Projektmanagement

Wie sieht es nun auf der anderen Seite aus? Von Projektmanagement reden wir schon lange. Was hat sich getan? Richtig, nichts. Nach Schätzungen von Marktforschungsinstituten werden für Entwicklung, Lizenzen, Beschaffung und Pflege von Software weltweit über 1.000 Milliarden Euro jährlich für Software ausgegeben. IT-Projekte schlagen in derMehrheit der Fälle fehl. Laut einer Studie der TU München war in Deutschland weit weniger als die Hälfte aller IT-Projekte in den vergangenen drei Jahren erfolgreich. Termin- und Budgetüberschreitungen sind die Regel, nicht die Ausnahme.

Weltweit ist die Bilanz noch schlechter, wie internationale Studien zeigen. Der Hauptgrund dafür liegt in der Tatsache, dass die Entwicklung von Software bis heute ein höchst komplexes Unterfangen ist, das nur unzureichend beherrscht wird. IT-Projekte scheitern, Software ist fehlerhaft und verhält sich nicht gemäß den Vorstellungen und Bedürfnissen der Nutzer. Der Prozess der Softwareentwicklung ist vor allem mit sich selbst beschäftigt und hat einen extremniedrigen Wirkungsgrad. Die Wissenschaft der Software- entwicklung befindet sich noch immer in den Kinderschuhen, dennoch sind Wirtschaft und Gesellschaft in höchstem Masse von Software abhängig und diese Abhängigkeit nimmt weiter zu.  

Wo stehen wir heute?

Der Weg von der Anforderung bis zur Umsetzung ist zu lang. Häufig ändern sich die äußeren Umstände und somit die Anforderungen während des Projektes. Die Anwender werden selten in die Lage versetzt, sich frühzeitig ein Bild vom Ergebnis machen zu können, fehlendes Verständnis zwischen IT und Fachabteilung provoziert gegenseitige Fehlinterpretationen. Aus Kosten- und Zeitgründen ist es in der Regel unmöglich, die Anforderungen vor der Entwicklung detailliert genug zu beschreiben. Die Vorstellungen Einzelner hinsichtlich der erforderlichen Software weichen erheblich voneinander ab, die Entwicklung verstrickt sich in unwichtigen Details, Anwendungssysteme
unterliegen keiner Einheitlichkeit.

it_management_102008_seite16o.jpg

Standardfunktionen werden immer wieder neu entwickelt, das Rad immer wieder neu erfunden, dadurch entsteht ein hoher Zeitaufwand für die Entwicklung der Basis, lange bevor konkrete fachliche Anforderungen umgesetzt werden können. Software ist einer Evolution unterworfen. Die Umwelt und somit die Anforderungen der Nutzer ändern sich laufend. Software, die sich in Gebrauch befindet, bleibt ohne ständige Anpassungen und Erweiterungen nicht gebrauchstauglich. Das führt auch dazu, dass die innere Komplexität von Software stetig wächst und die Wartbarkeit gleichzeitig abnimmt. Allgemeine Verbesserungen in einem Anwendungssystem schlagen sich nicht in anderen Anwendungssystemen in gleicher Form und automatisch nieder. Kosten für Verbesserungen fallenmehrfach an.

Ist Softwareentwicklung so schwierig?

Software bietet keinen ausreichenden Investitionsschutz. Die Ausgaben für Software sind extremspezifisch. Ändert sich die Anforderungssituation grundlegend, ist die Investition verloren. Eine erhebliche Menge fertiggestellter Softwareprodukte kommt nicht mehr oder nur nach erneuter Anpassung zumEinsatz. Standardsoftware deckt spezifische Anforderungen nur zu einem gewissen Teil ab und berücksichtigt die unternehmensspezifischen Unterschiede nur unzureichend. Das, was in der Regel den in einer globalisierten Welt zunehmend unverzichtbaren Wettbewerbsvorteil oder das Alleinstellungsmerkmal eines Unternehmens ausmacht, kann nur durch Individualsoftware unterstützt werden.

it_management_102008_seite16u.jpg

Individualsoftware jedoch bedingt eine erhebliche Entwicklungszeit und hohe Kosten. Qualitätssicherung in der Softwareentwicklung ist hochkomplex und nur zu einem gewissen Teil automatisierbar. Aus diesem Grund ist Individualsoftware anfänglich nicht ausreichend erprobt. Qualität, Adäquatheit, Termin- und Kostentreue sowie Wartbarkeit von Individualsoftware hängen in hohem Masse von Performance und Leistungsfähigkeit des Lieferanten ab, die häufig vorher nicht bekannt ist und während eines Auswahlverfahrens nicht zuverlässig ermittelt werden kann. Verschiedene Anwendungssysteme präsentieren sich und verhalten sich uneinheitlich, sind oft technisch unterschiedlich realisiert und damit nur kostenintensiv wartbar. Bei Änderungen ist meist eine hohe Abhängigkeit vom jeweiligen Softwarehersteller gegeben.

Gibt es Alternativen?

Um die Schwierigkeiten der Softwareentwicklung in den Griff zu kriegen, hat die Informatik in der Vergangenheit eine Vielzahl unterschiedlicher Ansätze entwickelt.

Das Softwareengineering strebt die systematische Verwendung von Methoden und Werkzeugen in Formvon Vorgehensmodellen für die arbeitsteilige, ingenieurmäßige Entwicklung von umfangreichen Softwaresystemen an. (1) Der Einsatz von Vorgehensmodellen zur Strukturierung der Vorgehensweise ist heute aus der Softwareentwicklung nicht mehr wegzudenken (Wasserfallmodell, Spiralmodell, Agile Softwareentwicklung, Extreme Programming, VModell, Rational Unified Process, etc.).

Die objektorientierte Entwicklung will die Flexibilität und Wiederverwendbarkeit von Softwareteilen fördern und verfolgt dabei die Grundidee, Daten und Funktionen, die auf diese Daten angewendet werden können, möglichst eng in Objekten zusammenzufassen und nach außen hin zu kapseln. (2) Die gängigen modernen Programmiersprachen der dritten Generation (Java, C++, C#, etc.) sind alle objektorientiert. Eine wichtige Rolle spielen in diesem Zusammenhang auch Entwurfsmuster (Design Patterns) und grafischeModellierungssprachen (etwa UML).  

Ansätze zur Lösung

Die Service Oriented Architecture (SOA) als aktuell relevanteste Ausprägung komponentenbasierter Entwicklung versucht, das Dilemma der Softwarekrise zu lösen, indem neue Anwendungen durch die Komposition von Services bestehender Anwendungsbausteine realisiert werden. (3) Die derzeit größten Probleme von serviceorientierten Architekturen liegen in der komplexen Administration der vielen Services, in der fehlenden Toolunterstützung und in der noch nicht ausgereiften Methodik zur Einführung einer SOA beziehungsweise zum Management von Services. Eine SOA konzentriert sich auf die Gesamtarchitektur (vor allemimUnternehmen) und weniger auf das einzelne IT-System.

Das Ziel der Model Driven Architecture (MDA) als aktuell relevanteste Ausprägung generativer Entwicklung ist die Steigerung der Entwicklungsgeschwindigkeit. Aus formal eindeutigen Modellen soll durch Generatoren automatisch Programmcode erzeugt werden. (4) Nachteilig ist der sehr hohe Abstraktionsgrad, der den Softwareentwicklern und den Nutzern abverlangt und in der Regel nicht erreicht wird. Die Formalisierung erfordert oft unangemessen hohe Aufwände während der Anforderungsanalyse und ist in der Regel nicht erreichbar. Weitere Ansätze, wie etwa die aspektorientierte Entwicklung sind teilweise vielversprechend, stecken derzeit aber noch in den Kinderschuhen.  

Software Development reloaded

Alle traditionellen Ansätze derWissenschaft, die Komplexität der Entwicklung von Software in den Griff zu bekommen, konzentrieren sich in ganz erheblichem Masse darauf, die Erstellung von Programmcode entweder zu vereinfachen oder zuverlässiger zu gestalten, und sind damit unterschiedlich erfolgreich.

Die Ansätze sind legitim und können einen gewissen Beitrag zur Verbesserung leisten.Man muss jedoch viel früher ansetzen und über Wege nachdenken, die Notwendigkeit der Erstellung von Code an sich zu minimieren, um der eigentlichen Komplexitätsfalle von vornherein auszuweichen. Standardsoftware hat den zentralen Vorteil, dass allgemeingültige Mechanismen durch einmalige, standardisierte Umsetzung einen hohen Grad an Reife, Qualität und Wiederverwendung erlangen können. Zu solchen allgemeingültigen Mechanismen zählen beispielsweise

  • Eingabe- und Suchfunktionalitäten,
  • Darstellungs- und Auswertungsfunktionalitäten,
  • Menü-, Navigations- und Berechtigungsstrukturen,
  • Steuerung von Abläufen und die
  • Verwaltung von Daten.

Die Allgemeingültigkeit kann jedoch individuellen Anforderungen an Daten und Abläufe nicht standhalten, es muss also ein Weg gefunden werden, die Vorteile von Standardsoftware (schnelle Verfügbarkeit, Reife und Qualität) mit den Vorteilen von Individualsoftware (Individualität) zu verbinden und dabei gleichzeitig die Nachteile beider zu vermeiden.

it_management_102008_seite18o.jpg

Der Hybridansatz

In einer hybriden Architektur, bei der gereifte, allgemeine Eingabe-, Verarbeitungs– und Ausgabemechanismen („EVA-Prinzip“)mit einemhohen Grad an individueller Konfigurabilität für spezielle fachliche Anforderungen kombiniert werden, kann man vom Besten aus beidenWelten profitieren. Im Prinzip folgt dieser Ansatz dem gleichen Grundgedanken wie eine Tabellenkalkulation, bei der man sich darauf beschränken kann, Formeln und Bezüge einzutragen, um ohne jegliche Programmierung sofort ein brauchbares Ergebnis zu erhalten. Software verwaltet Daten und unterstützt Abläufe. Die fachlichen Anforderungen in Geschäftsanwendungen werden in der Regel beschrieben, in dem die betroffenen Datenentitäten und Abläufe formalisiert und programmiert werden.

it_management_102008_seite18u.jpg

Die Datenentitäten und Abläufe lassen sich (alternativ zu einer Programmierung) jedoch auch mithilfe von Metadaten beschreiben, deren Interpretation man zur Laufzeit einer allgemeinen „EVA-Maschine“ überlassen kann. Anstatt wie bei anderen Verfahren Programmcode zu schreiben, werden bei diesem Ansatz die Daten und ihr Verhalten also abstrakt in strukturierten Metadaten beschrieben. Diese Metadaten
werden von einemuniversellen Softwaresysteminterpretiert. Es entsteht bei der Softwareentwicklung in diesem Ansatz für die Realisierung der fachlichen Anforderungen, also kein Programmcode, sondern ausschließlich strukturierte Metainformation, die sich auch
während der Nutzung eines System leicht modifizieren und erweitern lässt.

Die Praxis

Hört sich alles gut an, aber ist das nicht alles nur Theorie? Die IT lebt von innovativen Ideen und natürlich Produkten. In der Nucleus Suite sind genau die oben beschriebenen Vorteile eingeflossen. Es handelt es sich um ein universelles Softwaresystem, dass eine klare Trennung von technischer Basis („EVA-Maschine“) und Konfigurationsmechanismen zur Beschreibung konkreter fachlicher Anforderungenmithilfe von Metadaten etabliert. Damit kann der überwiegende Teil derGeschäftslogik einerApplikation dynamisch abgebildet werden. Die Involvierung eines Entwicklerteams für die Realisierung eines Softwaresystems nach Kundenanforderungen ist praktisch nicht mehr erforderlich.

it_management_102008_seite20.jpg

Die Erstellung eines individuellen Softwaresystems und die laufende Anpassung an sich ändernde Anforderungen kann durch Personen vorgenommen werden, deren Kompetenzen sich nicht mehr auf die Erstellung von Softwarecode erstrecken, sondern vor allem auf das Verständnis der fachlichen Anforderungen, prinzipiell sogar (unter Berücksichtigung organisatorischer Rahmenbedingungen imUnternehmen) durch den Nutzer selbst. Damit verbindet die Nucleus Suite die hohe Stabilität und Qualität von bereits gereiften, getesteten und komfortablen Softwarekomponenten mit vergleichsweise geringem Kosten- und Zeitaufwand (im Mittel etwa 30-40% Zeit- und Kostenersparnis) für die Realisierung. Komplexe Softwaresysteme, die bisher in Individualsoftwareprojekten mit einem Aufwand mehrerer Mannjahre entwickelt werden mussten, lassen sich so in einemBruchteil der Zeit realisieren, eine Stabilitätsphase nach Einführung beschränkt sich auf die Sicherstellung der korrekten Interpretation der fachlichen Anforderungen, nicht mehr auf die Qualität der Software selbst. 

Fazit

Mit dem Einsatz der Nucleus Suite werden die mit der Abwicklung großer Softwareprojekte verbundenen typischen Kosten und Risiken minimiert. Somit wird das Investitions- und Entscheidungsrisiko bezüglich einer Softwareeinführung erheblich verringert.

 

Vorteile im Überblick

Kurze Realisierungszyklen

Fachliche Anforderungen können praktisch unmittelbar in ein funktionierendes und komfortables Softwaresystemüberführtwerden. Eine iterative Fachkonzepterstellung ist sogar parallel zu einer bereits teilweisen Inbetriebnahme des Softwaresystems möglich und sinnvoll. 

Softwareänderungen zur Laufzeit

Die in Form von Metadaten hinterlegte Geschäftslogik kann grundsätzlich durch jede berechtigte Person, insbesondere auch zur Laufzeit,modifiziert werden. Innerhalb von Minuten können Abläufe verändert, Datenentitäten erweitert und Bildschirmmasken oder Auswertungen angepasst und so neue Anforderungen realisiert werden. Die Einschaltung eines Lieferanten ist dazu nicht mehr erforderlich, neue fachliche Anforderungen können sich lösgelöst von Releasezyklen im Unternehmen niederschlagen. 

Hohe Qualität und Stabilität

Die Entropie beziehungsweise das Chaos in konventioneller Software nimmt durch Fehlerbehebung undWeiterentwicklung grundsätzlich zu.
Anwendungssysteme, die auf der Nucleus Suite basieren, sind davon nicht betroffen. Eine Qualitätssicherung beschränkt sich auf die Prüfung der spezifischen Geschäftslogik und auf die Beschreibung der fachlichen Anforderungen. 

Einheitliches, komfortables Look & Feel

Die Anwendungssysteme verhalten sich einheitlich und erfüllen höchste Anforderungen an Komfort. Die Bedienoberfläche lässt sich in hohem Masse benutzerspezifisch konfigurieren. Der Schulungsbedarf nimmt ab, die Akzeptanz bei Nutzern steigt. 

Geringer Wartungsaufwand

Insbesondere wenn viele spezifische Anwendungssysteme realisiertwerden, sinkt der Wartungsaufwand überproportional und es entfällt die Notwendigkeit des Abschlusses von Wartungsverträgen mit unterschiedlichen Lieferanten. Die Anforderungen an die Qualifikation des Wartungspersonals sinkt, da sich die Wartung vieler Anwendungssysteme identisch gestaltet. Neuerungen in der Nucleus Suite werten unmittelbar alle Anwendungssysteme auf.
KLAUS RÖDER
[email protected]

 

 

 

 

 

 

 

 

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.