8. Software architecture
danger #1
Prepares for expansion and
changes that will never happen
Overdesigned
architecture
Tries to achieve faulttolerance or scalability
never needed
Increases risks by making
implementation complex
9. If you are not 100%
sure that a
requirement is solid,
choose a simpler
structure even when
the requirement night
not be fulfilled
16. Customization by Programming
Card UI
Example
System
Integration
Example
DataSource
Example
Custom
Card UI
External
System
Custom
DataSource
Web
Browser
Customization by Configuring
Millstone Cards 2.0
Settings
(XML)
Theme
(HTML,
CSS, ...)
SQL DB
Report
(XSL)
External
Reporting
System
Settings
Example
Theme
Example
Report
Example
17. Software architecture
danger #2
Claims that your software can
do thinks that you do not know
Overgeneralization
Moves the unknown to
layers where it should not
be (UI or user)
Tries to overcome unknown
requirements
24. Two edged sword of
software architecture
Can make your system easier to
understand (modules decoupled)
De-coupling
Can make your system harder
to understand (more modules
and interfaces)
Will make your system
slower to build, but could
make it easier to maintain
25. Decouple only things
that should be built
separately.
!
Decouple for
readability, not for
potential change.
29. Start with the simplest
possible architecture.
!
When you realize you need to
work around your own
architecture to add features, or
it is impossible to add new
features, or you don't know how
to model your new features on
top of the architecture refactor!
- Petter Holmström
32. One of the hardest tasks
Critical for clarity
Naming
Takes a lot of time
when done properly
Should be debated in code review
Sign of a good architecture
43. HOWTO not fail with
performance
Define
performance
Measure
performance
!
!
• Customer
requirement
• Performance goal
is a number
• Performance has
a cost
• Benchmark
regularly
• Start measuring
before app is built
• React regressions
immediately