Start | Inhalt | Weiter | Zurück |
Kapitel 5 (b)
5.1 Traditionelle Softwareentwicklung
Die traditionelle Entwicklung proprietärer Software in Unternehmen ist historisch gewachsen. Mit dem zunehmenden Einfluß der Softwareindustrie auf die Weltwirtschaft erarbeiteten Kenner der Materie wie Brooks [34] und Balzert [35] Verfahren zur effizienten Softwareentwicklung. Betriebswirtschaftler und Marketingexperten ergänzten diese eher technischen Ausführungen um ökonomische, finanzielle und strategische - in einem Wort: unternehmerische - Aspekte zu einem vollständigen Konzept.
Doch dieses Konzept stellt nur einen Teil des Schlüssels der traditionellen Softwareentwicklung dar, der zum Ziel eines jeden Unternehmens führen soll: der Profitmaximierung und Marktführung. Der andere Teil liegt darin, die Ideen, die Struktur, das gesamte Fundament der erstellten Software - also den ihr zugrundeliegenden Quelltext - als geistiges Eigentum geheimzuhalten, um einen Wettbewerbsvorteil zu ergattern. Bis heute erfreut sich dieses Modell größter Beliebtheit.
Zur Umsetzung eines solchen Modells in die Praxis werden in Softwarefirmen finanzielle und personelle Ressourcen benötigt. Organisation und Koordination geschehen durch Manager, Abteilungs- oder Projektleiter, die mehr oder weniger hierarchisch den Entwicklern und Ingenieuren übergeordnet sind. Je nach Größe des Projekts werden weitere, spezialisierte Teams gebildet, die bestimmte Aufgaben übernehmen, beispielsweise ein Client- und ein Server-Team.
Relativ losgelöst davon agiert eine Marketingabteilung für Öffentlichkeitsarbeit, Marktforschung, Umfragen, Analysen, Werbung etc. Release- oder Produktmanager kümmern sich um den zukünftigen Werdegang des Produkts und entscheiden, welche Features in die nächste Version eingebaut und welche der gefundenen Fehler beseitigt werden. In Audits und anderen Versammlungen werden Ergebnisse ausgetauscht sowie meist kurz- oder mittelfristige Planungen vorgenommen.
Diese organisatorische Struktur ist in ihrem Kern in den meisten Softwarefirmen wiederzufinden. Sie wird an die unterschiedlichen Unternehmensprozesse, -philosophien und -hierarchien angepaßt. Zwar arbeitet im allgemeinen eine Firma, die Standardsoftware erstellt, anders als eine, die Individualsoftware entwickelt, insbesondere im Vertrieb, aber das Grundprinzip zur Entwicklung erfolgreicher, proprietärer Software ist überall gleich.
Neben dem Marketing ist die Softwaretechnik das Standbein dieses Prinzips. Obwohl in den Standardwerken der Softwaretechnik unterschiedliche Sichten auf das Produkt Software beschrieben und verschiedene, optimierte Verfahren dargelegt werden, so tauchen doch in jedem die fundamentalen Prozesse der Softwareentwicklung in irgendeiner Weise auf:
-
Marktanalyse
-
Planung
-
Definition
-
Entwurf
-
Implementierung
-
Integration
-
Test
-
Support
Die Marktanalyse beinhaltet bereits den Teil des Marketings eines Softwareunternehmens, der der Erstellung der Software vorausläuft. Hier wird die Produktkategorie ermittelt und bezüglich des Markts und der dort befindlichen Konkurrenz bewertet. Die anvisierten Kunden werden im Hinblick auf deren Bedürfnisse untersucht. Durch Forschungsergebnisse, Trendstudien und Umfragen können eventuell Marktlücken gefunden werden, in denen sich keine oder nur wenig Konkurrenz aufhält, aber trotzdem ein potentieller Kundenstamm erschlossen werden kann. Meist werden die Ergebnisse dieser Aktivitäten in Dokumenten festgehalten, die eine Ausgangsbasis für die nächsten Schritte der Softwareentwicklung bilden.
In der Planungsphase werden die ersten groben Hauptanforderungen festgelegt. Die softwaretechnische Realisierbarkeit (Personal, Material, Finanzen) wird anhand einer Durchführbarkeitsstudie überprüft. Zusammen mit einer Aufwandsschätzung erhält man erste terminliche, quantitative und finanzielle Eckdaten des Projekts.
Exaktere Anforderungen an das zu entwickelnde System werden in der Definitionsphase aufgestellt. Verbale Beschreibungen und Analysen von Zielbestimmung, Produkteinsatz, -umgebung, -funktionen und -leistungen sowie grobe Anhaltspunkte für die Benutzungsoberfläche, Schnittstellen und Testfälle gehen in das Pflichtenheft ein. Basiskonzepte wie das Entity-Relationship-Modell, das Datenfluß- oder Klassendiagramm visualisieren Komponenten des Systems und ihre Zusammenhänge. Hier wird definiert, "was" das Produkt ist. "Was" ist zu entwickeln?
In der Entwurfsphase findet detailliertes Design hinsichtlich der technischen Umsetzung statt. Aus den Anforderungen muß unter Berücksichtigung von Umgebungs- und Randbedingungen ein Softwareprodukt entstehen. Deshalb müssen Grundsatzentscheidungen zur Datenhaltung, Benutzeroberfläche und Architektur getroffen werden. Dazu gehört auch die Spezifikation von Schnittstellen und anderen Systemkomponenten sowie deren Funktions- und Leistungsumfang. Der Entwurf umfaßt das "Wie" des Produkts. "Wie" ist es zu entwickeln?
In der Implementierung werden die Ergebnisse des Entwurfs in einer Programmiersprache niedergeschrieben. Die Spezifikationen der einzelnen Systemmodule werden technisch realisiert und schrittweise verfeinert. Je exakter und besser die vorhergehenden Phasen durchlaufen wurden, umso kürzer dauert die Implementierungsphase.
Die Integration wird oftmals als Teil der Implementierung angesehen, hat aber eigene charakteristische Merkmale. Alle Teilkomponenten werden zu einer Software zusammengefaßt, die in eine bestehende Systemumgebung integriert wird. Sichergestellt wird dies durch ein Installationsverfahren und meist automatisierte Konfiguration und Administration in Form von Skripten.
Einen abschließenden Test des gesamten Systems, dem natürlich zahllose Einzeltests in den früheren Phasen vorangegangen sind, führt häufig eine eigene Abteilung für Qualitätssicherung durch. Mit Hilfe von Testverfahren und -protokollen können Fehler identifiziert und beschrieben werden, die dann von den Programmierern behoben werden. Erreicht die Software eine nach Maßstäben des Unternehmens zufriedenstellende Stabilität, erhält sie die Freigabe.
Der Support fällt - je nachdem, ob es sich um eine Standard- oder Individualsoftware handelt - unterschiedlich aus. In der Regel kann der Anwender einer Standardsoftware nur Support vom Hersteller in Form von Benutzerhilfe oder Fehlervermeidung in Anspruch nehmen. Gröbere Fehler und Tips zu ihrer Beseitigung werden häufig in Datenbanken im Internet zur Verfügung gestellt. Individuelle Erweiterungswünsche sind mit erheblichen zusätzlichen Kosten verbunden.
Für Firmen individuell erstellte Software hingegen wird fast immer von tiefgreifenderer technischer Unterstützung begleitet, falls diese vorher in Verträgen festgehalten wurde. Wartung und Pflege des Systems beim Kunden und Schulungen der Anwender sind der Großteil des Services. Änderungs- und Erweiterungswünsche werden eingeholt und nach Machbarkeits- und Aufwandsabschätzung durchgeführt.
Auch wenn hier die Entwicklung einer Software in scheinbar klar definierte Phasen zerfällt, so sind diese im allgemeinen nie eindeutig abgegrenzt und chronologisch durchführbar. Rückkopplungen zu vorhergehenden Arbeitsabschnitten sind notwendig und nützlich zur Fehlerfindung. Tests und ständiges Dokumentieren begleitet die Software von ihrer Idee bis zu ihrem Tod. Aber es kann doch festgehalten werden, daß die traditionelle Softwareentwicklung ein exakt geplanter Prozeß ist, der wegen der klar umrissenen Unternehmensziele wenig Spielraum für Kursänderungen läßt und in vielen Fällen nicht nur kreative Entfaltung behindert, sondern auch die Kundenbedürfnisse vernachlässigt.
Verfolgt man den Weg der Software nach ihrer Entwicklung im Unternehmen weiter, so sind verschiedene Vertriebsformen zu erkennen, über denen das Produkt zum Kunden/Anwender gelangt. Bei individueller Software ist dieser Weg sehr kurz. Vom Hersteller geht sie meist in Form einer oder mehrerer CD-ROMs an den Auftraggeber. Bei Standardsoftware aber können Händler zwischengeschaltet sein, die die Software an den Endverbraucher verkaufen, aber immer als binäres, ausführbares Datenpaket ohne den Quelltext. Das Internet als Vertriebsweg drängt die Händler und Verkäufer aber mehr und mehr in den Hintergrund. Der Direktvertrieb der Hersteller, die ihr Produkt zum Download mit E-Commerce als elektronisches Bezahlungssystem anbieten, wird beliebter. Updates und Patches werden häufig ausschließlich in dieser Form - aber dann meist kostenlos - angeboten.
Stetige Verbesserungen dieser Prozesse sind nur ein Teilstück des Wegs zum Erfolg eines Herstellers proprietärer Software. Der Knackpunkt ist - und hier liegt der wesentliche Unterschied zur freien Software -, daß sie unter ein strenges Copyright gelegt wird, welches sie als geistiges Eigentum des Unternehmens schützen soll. Verbote von Vervielfältigung, Weiterverbreitung und Modifizierung sind direkte Auswirkungen eines solchen Urheberrechts. Zur Festigung der Marktposition werden aber weitere Strategien hinzugezogen, zu denen auch die Patentierung von Algorithmen oder anderen Softwarekomponenten und die Entwicklung von nicht-offenen Standards und Dateiformaten gehören.
Ökonomische und soziale Vorteile dieses Modells sind die Schaffung von Arbeitsplätzen und Stärkung der Wirtschaft. Es kann aber auch als sicher gelten, daß der Aufschwung und die dominierende Marktposition eines Unternehmens konkurrierende Firmen stark schwächt, möglicherweise Innovation verhindert und somit nicht nur in wirtschaftlicher, sondern auch in technischer Hinsicht destruktiv wirkt. Hier greift das Kartellamt ein, das in der Informations- und Kommunikationsindustrie schon einige Male einschreiten mußte (AT&T, IBM, Microsoft).
Konzentriert man sich aber wieder auf die traditionelle Softwareentwicklung an sich, so sind zusammenfassend die Merkmale
-
Marktorientierung
-
straffe, meist hierarchische Organisation/Projektmanagement
-
isolierte/geschlossene Entwicklung
vorzufinden. Dieses Modell bezeichnet Eric Raymond, der Präsident der Open Source Initiative, als das geschlossene Kathedralen-Modell [13].
Start | Inhalt | Weiter | Zurück |
Kommentare, Anregungen, Berichtigungen, Verbesserungsvorschläge oder anderes Feedback an info@dbus.de