What is Software Architecture?
Difference between software Arc, Design and Coding
Tenets of SW Arch
Architecture Significant Requirement
Documentation of Software Architecture
3. They all are Design
Writing Code Design Architecture
4. Modern Software Architecture
Significance & Impact!
Decisions
HighLow
Implementation Design Architecture
All architecture is design, but not all design is
architecture!
Design & Architecture exist in a continuum
5. Coding
• A sum function
• For Loop
for(int i=1; i<end; i++)
sum+=I;
• Recursion
• return i + sum(i - 1);
• Equation
• N(N+1)/2
14. The significant decisions about the organization of
a software system
12:38
Restful
Webservices
DB
REST
The selection of the structural elements and their
interfaces by which the system is composed
15. The selection of the structural elements and their
interfaces by which the system is composed
12:38
Restful
Webservices
DB
REST
16. The behavior of collaboration among those
elements
http://wiki.servicenow.com/index.php?title=OpenID http://www.cloudcasts.net/devguide/Default.aspx?id=11020
The composition of these structural and
behavioral elements into larger subsystems;
17. Software
Architecture
Definition
The significant decisions about the organization of a software
system
The selection of the structural elements and their interfaces by
which the system is composed;
The behavior of collaboration among those elements;
The composition of these structural and behavioral elements into
larger subsystems;
The architectural style that guides this organization.
Involves functionality, usability, resilience, performance, reuse,
comprehensibility, economic and technology constraints,
tradeoffs and aesthetic concerns.
22. Architecture
Significant
Requirement
Are those requirements that play an important role in
determining the architecture of the system.
Requirements require special attention.
Not all requirements have equal significance with
regards to the architecture.
23. Modern Software ArchitectureSlide: 23
Avoid the Sixth Soldier’s Problem
World War 1 artilleryWorld War 2 artillery
Capture
Decisions + Reasons
24. Modern Software ArchitectureSlide: 24
Release one
Release Two
UpFront
EarlyDevelopment
Active Development
Maintenance
Time
ArchitectureEffort
Architecture Effort Over Time
(1/2)
25. Modern Software ArchitectureSlide: 25
Version one
Version Two
UpFront
EarlyDevelopment
Active Development
Maintenance
Time
ArchitectureEffort
Architecture Effort Over Time
(2/2)
31. Fowler’s Quadrants
Modern Software ArchitectureSlide: 31
InadvertentDeliberate
InadvertentDeliberate
Reckless Prudent
Reckless Prudent
“What is layering?”
“We don’t have
time for design?”
“We must ship now
and deal with the
consequences
later?”
“Now we know
how it should
be done!”
How software entropy accumulates?
Or what you
didn’t know that
you don’t know!
We would like the domain concern to be isolated from all technical concerns (i.e. data – database details & presentation – user interface details)
If this happen the domain logic is much easier to understand.
The impact on the industry
We want the domain logic to be a reflection on the business domain I am solving (when we are at the bill object we only see customer not a customer code)
The impact is to be able to test the business logic without even accessing the database (testing would take few seconds)
We would love to reach the point that the domain logic is not aware of the database.
The mapping layer takes the objects and store it to at the database.
When the data is needed the objects are dehydrated.