While embracing software design principles, architectural patterns are studied in this presentation. Principles like, KISS, YAGNI, SOLID are used for software development. Also architectural patterns are presented: Layered Architecture, Event Driven Architecture, MicroKernel and Microservices can be found.
3. DRY – Don’t repeat yourself.
Every knowledge in a system must have a single authoritative,
unambiguous representation. – Pragmatic Programmers
4. YAGNI – You aren’t gonna need it.
Embrace principle of last responsible moment
Postpone decisions until you can’t postpone them any further.
Courage is postponing the decisions tomorrow to tomorrow. – Kent Beck.
5. KISS- Keep it simple and stupid
Simple keeps focus
Inherent & Accidental Complexity
Good software design hides inherent complexity and avoids accidental
complexity.
7. Avoid long methods
• Hard to test
• Hard to reason
• Hard to debug
• Hard to change
• Increases coupling, decreases cohesion
SLAP – Single level of abstraction principle and compose method
pattern to the rescue.
8. Principle of least knowledge (Law of Demeter)
Consumer of a method or a class shouldn’t know the inner implementation
details.
9. SOLID Principles
Single Responsibility Principles: A class or method should have
only one reason to change.
Open-Closed Principle: A class should be open for extension but
closed for modification.
Liskov Substitution Principle: Classes that implements the same
interface or base class can be substituted.
Interface Segregation Principle: Interfaces should be specialized but
not too special.
Dependency inversion (Inversion of control): Depend on
abstractions not implementations.
12. Architecture is set of design decisions that are hard to
change.
Shared understanding of a system between the people who
are leading the project.
“Describe me with 4 objects how system works” – Kent Beck.