Jul 03, 2015
Amir Yousefi
An overview on
Definition : Fowler
In most successful software projects, the expert
developers working on that project have a
shared understanding of the system design. This
shared understanding is called ‘architecture.’
This understanding includes how the system is
divided into components and how the
components interact through interfaces. These
components are usually composed of smaller
components, but the architecture only includes
the components and interfaces that are
understood by all the developers…Architecture is
about the important stuff. Whatever that is.
Definition : Booch
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.
Kirk:
the goal of software architecture must be
to eliminate the impact and cost of change
Kirk:
The best way to deal with architecture is to
eliminate it.
The paradox
the way to eliminate architecture by minimizing
the impact of cost and change is through
flexibility
The more flexible the system, the more likely
that the system can adapt and evolve as
necessary
But…
The paradox
The paradox
making everything easy to change makes
the entire system very complex
Lehman's 2nd law
As a system evolves its complexity increases
unless work is done to maintain or reduce it
Gall's law
A complex system designed from scratch never
works and cannot be made to work. You have to
start over, beginning with a working simple
system
Defeating Complexity
Defeating Complexity
Defeating Complexity
Modularity
It is all the way down
Reuse Release equivalence
?
Reducing complexity
Joints
Joints
Shared understanding
Shared understanding