Stable Dependency Principle
Stable components: are components that aren’t expected to change that often.
Volatile components: are ones that are more likely to jitter and require frequent changes.
it’s important to know when a component is volatile and ensure that we don’t make stable components depend on them.
Responsibility-Driven Design
Start with a requirement (functional or non-functional), convert it into responsibilities, assign those to roles, then find the collaborations.
The 6 Stereotypes
- The Information Holder
- The Structurer
- The Service Provider
- The Coordinator
- The Controller
- The Interfacer TODO
- https://khalilstemmler.com/letters/3-steps-to-solve-most-design-problems/
- https://khalilstemmler.com/articles/the-phases-of-craftship/code-first/
- A collection of learning resources for curious software engineers
Blog for Software principles
Clean code
Hexgonal architecture
write bussiness logic in centerk
Reactive Architecture
A group of people came together in 2014 and publish a spesification to define the term called Reactive Manifesto. There are 4 principles in the context of Reactive Systems.
- Responsive : The system has to respond quickly to all users under all conditions.
- Resilient: The system stays responsive in the face of failure.
- Elastic: The system should provide responsiveness, despite increases(or decreases) in load. Scaling up provides responsiveness during peak, while scaling down improves cost effectiveness.
- Message Driven: Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation and location transparency.
Actor Model
It’s a programming paradigm that supports construction of Reactive Systems.It is Message Driven and provide Elasticity and Resilience. So we can use it to build Responsive software. Example Akka