  Cyber Physical Systems are systems controlled or monitored by computer-based
programs, tightly integrated networks, sensors, and actuators. Software
development of CPS has become so difficult that it represents most of the cost
of CPS production. In addition, it is interesting to note that the integration,
verification and validation of software in CPS require more efforts than the
analysis, design, and implementation activities. The main reason is that these
activities are conducted late in the development process and issues discovered
at this stage of the process will require to rework artifacts produced in the
previous activities (i.e. analysis, design and/or implementation). In this
document, we present our work aiming to improve the reliability of software
development in the domain of CPS. In this context, we define the reliability of
the development process as its capacity to deliver intermediate artifacts for
which the rework effort would be as small as possible. This problem is very
difficult for general purpose software (i.e. used on desktop computers or
servers), and even more difficult for software in CPS. The main reason is that
software in CPS is often critical, real-time and embedded on domain specific
execution platforms. As a consequence, non-functional properties (also called
quality attributes) of software applications in CPS are often as important and
difficult to satisfy as the logical correctness of these applications. In order
to the improve the reliability of software development in the domain of CPS, we
propose a Model Driven Engineering (MDE) method based on step-wise refinements
of software architecture descriptions. The results obtained with this method
are summarized in this habilitation thesis.
