Softwareentwicklung in jungen Internetunternehmen
Anforderungen an Entwicklungsprozesse und Architekturdesign
- Art: Diplomarbeit
- Autor: Martin Zihla
- Abgabedatum: Juli 2007
- Umfang: 116 Seiten
- Dateigröße: 687,9 KB
- Note: 1,3
- Institution / Hochschule: Universität Duisburg-Essen, Standort Essen Deutschland
- Bibliografie: ca. 110
- ISBN (eBook): 978-3-8366-1305-7
- ISBN (Buch): 978-3-8366-6305-2
- Sprache: Deutsch
- Prämierung:
- Arbeit zitieren: Zihla, Martin Juli 2007: Softwareentwicklung in jungen Internetunternehmen, Hamburg: Diplomica Verlag
- Schlagworte: E-Business, Softwareentwicklung, Entwicklungsprozess, Architekturdesign, Internet-Startups
In den Warenkorb
48,00 €
Diplomarbeit von Martin Zihla
Einleitung:
Auch heute stellt die Entwicklung von Software noch eine Herausforderung dar. Obwohl es zahlreiche Methoden gibt, die sich mit der Gestaltung eines optimalen Entwicklungsprozesses befassen, existiert noch kein universell einsetzbares Vorgehensmodell. Das Aufkommen der als agil bezeichneten Methoden der Softwareentwicklung hat darüber hinaus eine Diskussion über die korrekte Vorgehensweise bei der Entwicklung von Software angeregt. Junge Internetunternehmen müssen sich folglich nicht nur mit dem komplexen Gebiet des Software Engineering auseinander setzen, sondern sind auch den Einflüssen durch die schnelllebige Net Economy ausgesetzt. Dadurch sehen sie sich einer besonderen Herausforderung gegenüber.
Die zentrale Frage im Hinblick auf die Gestaltung des Entwicklungsprozesses ist somit nicht nur die durch Hruschka gestellte: „Wie viel ist ausreichend und wo beginnt die bürokratische Übertreibung?“ Für junge Internetunternehmen gilt es darüber hinaus zu ergründen, was in ihrer speziellen Situation und unter den gegebenen finanziellen und personellen Rahmenbedingungen überhaupt realisierbar und wirtschaftlich sinnvoll ist. Aus Sicht der Wirtschaftsinformatik ist diese Fragestellung interessant, da sie die Frage nach einer optimalen Vorgehensweise bei der Entwicklung von Internetanwendungen mit der Frage nach dem wirtschaftlichen Sinn der Realisierung einer solchen Vorgehensweise in Gründungsunternehmen verknüpft.
Die Situation von jungen Internetunternehmen lässt die Möglichkeit der sinnvollen Anwendung von wissenschaftlichen Erkenntnissen über die Entwicklung von Software auf die eigenen Projekte oftmals als fraglich erscheinen. Allein die in der Regel kleinen Teams lassen viele Methoden als völlig überdimensioniert erscheinen. Die regelmäßige, enge Zusammenarbeit zwischen den Gründern eines Internetunternehmens gibt zudem häufig Anlass zum Zweifel daran, ob die Formalisierung des Entwicklungsprozesses wirklich einen Mehrwert bietet. Obwohl die agilen Methoden der Softwareentwicklung hauptsächlich für kleine bis mittelgroße Teams entworfen wurden, ist ihre Anwendbarkeit in jungen Internetunternehmen zu hinterfragen, da auch diese Methoden grundlegende Annahmen über die Situation, in der ein Softwareprojekt durchgeführt wird, treffen.
Gang der Untersuchung:
Es gilt folglich zu untersuchen, was die spezielle Situation von Gründungsunternehmen in der Net Economy ausmacht und welche Implikationen sich hieraus für den Entwicklungsprozess und das Architekturdesign ergeben. Um dies zu ermöglichen erfolgt in Kapitel 2 eine Betrachtung der Net Economy, wobei auf die grundlegenden Merkmale dieser sowie auf die spezielle Situation der Gründungsunternehmen eingegangen wird. In Kapitel 3 werden die unterschiedlichen Ansätze des Software Engineering beschrieben, wobei schwerpunktmäßig die Unterschiede zwischen den agilen und den planungsgetriebenen Methoden der Softwareentwicklung betrachtet werden. Weiterhin erfolgt eine Betrachtung des Web Engineering, welches hauptsächlich die Charakteristika von Web-Anwendungen und die sich aus ihnen ergebenden Anforderungen an einen Entwicklungsprozess untersucht.
Die Rolle des Architekturdesigns und der Softwarearchitektur im Entwicklungsprozess wird in Kapitel 4 beschrieben. In Kapitel 5 wird der Versuch unternommen, aufbauend auf bereits bestehenden Ansätzen zur Klassifikation von Softwareprojekten, ein Projektframework speziell für Gründungsunternehmen in der Net Economy zu entwerfen. Ziel des Frameworks ist es, Projekte in jungen Internetunternehmen anhand von passenden Unterscheidungsmerkmalen besser voneinander abgrenzen zu können.
Aus den im Rahmen des Frameworks identifizierten Projektmerkmalen sowie den Erkenntnissen aus den vorherigen Kapiteln werden in Kapitel 6 Anforderungen an das Architekturdesign und den Entwicklungsprozess formuliert. In Kapitel 7 folgt ein abschließendes Fazit sowie ein Ausblick auf die weitere Vorgehensweise im Hinblick auf die in dieser Arbeit formulierten Anforderungen.
Inhaltsverzeichnis:
| Abbildungsverzeichnis | IV | |
| Tabellenverzeichnis | V | |
| 1. | Einführung und Motivation | 1 |
| 2. | Net Economy | 2 |
| 2.1 | Definitionen | 2 |
| 2.1.1 | Net Economy | 2 |
| 2.1.2 | E-Business | 3 |
| 2.1.3 | Junge Internetunternehmen | 3 |
| 2.2 | Die Entwicklung der Net Economy | 4 |
| 2.3 | Die elektronische Wertschöpfung | 4 |
| 2.4 | Das Unternehmensumfeld in der Net Economy | 7 |
| 2.4.1 | Das technologische Umfeld | 7 |
| 2.4.1.1 | Die digitale Revolution | 8 |
| 2.4.1.2 | Transparenz | 9 |
| 2.4.2 | Das ökonomische Umfeld | 9 |
| 2.4.2.1 | Intensivierung des Wettbewerbs | 9 |
| 2.4.2.2 | Zunahme des Virtualisierungsgrades | 10 |
| 2.4.3 | Das soziale Umfeld | 10 |
| 2.4.4 | Das politische Umfeld | 11 |
| 2.5 | Wettbewerbsvorteile in der Net Economy | 12 |
| 2.5.1 | Anpassungsfähigkeit | 12 |
| 2.5.2 | First Mover Advantage | 13 |
| 2.5.3 | Informationen als Wettbewerbsvorteil | 13 |
| 2.5.4 | Das Alleinstellungsmerkmal | 14 |
| 2.6 | Sondersituation Unternehmensgründung | 14 |
| 2.6.1 | Gründungsablauf | 15 |
| 2.6.2 | Merkmale von Gründungsunternehmen | 16 |
| 2.7 | Zusammenfassung | 17 |
| 3. | Ansätze des Software Engineering | 18 |
| 3.1 | Definitionen | 20 |
| 3.1.1 | Entwicklungsprozess | 20 |
| 3.1.2 | Software Engineering | 21 |
| 3.2 | Planungsgetriebene Softwareentwicklung | 22 |
| 3.2.1 | Das klassische sequenzielle Phasenmodell | 23 |
| 3.2.2 | Evolutionäre Prozessmodelle | 24 |
| 3.2.3 | Inkrementelle Prozessmodelle | 26 |
| 3.2.4 | Rational Unified Process | 27 |
| 3.3 | Agile Softwareentwicklung | 30 |
| 3.3.1 | Das Agile Manifest | 30 |
| 3.3.2 | Die Prinzipien der agilen Softwareentwicklung | 31 |
| 3.3.3 | Der Faktor Mensch | 33 |
| 3.3.4 | Einfachheit | 34 |
| 3.3.5 | Änderungskosten | 36 |
| 3.3.5 | Grenzen | 38 |
| 3.3.6 | Beispiele für agile Methoden | 39 |
| 3.4 | Web Engineering | 41 |
| 3.4.1 | Charakteristika von Web-Anwendungen | 42 |
| 3.4.2 | Ansätze des Web Engineering | 44 |
| 4. | Softwarearchitektur | 46 |
| 4.1 | Architekturdesign | 46 |
| 4.2 | Einflüsse auf die Softwarearchitektur | 47 |
| 4.2.1 | Organisatorische Einflussfaktoren | 48 |
| 4.2.2 | Technologische Faktoren | 49 |
| 4.2.3 | Produktfaktoren | 49 |
| 4.2.4 | Zusammenfassung | 50 |
| 4.3 | Kriterien für einen korrekten Architekturentwurf | 51 |
| 4.4 | Architekturmuster | 52 |
| 4.4.1 | Die Client/Server-Architektur | 52 |
| 4.4.2 | Die 3-Schichten-Architektur | 53 |
| 4.4.3 | Service-Orientierte Architekturen (SOA) | 53 |
| 4.4.4 | REpresentational State Transfer (REST) | 54 |
| 4.5 | Modellierungsziele einer Softwarearchitektur | 55 |
| 5. | Internetprojekte in Gründungsunternehmen | 57 |
| 5.1 | Definition Internetprojekt | 57 |
| 5.2 | Traditionelle Projekteigenschaften | 57 |
| 5.2.1 | Der Projektumfang | 58 |
| 5.2.2 | Die Projektdauer | 59 |
| 5.2.3 | Die Projektbesonderheit | 59 |
| 5.2.4 | Die Projektkomplexität | 59 |
| 5.2.5 | Die Projektschwierigkeit | 60 |
| 5.2.6 | Die Projektbedeutung | 60 |
| 5.2.7 | Das Projektrisiko | 60 |
| 5.2.8 | Die Projektkosten | 60 |
| 5.2.9 | Die Projektkontinuität | 61 |
| 5.2.10 | Die Projektintensität | 61 |
| 5.2.11 | Der Abhängigkeitsgrad | 61 |
| 5.2.12 | Zusammenfassende Betrachtung der Eignung traditioneller Projekteigenschaften | 61 |
| 5.3 | Existierende Ansätze zur Klassifikation von Softwareprojekten | 62 |
| 5.3.1 | Die Crystal Methodenfamilie (Cockburn) | 62 |
| 5.3.1.1 | Kommunikationsaufwand | 63 |
| 5.3.1.2 | Kritikalität | 64 |
| 5.3.1.3 | Projektprioritäten | 65 |
| 5.3.1.4 | Zusammenfassung | 65 |
| 5.3.2 | Der Polar Chart (Boehm/Turner) | 65 |
| 5.3.2.1 | Personnel (Fähigkeit der Entwickler) | 70 |
| 5.3.2.2 | Dynamism (Dynamik) | 71 |
| 5.3.2.3 | Culture (Unternehmenskultur) | 71 |
| 5.3.2.4 | Customer Involvement (Kundeneinbindung) | 71 |
| 5.3.2.5 | Team distribution (Verteilung des Teams) | 72 |
| 5.3.2.6 | Zusammenfassung | 72 |
| 5.3.3 | Die Houston Matrix (Little) | 72 |
| 5.3.3.1 | Domain knowledge gaps (Geschäftserfahrung) | 75 |
| 5.3.3.2 | Market uncertainty (Unsicherheit durch den Markt) | 75 |
| 5.3.3.3 | Technical uncertainty (Unsicherheit durch die Technik) | 76 |
| 5.3.3.4 | Zusammenfassung | 76 |
| 5.4 | Eigenschaften von Internetprojekten | 77 |
| 5.4.1 | Die Anzahl der beteiligten Personen | 79 |
| 5.4.2 | Die räumliche Verteilung des Teams | 80 |
| 5.4.3 | Die Fähigkeiten der Entwickler | 81 |
| 5.4.4 | Das Verhältnis zum Kunden | 81 |
| 5.4.5 | Die Unsicherheit durch Technik | 82 |
| 5.4.6 | Die Unsicherheit durch den Markt | 83 |
| 5.4.7 | Der Abhängigkeitsgrad des Projektes | 84 |
| 5.4.8 | Das Domänenwissen der Entwickler | 85 |
| 6. | Softwareentwicklung in jungen Internetunternehmen | 87 |
| 6.1 | Anforderungen an das Architekturdesign | 87 |
| 6.1.1 | Beachtung des Client/Server Paradigmas | 89 |
| 6.1.2 | Ausrichtung auf die Entwicklerfähigkeiten | 90 |
| 6.1.3 | Evaluation der technischen Möglichkeiten | 90 |
| 6.1.4 | Fokus auf nichtfunktionale Kernanforderungen | 91 |
| 6.1.5 | Unsicherheiten beachten | 91 |
| 6.1.6 | Beachtung von Entwurfskriterien | 91 |
| 6.1.7 | Validation der Softwarearchitektur | 91 |
| 6.1.8 | Verfügbarkeit | 92 |
| 6.1.9 | Aktualität | 92 |
| 6.2 | Anforderungen an den Entwicklungsprozess | 92 |
| 6.2.1 | Iterativ und Inkrementell | 93 |
| 6.2.2 | Ausrichtung auf das Architekturdesign | 94 |
| 6.2.3 | Ständige Anpassung | 94 |
| 6.2.4 | Berücksichtigung der Teamgröße | 95 |
| 6.2.5 | Berücksichtigung der Verteilung des Teams | 96 |
| 6.2.6 | Ausrichtung auf die Entwicklerfähigkeiten | 97 |
| 6.2.7 | Einbindung des Kunden | 97 |
| 6.2.8 | Berücksichtigung von Unsicherheitsfaktoren | 98 |
| 6.2.9 | Berücksichtigung von Abhängigkeiten | 98 |
| 6.2.10 | Berücksichtigung des Domänenwissens der Entwickler | 98 |
| 7. | Zusammenfassung und Ausblick | 100 |
| Literaturverzeichnis | 103 |
Textprobe:
Kapitel 3.3.3, Der Faktor Mensch:
Der Faktor Mensch ist ein zentraler Bestandteil der agilen Methoden. Selbstorganisierende Teams, das Streben nach technischer Exzellenz sowie nach der fortschreitenden Verbesserung der eigenen Effektivität verlangen nach fähigen und motivierten Entwicklern. Nach Hruschka „(...) sind hoch motivierte, selbstständige, gut ausgebildete Projektteams, die dann aufgrund ihrer Erfahrungen situationsgerecht richtig entscheiden können, wie die Ziele effizient erreicht werden [eine der wesentlichen Voraussetzungen für die Anwendung agiler Prinzipien].“ Er konstatiert weiterhin: „Agilität setzt also nicht nur auf mutige, engagierte Mitarbeiter, sondern vor allem auch auf mutige, charismatische Führungspersönlichkeiten.“ Dies kann allerdings auch ein einschränkender Faktor sein. So stellt Constantine etwa kritisch fest: „There are only so many Kent Becks in the world to lead the team. All of the agile methods put a premium on having premium people (...).“ Die Fähigkeit der Entwickler ist also ein zentraler Erfolgsfaktor bei der Anwendung agiler Methoden. Um die Fähigkeiten bezüglich des Einsatzes von Entwicklungsmethoden zu beschreiben, leitet Cockburn von den drei Verständnisebenen des Aikido (Shu-Ha-Ri) drei Ebenen des Verständnisses für Softwareentwicklungsmethoden ab.148 Diese werden von Boehm/Turner angepasst, um sie sowohl für agile als auch für planungsgetriebene Methoden einsetzen zu können:
Level 3: Der Entwickler ist in der Lage, eine Methode zu überarbeiten und an neue, noch nie da gewesene Situationen anzupassen.
Level 2: Der Entwickler kann eine Methode an eine neue Situation anpassen (Präzedenzfall vorhanden).
Level 1A: Nach einem Training ist der Entwickler dazu in der Lage, stark vom eigenen Ermessen abhängige Methodenschritte (bspw. die Anpassung von user stories an Inkremente) durchzuführen. Mit zunehmender Erfahrung ist ein Aufstieg auf Level 2 möglich.
Level 1B: Nach einem Training ist der Entwickler dazu imstande, prozedurale Methodenschritte durchzuführen (z.B. eine simple Methode zu programmieren oder Programmierstandards einzuhalten).
Level -1: Der Entwickler besitzt evtl. technische Fähigkeiten, ist aber weder zur Zusammenarbeit mit anderen Entwicklern noch zur Verwendung einer Methodik bereit.
Nach Boehm/Turner können Level 1B Entwickler gut in Teams eingesetzt werden, die eine planungsgetriebene Methode verwenden und in einem stabilen Umfeld operieren. Ein Team das auf agile Methoden setzt und sich mit einer unsicheren und instabilen Situation konfrontiert sieht, kann jedoch durch 1B Entwickler verlangsamt werden. Projekte mit agilen Methoden können gut von Level 1A Entwicklern durchgeführt werden, wenn genügend Level 2 Entwickler vorhanden sind, um diese zu führen. Die Notwendigkeit, mindestens einen Level 2 (oder höher) Entwickler im Projektteam zu haben, wird auch von Cockburn betont. Level 2 Entwickler können, ebenso wie solche auf Level 3, für das Management agiler oder planungsgetriebener Teams gleichermaßen gut eingesetzt werden. Zusammenfassend kann gesagt werden, dass agile Methoden sich am besten einsetzen lassen, wenn die Entwickler zum Großteil mindestens Level 1A erreicht haben. Planungsgetriebene Methoden können hingegen im späteren Projektverlauf auch gut mit vielen Level 1B Entwicklern funktionieren.
Einfachheit:
Einer der Hauptunterschiede zwischen den traditionellen, planungsgetriebenen und den agilen Ansätzen der Softwareentwicklung ist der Umfang und der Detailgrad der Methoden. Traditionelle Methoden haben oft sehr detaillierte Vorgaben für Rollen, Aktivitäten, Prozesse, Techniken und Werkzeuge. Agile Methoden hingegen setzen auf minimale Prozesse, Dokumentation und Formalitäten. Das Hauptziel der agilen Methoden besteht darin, funktionierende Software zu liefern, die den Kunden zufrieden stellt. Dabei gilt es allerdings auch das Nebenziel zu beachten: Die Software muss auch in Zukunft wart- und anpassbar sein. Hierbei besteht die Schwierigkeit darin festzulegen, wie viel Zusatzaufwand nötig ist, um dieses Nebenziel zu erreichen. Nach Hruschka ist deshalb eine der Hauptfragen beim Einsatz agiler Methoden: „Wie viel ist ausreichend und wo beginnt die bürokratische Übertreibung?“ Er schlägt vor, dass das Vorgehensmodell zur Erreichung der Ergebnisse „gerade eben ausreichend sein“ soll. Cockburn benutzt dafür die Bezeichnung „barely sufficient“ und betont, dass dies nicht nur im Hinblick auf das Hauptziel (laufende Software), sondern auch für die Erreichung des Nebenziels gilt. Der Ansatzpunkt bei vielen agilen Methoden ist es, lediglich einige wenige zu Grunde liegende Regeln vorzugeben. Diese Regeln beschreiben allerdings nicht alles, was in einem Softwareentwicklungsprojekt getan werden muss. Die Idee hinter diesem Vorgehen liegt vielmehr darin, dass die zugrunde liegenden Regeln immer eingehalten werden müssen. Aufbauend auf diesen Regeln sollen, wenn nötig, im Laufe des Projekts Erweiterungen vorgenommen werden. Highsmith verweist hier auf die Erforschung komplexer adaptiver Systeme.157 Diese zeichnen sich u.a. durch das emergente komplexe Verhalten eines Systems auf der Basis von einfachen Regeln für die Interaktion zwischen seinen Individuen aus.
Einfachheit ist aber nicht nur das Ziel im Hinblick auf die Gestaltung des Projektmodells, sondern auch im Hinblick auf das Design der Software. Traditionelle Projektmodelle setzen oft auf eine ausgedehnte Designphase vor dem eigentlichen Beginn der Programmierung. Dies wird oft auch als „Big Design Up Front“ (BDUF) bezeichnet. Agile Methoden hingegen setzen, wie das Agile Manifest verdeutlicht, auf Emergenz,: „The best architectures, requirements, and designs emerge from self-organizing teams.“ Gegner des agilen Ansatzes sehen darin einen großen Schwachpunkt, da sie befürchten, dass durch das Fehlen einer expliziten Designphase unstrukturiertes Hacking Einzug hält. Fowler nimmt sich diesem Kritikpunkt mit seinem etwas provokativ formulierten Artikel „Is Design Dead?“ an. Das Ergebnis seiner Untersuchung ist, dass auch bei agilen Methoden wie XP Design stattfindet. Design ist somit nicht tot, hat aber seine Natur verändert. Anstelle des BDUF tritt bei den agilen Methoden das evolutionäre Design. Dies zeichnet sich dadurch aus, dass das Design wächst, während das System implementiert wird. Highsmith betont, dass bei agilen Ansätzen Planung, Architektur und Anforderungen keine Phasen, sondern Aktivitäten des Entwicklungsprozesses darstellen. Ihm zufolge kann ein agiler Ansatz genau soviel Zeit für diese Aktivitäten aufwenden, wie ein traditioneller – dies dann allerdings über multiple Iterationen hinweg. Martin sieht beim Softwaredesign die Gefahr, dass selbst ein gutes initiales Design mit der Zeit degradiert, wenn es nicht konstant an veränderte Anforderungen und Erkenntnisse angepasst wird. Der Ansatz des evolutionären Designs kommt dieser Erkenntnis entgegen, da hier das Design nicht von der Implementierung entkoppelt wird. Im Gegensatz zu sequenziellen Prozessmodellen (vgl. Kapitel 3.2.1) werden Tätigkeiten wie Analyse, Design, Implementierung und Testen nicht nacheinander, sondern parallel durchgeführt. Sowohl beim Testen als auch beim Codieren können bspw. Erkenntnisse gewonnen werden, die unmittelbare Auswirkungen auf das Design des Systems haben. Diese Erkenntnisse können beim evolutionären Design flexibler berücksichtigt werden, so dass das Design im Entwicklungsprozess ständig verbessert werden kann. Neben dem potenziellen Vorteil der Flexibilität besteht hier aber auch die nicht zu vernachlässigende Gefahr eines nicht-konvergierenden Designs.
In den Warenkorb
48,00 €
Link zur Arbeit:
http://www.diplom.de/ean/9783836613057
Arbeit zitieren:
Zihla, Martin Juli 2007: Softwareentwicklung in jungen Internetunternehmen, Hamburg: Diplomica Verlag
Schlagworte:
E-Business, Softwareentwicklung, Entwicklungsprozess, Architekturdesign, Internet-Startups



