Software development process
From IGSTK
Outline
- Introduction
- Motivate need and use of lightweight methods.
- Highlight safety-critical nature of the application domain.
- IGSTK Best Practices
- Use our top 10 list as a means of describing our philosophy up front
- Intro rest of chapter. We have a collection of practices you must use if you are an IGSTK component developer, and should use if you are an IGSTK applications developer.
- You are only as safe and robust as your weakest component.
- Developer Practices
- Code conventions
- Source documentation using Doxygen
- Conventions document should go in an appendix
- Describe use of kwStyle
- Requirements Traceability - refer to BB's chapter
- Code Reviews
- Communication - perhaps this should go at the end?
- Wiki
- Mailing list
- Configuration Management (CM) practices
- Establishing a codeline policy
- Whether to use a sandbox
- Build and Release Management - Q: do we expect app developers to put code in the IGSTK tree or in their own tree and use CMake to refer to IGSTK?
- IGSTK Release Cycle
- use of CMake
- Dependencies on ITK, VTK, etc. - did we ever build in compile-time safety against the proper version?
- Deploying IGSTK
- emphasis on compile-time safety over run-time configuration options
- How to read an IGSTK logfile
- Continuous Testing
- Brief intro on philosophy
- pseudo test-driven development (TDD) approach of IGSTK
- emphasis on code coverage
- use of DART - Q: how will application developers use DART? do we recommend they set up their own?
- Goal of 100 percent code coverage
- Use of valgrind dynamic analysis
- Importance of portability Q: what if they are not portable? compile-time checks?
- Validation of state machine (if used by app)