The Architecture of Uncertainty
-
Upload
kevlin-henney -
Category
Software
-
view
426 -
download
0
Transcript of The Architecture of Uncertainty
![Page 2: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/2.jpg)
![Page 3: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/3.jpg)
Um. What's the name of the word for things not being the same always. You know, I'm sure there is one. Isn't there?
There's must be a word for it... the thing that lets you know time is happening. Is there a word?
Change.
Oh. I was afraid of that.
Neil Gaiman The Sandman
![Page 4: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/4.jpg)
When a design decision
can reasonably go one of
two ways, an architect
needs to take a step back.
Instead of trying to decide
between options A and B,
the question becomes
"How do I design so that
the choice between A and
B is less significant?"
The most interesting thing
is not actually the choice
between A and B, but the
fact that there is a choice
between A and B.
Kevlin Henney
"Use Uncertainty As a Driver"
![Page 5: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/5.jpg)
We propose [...] that one begins
with a list of difficult design
decisions or design decisions
which are likely to change. Each
module is then designed to hide
such a decision from the others.
David L Parnas "On the Criteria to Be Used in Decomposing Systems into Modules"
![Page 6: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/6.jpg)
struct Date
{
int year, month, day;
};
![Page 7: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/7.jpg)
struct Date
{
int daysSinceEpoch;
};
![Page 8: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/8.jpg)
class Date
{
public:
...
private:
int year, month, day;
};
![Page 9: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/9.jpg)
class Date
{
public:
...
private:
int daysSinceEpoch;
};
![Page 10: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/10.jpg)
class Date
{
public:
...
private:
...
};
![Page 11: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/11.jpg)
![Page 12: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/12.jpg)
![Page 13: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/13.jpg)
![Page 14: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/14.jpg)
![Page 15: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/15.jpg)
![Page 16: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/16.jpg)
![Page 17: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/17.jpg)
There are standard precautions that can
help reduce risk in complex software
systems. This includes the definition of a
good software architecture based on a
clean separation of concerns, data hiding,
modularity, well-defined interfaces, and
strong fault-protection mechanisms.
Gerard J Holzmann "Mars Code", CACM 57(2)
http://cacm.acm.org/magazines/2014/2/171689-mars-code/fulltext
![Page 18: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/18.jpg)
There are standard precautions that can
help reduce risk in complex software
systems. This includes the definition of a
good software architecture based on a
clean separation of concerns, data hiding,
modularity, well-defined interfaces, and
strong fault-protection mechanisms.
Gerard J Holzmann "Mars Code", CACM 57(2)
http://cacm.acm.org/magazines/2014/2/171689-mars-code/fulltext
![Page 19: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/19.jpg)
All architecture is design but not
all design is architecture.
Architecture represents the
significant design decisions that
shape a system, where significant
is measured by cost of change.
Grady Booch
![Page 20: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/20.jpg)
Architecture is the decisions that
you wish you could get right early
in a project, but that you are not
necessarily more likely to get
them right than any other.
Ralph Johnson
![Page 21: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/21.jpg)
Analysis Design Code Test
![Page 22: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/22.jpg)
Analysis Design Code Test
![Page 23: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/23.jpg)
Analysis Design Code Test
![Page 24: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/24.jpg)
Walking on water and developing software from a specification are easy if both are frozen.
Edward V Berard
![Page 25: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/25.jpg)
Walking on water and developing software from a specification are easy if both are frozen?
![Page 26: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/26.jpg)
Expert
Proficient
Competent
Advanced Beginner
Novice
![Page 27: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/27.jpg)
The "defined" process control model requires that every piece of work be completely understood. Given a well-defined set of inputs, the same outputs are generated every time.
Ken Schwaber Agile Software Development with Scrum
![Page 28: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/28.jpg)
The empirical process control model, on the other hand, expects the unexpected. It provides and exercises control through frequent inspection and adaptation for processes that are imperfectly defined and generate unpredictable and unrepeatable results.
Ken Schwaber Agile Software Development with Scrum
![Page 29: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/29.jpg)
Design Design Design Design
![Page 30: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/30.jpg)
Design
![Page 31: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/31.jpg)
Programming is a design
activity.
Jack W Reeves
"What Is Software Design?"
![Page 32: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/32.jpg)
![Page 33: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/33.jpg)
Coding actually makes sense more
often than believed. Often the
process of rendering the design in
code will reveal oversights and the
need for additional design effort. The
earlier this occurs, the better the
design will be.
Jack W Reeves
"What Is Software Design?"
![Page 34: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/34.jpg)
You have to finish things —
that's what you learn from,
you learn by finishing things.
Neil Gaiman
![Page 35: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/35.jpg)
![Page 36: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/36.jpg)
Properly gaining control
of the design process
tends to feel like one is
losing control of the design process.
![Page 37: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/37.jpg)
Speculative Generality
Brian Foote suggested this name for a smell to which we are very sensitive. You get it when people say, "Oh, I think we need the ability to do this kind of thing someday" and thus want all sorts of hooks and special cases to handle things that aren't required. The result often is harder to understand and maintain. If all this machinery were being used, it would be worth it. But if it isn't, it isn't. The machinery just gets in the way, so get rid of it.
Martin Fowler Refactoring
![Page 38: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/38.jpg)
You have a problem. You decide to solve it with configuration. Now you have <%= $problems %> problems!
Dan North https://twitter.com/tastapod/status/342935892207497219
![Page 39: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/39.jpg)
![Page 40: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/40.jpg)
People overvalue their knowledge
and underestimate the probability
of their being wrong.
![Page 41: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/41.jpg)
Prediction is very difficult Prediction is very difficult,
especially about the future.
Niels Bohr
![Page 42: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/42.jpg)
![Page 43: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/43.jpg)
![Page 44: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/44.jpg)
Stewart Brand, How Buildings Learn See also http://www.laputan.org/mud/
![Page 45: The Architecture of Uncertainty](https://reader034.fdocuments.in/reader034/viewer/2022042817/55a931aa1a28ab40368b45e0/html5/thumbnails/45.jpg)
Uncertainty is an uncomfortable position, but certainty is an absurd one.
Voltaire