1. Start with a mathematically/engineering correct algorithm
  2. 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
  3. 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
  4. Use specified types to correctly implement algorithm
  5. Build/Run test suite on desktop
  6. Build target on desktop and run on target prototype