Today programmers do not develop applications from scratch, but they spend their time fixing, extending, modifying and enhancing existing applications. The biggest problem in their daily work is that with time maintenance mutates from structured programming to defensive programming: The code becomes too complex to be maintained. We put in code we know is stupid from an architectural point of view but it is the only solution that will hopefully work. Maintenance is more and more difficult and expensive. Our software accumulates technical debts.
In this talk, you will see how you should improve your architecture and source code to prevent technical debt growing unrestricted. With the proper knowledge about well-structured architecture, refactorings for tangled code can quickly be found. Complex code can be eliminated, and maintenance costs will be reduced.
18. @cairolali
TWO DIMENSIONS IN ON ARCHITECTURE
Technical layering Domain layering
Tree violations
that are easy to
resolve
Difficult
violations
One component
cuasing several
problems
One component
causing a
problem
19. @cairolali
DOMAIN LAYERING IS MISSING
Technical layering No domain layering
Some violations
of the technical
layering
Allmost all
domain
components
need each other
32. @cairolali
PATTERN CONFORMITY: GOOD EXAMPLE
☺ 90% of the source code can be assigned to pattern
☺ 0,1% violations between the pattern
Eventer
Processes
Service
39. @cairolali
WELL-FORMED COMPLEX STRUCTURES = SAVING TIME!
Cognitive Mechanisms
HierarchiesChunking Schemata
Modularity
Hierarchical
Layerng
Pattern
Consistency
→ Consistent and
integrated pattern
→ Use a pattern
language
→ No cycles neither
on architectural
level nor on class
level
→ responsibility
→ coupling
→ size
→ interfaces
40. @cairolali
612.869 LOC
14.756.435 LOC
252.062 LOC
804.093 LOC
543.388 LOC
1.035.668 LOC
486.358 LOC
175.258 LOC
42.311 LOC
193.383 LOC
643.466 LOC
245.754 LOC
2.890.204 LOC
141.696 LOC
512.086 LOC
9.988.363 LOC
200.591 LOC
922.949 LOC
22.658 LOC
663.862 LOC
3.270.188 LOC
1.521.357 LOC
0
2
4
6
8
10
MODULARITY MATURITY INDEX (MMI)