Synthesis from a Practical Perspective

Based on a very liberal understanding of synthesis as a generic term for techniques that generate programming artifacts from higher-level specifications, the paper discusses several corresponding facets from a practical perspective. The synthesis examples we consider comprise variations of code generation, model synthesis from temporal logic descriptions, and metamodel-based tool generation. Although very different, they can all be regarded as means to “factor out” predefined aspects of the envisioned product or the production environment so that developers/designers can simply focus on the remaining issues. This “factoring out” of what is pre-agreed or predefined is a primary goal of domain-specific languages design, and it is applicable to both modeling and programming languages. Leading synthesis techniques elegantly achieve this factoring by combining forms of substitution/partial evaluation to those steps that can be determined locally, as is typically the case for most parts of code generation, with (heuristic) search for those parts where more global patterns need to be matched, as is the case, e.g., for temporal- logic synthesis. The paper presents our experience with a variety of synthesis approaches and corresponding design and synthesis tools. It also discusses the synergetic potential of their combination, e.g., to control the computational complexity by reducing the underlying search space. This is, in our opinion, a viable path to achieve a fundamentally higher simplicity in IT system design.

[1]  Tiziana Margaria,et al.  Synthesis-Based Loose Programming , 2010, 2010 Seventh International Conference on the Quality of Information and Communications Technology.

[2]  Bernhard Steffen,et al.  DIME: A Programming-Less Modeling Environment for Web Applications , 2016, ISoLA.

[3]  I. Longden,et al.  EMBOSS: the European Molecular Biology Open Software Suite. , 2000, Trends in genetics : TIG.

[4]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[5]  Bernhard Steffen,et al.  Loose Programming with PROPHETS , 2012, FASE.

[6]  Anna-Lena Lamprecht,et al.  User-Level Workflow Design , 2013, Lecture Notes in Computer Science.

[7]  Bernhard Steffen,et al.  Exploiting Ecore's Reflexivity for Bootstrapping Domain-Specific Code-Generators , 2012, 2012 35th Annual IEEE Software Engineering Workshop.

[8]  Tiziana Margaria,et al.  The Electronic Tool Integration platform: concepts and design , 1997, International Journal on Software Tools for Technology Transfer.

[9]  Philippe Coussy,et al.  High-Level Synthesis: from Algorithm to Digital Circuit , 2008 .

[10]  Sven Jörges,et al.  Construction and Evolution of Code Generators , 2013, Lecture Notes in Computer Science.

[11]  Bernhard Steffen,et al.  Property-Oriented Expansion , 1996, SAS.

[12]  Rastislav Bodík,et al.  Algorithmic program synthesis: introduction , 2013, International Journal on Software Tools for Technology Transfer.

[13]  Jakob Rehof,et al.  Staged Composition Synthesis , 2014, Software Engineering & Management.

[14]  Tiziana Margaria,et al.  Automatic Generation of the SWS- Challenge Mediator with jABC/ABC , 2009, Semantic Web Services Challenge.

[15]  Tiziana Margaria,et al.  Meta-Level Reuse for Mastering Domain Specialization , 2016, ISoLA.

[16]  Jakob Rehof,et al.  A Long and Winding Road Towards Modular Synthesis , 2016, ISoLA.

[17]  Bernhard Steffen,et al.  Generating Data Flow Analysis Algorithms from Modal Specifications , 1993, Sci. Comput. Program..

[18]  Tiziana Margaria,et al.  Second-Order Value Numbering , 2010, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[19]  Tiziana Margaria,et al.  Semantic Web Services Challenge, Results from the First Year , 2009, Semantic Web And Beyond.

[20]  Krzysztof Czarnecki,et al.  Feature-based survey of model transformation approaches , 2006, IBM Syst. J..

[21]  Tiziana Margaria,et al.  Higher-Order Process Modeling: Product-Lining, Variability Modeling and Beyond , 2013, Festschrift for Dave Schmidt.

[22]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[23]  Terence John Parr,et al.  Enforcing strict model-view separation in template engines , 2004, WWW '04.

[24]  Gary Smith,et al.  High-Level Synthesis: Past, Present, and Future , 2009, IEEE Design & Test of Computers.

[25]  Sven Jörges Construction and Evolution of Code Generators - A Model-Driven and Service-Oriented Approach , 2013, Lecture Notes in Computer Science.

[26]  Tiziana Margaria,et al.  Prototype-Driven Development of Web Applications with DyWA , 2014, ISoLA.

[27]  Daniel Gajski,et al.  Introduction to high-level synthesis , 1994, IEEE Design & Test of Computers.

[28]  Tiziana Margaria,et al.  A constraint-based variability modeling framework , 2012, International Journal on Software Tools for Technology Transfer.

[29]  Tiziana Margaria,et al.  Fully Automatic Verifcation and Error Detection for Parameterized Iterative Sequential Circuits , 1996, TACAS.

[30]  Jakob Rehof,et al.  Design and Synthesis from Components (Dagstuhl Seminar 14232) , 2014, Dagstuhl Reports.

[31]  Tiziana Margaria,et al.  Property-driven benchmark generation: synthesizing programs of realistic structure , 2014, International Journal on Software Tools for Technology Transfer.

[32]  Bernhard Steffen,et al.  Optimal code motion: theory and practice , 1994, TOPL.

[33]  Anna-Lena Lamprecht User-Level Workflow Design - A Bioinformatics Perspective , 2013, Lecture Notes in Computer Science.

[34]  Tiziana Margaria,et al.  A pragmatic approach to software synthesis , 1994 .

[35]  Steve Pettifer,et al.  EDAM: an ontology of bioinformatics operations, types of data and identifiers, topics and formats , 2013, Bioinform..

[36]  Stefan Edelkamp,et al.  Heuristic Search - Theory and Applications , 2011 .

[37]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools (2nd Edition) , 2006 .

[38]  Ivar Jacobson,et al.  Unified Modeling Language User Guide, The (2nd Edition) (Addison-Wesley Object Technology Series) , 2005 .

[39]  Tiziana Margaria,et al.  Model-Driven Development with the jABC , 2006, Haifa Verification Conference.

[40]  Tiziana Margaria,et al.  Synthesizing Semantic Web Service Compositions with jMosel and Golog , 2009, SEMWEB.

[41]  Tiziana Margaria,et al.  Safe service customization , 1997, IEEE Intelligent Network Workshop in '97. Proceedings. 'Meeting the Challenges of Converging Networks and Global Demand'.

[42]  Tim Bray,et al.  Internet Engineering Task Force (ietf) the Javascript Object Notation (json) Data Interchange Format , 2022 .

[43]  Bernhard Steffen,et al.  Sparse code motion , 2000, POPL '00.

[44]  Bernhard Steffen,et al.  CINCO: a simplicity-driven approach to full generation of domain-specific graphical modeling tools , 2018, International Journal on Software Tools for Technology Transfer.

[45]  Tiziana Margaria,et al.  Service-Oriented Design: The Roots , 2005, ICSOC.

[46]  Andrej Dudenhefner,et al.  Combinatory Process Synthesis , 2016, ISoLA.

[47]  Pierre Wolper,et al.  Synthesis of Communicating Processes from Temporal Logic Specifications , 1981, TOPL.

[48]  Roy Fielding,et al.  Architectural Styles and the Design of Network-based Software Architectures"; Doctoral dissertation , 2000 .

[49]  Tiziana Margaria,et al.  MOSEL: A FLexible Toolset for Monadic Second-Order Logic , 1997, TACAS.

[50]  Tiziana Margaria,et al.  Constraints-Driven Automatic Geospatial Service Composition: Workflows for the Analysis of Sea-Level Rise Impacts , 2016, ICCSA.