Software development is inherently difficult, expensive and error prone. Additional constraints are imposed when developing software for embedded systems, such as ...