Architecting The Unknown Grady Booch Email: gbooch@us.ibm.com IBM - - PowerPoint PPT Presentation

architecting the unknown
SMART_READER_LITE
LIVE PREVIEW

Architecting The Unknown Grady Booch Email: gbooch@us.ibm.com IBM - - PowerPoint PPT Presentation

Architecting The Unknown Grady Booch Email: gbooch@us.ibm.com IBM Fellow Twitter: @grady_booch Chief Scientist for Software Engineering Web: computingthehumanexperience.com Chief Scientist for Watson/M The fundamental premise of science is


slide-1
SLIDE 1

Architecting The Unknown

Grady Booch

IBM Fellow Chief Scientist for Software Engineering Chief Scientist for Watson/M Email: gbooch@us.ibm.com Twitter: @grady_booch Web: computingthehumanexperience.com

slide-2
SLIDE 2

The fundamental premise of science is that the cosmos is understandable.

slide-3
SLIDE 3

The fundamental premise of computing is that the cosmos is computable.

slide-4
SLIDE 4
slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8
slide-9
SLIDE 9
slide-10
SLIDE 10
slide-11
SLIDE 11
slide-12
SLIDE 12
slide-13
SLIDE 13
slide-14
SLIDE 14
slide-15
SLIDE 15
slide-16
SLIDE 16
slide-17
SLIDE 17
slide-18
SLIDE 18
slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22
slide-23
SLIDE 23
slide-24
SLIDE 24
slide-25
SLIDE 25
slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28

28

slide-29
SLIDE 29

29

slide-30
SLIDE 30

30

slide-31
SLIDE 31

31

slide-32
SLIDE 32

32

slide-33
SLIDE 33

At a macro level, finding a solution to any complex problems is an iterative and incremental process with periods of punctuated equilibrium.

slide-34
SLIDE 34

Technology churn Scalability Performance Capacity Fail safe/Fault tolerance Reliability/Availability Security Functionality Cost/Schedule Compatibility Resilience

slide-35
SLIDE 35
slide-36
SLIDE 36
slide-37
SLIDE 37
slide-38
SLIDE 38
  • Strong vision plus fundamentals in execution

– Predictability – Repeatability – Tangible artifacts – Measurable results – Stable intermediate forms – Continuous evolution – Continuous refactoring

  • Organizational architecture

– Organized labor – Shared stories – Tribal memory – Rituals – Trust – Serendipitous connections

slide-39
SLIDE 39

The code is the truth but not the whole truth.

slide-40
SLIDE 40

All architecture is design but not all design is architecture. A system’s architecture is defined by its significant design decisions (where significant is measured by the cost of change).

slide-41
SLIDE 41
slide-42
SLIDE 42
slide-43
SLIDE 43

Why We Architect

  • Vehicle for communication among stakeholders
  • Reasoning about an evolving system
  • Intentional transformation
  • Mechanism for attacking risk
  • Accountability
  • Preservation of tribal memory

3

slide-44
SLIDE 44

44

How We Architect

  • Crisp abstractions
  • Clear separation of concerns
  • Balanced distribution of responsibilities
  • Simplicity
  • Grow a system through the iterative and

incremental release

  • f an executable architecture
slide-45
SLIDE 45

How I Architect

  • Start with use cases
  • Shape the most significant design decisions
  • Reason about those decisions from the logical,

implementation, and deployment views

  • Evolve the key abstractions, subsystems,

patterns, and services by growing a minimal viable product.

  • Repeat

5

slide-46
SLIDE 46
slide-47
SLIDE 47

Theft Method Intuition Classical System Unprecedented System Theft Method Intuition

slide-48
SLIDE 48

Engineering An Unprecedented System

  • Do the hard part first
  • If it works, then it’s useful
  • All design domains contain an irreducible kernel of

problems that are best addressed through creative and heuristic approaches that combine art and science

  • All serious mistakes are made in the first day
  • No complex system can be optimum to all parties

concerned, nor all functions optimized

8

slide-49
SLIDE 49

How Unprecedented Systems Succeed

  • As a rule, software systems do not work well until they have been used, and

have failed repeatedly, in real applications [Dave Parnas]

  • A complex system that works is invariably found to have evolved from a

simple system that works [John Gall]

  • Both vertically and horizontally, the most resilient systems tend to exhibit

loose coupling and tight cohesion among components [Simon]

  • Simplicity is the most important consideration in a design; both

implementation and interface must be simple, though it is more important for the implementation to be simple [Gabriel]

  • Software which is flexible, simple, sloppy, tolerant and altogether forgiving

turns out to be most resilient [Bosworth]

  • To an engineer, good enough means perfect [Alexander Calder]
slide-50
SLIDE 50
slide-51
SLIDE 51
slide-52
SLIDE 52

Architecting The Unknown

  • Allow yourself to fail
  • Fail early
  • Fail often
  • Fail safely
  • Fill your tool bag
  • Get out of your comfort zone
  • Be inspired by the real world

52

slide-53
SLIDE 53
slide-54
SLIDE 54

Software is the hidden writing that whispers the stories of possibility to our hardware.