- Start with a mathematically/engineering correct algorithm
- Factor for desktop and target build
- Target may be a C or C++ program
- Target code should be shared
- Specify types for target and desktop
- Use safe numerics to
- correctly model target processor via promotion policy
- handle errors at compile or run time via exception policies
- set limits for acceptable values
- specify literal values
- Use specified types to correctly implement algorithm
- Build/Run test suite on desktop
- Build target on desktop and run on target prototype