  In formal synthesis of reactive systems an implementation of a system is
automatically constructed from its formal specification. The great advantage of
synthesis is that the resulting implementation is correct by construction;
therefore there is no need for manual programming and tedious debugging tasks.
Developers remain, nevertheless, hesitant to using automatic synthesis tools
and still favor manually writing code. A common argument against synthesis is
that the resulting implementation does not always give a clear picture on what
decisions were made during the synthesis process. The outcome of synthesis
tools is mostly unreadable and hinders the developer from understanding the
functionality of the resulting implementation. Many attempts have been made in
the last years to make the synthesis process more transparent to users. Either
by structuring the outcome of synthesis tools or by providing additional
automated support to help users with the specification process. In this paper
we discuss the challenges in writing specifications for reactive systems and
give a survey on what tools have been developed to guide users in specifying
reactive systems and understanding the outcome of synthesis tools.

Logic in Computer Science;Formal Languages and Automata Theory;Machine Learning