Principles¶
Golden Rules of Architecting¶
Every Architecting must have one and only one specific goal¶
- The goal must be correct (decider), reasonable (executor), achievable (sponsor).
- The goal should be defined by SMART principle: Specific, Measurable, Achievable, Relevant, Time-bound.
Architecting is an art of Trade-Offs¶
Treat Cost as a Non-Functional requirement¶
Maximizing business value with limited resources¶
Architecture Optimization is Incremental¶
People are the most important factor for success¶
SOLID¶
Although they apply to any object-oriented design, the SOLID principles can also form a core philosophy for methodologies such as agile development or adaptive software development.
Single-responsibility principle¶
A class should only have a single responsibility, that is, only changes to one part of the software's specification should be able to affect the specification of the class.
Open–closed principle¶
"Software entities ... should be open for extension, but closed for modification."
Liskov substitution principle¶
"Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program." See also design by contract.
Interface segregation principle¶
"Many client-specific interfaces are better than one general-purpose interface."
Dependency inversion principle¶
One should "depend upon abstractions, not concretions."
Lessons Learned¶
-
Keep it simple, stupid (KISS)
The higher the complexity, the lower the reliability -
Proactive communication with participants
-
Valid the result through POC (Proof of Concept)