Summary of my experience of developing an tools/code.
Request analysis
Know your expected objective and motivation:
- Why do you want this tool?
- Aims and functions you want.
- Benefits of the tool.
Research plan
Plan your work in detail:
- Literature review
- Software developing/modification: split the task into smaller functions, design before coding, make sure add unit test for each individual functions
- Verification using numerical experiments
- Validation (benchmarking) and demonstraction of benefit
- Analysis performance improvements (CPU and memory usage)
- line_profiler: record the cpu time of each line
- memory_profiler: record the memory usage of each line
Final Report
Documentation:
- theory of the tool
- specific details regarding the implementation
- evidence of its correct implementation and validation