Software Quality Design Classes

Software Quality Control during the development stage of embedded systems is of paramount importance. Limitations created by the possibility that an existing product already installed and in use needs to be upgraded to some new version of the software make it important that the development process for that software is tightly controlled. Design engineers should be allowed creative freedom whilst at the same time paying close attention to the relevant rules, and a series of checkpoints should provide the assurance that no untested and unknown piece of code will ever make it through to the production phase. These classes will teach the fundamental points to ensure a consistent policy for software quality control during development and will illustrate the toolbox that every developer should implement.

Day 1: Requirements and specifications

  • why specifying
  • point of views: who reads specifications
  • keypoint: the interview
  • 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

  • Quality by design
  • Quality by workflow:
    • tickets, work assignment
    • pair programming
    • code review in practice
  • Why testing
  • Static unit testing, tools
  • Systems integration test, tools
  • HMI test, tools
  • Hardware manufacturing test affecting software
  • Regulatory testing affecting software (EMC, Low voltage, Safety)


Day 3: Modular architectures and reuse

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