Inhalt

Software



Individualsoftware ist Software die für eine spezielle Anwendungssituation eigens entwickelt wurde. Standardsoftware, die in einem gewissen Maße allgemeingültig ist, ist Software die auf eine mehrfache Nutzung ausgelegt ist. ( gegebenenfalls nach einer entsprechenden Anpassung). Hierbei handelt es sich um funktionsbezogene Standardsoftware.

Da die Erfordernisse für betriebswirtschaftliche Anwendungssysteme in einem gewissen Maße ähnlich sind, ist heute in Unternehmen eine zunehmende Dominanz von Standardsoftware zu verzeichnen. Da jedoch in der konkreten Ausgestaltung in der Regel unternehmensspezifische Besonderheiten zu beachten sind, ergibt sich in der Praxis zumeist der Zwang zu einer aufwändigen Anpassung bzw. Konfiguration. Hier bieten Individuallösungen meist eine speziellere und genauere Anpassung an das Unternehmen die sich besser an ihr Unternehmen anpasst. Denn die Software sollte sich an Ihr Unternehmen anpassen und nicht das Unternehmen an die Software.

Datenbanksysteme bilden den zentralen Bestandteil typischer betrieblicher Anwendungssysteme. Auf Grund der Komplexität der Entwicklung umfangreicher Softwaresysteme ist eine Strukturierung und arbeitsteilige Organisation des Entwicklungsprozesses erforderlich. Auf Grund der oft Einmaligkeit einer konkreten Systementwicklung führt dies zu einer Organisation der Entwicklungsvorhaben als Projekt.

Software unterliegt in der Regel einem typischen Lebenszyklus. Dieser umfasst die gesamte Lebensdauer einer Software von der ersten Idee für die Konzeption bis hin zur Außerbetriebnahme oder Ablösung.

Im Rahmen unserer Softwareentwicklung verfolgen wir die Vorgehensweise wie sie in der folgenden Tabelle aufgeführt ist.


Tabelle zum Softwarelebenszyklus

Planung:

In der Planung werden auf Basis einer Problemanalyse die grundlegenden Anforderungen an ein Entwicklungsprojekt und eine hierauf basierende Grobplanung für die Umsetzung erarbeitet. Dem geht normalerweise eine Projektinitiierung voraus, in deren Rahmen in einem so genannten Lastenheft die wesentlichen funktionalen Anforderungen an die Software formuliert werden. Auf Basis des Lastenheftes wird unter Erhebung von Nutzerwünschen und -anforderungen eine Produktbeschreibung auf sowohl fachlicher als auch technischer Ebene entwickelt. Hierbei ist unter Berücksichtigung übergeordneter Ziele der Organisation die Umsetzung auf Basis technischer und wirtschaftlicher Kriterien zu bewerten. In diesem Rahmen können somit Wirtschaftlichkeitsuntersuchungen und Aufwandsschätzverfahren zur Anwendung kommen.

Anforderungsanalyse:

In der Anforderungsanalyse werden verbindliche Anforderungen an das Softwaresystem in einer Anforderungsspezifikation (Pflichtenheft) festgelegt. Dies umfasst einerseits eine detaillierte Erarbeitung fachlicher Anforderungen und einer einheitlichen Terminologie, was sich insbesondere auf die abzubildenden Funktionen und Prozesse sowie die zu Grunde liegenden Daten bezieht. In diesem Zusammenhang kann auch eine funktionale Definition der Benutzeroberfläche festgelegt werden. Andererseits sind die wesentlichen technischen Randbedingungen, Schnittstellen zu betroffenen Systemen sowie Qualitäts-- und Dokumentationsanforderungen festzulegen. Die Anforderungsspezifikation ist die Grundlage für die (späteren) Softwaretests. Weiterhin kann eine Detaillierung des Softwareentwicklungsprojektes erfolgen.

Entwurf:

Während des Entwurfes (Designs) wird die Softwarearchitektur festgelegt. Hierunter versteht man zum einen den statischen Aufbau (die Organisation) eines Softwaresystems aus Modulen (Komponenten) mit definierten Schnittstellen einschließlich ihrer (Verwendungs-)Beziehungen. Zum anderen werden im Systementwurf die für die Implementierung zu verwendenden Mechanismen und Techniken erarbeitet (bis hin zur Entwicklung wesentlicher Algorithmen und Datenstrukturen). Die Entwurfsentscheidungen sind hinsichtlich ihrer Auswirkungen auf Eigenschaften wie u. a. Erweiterbarkeit, Wiederverwendbarkeit und Effizienz abzuwägen. Bei komplexen Projekten wird der Entwurf häufig in zwei aufeinanderfolgende Phasen unterteilt. Im Grobentwurf werden hierbei die wesentlichen Entwurfsprinzipien festgeschrieben, während im Feinentwurf die detaillierte Beschreibung des Systems entwickelt wird. Alternativ kann in einen fachlichen und einen implementierungstechnischen Entwurf unterschieden werden. Der Entwurf mündet in einer Entwurfsspezifikation. In diesem Rahmen sind auch der Testplan zu konkretisieren sowie gegebenenfalls ein Integrationsplan zu entwickeln.

Implementierung:

Die Implementierung umfasst die eigentliche Erstellung (Programmierung) der Software. Das heißt, der Systementwurf wird in Programmcode umgesetzt. In diesem Rahmen können verschiedene Softwarewerkzeuge wie Programmierumgebungen bzw. CASE-Tools zum Einsatz kommen. Im Idealfall können Teile des Systementwurfes automatisiert in Programmcode übersetzt werden, wodurch eine Entsprechung von Entwurf und Implementierung unmittelbar gewährleistet ist. Im Sinne eines integrativen Qualitätsmanagements sind bereits während der Implementierung (gegebenenfalls isolierte) Tests der entwickelten Komponenten vorzunehmen. Im Hinblick hierauf und die nachfolgende Wartung und Pflege ist die Implementierung zweckmäßig zu dokumentieren.

Test, Integration und Einführung:

Bevor ein Softwareprodukt (bzw. eine neue Version) real eingesetzt werden kann, ist die Korrektheit gemäß der Anforderungsspezifikation zu überprüfen (Verifikation). Da hierfür im praktischen Umfeld nur sehr eingeschränkt effektive analytische Methoden existieren, erfolgt dies insbesondere auf Basis experimenteller Tests. Im einfachsten Fall erfolgt eine Überprüfung der durch die Software erzielten Ergebnisse mit vordefinierten Testfällen (auf Basis erwarteter Ein-/Ausgabe-Kombinationen unter Berücksichtigung von Realdaten). Hiermit können in der Regel jedoch nur Fehler aufgedeckt, nicht aber die Korrektheit im Sinne einer Fehlerfreiheit nachgewiesen werden. Da die Korrektheit eines Softwaresystems nur im Zusammenspiel aller beteiligten (Teil-)Systeme entsprechend der späteren Anwendungsumgebung beurteilt werden kann, ist nach Tests einzelner Komponenten bzw. (Teil-)Systeme und einer (sukzessiven) Integration auch das Gesamtsystem zu überprüfen. Zweckmäßigerweise untergliedert man den entsprechenden Integrationsprozess hierarchisch und bewertet sukzessive komplexere (Teil-)Systeme. Systemtests umfassen neben der Überprüfung der fachlichen Anforderungen auch sekundäre Qualitätseigenschaften wie etwa Effizienz und Portabilität. Vor der letztendlichen Einführung ist weiterhin zu überprüfen, ob die entwickelte Software für ihren vorgesehenen praktischen Einsatz geeignet ist (Validation/Validierung), wodurch letztlich die Anforderungsspezifikation selbst Gegenstand der Kontrolle ist. Eine nicht erfolgreiche Validation kann darauf hindeuten, dass die Anforderungen nicht korrekt erfasst wurden bzw. sich die Anforderungen inzwischen geändert haben. Die Verifikation und die Validation bilden die Basis für die Abnahme der Software. Vor der Einführung sind weiterhin System- und Nutzerdokumentationen abschließend zu erstellen sowie gegebenenfalls Nutzerschulungen zu konzipieren und ein Migrationskonzept zur Ersetzung von Altsystemen und zur Eingliederung in die Anwendungssystemumgebung zu entwickeln.

Wartung und Pflege:

Im Verlauf der realen Nutzung der Software werden in der Regel Fehler festgestellt. Die fortlaufende Durchführung entsprechend notwendiger Korrekturen des Softwaresystems nach Inbetriebnahme bezeichnet man als Wartung. Unter Pflege versteht man dagegen die (geringfügige) Anpassung der Software an veränderte bzw. erweiterte Anforderungen. Anpassungen können etwa aufgrund neuer Nutzerwünsche, gesetzlicher Neuerungen oder Änderungen der Systemumgebung notwendig werden. Wartung und Pflege führen zu neuen Versionen (Releases) einer Software. Vor der Einführung einer neuen Version ist diese im Sinne einer umfassenden Qualitätssicherung zu testen.

entnommen aus: Fink, Schneidereit, Voß "Grundlagen der Wirtschaftsinformatik" (2005)