Effektive Softwarearchitekturen - Ein praktischer Leitfaden

von: Gernot Starke

Carl Hanser Fachbuchverlag, 2015

ISBN: 9783446444065 , 466 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Mac OSX,Windows PC Apple iPad, Android Tablet PC's Online-Lesen für: Mac OSX,Windows PC,Linux

Preis: 35,99 EUR

Mehr zum Inhalt

Effektive Softwarearchitekturen - Ein praktischer Leitfaden


 

Inhalt

6

Vorwort

14

Vorwort zur siebten 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 Fachlich motivierter Entwurf: Domain-Driven Design

99

4.3.2 Der WAM-Ansatz

102

4.3.3 Quality-Driven Software Architecture

104

4.3.4 Top-down und Bottom-up

112

4.4 Schnittstellen entwerfen

113

4.4.1 Anforderungen an Schnittstellen

114

4.4.2 Worauf müssen Sie achten?

115

4.4.3 Tipps zum Entwurf von Schnittstellen

116

4.5 Architekturstile und -muster

117

4.5.1 Datenflussarchitekturstil

118

4.5.1.1 Architekturstil Batch-Sequentiell

118

4.5.1.2 Architekturstil Pipes und Filter

119

4.5.2 Datenzentrierter Architekturstil

122

4.5.2.1 Repository

122

4.5.2.2 Blackboard

123

4.5.3 Hierarchische Architekturstile

124

4.5.3.1 Master-Slave

124

4.5.3.2 Schichten (Layer)

125

4.5.3.3 Architekturstil Ports-und-Adapter

128

4.5.4 Architekturstile verteilter Systeme

131

4.5.4.1 Client-Server

132

4.5.4.2 Command Query Responsibility Segregation

132

4.5.4.3 Broker

134

4.5.4.4 Peer-to-Peer

135

4.5.5 Ereignisbasierte Systeme – Event Systems

136

4.5.5.1 Ungepufferte Event-Kommunikation

137

4.5.5.2 Message- oder Event-Queue-Architekturen

137

4.5.5.3 Message-Service-Architekturen

138

4.5.6 Interaktionsorientierte Systeme

139

4.5.6.1 Model-View-Controller

139

4.5.6.2 Presentation Model

140

4.5.7 Weitere Architekturstile und -muster

143

4.6 Entwurfsmuster

145

4.6.1 Entwurf mit Mustern

145

4.6.2 Adapter

146

4.6.3 Beobachter (Observer)

147

4.6.4 Dekorierer (Decorator)

148

4.6.5 Stellvertreter (Proxy)

149

4.6.6 Fassade

150

4.6.7 Zustand (State)

151

4.7 Weiterführende Literatur

152

5 Kommunikation und Dokumentation von Architekturen

154

5.1 Architekten müssen kommunizieren und dokumentieren

155

5.2 Effektive Architekturdokumentation

157

5.2.1 Anforderungen an Architekturdokumentation

157

5.2.2 Regeln für gute Architekturdokumentation

160

5.3 Typische Architekturdokumente

163

5.3.1 Zentrale Architekturbeschreibung

164

5.3.2 Architekturüberblick

167

5.3.3 Dokumentationsübersicht

167

5.3.4 Übersichtspräsentation der Architektur

167

5.3.5 Architekturtapete

168

5.4 Sichten

168

5.4.1 Sichten in der Softwarearchitektur

169

5.4.2 Vier Arten von Sichten

171

5.4.3 Entwurf der Sichten

173

5.5 Kontextabgrenzung

175

5.5.1 Elemente der Kontextabgrenzung

175

5.5.2 Notation der Kontextabgrenzung

176

5.5.3 Entwurf der Kontextabgrenzung

176

5.6 Bausteinsicht

177

5.6.1 Elemente der Bausteinsicht

181

5.6.2 Notation der Bausteinsicht

182

5.6.3 Entwurf der Bausteinsicht

183

5.7 Laufzeitsicht

184

5.7.1 Elemente der Laufzeitsicht

185

5.7.2 Notation der Laufzeitsicht

186

5.7.3 Entwurf der Laufzeitsicht

187

5.8 Verteilungssicht

187

5.8.1 Elemente der Verteilungssicht

188

5.8.2 Notation der Verteilungssicht

188

5.8.3 Entwurf der Verteilungssicht

189

5.9 Dokumentation von Schnittstellen

190

5.10 Dokumentation technischer Konzepte

193

5.11 Werkzeuge zur Dokumentation

193

5.12 TOGAF zur Architekturdokumentation

195

5.13 Weiterführende Literatur

196

6 Modellierung für Softwarearchitekten

198

6.1 Modelle als Arbeitsmittel

198

6.1.1 Grafische oder textuelle Modellierung

200

6.2 UML.2 für Softwarearchitekten

201

6.2.1 Die Diagrammarten der UML.2

202

6.2.2 Die Bausteine von Architekturen

204

6.2.3 Schnittstellen

205

6.2.4 Die Bausteinsicht

206

6.2.5 Die Verteilungssicht

208

6.2.6 Die Laufzeitsicht

210

6.2.7 Darum UML

213

6.2.8 Darum nicht UML

214

6.3 Tipps zur Modellierung

214

6.4 Weiterführende Literatur

215

7 Technische Konzepte und typische Architekturaspekte

216

7.1 Persistenz

220

7.1.1 Motivation

220

7.1.2 Einflussfaktoren und Entscheidungskriterien

223

7.1.2.1 Art der zu speichernden Daten

224

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

225

7.1.2.3 Zugriff und Navigation

227

7.1.2.4 Deployment und Betrieb

227

7.1.3 Lösungsmuster

228

7.1.3.1 Persistenzschicht

228

7.1.3.2 DAO: Eine Miniatur-Persistenzschicht

232

7.1.4 Bekannte Risiken und Probleme

233

7.1.5 Weitere Themen zu Persistenz

234

7.1.6 Zusammenhang zu anderen Aspekten

238

7.1.7 Praktische Vertiefung

239

7.1.8 Weiterführende Literatur

240

7.2 Geschäftsregeln

241

7.2.1 Motivation

241

7.2.2 Funktionsweise von Regelmaschinen

244

7.2.3 Kriterien pro & kontra Regelmaschinen

246

7.2.4 Mögliche Probleme

247

7.2.5 Weiterführende Literatur

248

7.3 Integration

248

7.3.1 Motivation

248

7.3.2 Typische Probleme

250

7.3.3 Lösungskonzepte

251

7.3.4 Entwurfsmuster zur Integration

255

7.3.5 Konsequenzen und Risiken

256

7.3.6 Zusammenhang mit anderen Aspekten

258

7.3.7 Weiterführende Literatur

259

7.4 Verteilung

259

7.4.1 Motivation

259

7.4.2 Typische Probleme

260

7.4.3 Lösungskonzept

260

7.4.4 Konsequenzen und Risiken

262

7.4.5 Zusammenhang mit anderen Aspekten

262

7.4.6 Weiterführende Literatur

262

7.5 Kommunikation

263

7.5.1 Motivation

263

7.5.2 Entscheidungsalternativen

263

7.5.3 Grundbegriffe der Kommunikation

263

7.5.4 Weiterführende Literatur

267

7.6 Grafische Oberflächen (GUI)

269

7.6.1 Motivation

269

7.6.2 Einflussfaktoren und Entscheidungskriterien

269

7.6.3 GUI-relevante Architekturmuster

271

7.6.4 Struktur und Ergonomie von Benutzeroberflächen

272

7.6.5 Bekannte Risiken und Probleme

273

7.6.6 Zusammenhang zu anderen Aspekten

275

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

276

7.7.1 Workflow-Sprachen

278

7.7.2 Vorhersagbarkeit

281

7.7.3 Zweck der Ablaufsteuerung

282

7.7.4 Lösungsansätze

284

7.7.5 Integration von Workflow-Systemen

287

7.7.6 Mächtigkeit von WfMS

288

7.7.7 Weiterführende Literatur

288

7.8 Sicherheit

289

7.8.1 Motivation – Was ist IT-Sicherheit?

289

7.8.2 Sicherheitsziele

290

7.8.3 Lösungskonzepte

292

7.8.4 Security Engineering mit Patterns

299

7.8.5 Weiterführende Literatur

300

7.9 Protokollierung

301

7.9.1 Typische Probleme

301

7.9.2 Lösungskonzept

302

7.9.3 Zusammenhang mit anderen Aspekten

303

7.9.4 Weiterführende Literatur

303

7.10 Ausnahme- und Fehlerbehandlung

304

7.10.1 Motivation

304

7.10.2 Fehlerkategorien schaffen Klarheit

306

7.10.3 Muster zur Fehlerbehandlung

308

7.10.4 Mögliche Probleme

309

7.10.5 Zusammenhang mit anderen Aspekten

310

7.10.6 Weiterführende Literatur

311

7.11 Skalierbarkeit

311

7.11.1 Was bedeutet Skalierbarkeit?

311

7.11.2 Skalierungsstrategien

312

7.11.3 Elastizität

312

7.11.4 Scale-Up-Strategie

312

7.11.5 Vertikale Scale-Out-Strategie

313

7.11.6 Horizontale Scale-Out-Strategie

313

7.11.7 Der Strategiemix

313

7.11.8 Allgemeine Daumenregeln

314

7.11.9 CPU-Power

315

7.11.10 GPU-Power

315

7.11.11 RAIDs, SANs und andere Speichersysteme

315

7.11.12 Bussysteme für die Speicheranbindung

316

7.11.13 Geringere Bandbreite im Netz

316

8 Bewertung von Softwarearchitekturen

318

8.1 Qualitative Architekturbewertung

321

8.2 Quantitative Bewertung durch Metriken

328

8.3 Werkzeuge zur Bewertung

330

8.4 Weiterführende Literatur

331

9 Systematische Verbesserung und Evolution

332

9.1 Wege in den Abgrund

334

9.2 Systematisch verbessern

335

9.3 Bewährte Praktiken und Muster

338

9.4 Analyse: Probleme identifizieren

340

9.5 Evaluate: Probleme und Maßnahmen bewerten

342

9.6 Improve: Verbesserungsmaßnahmen planen und durchführen

343

9.6.1 Maxime für Verbesserungsprojekte

343

9.6.2 Kategorien von Verbesserungsmaßnahmen

343

9.7 Crosscutting: phasenübergreifende Praktiken

347

9.8 Mehr zu aim42.

348

9.9 Weiterführende Literatur

348

10 Serviceorientierte Architekturen (SOA) und Microservices

350

10.1 Was ist SOA?

351

10.2 So funktionieren Services

356

10.3 SOA in der Praxis

357

10.4 SOA und Softwarearchitektur

360

10.5 Microservices

360

10.6 Weiterführende Literatur

365

11 Enterprise-IT-Architektur

366

11.1 Wozu Architekturebenen?

367

11.2 Aufgaben von Enterprise-Architekten

368

11.2.1 Management der Infrastrukturkosten

368

11.2.2 Management des IS-Portfolios

369

11.2.3 Definition von Referenzarchitekturen

370

11.2.4 Weitere Aufgaben

372

11.3 Weiterführende Literatur

374

12 Beispiele von Softwarearchitekturen

376

12.1 Beispiel: Datenmigration im Finanzwesen

377

12.2 Beispiel: Kampagnenmanagement im CRM

394

13 Werkzeuge für Softwarearchitekten

426

13.1 Kategorien von Werkzeugen

426

13.2 Typische Auswahlkriterien

429

14 iSAQB Curriculum

432

14.1 Standardisierte Lehrpläne für Softwarearchitekten

433

14.1.1 Grundlagenausbildung und Zertifizierung Foundation-Level.

433

14.1.2 Fortgeschrittene Aus- und Weiterbildung (Advanced-Level)

434

14.2 Können, Wissen und Verstehen

435

14.3 Voraussetzungen und Abgrenzungen

435

14.4 Struktur des iSAQB-Foundation-Level-Lehrplans

436

14.5 Zertifizierung nach dem iSAQB-Lehrplan

439

15 Nachwort: Architektonien

440

15.1 In sechs Stationen um die (IT-)Welt

440

15.2 Ratschläge aus dem architektonischen Manifest

443

16 Literatur

448

Stichwortverzeichnis

452