53
Grady Booch Free Radical Everything You Know Is Wrong

Grady Booch Free Radical Everything You Know Is Wrong

Embed Size (px)

Citation preview

Page 1: Grady Booch Free Radical Everything You Know Is Wrong

Grady BoochFree Radical

Everything You Know Is Wrong

Page 2: Grady Booch Free Radical Everything You Know Is Wrong

Grady BoochFree Radical

Everything, You Know, Is Wrong

Page 3: Grady Booch Free Radical Everything You Know Is Wrong

Any future we envision relies on software-intensive systems

...that have not yet been written

3

Page 4: Grady Booch Free Radical Everything You Know Is Wrong

4

Page 5: Grady Booch Free Radical Everything You Know Is Wrong
Page 6: Grady Booch Free Radical Everything You Know Is Wrong

6

http://www.computerworld.com.au/article/250514/a-z_programming_languages_c_/s.jpg

Our civilization runs on software

Page 7: Grady Booch Free Radical Everything You Know Is Wrong

7

The function of good software is to make the complex appear to be simple.

Page 8: Grady Booch Free Radical Everything You Know Is Wrong

What Pain Do You Feel?

How do we attend to new requirements without being saddled by our legacy (but at the same time not compromising that legacy?)

How do we integrate new technology into our existing code base?

How do we integrate our existing systems to extract greater value from the whole?

How do we increase our agility in response to the market while simultaneously improving efficiency and quality yet also reducing costs?

How do we attend to assets introduced through acquisition?

How do use software to improve market efficiency through the creation of dominant product lines?

How do we attend to a continuously refreshed stakeholder community, a globally and temporally distributed development team, and inevitable leakage/loss of institutional memory?

While doing all this, how do we continue to innovate?

Page 9: Grady Booch Free Radical Everything You Know Is Wrong

Fundamental Challenges Of Discrete Systems

Presence of essential complexity [Brooks]

Non-continuous behavior of discrete systems

Combinatorial explosion of states

Corruption from unexpected external events

Lack of mathematical tools and intellectual capacity to model the behavior of large discrete systems

Page 10: Grady Booch Free Radical Everything You Know Is Wrong

Complexity

Classical

– Computational complexity

– Kolmogorov complexity

From my experience

– Software mass

– The enumeration of things per view

– The enumeration of connections per view

– The presence of patterns per view

– The number of possible states

Page 11: Grady Booch Free Radical Everything You Know Is Wrong

Triggers Of Complexity

Significant interactions

High number of parts and degrees of freedom

Nonlinearity

Broken symmetry

Nonholonomic constraints

– Localized transient anarchy

– Time-triggered vs state machines

Flood, Dealing With Complexity

Page 12: Grady Booch Free Radical Everything You Know Is Wrong

The Limits of Computing

The laws of physics

The laws of software

The challenge of algorithms

The difficulty of distribution

The problems of design

The importance of organization

The impact of economics

The influence of politics

The limits of human imagination

Fundamental

Human

Page 13: Grady Booch Free Radical Everything You Know Is Wrong

Points Of Friction

Cost of start up and on-going working space organization

Inefficient work product collaboration

Maintaining effective group communication, including knowledge and experience, project status, and project memory

Time starvation across multiple tasks

Stakeholder negotiation

Stuff that doesn’t work

High semantic density artifacts

Page 14: Grady Booch Free Radical Everything You Know Is Wrong

Developing complex software-intensive systems has been, is, and will continue to be

fundamentally hard.

Page 15: Grady Booch Free Radical Everything You Know Is Wrong

What Not To Do

Over-constrain your process.

Under-constrain your process.

Treat developing software-intensive systems as a cost center.

Page 16: Grady Booch Free Radical Everything You Know Is Wrong

What To Do

Develop in anger (with measurable continuous deliverables in mind).

Listen to your customers (but not too much).

Listen to your code warriors (but with a light touch).

Page 17: Grady Booch Free Radical Everything You Know Is Wrong

An Observation

While these points of pain are legion, a common thread that weaves though them is that of architecture

– Every software-intensive system has one

– Most are accidental, a few are intentional

– A considerable amount of architectural knowledge lies in tribal memory

The presence of a reasonably well understood, syndicated, and governed architecture has a positive impact upon each of these points of pain

Page 18: Grady Booch Free Radical Everything You Know Is Wrong

Why Architecture?

– Making manifest a system’s architecture facilitates understanding, reasoning about, and transforming that system with intention.

– Syndicating a system’s architecture helps preserve and extend the development organization’s tribal memory.

– Governing a system’s architecture makes it possible to grow that system efficiently and effectively through refactoring, by creating a stable platform for innovation, and by establishing a managed product line (all the while keeping the original system running).

Page 19: Grady Booch Free Radical Everything You Know Is Wrong

What Is Architecture?

– The code is the truth (but not the whole truth).

– All architecture is design, but not all design is architecture.

– Architecture represents the set of significant design decisions that shape a system, as seen from the perspective of multiple points of view.

Page 20: Grady Booch Free Radical Everything You Know Is Wrong

What Is Architecture?

– Architecture as essence.

Architecture is the fundamental conception of a system in its environment embodied in elements, their relationships to each other and to the environment, and principles guiding system design and evolution.

– Architecture as blueprint.

– Architecture as literature.

– Architecture as language.

– Architecture as decision.

ISO/IEC WD4 42010 Architecture Description

Page 21: Grady Booch Free Radical Everything You Know Is Wrong

Architectural Issues

Representation/documentation/manifestation

Patterns/styles

Process/transformation

Social organization

Page 22: Grady Booch Free Radical Everything You Know Is Wrong
Page 23: Grady Booch Free Radical Everything You Know Is Wrong

The Well-Structured Architecture

All well-structured systems are full of patterns

All well-structured systems embody

– Crisp abstractions

– A clear separation of concerns

– A balanced distribution of responsibilities

Page 24: Grady Booch Free Radical Everything You Know Is Wrong

Observations

Hierarchy is an illusion

There is no top

Characterization as an input-output mapping is naïve

Multiple simultaneously interlocking views are necessary

Page 25: Grady Booch Free Radical Everything You Know Is Wrong

From Complexity To Simplicity

Simplicity can only be found by adding energy

• That energy is best applied in a process of continuous architectural refactoring

• The power of patterns

Patterns help you manage software complexity [Buschmann]

While we refactor code for many reasons, the following motivations are among the most common: make it easier to add new code; improve the design of existing code; gain a better understanding of code; make coding less annoying. [Kerievsky]

Page 26: Grady Booch Free Radical Everything You Know Is Wrong

Developers (for the most part) don’t draw diagramsbecause they (the diagrams, that is)(rarely) offer any fundamental value

that advances their (the developers, that is) essential work

Page 27: Grady Booch Free Radical Everything You Know Is Wrong

Why Don’t Developers Draw Diagrams?

Our primary product is raw, running, naked code, not diagrams

Diagrams and code have an uneasy relationship that quickly drifts into oblivion and usually ends in tears

Page 28: Grady Booch Free Radical Everything You Know Is Wrong

Some Basic Principles

Edward Tuftee– He abhors eye candy, and values meaning over presentation– “The minimum we should hope for with any display technology is that it should

do no harm”– Any representation should not obscure, bias, or obfuscate reality– He warned against gratuitous representations “without realizing the cost to the

content and the audience in the process”– Representations must simplify, not contribute to, complexity– “The point is that analytical designs are not to be decided on their convenience

to the user or necessarily their readability or what physiologists or decorators think about them; rather, design architectures should be decided on how the architecture assists analytical thinking about evidence.”

Scott McCloud– Amplification through simplification

Carl Sagan– “The brain has its own language for testing the structure and consistency of the

world”

Page 29: Grady Booch Free Radical Everything You Know Is Wrong

What Modeling Is

Abstraction of reality

Abstractions are not reality

Page 30: Grady Booch Free Radical Everything You Know Is Wrong

What Modeling Should Be

Abstraction with freedom but without ambiguity

Abstraction with focus

Artifacts at a moment in time

Artifacts across time and space

Artifacts for many stakeholders

Artifacts made manifest

Page 31: Grady Booch Free Radical Everything You Know Is Wrong

Why We Model

To abstract

To reason about

To document

To transform

Page 32: Grady Booch Free Radical Everything You Know Is Wrong

Describing A System’s Architecture

ISO/IEC WD4 42010 Architecture Description

Page 33: Grady Booch Free Radical Everything You Know Is Wrong
Page 34: Grady Booch Free Radical Everything You Know Is Wrong
Page 35: Grady Booch Free Radical Everything You Know Is Wrong

Kruchten, “The 4+1 View Model of Software Architecture”Booch, The Handbook of Software Architecture

Page 36: Grady Booch Free Radical Everything You Know Is Wrong

Booch, The Handbook of Software Architecture

Page 37: Grady Booch Free Radical Everything You Know Is Wrong
Page 38: Grady Booch Free Radical Everything You Know Is Wrong

38

Representing software architecture

Kruchten, “The 4+1 Model View”

Logical View

End-user Functionality

Implementation View

Programmers Configuration management

Process View

PerformanceScalabilityThroughput

System integrators

Deployment View

System topologyCommunication

Provisioning

System engineering

Conceptual

Physical

Use Case View

04/19/23 Ⓒ 2008 Grady Booch

Page 39: Grady Booch Free Radical Everything You Know Is Wrong

Google

39 Ⓒ 2008 Grady Booch

04/19/23

Page 40: Grady Booch Free Radical Everything You Know Is Wrong

Games

40 Ⓒ 2008 Grady Booch

04/19/23

Page 41: Grady Booch Free Radical Everything You Know Is Wrong

Pathfinder

41 Ⓒ 2008 Grady Booch

04/19/23

Page 42: Grady Booch Free Radical Everything You Know Is Wrong

Watson

Page 43: Grady Booch Free Radical Everything You Know Is Wrong

Fundamentals

Development takes place at two levels: architecture and implementation.

– Both are ongoing, and they interact with each other strongly. New implementations suggest architectural changes. Architectural changes usually require radical changes to the implementation.

Coplien, Organizational Patterns of Agile Development, p. 332

Page 44: Grady Booch Free Radical Everything You Know Is Wrong

Coplien, Organizational Patterns of Agile Development

Page 45: Grady Booch Free Radical Everything You Know Is Wrong

Focus over time

Discovery Invention

Focus

Implementation

Bran Selic

Page 46: Grady Booch Free Radical Everything You Know Is Wrong

The Enterprise Architecture Lifecycle

In my experience

– All hyperproductive organizations tend to have a lifecycle that involves the growth of a system’s architecture through the incremental and iterative release of testable executables.

Not one lifecycle, but many

– Different stages of execution, maturation, and quality

– Harmony, resonance, and cacaphony

Page 47: Grady Booch Free Radical Everything You Know Is Wrong

Process Best Practices

Not one lifecycle, but many

• Different stages of execution, maturation, and quality

• Harmony, resonance, and cacophony

Grow the architecture of a system through the incremental and iterative release of testable executables

• Focus on executables

• Incremental and iterative progress

• Architecture as artifact

47

Page 48: Grady Booch Free Radical Everything You Know Is Wrong

How Much Process Is Necessary?

48

Department of DefenseDepartment of DefenseChaos (no process)Chaos (no process)

Amount of Process Necessary

Small TeamSmall Team MediumMediumStart-upStart-up

When is More Appropriate?Distributed teamsLarge projects (25, 125, 625)Complex projectsExternally imposed constraints

StandardsContractual requirementsLegal requirements

When is Less Appropriate? Co-located teamsSmaller projects (less than 25)Straightforward projectsInternally imposed constraints

Page 49: Grady Booch Free Radical Everything You Know Is Wrong

The Agile Lifecycle

PreliminaryIteration

Architect.Iteration

Architect.Iteration

Devel. Iteration

Devel. Iteration

Devel. Iteration

TransitionIteration

TransitionIteration

Elaboration Construction TransitionInception

Inception• Understand what to build

Elaboration• Understand how to build it

Construction• Build the product

Transition• Deliver and adapt the solution

Page 50: Grady Booch Free Radical Everything You Know Is Wrong

Process Best Practices Attack major risks early and continuously or

else they will attack you

Ensure that you deliver value to your customer

Have a maniacal focus on working software

Accommodate change early in the project

Baseline an executable architecture early on

Build your system with components

Work closely together as one team

Make quality a way of life, not an afterthought

50Walker Royce

Page 51: Grady Booch Free Radical Everything You Know Is Wrong

And Thus It Requires Discipline

Ross et al, Enterprise Architecture as Strategy

Page 52: Grady Booch Free Radical Everything You Know Is Wrong

Things You Can Do With Old Software

Give it away

Ignore it

Put it on life support

Rewrite it

Harvest from it

Wrap it up

Transform it

Preserve it

Page 53: Grady Booch Free Radical Everything You Know Is Wrong

Any future we envision relies on software-intensive systems

...that have not yet been written

53