Document the requirements.
Divide and conquer: Break the implementation of the project into the small chunks of independent interacting software modules.
Design the proper architecture for these interacting modules.
Document the design.
- Build a module.
- write any simulators needed to give it input and see the output (optional).
- Test the module completely.
Repeat above three steps until all the modules are completed.
Put modules together in a proper interaction flow.
Write test cases and automate testing.
Read new requirements and add it to the requirements document to track or identify any reported scenarios as bugs or unexpected(requires new implementation).
Implement the requirement and test for implementation.
Do regression testing and update the regression test suite with the test cases of new implementation and modify the already existing test cases if necessary as per the requirement.
The process is complete.
Let’s talk about main elements of debugging for developer
- search (ctrl+f).
- call stack.
- call hierarchy.
- data breakpoints and conditional breakpoints.
Learn system design: