Software at scratch:
Document the requirements of the software.
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.
Get the design and approach reviewed with peers and mentors.
- 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 the main elements of debugging software for developer
- search (ctrl+f).
- call stack.
- call hierarchy.
- data breakpoints and conditional breakpoints.
Learn system design: