Sie sind hier
E-Book

111 Thesen zur erfolgreichen Softwareentwicklung

Argumente und Entscheidungshilfen für Manager. Konzepte und Anleitungen für Praktiker

AutorRainer Gerlich
VerlagSpringer-Verlag
Erscheinungsjahr2006
Seitenanzahl522 Seiten
ISBN9783540273448
FormatPDF
KopierschutzDRM
GerätePC/MAC/eReader/Tablet
Preis52,99 EUR
Ziel dieses Buches ist es, Managern Argumente und Entscheidungshilfen für die Einführung effizienter Techniken der Softwareentwi- lung zu geben, und Praktiker von der Notwendigkeit effizienter Softwaree- wicklung zu überzeugen und Wege zur erfolgreichen - wendung aufzuzeigen. Unter 'effizienter Softwareentwicklung' verstehen wir die - setzung von Anforderungen in 'qualitativ hochwertige' Software zu 'angemessenem' Preis innerhalb 'angemessener' Zeit. 'Qualitativ hochwertig' steht für fehlerfrei, zuverlässig, robust und voll den Anforderungen entsprechend. Unter 'angemessen' verstehen wir minimale Komplexität bei voller Abdeckung der - forderungen, bezahlbar und kurzfristig verfügbar. Im ersten Teil dieses Buches (Kap. 2 - 5) führen wir den Leser hin zum 'automatischen Softwareproduktionsprozess', durch P- sentation von Thesen und Analysen. Anleitungen und Beispiele folgen im zweiten Teil (Kap. 6 und 7). Wir schließen mit Betra- tungen zur gesellschaftspolitischen Relevanz einer Technologie, die auf Automation beruht (Kap. 8). Wie in anderen Bereichen, in denen Automation bereits an- wendet wird, haben automatische Softwareproduktionsprozesse Einfluss auf die Arbeitsplätze. Präziser ausgedrückt, es fallen - stimmte Arten von Arbeitsplätzen weg, während andere entstehen. Für Manager und Entwickler, aber auch Ausbilder, ist es wichtig, sich frühzeitig auf die Möglichkeiten und Folgen dieser Technologie einzustellen. Zur Zeit wird durch 'Outsourcing', 'Nearshoring' oder 'Offs- ring' versucht, die Softwareentwicklungskosten zu senken. 'Au- mation' in der Softwareentwicklung geht darüber hinaus. Nicht nur Kosten sinken, auch Entwicklungszeit und -risiken, die Flexibilität ? Vorwort VII ? ? erhöht sich, und Know-how muss nicht nach außen weitergegeben werden.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
3.2 Professionelle Softwareentwicklung – die Herausforderung (S.91)

Software entwickeln kann jeder, so könnte man denken. Man kauft sich einen Computer, besorgt sich (eventuell sogar kostenlos) einen Compiler, und schon kann man ein Programm entwickeln. Mit den heute zur Verfügung stehenden Ressourcen für CPU und Speicher werden weder Programmgröße noch Komplexität Grenzen gesetzt.

Bei der Fertigung von Hardware dagegen werden Hilfsmittel benötigt, die nicht leicht zu beschaffen sind und auch spezielle Vorrichtungen für die Benutzung erfordern. Zum Bau von Möbeln werden bereits Werkzeuge benötigt, die sachgemäße Bedienung und Vorkenntnisse erfordern.

Zwar kann die sich jeder – je nach Geschick – aneignen, aber man erkennt schnell, dass ohne Übung kein professionelles Ergebnis entsteht. Bei Hardware erkennt man schnell Mängel, funktionale – wenn ein Stuhl wackelt oder kippt, und nicht-funktionale – wenn er zu schwach ist oder die Lackierung fehlerhaft ist.

Dagegen verhält sich Software wie ein Gas

- denn sie nimmt jeden verfügbaren Raum ein, Zeit und Geld, Speicher und Rechnerleistung

- denn sie ist unsichtbar, wir können ihre Eigenschaften nicht sehen wie eine Chemikalie

- denn bei unsachgemäßer Handhabung kommt es zur Katastrophe, die Eigenschaften der verwendeten Substanz und ihre Wirkung sind unbekannt

Mit diesen für die Entwickler so problematischen Eigenschaften haben wir bei der Entwicklung von Software zu kämpfen. Während wir für Hardware "Sensoren" wie Augen, Nase, Ohren und Tastsinn haben, fehlen uns die geeigneten Sensoren für Software. Die Eigenschaften von Software, die positiven und die negativen – wie Fehler, können wir erst dann erkennen, wenn sie für uns sichtbar werden durch Hilfsmittel wie Drucker, Monitor, Datendisplays oder akustische Signale.

3.2.1 Risiken durch Informationsmangel

Wird nicht genügend für die "Visualisierung" der Eigenschafen in einer für Menschen leicht verständlichen Präsentation gesorgt (im übertragenen Sinn zählen wir zur Visualisierung nicht nur die Wahrnehmung durch Augen, sondern auch durch Ohren sowie den Tast- und Riechsinn), dann werden Abweichungen von den Vorgaben – also Fehler – nicht frühzeitig genug wahrgenommen.

Visualisierung der Software ist mit Aufwand verbunden. Zur Minimierung der Kosten wird man sich daher erst einmal auf das unbedingt Notwendige beschränken, wodurch ein nicht unerhebliches Risiko entstehen kann, da man dann möglicherweise nicht alle Eigenschaften des entstehenden oder fertigen Produkts erfährt. Denn mangelhafte Visualisierung impliziert fehlende Information, fehlende Information führt zur falschen Einschätzung der Situation, und bei der Softwareentwicklung in der Regel zur Unterschätzung oder zum Ignorieren eines Problems.

Ein typisches Beispiel hierfür sind Schnittstellen zwischen Softwarekomponenten wie Funktionen oder Teilprogrammen. Hier treten Probleme auf, wenn wegen mangelnder Visualisierung Inkompatibilitäten übersehen werden. Dann werden Probleme zu spät erkannt, was zu erheblichen Zusatzkosten und meistens auch zu Terminverzug führt.

Die bei der Softwareentwicklung auftretenden Probleme sind vergleichbar mit einer in ihren Auswirkungen nicht abschätzbaren chemischen Reaktion beim Mischen zweier unbekannter Chemikalien. Während in der Chemie strenge Regeln existieren, um Katastrophen zu verhindern, sind entsprechende Vorsichtsmaßnahmen in der Softwareentwicklung meistens nicht realisierbar, weil zu aufwändig.

In der Chemie ist die Mischung unbekannter Chemikalien aus Sicherheitsgründen verboten, in der Softwareentwicklung die Integration von Code mit unzureichend bekannten Eigenschaften nicht.
Inhaltsverzeichnis
Danksagung6
Vorwort7
Inhaltsverzeichnis17
1 Thesen23
1.1 Einführung in das Konzept23
1.2 Mehr Chancen durch bessere Strategien27
1.2.1 Optimale Arbeitsteilung29
1.2.2 Arbeitsplätze im Wandel31
1.2.3 Synergie muss organisiert werden32
1.2.4 Offen sein für Problemlösungen35
1.2.5 Helfen, nicht beschränken36
1.2.6 Probleme richtig verstehen37
1.2.7 Simplifizieren durch Organisieren38
1.2.8 Mehr erreichen durch strategische Entscheidungen43
1.2.9 Interdisziplinäre Kooperation – eine effektive Strategie45
1.2.10 Mehr Zuverlässigkeit und Effizienz durch Automation49
1.2.11 Ohne richtige Dimensionierung geht nichts51
1.2.12 Komplexität – weniger ist mehr52
1.2.13 Mensch-Maschine-Schnittstelle55
1.2.14 Ohne Zusatzaufwand unendlich viele Fälle abdecken58
1.2.15 Qualitätssicherung59
1.2.16 Schnittstellenanpassung62
1.2.17 Dokumentation63
1.3 111 Thesen zur effizienten Softwareentwicklung64
1.3.1 Stand der Technik64
1.3.2 Wettbewerb64
1.3.3 Softwareentwicklung64
1.3.4 Organisation65
1.3.5 Schnittstellen66
1.3.6 Information67
1.3.7 Automation67
1.3.8 Strategie68
1.3.9 Kostenschätzung69
1.3.10 Projektmanagement69
1.3.11 Management70
1.3.12 Qualitätssicherung70
2 Strategische Ausrichtung73
2.1 Wann ist man effizient und erfolgreich?74
2.2 Mehr Effizienz durch Automatische Softwareproduktion75
2.3 Software korrekt produzieren durch Automation77
2.3.1 Anforderungen korrekt umsetzen78
2.3.2 Verifikation und Validierung – was Softwareentwickler und Bäcker brauchen79
2.3.3 Synergien erzeugen80
2.3.4 Vom Compiler zum Systemcompiler82
2.3.5 Selbstkontrolle83
2.3.6 Ist Selbstkontrolle sinnvoll?84
2.4 Entwickeln impliziert Projektmanagement85
2.5 Organisation der Entwicklung87
2.6 Wie groß ist das Einsparungspotenzial?89
2.7 Welcher Weg ist der beste?90
2.8 Automatisierung effizient einsetzen96
2.9 Weniger ist mehr - durch Einschränkungen mehr erreichen98
2.10 Effizient Entwicklungsrisiken meistern101
2.11 Komplexität meistern104
2.12 Effiziente Wartung108
3 Risiken und Chancen in der Softwareentwicklung111
3.1 Rollenverteilung111
3.2 Professionelle Softwareentwicklung – Herausforderung113
3.2.1 Risiken durch Informationsmangel114
3.2.2 Risiken durch Managementfehler115
3.2.3 Der Kampf gegen das Chaos116
3.3 Fehlentscheidungen118
3.3.1 Viel Code, wenig Qualität118
3.3.2 Wie zuverlässig sind Ergebnisse?119
3.3.3 Der Anwender ist nicht König124
3.4 Risiken130
3.4.1 Interne Risiken130
3.4.2 Externe Risiken138
3.5 Softwareentwicklungswerkzeuge148
3.5.1 Anwendungsprofil und Parametrisierbarkeit148
3.6 Geringeres Risiko durch schnellere Umsetzung?151
3.7 Durch Tests Fehler erkennen153
3.8 Qualität159
3.9 Organisation der Automation162
3.10 Komplexität165
3.10.1 Große Mengen, große Komplexität166
3.10.2 Unübliche Regeln, hohe Komplexität166
3.10.3 Gegenmaßnahmen168
3.11 Das Potenzial der Automation170
4 Entwicklungsgrundlagen173
4.1 Manuelle Softwareentwicklung173
4.2 Entwicklungsansätze174
4.3 Anforderungen an automatische Prozesse180
4.3.1 Grenzen der Teilautomation180
4.3.2 Einfluss auf Korrektheit, Konsistenz und Vollständigkeit180
4.4 Qualitätssicherung183
4.4.1 Qualitätsmerkmale183
4.4.2 Qualitätssicherungsstandards185
4.4.3 Zertifizierung188
4.4.4 Klassifizierung von Werkzeugen190
4.4.5 Verifikation und Validierung190
4.5 Zuverlässigkeit194
4.5.1 Pragmatische Ansätze zur Bestimmung der Zuverläsigkeit194
4.5.2 Aktive Qualitätssicherung: Maßnahmen gegen Fehler196
4.6 Betriebssysteme – Effizienz und Risiken218
4.6.1 Softwarequalität hängt vom Betriebssystem ab219
4.6.2 Klassifikationskriterien220
4.7 Hilfen für die Softwareentwicklung227
4.7.1 Methoden228
4.7.2 Generatoren231
4.7.3 Sprachen234
4.7.4 Unterstützung der Fehlerprävention und Fehlererkennung durch Sprachen240
5 Managementaspekte248
5.1 Das Rationalisierungspotenzial248
5.2 Was lässt sich ändern?251
5.3 Argumente und Gegenargumente253
5.3.1 Der indifferente Ansatz253
5.3.2 Der "Mengen"-Ansatz254
5.4 Wo lohnt es sich?256
5.4.1 Kosten vs. Entwicklungsphasen257
5.4.2 Kosten der Fehlerbeseitigung261
5.4.3 Sparen bei Wartung und Pflege / Legacy Software265
5.4.4 Strategie zur Kostensenkung266
5.5 Organisatorische Maßnahmen269
5.5.1 Das Baukastensystem270
5.5.2 Spezifikation273
5.5.3 Test, Verifikation und Validierung277
5.5.4 Die Abnahme278
5.5.5 Wartung und Legacy Systeme280
5.5.6 Vertragliche Aspekte und Projektorganisation281
5.5.7 Hindernisse wegräumen284
5.5.8 Qualitätssicherung durch Standards287
5.6 Wettbewerbsvorteile287
5.7 Managementaufgaben288
5.7.1 Kostenanalyse289
5.7.2 Erfolgsanalyse291
5.7.3 Risikoanalyse und Risikominimierung292
5.7.4 Fehleranalysen294
5.7.5 Empfehlungen zur Optimierung295
5.8 Checkliste297
6 Automatische Softwareproduktionsprozesse311
6.1 Ziele des vollautomatischen Produktionsprozesses311
6.2 Voraussetzungen für die Prozessdefinition313
6.3 Entwicklerprofile315
6.4 Die Prozessdefinition316
6.5 Produktionsprozesse – im wesentlichen nichts Neues318
6.5.1 Anwendungsorientierte Produktionsprozesse318
6.5.2 Spezialisierung vs. Vereinheitlichung321
6.5.3 Der konfigurierbare Produktionsprozess323
6.5.4 Vollautomatische Produktionsprozesse325
6.5.5 Prozessparameter326
6.5.6 Typen von Produktionsprozessen332
6.5.7 Identifizierung von Abhängigkeiten341
6.5.8 Konstruktionsregeln343
6.5.9 Metamodelle353
6.5.10 Eigenschaften vollautomatischer Produktionsprozesse353
6.5.11 Verifikation von Prozessen und Qualitätssicherung359
6.5.12 Validierung und automatische Testfallerzeugung368
6.5.13 Kontinuierliche Wartung369
6.5.14 Systemcompiler370
6.5.15 Teilprodukte und vertragliche Aspekte371
6.6 Der automatische Entwicklungszyklus376
6.7 Die Vorteile für ein einzelnes Projekt380
6.8 Merkmale eines vollautomatischen Produktionsprozesses382
6.9 Weitere Ansätze auf dem Gebiet der Automation387
7 Vollautomation als Realität389
7.1 Über die Einführung und Optimierung neuer Methoden389
7.2 Durchgängig von der Spezifikation bis zum Betrieb393
7.2.1 Von der Spezifikation zum Produkt394
7.2.2 Die Realisierung402
7.2.3 Ergebnisse404
7.3 Reengineering und n-Version- Development408
7.3.1 Vom Reengineering zu n-Version-Development411
7.4 Redundanzreduktion bei Parsern415
7.4.1 Formale Beschreibung von Sprachen416
7.4.2 Transformation von Grammatiken417
7.4.3 Die Entstehung von Redundanzen419
7.4.4 Die Risiken von Redundanzen und ihre Eliminierung420
7.5 Algorithmen421
7.5.1 Datenkonvertierung422
7.5.2 Ausnutzung theoretischer Möglichkeiten in der Praxis427
7.6 Verteilte Echtzeitsysteme429
7.6.1 Master-Slave Struktur432
7.6.2 Echtzeitinfrastruktur436
7.6.3 Spezifikation und Erzeugung der MSL-Datenbank440
7.7 Ein synchrones verteiltes System443
7.8 Client-Server Anwendungen, Datenbanken und GUIs445
7.8.1 SQL-Datenbanken aus einem Guss450
7.8.2 Grafische Oberflächen aus C-Typdefinitionen457
7.9 Schnittstellenanpassung459
7.10 Automatische Testumgebungen460
7.10.1 Funktionstests460
7.10.2 Test des Verhaltens462
7.11 Effizienzanalyse463
7.12 Rückblick und Ausblick469
8 Gesellschaftliche Aspekte471
8.1 Sozialpolitische Relevanz472
8.1.1 Innovation und die Folgen473
8.1.2 Sozialverträglichkeit474
8.1.3 Konkurrenzfähigkeit475
8.1.4 Der Softwareentwickler, zuerst geschützt, dann gehetzt476
8.2 Das Arbeitsumfeld478
8.2.1 Rückblick478
8.2.2 Ausblick479
8.2.3 Kooperation ist notwendig480
8.2.4 Der Anpassungsprozess480
8.3 Wirtschaftliche Relevanz484
8.3.1 Mehr Synergie durch neue Produktionsmethoden484
8.3.2 Egalisieren vs. Spezialisieren486
8.3.3 Automatische Produktion vs. Fremdentwicklung488
8.4 Ausbildungspolitische Relevanz489
8.4.1 Der Kunde ist König489
8.4.2 Automation impliziert Qualifikation491
8.5 Zusammenfassung493
9 Schlussbemerkungen und Ausblick495
Abkürzungen und Synonyme498
Begriffe502
Literatur517
Sachverzeichnis528

Weitere E-Books zum Thema: Management - Wirtschaft - Coaching

Zeitmanagement im Projekt

E-Book Zeitmanagement im Projekt
Format: PDF

Von Projektleitern und ihren Mitarbeitern wird grundsätzlich eine exakte Punktlandung erwartet: Sie sollen das Projekt zum vereinbarten Termin beenden, selbstverständlich die Budgetvorgaben einhalten…

Zeitmanagement im Projekt

E-Book Zeitmanagement im Projekt
Format: PDF

Von Projektleitern und ihren Mitarbeitern wird grundsätzlich eine exakte Punktlandung erwartet: Sie sollen das Projekt zum vereinbarten Termin beenden, selbstverständlich die Budgetvorgaben einhalten…

Basiswissen Beschaffung.

E-Book Basiswissen Beschaffung.
Format: PDF

Anhand vieler Beispiele für die relevanten Aufgaben und Methoden der Beschaffung bietet der Band Grundwissen für den Quereinsteiger sowie ein Repetitorium für den Praktiker. Das Buch gibt eine kurze…

Basiswissen Beschaffung.

E-Book Basiswissen Beschaffung.
Format: PDF

Anhand vieler Beispiele für die relevanten Aufgaben und Methoden der Beschaffung bietet der Band Grundwissen für den Quereinsteiger sowie ein Repetitorium für den Praktiker. Das Buch gibt eine kurze…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

Ärzte Zeitung

Ärzte Zeitung

Zielgruppe:  Niedergelassene Allgemeinmediziner, Praktiker und Internisten. Charakteristik:  Die Ärzte Zeitung liefert 3 x pro Woche bundesweit an niedergelassene Mediziner ...

CE-Markt

CE-Markt

CE-Markt ist Pflichtlektüre in der Unterhaltungselektronik-Branche. Die Vermarktung von Home und Mobile Electronics mit den besten Verkaufsargumenten und Verkaufsstrategien gehören ebenso zum ...

Das Grundeigentum

Das Grundeigentum

Das Grundeigentum - Zeitschrift für die gesamte Grundstücks-, Haus- und Wohnungswirtschaft. Für jeden, der sich gründlich und aktuell informieren will. Zu allen Fragen rund um die Immobilie. Mit ...

Gastronomie Report

Gastronomie Report

News & Infos für die Gastronomie: Tipps, Trends und Ideen, Produkte aus aller Welt, Innovative Konzepte, Küchentechnik der Zukunft, Service mit Zusatznutzen und vieles mehr. Frech, offensiv, ...

FileMaker Magazin

FileMaker Magazin

Das unabhängige Magazin für Anwender und Entwickler, die mit dem Datenbankprogramm Claris FileMaker Pro arbeiten. In jeder Ausgabe finden Sie von kompletten Lösungsschritten bis zu ...