Finally, in Sec. 5, we discuss our user study, highlighting the ways ObSynth improves the process
of creating object models. Our contributions are as follows:
1. We introduce and highlight a new task in program synthesis: specification reification. We
also introduce the object model synthesis task as an important sub-problem of specification
reification.
2. We design an interactive system, ObSynth, that assists humans in completing this task by
automating parts of the process. Instead of designing the object model purely from scratch,
ObSynth synthesizes a set of initial object model that the user can then build off of. Users
can also ask ObSynth to automatically add relevant objects, methods, and fields at any point
in the design process.
3. We conduct a user study (n=11)that helps us understand how ObSynth can help par-
ticipants design better object models. Through this user study, we discovered three key
findings. First, object models designed using ObSynth are more detailed, showing that it
often synthesizes fields users might have otherwise omitted. Second, a majority of objects,
methods, and fields generated by ObSynth were kept by the user in the final object model,
highlighting the quality of generated components. Third, ObSynth altered the workflow of
participants: they focus on checking that synthesized components were correct rather than
generating them from scratch. However, ObSynth did not reduce the time participants took
to generate object models.
2 Related Work
Program Synthesis: The field of program synthesis has had a long history, with a variety of ap-
proaches summarized by Gulwani et al. (2017). The first line of approaches to appear mostly
focused on inductive synthesis (matching a set of input-output examples) approaches such as
bottom-up search (Alur et al., 2015), top-down search (Feser et al., 2015), type-directed search (Os-
era and Zdancewic, 2015), and constraint-solving (Singh and Solar-Lezama, 2016). Later, however,
richer forms of program specifications were used for synthesis.
In recent years, with new developments in machine learning, there have been more and more
works exploring the potential of augmenting traditional synthesis techniques with neural net-
works; (Chaudhuri et al., 2021) provides a complete survey. These include approaches to learn
abstractions and libraries from scratch (Ellis et al., 2020; Wong et al., 2021; Nye et al., 2020b),
execution-guided approaches that evaluate partial program states (Nye et al., 2020a; Gupta et al.,
2020; Chen et al., 2018), and approaches guided by natural language information (Wong et al.,
2021; Ye et al., 2020b,a; Nye et al., 2019; Polosukhin and Skidanov, 2018).
Ontologies and Knowledge Graphs: There has also been a body of work that aims to build
ontologies and knowledge graphs of natural language concepts, such as Yago (Suchanek et al.,
2007), WordNet (Miller, 1995), and DBpedia (Auer et al., 2007). While these knowledge graphs
have been applied in traditional NLP tasks such as question answering (Boi´
nski et al., 2020),
they are unable to provide specific insights for our synthesis task such as synthesizing fields for a
certain object. As an example, when searching for nearest neighbors related to student, WordNet
comes up with synonyms such as pupil,educatee, and scholar, while Yago provides a Wikipedia
page for a student, a definiton of a student in Spanish, and an image containing many students.
In addition, our synthesis task is very contextual: the fields of a student object would be very
different if we were designing an app for teachers to manage the classroom vs a social app for
students to make friends with one another. It is difficult to capture this form of context via
ontologies and knowledge graphs.
3