• Architectural Overview and Design Principles
  • Focus on the User
  • Use a "Best Fit" Language
  • A Layered Design
  • Reducing the Cost of Change