The current ubiquity of software, particularly inside objects that can have an impact on economy or on safety of people, prompts the need that software is bug-free.
This course wants to show a series of techniques that help avoiding the introduction of design errors in software production: mainly, formal development and verification techniques, but also fault forecasting and fault tolerance techniques.
The introduction of such techniques in a production context will be studied, and the relationships with guidelines of specific industrial production domains will be discussed.