Agile&Architektur - improuv · 2018. 2. 21. · Agile&Architektur Mar/n&Bengl,&Christoph&Mathis...

Post on 09-Oct-2020

1 views 0 download

transcript

Agile&Architektur

Mar/n&Bengl,&Christoph&Mathis

How&to&develop&outstanding&products

ArchitekturEine&Mo/va/on

„Architektur&

repräsen/ert&die&signifikanten&Design@Entscheidungen,&die&ein&System&gestalten,&wobei&‚signifikant’&durch&die&Kosten'von'Änderungen&bes/mmt&wird“

Grady'Booch

Wie&konstruiert&man&für&Änderbarkeit

Gebäude:&Fritz&Haller

Conway´s&Gesetzund&die&Architektur

Conway‘s&Gesetz

..organiza/ons&which&design&systems&...&are&constrained&to&produce&designs&which&are'copies'of'the'communica8on'structures&of&these&organiza/ons

Teams&müssen&

cross@funk/onal&sein

Was&bes/mmt&die&Kosten&von&Änderungen

ImprovementStart with the simplest solution that can possibly work.Improve it until it is good (transparent, maintainable)

Test succeedsRefactor

Write new test Test fails Write code

='Test'Driven'Development'+'Refactoring'+'Pa@erns

Architektur

AgileEngineering

='Business'Epics,'ArchitekturEEpics

Architektur

GrundsatzEEntscheidungen

Rahmenbedingungen ...

Agile&Architektur&heißt&nicht,dass&es&keine&Upfront&Entscheidungen&gibt

Aber&Upfront&Entscheidungen&sind&nicht&der&einzige&Treiber

Treiber:&1.&BoXom&Up&:&Refactoring,&TDD,&PaXerns2.&Top&Down:&Vorarbeiten,&Vision,&S/l

3.&Outside&in:&User&Experience,&BDD

und:&

Embrace&Change

Der&Änderungsprozess

ImprovementStart with the simplest solution that can possibly work.Improve it until it is good (transparent, maintainable)

Test succeedsRefactor

Write new test Test fails Write code

='Test'Driven'Development?

Scrum'Prozess

AgileEngineering

ImprovementStart with the simplest solution that can possibly work.Improve it until it is good (transparent, maintainable)

Test succeedsRefactor

Write new test Test fails Write code

Nicht'alles

ist'linear

Krea8ves'Arbeiten'hatlaterale'und'lineare'Aspekte

Plan

DoCheck

Act

ImprovementStart with the simplest solution that can possibly work.Improve it until it is good (transparent, maintainable)

Test succeedsRefactor

Write new test Test fails Write code

Ideas&for&an&experiment:

Non@Linear,&Divergent

Develop:Linear.&Consistent.&Logical.

Mind&States:&lateral&or&linear

X

X

X

X

X

Divergent Thinking

Convergent Thinking

Create Choices

Make Choices

Prototype and Learn

Iterate

Krea8ve'Impulsemuss'man'freisetzen

Zm&Beispiel&durch&Spiele&...

Teams'und'Product'Management'müssen'koEkrea8v'arbeiten

An/@PaXerns

Technical&Debt

Reusability&and&Waste

Reusability&instead&of&usability

Beware&of:Blueprints&and&PaXerns

Beware&of&Non@coding&Architects

Boxes&don´t&crash

Conway’s&LawEin&System&wird&in&seiner&Struktur&der&Organisa/on&ähneln,&die&es&erstellt

Übergaben

Zusammenfassung

Drei&zentrale&Prinzipien

1.&Lose&Kopplung

2.&Lose&Kopplung

3.&Lose&Kopplung

Prinzipien

Travel&light&

Assume&Simplicity&

Embrace&Change&

Incremental&Change&

Model&with&a&Purpose&

Mul/ple&Models&

Quality&Work&

Rapid&Feedback&

Maximize&Shareholder&Investment

1. Lose&Kopplung

2. „KISS:&Use&the&simplest&approach&you&can&get&away&with“&

3. Architektur&ist&Kommunika/on

4. „embrace&change“&

Five&Design&Skills&every&Programmer&should&have• Given&an&exis/ng,&large&program,&determine&what&its&most&important&classes&are,&what&they're&responsible&for,&and&how&they&relate&to&each&

other.

• Given&a&program,&iden/fy&duplica/on&and&other&design&smells&that&make&arbitrary&change&difficult,&and&come&up&with&a&list&of&incremental,&behavior@preserving&refactorings&that&will&solve&those&problems&and&can&be&implemented&gradually,&over&/me.

• Given&a&program&and&a&list&of&feature&changes,&determine&what&parts&of&the&program&should&be&changed&to&support&the&new&features&and,&if&the&program&design&doesn't&support&the&new&features&cleanly,&what&incremental&refactorings&will&improve&the&design&so&that&it&will.

• Given&a&blank&slate&and&a&list&of&features,&use&test@driven&development&to&create&new&code&that&is&tested&by&unit&tests&that&meet&Michael&Feathers&defini/on&of&a&„unit&test“.&

• Given&a&blank&slate&and&a&list&of&features,&incrementally&mix&design&improvements&with&new&feature&development&on&a&daily&basis,&without&u/lizing&mul/@day&"design"&or&"refactoring"&phases.

hXp://jamesshore.com/Blog/Five@Design@Skills.html