1. Architecture Quality
extraordinarily large systems, services,
strategic design, scalability and reliability, large
datasets, latency, service-oriented systems,
manage architectural change, scaling domain
driven design
2. A definition
"Software architecture is the set of
design decisions which, if made
incorrectly, may cause your project
to be cancelled."
– Eoin Woods
4. Perry and Wolf
In one of the seminal papers on software
architecture from 1992, they draw an
analogy between building architecture
and software architecture to develop an
intuition about software architecture
Blueprints, skeletons of the big picture etc.
6. Pantheon
Originally built in 27 BC, destroyed
(as a prototype should be) and
rebuilt in 125 AD. So the real
structure of this building is
actually only 1882 years old...
Originally built as a general
purpose church, to all the gods.
In 609 converted into a Christian
church.
11. Back to the analogy
Right, it might not be perfect, but buildings
can be used to say something intuitive
about software architecture.
12. The speakers of the track
today
“Architectures of extraordinarily large, self-
sustaining systems” Richard Gabriel
“Three steps for turning your Tier-
Based/Spring-Application into dynamically
Scalable Services (without Web Services)”
Nati Shalom
“Strategic Design” Eric Evans
“The Top 10 Ways to Botch Enterprise Java
Application Scalability and Reliability”
Cameron Purdy
“Amazon and Hadoop” Jinesh Varia
13. Some numbers from
Google
1,750,000 hits on “software architecture”
33,600 hits on “architecture quality”
Should we be worried?
14. Software architecture
definitions
The structure or structures of the system,
which comprise software components,
the externally visible properties of those
components, and the relationships
between them.
15. Garlan and Shaw, 1993
...beyond the algorithms and data structures of
the computation; designing and specifying the
overall system structure emerges as a new
kind of problem. Structural issues include
gross organization and global control
structure; protocols for communication,
synchronization, and data access; assignment
of functionality to design elements; physical
distribution; composition of design elements;
scaling and performance; and selection among
design alternatives."
16. Perry and Wolf, 1992
A set of architectural (or, if you will, design)
elements that have a particular form.
Perry and Wolf distinguish between
processing elements, data elements, and
connecting elements, and this taxonomy
by and large persists through most other
definitions and approaches.
17. Nice mathematics!
No two methods with the same signature are
defined in the same class:
∀m1∈Method ∀m2∈Method ∀c∈Class ・
SameSignature(m1,m2)∧Member(m1,c)∧M
ember(m2,c)
⇒ m = m