- How to initialize this library or component.
- How it’s instance is created and used by other classes (client application).
- Instance is created by spring
- Instance is needed to be singleton or not.
- is there any state that we have to maintain.
- How to integrate this component/library with the existing code.
-
Understand the requirements clearly.
-
Create use cases.
- Component of the Use cases
- Name
- Description
- Desired outcome
- User goals
- Participants/Roles
- Dependencies
- Preconditions
- Scenarios
- Workflow
- Postconditions
- Business rules
- Requirements
- Implementation notes
- Component of the Use cases
-
Defining the system:
- Partitioning the system into individual programs (and documenting it)
- Defining and documenting the interfaces between the individual programs
- Deciding on and documenting third-party libraries (Java packages) your Java programs will use
- Deciding on and documenting new libraries (Java packages) you will build that multiple components of your system will share
- Designing and documenting class hierarchies
- Designing and documenting the individual classes and interfaces
-
Devide requirements into separate tasks.
- Divide them using the testability
-
Define Use Cases based on the requirement.
-
Define all the test cases for which our implementation will satisfy after completion.
-
Defining Domain models.
- If it requires any DTO or entity.
-
Find if we can use any design patterns.
-
For individual components plan it's behavior (methods) & states.
- Which fields can be configurable according to usability and requirement.
-
Plan contract/Specification for all the behavior.
- Plan what it will return.
- Note down all the sub operation done by this behaviors.
- Try to refactor it and create private behavior or util class using that methods.
-
Plan different states in which our component can be.
-
Create a flow in which show how this components are going to communicate with one another.