People/Web Search Calendar Emergency Info A-Z Index UVA Email University of Virginia

Computer Science Colloquia

Monday, December 17, 2012
Hamid Bagheri
Advisor: Kevin Sullivan
Attending Faculty: Mary Lou Soffa; Westley Weimer; William Griswold and John Lach, Minor Representative

2:00 PM, Rice Hall, Rm. 242

PhD Proposal Presentation
Synthesis from Formal Partial Abstractions


I have developed an overall conceptual approach to several fundamental problems in software synthesis and model-driven engineering (MDE). The problems include (1) lack of a capability to deal with architectural style as a separate design variable when synthesizing software architectures from more abstract models; (2) synthesizing code from architectural descriptions targeting arbitrary, contemporary, software platforms and standards; (3) enabling engineers make well informed tradeoff decisions in the complex spaces of possibilities they confront when designing new systems; (4) questions about the long-term viability of model-driven design methods that shield developers from the complexities of intermediate and lower levels of architectural and implementation detail.

My approach is characterized by a unique combination of five of key ideas: (1) using general-purpose, semantically well defined, popular, and fully mechanized specification formalisms for modeling, rather than ad hoc or semantically unclear languages, e.g., UML or many of domain-specific languages; (2) using associated, general-purpose analyzers for synthesis, rather than hand-coded transformations; (3) using partial models and partial synthesis of partial artifacts, to be completed by other means, in lieu of attempts to support complete synthesis from complete models; (4) leveraging underspecified models, inhabited by spaces of solutions, to support separate tradeoffs analysis; and (5) employing architectural description as an intermediate level of representation spanning between the realms of abstract system models and platform-specific program implementations. My thesis is that this approach has significant potential to address the problems I have identified in ways that are both intellectually compelling and also meaningful for software engineering practice.

The preliminary work I have conducted with my advisor in preparation for this thesis proposal already provides substantial supporting evidence. (1) We showed that it can be used to separate decisions about abstract application structure and about specific architectural styles to be employed in detailed architectural descriptions. This separation, in turn, enables a formally precise, automated synthesis of architectural models from application models and choice architectural styles, which supports a model-based development to architecture synthesis with style as a separate design variable. (2) We showed that with modest and principled development of code fragments capturing idiosyncratic use of given platforms in given applications it can map architectural descriptions to object-oriented application frameworks that use a range of modern software platforms and standards. (3) In the context of the object-relational mapping problem, we showed that it creates valuable opportunities for novel forms of trade-space analysis.

For my dissertation, I propose to combine the already significant results that I have obtained to date with work in two new areas. (1) One goal is to show that the style of tradeoff analysis developed in our work on object-relational modeling has the potential to be used to inform tradeoffs in a more general software architectural decision making. (2) In a more speculative vein, I plan to consider the possibility that my emphasis on partial models and synthesis might address growing concerns about the viability of MDE, that an approach based entirely on iterated development and automated refinement of abstract representations is untenable. The basic idea is that one might replace the aspiration for complete top-down synthesis of hidden code from abstract but complete system models with bottom-up abstraction to partial models---as one learns what is needed by working with more concrete artifacts---and subsequent synthesis of visible parts of a code base from such models.