Professional Documents
Culture Documents
Engineering
Some Thoughts on
Software Architecture
with Thomas Powell
CSE 110 Software
Engineering
What is Architecture
“An architect”
• Literally (in Greek) “the first builder/craftsman”
• The one who begins, leads, and guides the work
“To architect”
• To plan, organize, or structure something
“Architecture”
• A kind of knowledge that comes before and marks out what
will be built; a design
Words of warning
https://cadams.ca/blog/post/2017/03/03/architectus-oryzus/
CSE 110 Software
Engineering
http://www.eoi.es/blogs/cristinagarcia-ochoa/2012/01/14/the-sidney-opera-
house-construction-a-case-of-project-management-failure/
http://www.couriermail.com.au/news/why-sydneys-opera-house-was-the-
worlds-biggest-planning-disaster/story-e6freon6-1226744769556
CSE 110 Software
Engineering
Design and construction were closely intertwined. Utzon’s radical approach to the
construction of the building fostered an exceptional collaborative and innovative
environment. The design solution and construction of the shell structure took eight
years to complete and the development of the special ceramic tiles for the shells
took over three years. The project was not helped by the changes to the
brief. Construction of the shells was one of the most difficult
engineering tasks ever to be attempted.
So yes it was super hard, kind of not correct for the problem, totally blown out
in timeline and budget but yet is still it is considered one of the most important
structures of the 20th century architecturally speaking. Do the ends justify these
means? If so why bother with architectural at all…just get ‘er done!?
CSE 110 Software
Engineering
Anti-Architecture: Scrap-Heap
Programming
• Aka MacGyver, Cowboy, coding with
Google, Stack Overflo
• Work bottom up, finding, scavenging,
stealing and working something out
• Negotiate towards good enough
changing the requirements if necessary
• Scrap Heap is all about the GETS
(‘Good Enough’ To Ship)
w
Why Bother
Spolsky:
◦ “The only thing harder than trying to design software is
trying to design software as a team.”
Architecture Astronauts
Spolsky:
◦ The hallmark of an architecture astronaut is that they don't solve an actual problem... they solve
something that appears to be the template of a lot of problems.
Over-Engineering
“Good Ideas”
• There is never a shortage of “good ideas” of things to add to a piece
of softwar
• Air quotes = yes possibly good, but not important
• “Good ideas” become the feature creep that leads to the ball of mud
Feature Creep
KISS
• To avoid feature creep we
often hear the suggestion of
KISS (Keep it simple, stupid)!
YAGNI
• Possible Reason
• Market consideration
• Predictable Consumer Irrationalit
• Mistaking Dev Ideas for User Ideas
n
Under Engineering
Monoliths
App Example
Monoliths ~ Solid?
SOA App
Architectural Principles
The Three Rs
• Reduc
• Less code (unless it is too tricky) tends to be bette
• Reus
• Use other people’s cod
• Recycle*
• Recycle old (or other people’s) ideas
• *Refactor would make more sense but just didn’t fit with my silly aim
e
Reduce
Reduce - Realities
Reuse
Reuse Realities
Keeping DRY
Orthogonalit
Getting WET
Dependency Graph
What we want?
CSE 110 Software
Engineering
Starts to devolve
CSE 110 Software
Engineering
And here?
CSE 110 Software
Engineering
http://akvo.org/blog/the-ball-of-mud-transition/
r
Balls of Mud
Helicopter Problem
At 30,000ft
At 10,000ft
At 1,000ft
At 100ft
Code Smell
• Code smell - the hint that something may be wron
• There are tell tale signs to look for that suggest bad
architecture a foot
http://www.codinghorror.com/blog/2006/05/code-smells.html
g
At Zero Feet
Summary
• Architecture is importan
• Yet Architecture is difficult to exactly define since it is
encompasses many thing
• Bad architecture can significantly hamper the success of a
projec
• Sadly good architecture does not mean a project will
succeed though
t