  Developing complex software systems is costly, time-consuming and
error-prone. Model- driven development (MDD) promises to improve software
productivity, timeliness, quality and cost through the transformation of
abstract application models to code-level implementations. However, it remains
unreasonably difficult to build the modeling languages and translators required
for software synthesis. This difficulty, in turns, limits the applicability of
MDD, and makes it hard to achieve reliability in MDD tools. This dissertation
research seeks to reduce the cost, broaden the applicability, and increase the
quality of model-driven development systems by embedding modeling languages
within established formal languages and by using the analyzers provided with
such languages for synthesis purposes to reduce the need for hand coding of
translators. This dissertation, in particular, explores the proposed approach
using relational logic as expressed in Alloy as the general specification
language, and the Alloy Analyzer as the general-purpose analyzer. Synthesis is
thus driven by finite-domain constraint satisfaction. One important aspect of
this work is its focus on partial specifications of particular aspects of the
system, such as application architectures and target platforms, and synthesis
of partial code bases from such specifications. Contributions of this work
include novel insights, methods and tools for (1) synthesizing architectural
models from abstract application models; (2) synthesizing partial,
platform-specific application frameworks from application architectures; and
(3) synthesizing object-relational mapping tradeoff spaces and database schemas
for database-backed object-oriented applications.
