The work presented focuses on two problems, that of synthesizing
systems from formal specifications, and that of formalizing REST -- a
popular web applications' development pattern.

For the synthesis problem, we distinguish between the synchronous and
the asynchronous case. For the former, we solve a problem concerning a
fundamental flaw in specification construction in previous work. We
continue with exploring effective synthesis of asynchronous systems
(programs on multi-threaded systems). Two alternative models of
asynchrony are presented, and shown to be equally expressive for the
purpose of synthesis.

REST is a software architectural style used for the design of highly
scalable web applications. Interest in REST has grown rapidly over the
past decade. However, there is also considerable confusion surrounding
REST: many examples of supposedly RESTful APIs violate key REST
constraints. We show that the constraints of REST and of RESTful HTTP
can be precisely formulated within temporal logic. This leads to methods
for model checking and run-time verification of RESTful behavior. We
formulate several relevant verification questions and analyze their
complexity.