Effektive Softwarearchitekturen - Ein praktischer Leitfaden

Gernot Starke

Effektive Softwarearchitekturen

Effektive Softwarearchitekturen - Ein praktischer Leitfaden

2017

453 Seiten

Format: PDF

E-Book: €  37,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446454200

 

Inhalt

6

Vorwort

14

Vorwort zur siebten Auflage (2015)

15

Vorwort zur achten Auflage

15

1 Einleitung

16

1.1? Softwarearchitekten

20

1.2? Effektiv, agil und pragmatisch

21

1.3? Wer sollte dieses Buch lesen?

24

1.4? Wegweiser durch das Buch

25

1.5? Webseite zum Buch

27

1.6? Weiterführende Literatur

27

1.7? Danksagung

28

2 Architektur und?Architekten

30

2.1? Was ist Softwarearchitektur?

31

2.1.1? Darum Softwarearchitektur!

35

2.2? Die Aufgaben von Softwarearchitekten

36

2.3? Wie entstehen Architekturen?

41

2.4? In welchem Kontext steht Architektur?

44

2.5? Weiterführende Literatur

47

3 Vorgehen bei der Architekturentwicklung

48

3.1? Informationen sammeln

52

3.2? Anforderungen klären

53

3.2.1? Was ist die Kernaufgabe des Systems?

53

3.2.2? Welche Kategorie von System?

54

3.2.3? Wesentliche Qualitätsanforderungen ermitteln

54

3.2.4? Relevante Stakeholder ermitteln

59

3.2.5? Fachlichen und technischen Kontext ermitteln

60

3.3? Einflussfaktoren und Randbedingungen ermitteln

62

3.4? Entwerfen und kommunizieren

68

3.5? Umsetzung begleiten

69

3.6? Lösungsstrategien entwickeln

70

3.7? Weiterführende Literatur

72

4 Entwurf: Grundlagen, Methoden und Muster

74

4.1? Grundlagen

76

4.1.1? Grundsätze des Entwurfs (Maxime)

77

4.1.2? Prinzipien

80

4.1.3? SOLID-Prinzipien des objektorientierten Entwurfs

86

4.1.3.1? Offen-Geschlossen-Prinzip

86

4.1.3.2? Liskov-Substitutionsprinzip (LSP)

88

4.1.3.3? Interface Segregation Principle (ISP)

89

4.1.3.4? Dependency Inversion Principle (DIP)

91

4.2? Heuristiken

94

4.3? Entwurfsmethoden

99

4.3.1? Domain-Driven Design (Entwurf nach Fachlichkeit)

99

4.3.2? Der WAM-Ansatz

104

4.3.3? Quality-Driven Software Architecture

106

4.3.4? Top-down und Bottom-up

114

4.4? Schnittstellen entwerfen

115

4.4.1? Anforderungen an Schnittstellen

116

4.4.2? Worauf müssen Sie achten?

117

4.4.3? Tipps zum Entwurf von Schnittstellen

118

4.5? Architekturstile und -muster

119

4.5.1? Datenflussarchitekturstil

120

4.5.1.1? Architekturstil Batch-Sequentiell

120

4.5.1.2? Architekturstil Pipes und Filter

121

4.5.2? Datenzentrierter Architekturstil

124

4.5.2.1? Repository

124

4.5.2.2? Blackboard

125

4.5.3? Hierarchische Architekturstile

126

4.5.3.1? Master-Slave

126

4.5.3.2? Schichten (Layer)

127

4.5.3.3? Architekturstil Ports-und-Adapter

130

4.5.4? Architekturstile verteilter Systeme

133

4.5.4.1? Client-Server

134

4.5.4.2? Command Query Responsibility Segregation

134

4.5.4.3? Broker

136

4.5.4.4? Peer-to-Peer

137

4.5.5? Ereignisbasierte Systeme – Event Systems

138

4.5.5.1? Ungepufferte Event-Kommunikation

139

4.5.5.2? Message- oder Event-Queue-Architekturen

139

4.5.5.3? Message-Service-Architekturen

140

4.5.6? Interaktionsorientierte Systeme

141

4.5.6.1? Model-View-Controller

141

4.5.6.2? Presentation Model

142

4.5.7? Weitere Architekturstile und -muster

145

4.6? Entwurfsmuster

147

4.6.1? Entwurf mit Mustern

147

4.6.2? Adapter

148

4.6.3? Beobachter (Observer)

149

4.6.4? Dekorierer (Decorator)

150

4.6.5? Stellvertreter (Proxy)

151

4.6.6? Fassade

152

4.6.7? Zustand (State)

153

4.7? Weiterführende Literatur

154

5 Kommunikation und?Dokumentation von Architekturen

156

5.1? Architekten müssen kommunizieren und?dokumentieren

157

5.2? Effektive Architekturdokumentation

159

5.2.1? Anforderungen an Architekturdokumentation

159

5.2.2? Regeln für gute Architekturdokumentation

161

5.3? Typische Architekturdokumente

164

5.3.1? Zentrale Architekturbeschreibung

165

5.3.2? Architekturüberblick

168

5.3.3? Dokumentationsübersicht

168

5.3.4? Übersichtspräsentation der Architektur

168

5.3.5? Architekturtapete

169

5.4? Sichten

169

5.4.1? Sichten in der Softwarearchitektur

170

5.4.2? Vier Arten von Sichten

172

5.4.3? Entwurf der Sichten

174

5.5? Kontextabgrenzung

176

5.5.1? Elemente der Kontextabgrenzung

176

5.5.2? Notation der Kontextabgrenzung

177

5.5.3? Entwurf der Kontextabgrenzung

177

5.6? Bausteinsicht

178

5.6.1? Elemente der Bausteinsicht

182

5.6.2? Notation der Bausteinsicht

183

5.6.3? Entwurf der Bausteinsicht

184

5.7? Laufzeitsicht

185

5.7.1? Elemente der Laufzeitsicht

186

5.7.2? Notation der Laufzeitsicht

187

5.7.3? Entwurf der Laufzeitsicht

188

5.8? Verteilungssicht

188

5.8.1? Elemente der Verteilungssicht

189

5.8.2? Notation der Verteilungssicht

189

5.8.3? Entwurf der Verteilungssicht

190

5.9? Dokumentation von Schnittstellen

191

5.10? Dokumentation technischer Konzepte

194

5.11? Werkzeuge zur Dokumentation

194

5.12? TOGAF zur Architekturdokumentation

196

5.13? Weiterführende Literatur

198

6 Modellierung für Softwarearchitekten

200

6.1? Modelle als Arbeitsmittel

200

6.1.1? Grafische oder textuelle Modellierung

202

6.2? UML?2 für Softwarearchitekten

203

6.2.1? Die Diagrammarten der UML?2

204

6.2.2? Die Bausteine von Architekturen

206

6.2.3? Schnittstellen

207

6.2.4? Die Bausteinsicht

208

6.2.5? Die Verteilungssicht

210

6.2.6? Die Laufzeitsicht

212

6.2.7? Darum UML

215

6.2.8? Darum nicht UML

216

6.3? Tipps zur Modellierung

216

6.4? Weiterführende Literatur

217

7 Technische Konzepte und typische Architekturaspekte

218

7.1? Persistenz

222

7.1.1? Motivation

222

7.1.2? Einflussfaktoren und Entscheidungskriterien

225

7.1.2.1? Art der zu speichernden Daten

226

7.1.2.2? Konsistenz und Verfügbarkeit (ACID, BASE oder CAP)

227

7.1.2.3? Zugriff und Navigation

229

7.1.2.4? Deployment und Betrieb

229

7.1.3? Lösungsmuster

230

7.1.3.1? Persistenzschicht

230

7.1.3.2? DAO: Eine Miniatur-Persistenzschicht

234

7.1.4? Bekannte Risiken und Probleme

235

7.1.5? Weitere Themen zu Persistenz

236

7.1.6? Zusammenhang zu anderen Aspekten

240

7.1.7? Praktische Vertiefung

241

7.1.8? Weiterführende Literatur

242

7.2? Geschäftsregeln

243

7.2.1? Motivation

243

7.2.2? Funktionsweise von Regelmaschinen

246

7.2.3? Kriterien pro & kontra Regelmaschinen

248

7.2.4? Mögliche Probleme

249

7.2.5? Weiterführende Literatur

250

7.3? Integration

250

7.3.1? Motivation

250

7.3.2? Typische Probleme

252

7.3.3? Lösungskonzepte

253

7.3.4? Entwurfsmuster zur Integration

257

7.3.5? Konsequenzen und Risiken

258

7.3.6? Zusammenhang mit anderen Aspekten

260

7.3.7? Weiterführende Literatur

261

7.4? Verteilung

261

7.4.1? Motivation

261

7.4.2? Typische Probleme

262

7.4.3? Lösungskonzept

262

7.4.4? Konsequenzen und Risiken

264

7.4.5? Zusammenhang mit anderen Aspekten

264

7.4.6? Weiterführende Literatur

264

7.5? Kommunikation

265

7.5.1? Motivation

265

7.5.2? Entscheidungsalternativen

265

7.5.3? Grundbegriffe der Kommunikation

265

7.5.4? Weiterführende Literatur

269

7.6? Grafische Oberflächen (GUI)

271

7.6.1? Motivation

271

7.6.2? Einflussfaktoren und Entscheidungskriterien

271

7.6.3? GUI-relevante Architekturmuster

273

7.6.4? Struktur und Ergonomie von Benutzeroberflächen

274

7.6.5? Bekannte Risiken und Probleme

275

7.6.6? Zusammenhang zu anderen Aspekten

277

7.7? Geschäftsprozess-Management: Ablaufsteuerung im Großen

278

7.7.1? Workflow-Sprachen

280

7.7.2? Vorhersagbarkeit

283

7.7.3? Zweck der Ablaufsteuerung

284

7.7.4? Lösungsansätze

286

7.7.5? Integration von Workflow-Systemen

289

7.7.6? Mächtigkeit von WfMS

290

7.7.7? Weiterführende Literatur

290

7.8? Sicherheit

291

7.8.1? Motivation – Was ist IT-Sicherheit?

291

7.8.2? Sicherheitsziele

292

7.8.3? Lösungskonzepte

294

7.8.4? Security Engineering mit Patterns

301

7.8.5? Weiterführende Literatur

302

7.9? Protokollierung

303

7.9.1? Typische Probleme

303

7.9.2? Lösungskonzept

304

7.9.3? Zusammenhang mit anderen Aspekten

305

7.9.4? Weiterführende Literatur

305

7.10? Ausnahme- und Fehlerbehandlung

306

7.10.1? Motivation

306

7.10.2? Fehlerkategorien schaffen Klarheit

308

7.10.3? Muster zur Fehlerbehandlung

310

7.10.4? Mögliche Probleme

311

7.10.5? Zusammenhang mit anderen Aspekten

312

7.10.6? Weiterführende Literatur

313

7.11? Skalierbarkeit

313

7.11.1? Was bedeutet Skalierbarkeit?

313

7.11.2? Skalierungsstrategien

314

7.11.3? Elastizität

314

7.11.4? Scale-Up-Strategie

314

7.11.5? Vertikale Scale-Out-Strategie

315

7.11.6? Horizontale Scale-Out-Strategie

315

7.11.7? Der Strategiemix

315

7.11.8? Allgemeine Daumenregeln

316

7.11.9? CPU-Power

317

7.11.10? GPU-Power

317

7.11.11? RAIDs, SANs und andere Speichersysteme

317

7.11.12? Bussysteme für die Speicheranbindung

318

7.11.13? Geringere Bandbreite im Netz

318

8 Bewertung von Softwarearchitekturen

320

8.1? Qualitative Architekturbewertung

323

8.2? Quantitative Bewertung durch Metriken

330

8.3? Werkzeuge zur Bewertung

332

8.4? Weiterführende Literatur

333

9 Systematische Verbesserung und Evolution

334

9.1? Wege in den Abgrund

336

9.2? Systematisch verbessern

337

9.3? Bewährte Praktiken und Muster

340

9.4? Analyse: Probleme identifizieren

342

9.5? Evaluate: Probleme und Maßnahmen bewerten

344

9.6? Improve: Verbesserungsmaßnahmen planen und durchführen

345

9.6.1? Maxime für Verbesserungsprojekte

345

9.6.2? Kategorien von Verbesserungsmaßnahmen

345

9.7? Crosscutting: phasenübergreifende Praktiken

349

9.8? Mehr zu aim42?

350

9.9? Weiterführende Literatur

350

10 Microservices

352

10.1? Was sind Microservices?

353

10.2? Warum Microservices?

353

10.3? Eigenschaften von Microservices

354

10.4? Microservices und die Organisation

356

10.5? Für welche Systeme eignen sich Microservices?

357

10.6? Herausforderungen bei Microservices

357

10.6.1? Überblick über viele Services behalten

358

10.6.2? Microservices effektiv entwickeln

358

10.6.3? Service Discovery

359

10.6.4? UI-Integration

360

10.6.5? Dezentralisierte Daten

360

10.6.6? Versionierung von Microservices

361

10.6.7? Laufzeitumgebungen und Infrastruktur verwalten

362

10.7? Beispiele für Microservices

362

10.8? Weiterführende Literatur

362

11 Enterprise-IT?Architektur

364

11.1? Wozu Architekturebenen?

365

11.2? Aufgaben von Enterprise-Architekten

366

11.2.1? Management der Infrastrukturkosten

366

11.2.2? Management des IS-Portfolios

367

11.2.3? Definition von Referenzarchitekturen

368

11.2.4? Weitere Aufgaben

370

11.3? Weiterführende Literatur

372

12 Beispiele von Softwarearchitekturen

374

12.1? Beispiel: Datenmigration im Finanzwesen

375

12.2? Beispiel: Kampagnenmanagement?im?CRM

392

13 Werkzeuge für Softwarearchitekten

422

13.1? Kategorien von Werkzeugen

422

13.2? Typische Auswahlkriterien

426

14 iSAQB Curriculum

428

14.1? Standardisierte Lehrpläne für?Softwarearchitekten

429

14.1.1? Grundlagenausbildung und Zertifizierung Foundation-Level

429

14.1.2? Fortgeschrittene Aus- und Weiterbildung (Advanced-Level)

430

14.2? Können, Wissen und Verstehen

431

14.3? Voraussetzungen und Abgrenzungen

431

14.4? Struktur des iSAQB?Foundation?Level?Lehrplans

432

14.5? Zertifizierung nach dem iSAQB?Lehrplan

435

15 Nachwort: Architektonien

436

15.1? In sechs Stationen um die (IT-)Welt

436

15.2? Ratschläge aus dem architektonischen Manifest

439

16 Literatur

444

Stichwortverzeichnis

448

 

© 2009-2018 ciando GmbH