-
-
Notifications
You must be signed in to change notification settings - Fork 689
Use Cases
Use Cases are algorithms that interpret the input to generate the output data, their implementation should be closer as possible to the business vocabulary.
When talking about a use case, it does not matter if it a Mobile or a Desktop application, use cases are delivery independent. The most important about use cases is how they interact with the actors.
- Primary actors initiate a use case. They can be the End User, another system, or a clock.
- Secondary actors are affected by use cases.
Application architecture is about usage, a good architecture screams the business use cases to the developer, and framework concerns are minor implementation details. On Manga sample the Customer can Register
an account then manage the balance by Deposits
, Withdrawals
, and Transfers
.
A set of use cases is used to describe software. Following the Customer primary actor on the left side, in the middle the Virtual Wallet system and the secondary actors on the right side:
Following the list of Use Cases:
Use Case | Description |
---|---|
Register | An customer can register an account using his personal details. |
Deposit | The customer can deposit an amount. |
Transfer | The customer can transfer money from one account to another. |
Withdraw | A customer can withdraw money but not more than the current balance. |
Get Customer Details | Get customer details including all related accounts and transactions. |
Get Account Details | Get account details including transactions. |
Close Account | Closes an account, requires balance to be zero. |
- Value Object
- Entity
- Aggregate Root
- Repository
- Use Case
- Bounded Context
- Entity Factory
- Domain Service
- Application Service
- Single Responsibility Principle
- Open-Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Swagger and API Versioning
- Microsoft Extensions
- Feature Flags
- Logging
- Data Annotations
- Authentication
- Authorization