Embedded systems design is a highly challenging exercise requiring an intelligent combination of electronic and software engineering, and throughout the entire design cycle there is a constant interplay between these two disciplines.

Embedded systems design can be split into a number of areas:

●    Hardware design and development

●    Software design (eg. UML – Unified Modelling Language)

●    Embedded software development

●    FPGA or CPLD design

●    Human Machine Interface (HMI or MMI) design

●    Communication protocols design

●    Industrial design

An embedded system can sometimes benefit from a real-time operating system (RTOS), although it is not essential. An RTOS can make a deterministic system with a smoother user-interface, but it also takes precious resources and can add to unit costs.