Software Quality Design Classes

Software Quality during development of embedded system is of paramount importance. Restrictions to the possibility that an existing product on the field is subject to an upgrade to some new version of the software make it important that the development process for that software is kept under control. Design engineer should be put in a condition to be creative while keeping an eye to the relevant rules, and a series of checking points should be the assurance that no un-tested and un-known piece of code will ever be used in production. These classes will teach the fundamental points for a consistent policy for software quality during development and will illustrate the toolbox that every developer should have in use.

Day 1: Requirements and specifications

  • why specifying
  • point of views: who reads specifications
  • keypoint: the interview
  • keypoint: how and when to go deep into specifications
  • meetings during specifications collecting: how to take note
  • using UML, or the importance of drawings
  • using UML, or the importance of a common language
  • refining specifications during development


Day 2: Software quality, design for testability

  • Design rules
  • How to choose the right stackup
  • Placement rules
  • Placement for Industrialization
  • Placement for Testability
  • Placement for EMC
  • Basic Rules for EMC
  • Layers stackup
  • Ground and power plane
  • Ground connection
  • Slew rate – PCB partitioning
  • Quite Areas and moat
  • Decoupling
  • SSN: Simultaneous Switching Noise


Day 3: Modular architectures and reuse

  • why reusing
  • how to divide
  • how to maintain
  • using GIT as a paradigm
  • GIT workflows for different needs
  • GIT submodules
  • defining interfaces: functions API
  • defining interfaces: communication models, protocols
  • defining interfaces: operating system