Best Practice Software-Engineering: Eine praxiserprobte Zusammenstellung von komponentenorientierten Konzepten, Methoden und Werkzeugen

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Software-Komponenten tragen durch einen hohen Grad an Wiederverwendbarkeit, bessere Testbarkeit und Wartbarkeit zur effizienten Herstellung komplexer Software-Anwendungen bei. Diese Vorteile bedingen jedoch oft eine aufwendigere Einarbeitung beim Einstieg in diese Materie durch die Vielzahl an komplexen Komponenten-Frameworks, Werkzeugen und Entwurfsans?tzen. Das vorliegende Buch „Best-Practice Software Engineering" bietet Neu- und Wiedereinsteigern in die komponentenorientierte Software-Entwicklung eine Einf?hrung in die Materie durch eine abgestimmte Zusammenstellung von praxiserprobten Konzepten, Techniken und Werkzeugen f?r alle Aspekte eines erfolgreichen Projekts. F?r moderne Software-Entwicklung sind eine Vielzahl von unterschiedlichen F?higkeiten erforderlich, die nur im richtiger Kombination zu einem erfolgreichen Ergebnis f?hren. Daher wird in diesem Buch besonderer Wert darauf gelegt, nicht einzelne Techniken des Software Engineerings isoliert zu betrachten, sondern das effiziente Zusammenspiel verschiedener Aspekte darzustellen.   Schwerpunkte liegen auf Vorgehensstrategien im Software-Lebenszyklus, Projektmanagement, Qualit?tssicherung, UML-Modellierung, Entwurfsmustern und Architekturen, komponentenorientierter Software-Entwicklung sowie ausgew?hlten Techniken und Werkzeugen. Zu den Beispielen im Buch finden Sie den vollst?ndigen Source Code sowie umfangreiche Fallbeispiele zu Artefakten aus dem Projektverlauf auf der Webseite zum Buch.

Author(s): Alexander Schatten, Stefan Biffl, Markus Demolsky, Erik Gostischa-Franta, Thomas Östreicher, Dietmar Winkler
Edition: 1st Edition.
Year: 2010

Language: German
Pages: 448

Best Practice Software-Engineering
......Page 2
Inhaltsverzeichnis......Page 4
1 Einleitung......Page 7
1.1 Projektarten und -aspekte......Page 8
1.2 Überblick zu Kapiteln und Themen......Page 11
1.3 Empfohlene Vorkenntnisse......Page 13
1.4 Weitere Ressourcen im Web......Page 14
1.5 Die Autoren......Page 15
1.6 Danksagung......Page 16
2 Lebenszyklus eines Software-Produkts......Page 17
2.1 Grundlegende Phasen des SoftwareLebenszyklusses......Page 18
2.2.1 Projektmanagement......Page 19
2.2.2 Qualitätsmanagement......Page 20
2.3 Anforderungen und Spezifikation......Page 23
2.3.1 Arten von Anforderungen......Page 26
2.3.2 Anforderungsprozess......Page 28
2.3.3 Wesentliche Artefakte der Anforderungsphase......Page 30
2.4.1 Projektplanung......Page 31
2.4.3 Wesentliche Artefakte der Planungsphase......Page 32
2.5 Entwurf und Design......Page 33
2.5.1 Designprinzipien......Page 35
2.5.2 Wesentliche Artefakte der Entwurfsund Designphase......Page 37
2.6 Implementierung und Integration......Page 38
2.6.1 Standardisierung......Page 39
2.6.2 Dokumentation......Page 40
2.6.3 Integration von Software-Komponenten......Page 42
2.7 Betrieb und Wartung......Page 45
2.7.2 Wartungskategorien......Page 46
2.7.4 Außerbetriebnahme und Stilllegung......Page 48
2.8 Vom Software-Lebenszyklus zum Vorgehensmodell......Page 49
2.9 Zusammenfassung......Page 50
3 Vorgehensmodelle......Page 52
3.2 Wasserfallmodell......Page 53
3.3 Das V-Modell......Page 54
3.4 V-Modell XT......Page 57
3.5 Inkrementelles Vorgehen......Page 61
3.6 Spiralmodell......Page 62
3.7 Rational Unified Process......Page 63
3.8 Agile Software-Entwicklung......Page 67
3.9 Anpassung von Vorgehensmodellen......Page 70
3.10 Zusammenfassung......Page 73
Übersicht......Page 75
4.1 Einführung ins Projektmanagement......Page 76
4.1.1 Rollen im Projekt......Page 77
4.1.2 Projektorganisation......Page 79
4.1.3 Phasen im Projektmanagement......Page 80
4.2.1 Projektvorschlag......Page 81
4.2.2 Projektentscheidung (Kick-off)......Page 84
4.2.3 Projektauftrag......Page 85
4.3 Projektplanung......Page 89
4.3.1 Strukturierung eines Projekts......Page 91
4.3.2 Aufwandsschätzung......Page 94
4.3.3 Technische und wirtschaftliche Planung......Page 97
4.3.4 Netzplan (PERT-Diagramm)......Page 102
4.3.5 Balkenoder GANTT-Diagramm......Page 105
4.3.6 Burn-down-Charts......Page 106
4.4 Projektverfolgung......Page 108
4.4.1 Aufwandserfassung mit dem PSP......Page 110
4.4.2 Meilenstein-Trendanalyse......Page 111
4.4.3 Aufwandserfassung mit Burn-down-Charts......Page 113
4.5 Projektabschluss......Page 114
4.6 Zusammenfassung......Page 115
Übersicht......Page 117
5.1 Der Qualitätsbegriff......Page 118
5.2 Verifikation und Validierung......Page 119
5.3.1 Reviewtypen......Page 121
5.3.2 Rollen in einem Review......Page 124
5.3.3 Ablauf eines Reviews......Page 125
5.4.1 Inspektionstypen und Ablauf......Page 127
5.4.2 Lesetechniken......Page 129
5.5 Architekturevaluierung......Page 133
5.6 Software-Testen......Page 137
5.6.1 Rollen im Software-Testen......Page 138
5.6.2 Der traditionelle Testprozess......Page 139
5.6.3 Testebenen......Page 142
5.6.4 Testmethoden......Page 144
5.6.5 Testfalldokumentation......Page 148
5.6.6 Testintensität und Überdeckungsgrade......Page 150
5.7 Test-Driven Development......Page 154
5.7.1 Test-Driven Development im V-Modell Umfeld......Page 155
5.7.2 Ablauf von Test-Driven Development......Page 157
5.8 Automatische Codeprüfung......Page 158
5.8.1 Testautomatisierung......Page 159
5.8.2 Code Coverage Analyse......Page 162
5.8.3 Code Quality Checks......Page 163
5.9 Zusammenfassung......Page 164
Übersicht......Page 167
6.1 UML-Diagrammfamilie......Page 169
6.1.1 UML-Paketdiagramm......Page 171
6.1.2 UML-Anwendungsfälle......Page 173
6.1.3 UML-Klassendiagramme......Page 176
6.1.4 UML-Komponentendiagramm......Page 181
6.1.5 UML-Aktivitätsdiagramme......Page 183
6.1.6 UML-Sequenzdiagramme und Kommunikationsdiagramme......Page 185
6.1.7 UML-Verteilungsdiagramm......Page 187
6.1.8 UML-Zustandsdiagramme......Page 188
6.2.1 Entity-Relationship-Modell......Page 190
6.2.2 Schichtendiagramme......Page 194
6.3.1 Projektstrukturplan......Page 195
6.3.2 Netzplan, PERT......Page 197
6.3.3 Balkendiagramm (GANTT-Diagramm)......Page 198
6.3.4 Burn-Charts......Page 199
6.4 Zusammenfassung......Page 201
Übersicht......Page 203
7.1 Was ist eine Software-Architektur......Page 204
7.2 Wie entstehen Architekturen......Page 206
7.3 Sichten auf eine Software-Architektur......Page 210
7.4 Separation of Concerns......Page 213
7.5 Schichtenarchitektur......Page 215
7.5.1 2-Schichtenarchitektur......Page 217
7.5.3 5-Schichtenarchitektur......Page 218
7.6.1 Ein neues Architekturparadigma......Page 219
7.6.2 SOA und Schichten......Page 222
7.6.3 SOA und Geschäftsprozesse......Page 224
7.7 Ereignisgetriebene Architektur......Page 225
7.8 Zusammenfassung......Page 230
Übersicht......Page 232
8.1 Was ist ein Muster......Page 233
8.2.1 Interface (Schnittstelle)......Page 236
8.2.2 Delegation......Page 239
8.2.3 Strategy (Strategie)......Page 242
8.2.5 Marker (Markieren eines Objekts)......Page 246
8.2.6 Annotations (Metadaten für Objekte)......Page 247
8.3.1 Singleton......Page 250
8.3.2 Factory (Fabrik)......Page 253
8.3.3 Objekt-Pool......Page 255
8.4.1 Fassade (Facade)......Page 256
8.4.2 Iterator......Page 257
8.4.3 Adapter......Page 258
8.4.4 Proxy (Stellvertreter)......Page 259
8.4.5 Data Access Object......Page 266
8.4.6 Generisches DAO......Page 270
8.5.1 Observer......Page 272
8.5.2 Decorator......Page 277
8.5.3 Interceptor......Page 281
8.6 Integration......Page 284
8.6.1 Integrations-Stile......Page 287
8.6.2 Messaging......Page 292
8.6.3 Pipes and Filters......Page 296
8.6.4 Routing......Page 297
8.6.5 Transformation......Page 299
8.6.6 System-Management und Testen......Page 300
9 Komponentenorientierte Software-Entwicklung......Page 302
9.1.1 Objekte und Schnittstellen (Interfaces......Page 305
9.1.2 Erste Schritte der Entkopplung......Page 307
9.1.3 Software-Komponenten......Page 308
9.1.4 Software-Services......Page 310
9.1.5 Vor- und Nachteile verschiedener Stufen der Entkopplung......Page 312
9.2 Software-Frameworks als Basis für die Komponentenbildung......Page 314
9.3 Dependency-Injection......Page 318
9.4.1 Anforderungen an eine Persistenzschicht......Page 325
9.4.2 Transaktionen......Page 328
9.4.3 Architektur und Modellierung......Page 330
9.4.4 Abhängigkeiten zwischen Domänenmodell und Persistenzschicht......Page 331
9.4.6 Objektorientierte Datenbanken......Page 338
9.4.7 Relationale Datenbanken und objektorientierte Programmierung......Page 340
9.4.8 Objektrelationales Mapping......Page 343
9.4.9 XML-Persistenz......Page 349
9.4.11 Abstraktion über Services......Page 353
9.5.1 Cross Cutting Concerns......Page 354
9.5.2 Grundlagen der aspektorientierten Programmierung......Page 355
9.5.3 Sicherheit mit AOP......Page 358
9.5.4 Deklaratives Transaktionsmanagement mit AOP......Page 361
9.6.1 Überblick......Page 363
9.6.2 Model View Controller......Page 365
9.6.3 Kommunikation mit dem Backend......Page 366
9.7.1 Serviceorientierte Architekturen und deren Bestandteile......Page 368
9.7.2 Middleware als Lösung für die lose Koppelung......Page 371
9.8 Logging: Protokollieren von Systemzuständen......Page 374
9.9 Zusammenfassung......Page 377
10 Techniken und Werkzeuge......Page 379
10.1 Konvention oder Konfiguration?......Page 380
10.2.1 Die Entwicklung von Sourcecode-Management-Systemen......Page 383
10.2.2 Versionierung......Page 384
10.2.3 Parallele Entwicklungspfade......Page 385
10.2.4 Unterstützung kollaborativer Arbeit......Page 386
10.2.6 Integration in den Arbeitsalltag......Page 388
10.2.7 Die Zukunft? Verteilte und zentralisierte Systeme......Page 389
10.2.8 Patches und Diffs......Page 390
10.3.1 Warum Automatisierung?......Page 394
10.3.2 Der Build-Lifecycle: Best-Practices......Page 395
10.3.4 Dependency-Management......Page 398
10.3.5 Reporting und Dokumentation......Page 401
10.3.6 Continuous Integration......Page 402
10.4 Die integrierte Entwicklungsumgebung......Page 404
10.5 Virtualisierung von Hard- und Software......Page 405
10.6 Projektplanung und Steuerung......Page 407
10.7 Dokumentation......Page 408
10.8 Kommunikation im (global verteilten) Team......Page 415
10.9 Zusammenfassung......Page 424
11 Epilog......Page 426
Literaturverzeichnis......Page 429
Index......Page 433