publications: - title: "Code generation by model transformation: a case study in transformation modularity" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "10.1007/s10270-009-0136-1" abstract: "The realization of model-driven software development requires effective techniques for implementing code generators for domain-specific languages. This paper identifies techniques for improving separation of concerns in the implementation of generators. The core technique is code generation by model transformation, that is, the generation of a structured representation (model) of the target program instead of plain text. This approach enables the transformation of code after generation, which in turn enables the extension of the target language with features that allow better modularity in code generation rules. The technique can also be applied to ‘internal code generation’ for the translation of high-level extensions of a DSL to lower-level constructs within the same DSL using model-to-model transformations. This paper refines our earlier description of code generation by model transformation with an improved architecture for the composition of model-to-model normalization rules, solving the problem of combining type analysis and transformation. Instead of coarse-grained stages that alternate between normalization and type analysis, we have developed a new style of type analysis that can be integrated with normalizing transformations in a fine-grained manner. The normalization strategy has a simple extension interface and integrates non-local, context-sensitive transformation rules. We have applied the techniques in a realistic case study of domain-specific language engineering, i.e. the code generator for WebDSL, using Stratego, a high-level transformation language that integrates model-to-model, model-to-code, and code-to-code transformations." links: dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/sosym/HemelKGV10" tags: - "model-to-model transformation" - "case study" - "meta-model" - "source-to-source" - "C++" - "code generation" - "model transformation" - "Meta-Environment" - "transformation" researchr: "https://researchr.org/publication/HemelKGV10" cites: 0 citedby: 0 journal: "Software and Systems Modeling" volume: "9" number: "3" pages: "375-402" kind: "article" key: "HemelKGV10" - title: "When Frameworks Let You Down. Platform-Imposed Constraints on the Design and Evolution of Domain-Specific Languages" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" month: "October" abstract: "Application frameworks encapsulate domain knowledge in a reusable library, providing abstractions for a particular domain. As such, they can form the basis for domain-specific languages, which may offer notational constructs, static analysis, and optimizations specific for the domain. Additional abstractions can be incrementally added on top of a domain-specific, following an inductive approach towards its design, evolving the language as new domain insights are acquired. A problem arises when such additions do not align well with the underlying framework. In this paper, we provide different examples of this problem and describe scenarios of dealing with it." links: "technical report": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-039.pdf" tags: - "framework" - "optimization" - "WebDSL" - "application framework" - "domain analysis" - "analysis" - "language design" - "static analysis" - "constraints" - "reuse" - "software evolution" - "C++" - "DSL" - "abstraction" - "incremental" - "design" - "systematic-approach" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenHKV08-DSM" cites: 0 citedby: 2 booktitle: "Proceedings of the 8th OOPSLA Workshop on Domain Specific Modelling (DSM'08)" editor: - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" - name: "Jonathan Sprinkle" link: "https://researchr.org/alias/jonathan-sprinkle" - name: "Juha-Pekka Tolvanen" link: "http://www.metacase.com/jpt.html" - name: "Matti Rossi" link: "https://researchr.org/alias/matti-rossi" address: "Nashville, Tennessee, USA" kind: "inproceedings" key: "GroenewegenHKV08-DSM" - title: "Integration of data validation and user interface concerns in a DSL for web applications" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2013" doi: "http://dx.doi.org/10.1007/s10270-010-0173-9" abstract: "Data validation rules constitute the constraints that data input and processing must adhere to in addition to the structural constraints imposed by a data model. Web modeling tools do not make all types of data validation explicit in their models, hampering full code generation and model expressivity. Web application frameworks do not offer a consistent interface for data validation. In this paper, we present a solution for the integration of declarative data validation rules with user interface models in the domain of web applications, unifying syntax, mechanisms for error handling, and semantics of validation checks, and covering value well-formedness, data invariants, input assertions, and action assertions. We have implemented the approach in WebDSL, a domain-specific language for the definition of web applications." links: doi: "http://dx.doi.org/10.1007/s10270-010-0173-9" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/sosym/GroenewegenV13" tags: - "WebDSL" researchr: "https://researchr.org/publication/GroenewegenV13" cites: 0 citedby: 0 journal: "Software and Systems Modeling" volume: "12" number: "1" pages: "35-52" kind: "article" key: "GroenewegenV13" - title: "A Language Independent Task Engine for Incremental Name and Type Analysis" author: - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2013" doi: "http://dx.doi.org/10.1007/978-3-319-02654-1_15" abstract: "IDEs depend on incremental name and type analysis for responsive feedback for large projects. In this paper, we present a language-independent approach for incremental name and type analysis. Analysis consists of two phases. The first phase analyzes lexical scopes and binding instances and creates deferred analysis tasks. A task captures a single name resolution or type analysis step. Tasks might depend on other tasks and are evaluated in the second phase. Incrementality is supported on file and task level. When a file changes, only this file is recollected and only those tasks are reevaluated, which are affected by the changes in the collected data. The analysis does neither re-parse nor re-traverse unchanged files, even if they are affected by changes in other files. We implemented the approach as part of the Spoofax Language Workbench and evaluated it for the WebDSL web programming language. " links: doi: "http://dx.doi.org/10.1007/978-3-319-02654-1_15" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/WachsmuthKVGV13" technicalreport: "https://researchr.org/publication/TUD-SERG-2013-018" researchr: "https://researchr.org/publication/WachsmuthKVGV13" cites: 0 citedby: 0 pages: "260-280" booktitle: "Software Language Engineering - 6th International Conference, SLE 2013, Indianapolis, IN, USA, October 26-28, 2013. Proceedings" editor: - name: "Martin Erwig" link: "https://researchr.org/alias/martin-erwig" - name: "Richard F. Paige" link: "https://researchr.org/alias/richard-f.-paige" - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" volume: "8225" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-319-02653-4" kind: "inproceedings" key: "WachsmuthKVGV13" - title: "A Language Independent Task Engine for Incremental Name and Type Analysis" author: - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2013" month: "October" abstract: "IDEs depend on incremental name and type analysis for responsive feedback for large projects. In this paper, we present a language-independent approach for incremental name and type analysis. Analysis consists of two phases. The first phase analyzes lexical scopes and binding instances and creates deferred analysis tasks. A task captures a single name resolution or type analysis step. Tasks might depend on other tasks and are evaluated in the second phase. Incrementality is supported on file and task level. When a file changes, only this file is recollected and only those tasks are reevaluated, which are affected by the changes in the collected data. The analysis does neither re-parse nor re-traverse unchanged files, even if they are affected by changes in other files. We implemented the approach as part of the Spoofax Language Workbench and evaluated it for the WebDSL web programming language. " links: published: "https://researchr.org/publication/WachsmuthKVGV13" "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2013-014.pdf" researchr: "https://researchr.org/publication/TUD-SERG-2013-018" cites: 0 citedby: 0 institution: "Delft University of Technology" number: "TUD-SERG-2013-018" address: "Delft, The Netherlands" kind: "techreport" key: "TUD-SERG-2013-018" - title: "Separation of Concerns and Linguistic Integration in WebDSL" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Zef Hemel" link: "http://zef.me" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1109/MS.2010.92" abstract: "WebDSL is a domain-specific language for Web information systems that maintains separation of concerns while integrating its sublanguages, enabling consistency checking and reusing common language concepts." links: doi: "http://dx.doi.org/10.1109/MS.2010.92" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/software/GroenewegenHV10" tags: - "WebDSL" - "separation of concerns" researchr: "https://researchr.org/publication/GroenewegenHV10" cites: 0 citedby: 0 journal: "IEEE Software" volume: "27" number: "5" pages: "31-37" kind: "article" key: "GroenewegenHV10" - title: "Weaving web applications with WebDSL: (demonstration)" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://doi.acm.org/10.1145/1639950.1640020" abstract: "WebDSL is a domain-specific language for the development of web applications that integrates data-models, user-interface models, actions, validation, access control, and workflow. The compiler verifies the consistency of applications and generates complete implementations in Java or Python. We illustrate the key concepts of the language with a small web application." links: doi: "http://doi.acm.org/10.1145/1639950.1640020" tags: - "data validation" - "WebDSL" - "Java" - "completeness" - "data-flow language" - "meta-model" - "modeling language" - "modeling" - "language modeling" - "model-driven development" - "data-flow" - "weaving" - "compiler" - "web applications" - "consistency" - "Meta-Environment" - "access control" - "workflow" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenV09-demo" cites: 0 citedby: 0 pages: "797-798" booktitle: "Companion to the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, October 25-29, 2009, Orlando, Florida, USA" editor: - name: "Shail Arora" link: "https://researchr.org/alias/shail-arora" - name: "Gary T. Leavens" link: "https://researchr.org/alias/gary-t.-leavens" publisher: "ACM" isbn: "978-1-60558-768-4" kind: "inproceedings" key: "GroenewegenV09-demo" - title: "Integration of Data Validation and User Interface Concerns in a DSL for Web Applications" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_13" abstract: "Data validation rules constitute the constraints that data input and processing must adhere to in addition to the structural constraints imposed by a data model. Web modeling tools do not address data validation concerns explicitly, hampering full code generation and model expressivity. Web application frameworks do not offer a consistent interface for data validation. In this paper, we present a solution for the integration of declarative data validation rules with user interface models in the domain of web applications, unifying syntax, mechanisms for error handling, and semantics of validation checks, and covering value well-formedness, data invariants, input assertions, and action assertions. We have implemented the approach in WebDSL, a domain-specific language for the definition of web applications." links: doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_13" successor: "https://researchr.org/publication/GroenewegenVisser2013" tags: - "data validation" - "data-flow" - "web applications" - "DSL" researchr: "https://researchr.org/publication/GroenewegenV09" cites: 0 citedby: 0 pages: "164-173" booktitle: "Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers" editor: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Dragan Gasevic" link: "http://www.sfu.ca/~dgasevic/" - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" volume: "5969" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-12106-7" kind: "inproceedings" key: "GroenewegenV09" - title: "Static consistency checking of web applications with WebDSL" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "https://doi.org/10.1016/j.jsc.2010.08.006" abstract: "Modern web application development frameworks provide web application developers with high-level abstractions to improve their productivity. However, their support for static verification of applications is limited. Inconsistencies in an application are often not detected statically, but appear as errors at run-time. The reports about these errors are often obscure and hard to trace back to the source of the inconsistency. A major part of this inadequate consistency checking can be traced back to the lack of linguistic integration of these frameworks. Parts of an application are defined with separate domain-specific languages, which are not checked for consistency with the rest of the application. Examples include regular expressions, query languages and XML-based languages for definition of user interfaces. We give an overview and analysis of typical problems arising in development with frameworks for web application development, with Ruby on Rails, Lift and Seam as representatives. To remedy these problems, in this paper, we argue that domain-specific languages should be designed from the ground up with static verification and cross-aspect consistency checking in mind, providing linguistic integration of domain-specific sub-languages. We show how this approach is applied in the design of WebDSL, a domain-specific language for web applications, by examining how its compiler detects inconsistencies not caught by web frameworks, providing accurate and clear error messages. Furthermore, we show how this consistency analysis can be expressed with a declarative rule-based approach using the Stratego transformation language." links: doi: "https://doi.org/10.1016/j.jsc.2010.08.006" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jsc/HemelGKV11" "technical report ": "http://resolver.tudelft.nl/uuid:588b78a1-f8d8-45fc-855f-fd03699725cf" "jsc": "https://doi.org/10.1016/j.jsc.2010.08.006" tags: - "model-to-model transformation" - "WebDSL" - "rule-based" - "application framework" - "model checking" - "XML" - "XML Schema" - "transformation language" - "points-to analysis" - "domain analysis" - "analysis" - "language design" - "static analysis" - "model-driven development" - "source-to-source" - "rules" - "C++" - "compiler" - "model transformation" - "web applications" - "consistency" - "abstraction" - "design" - "systematic-approach" - "open-source" - "transformation" - "Ruby on Rails" - "Stratego" - "Ruby" - "query language" - "domain-specific language" researchr: "https://researchr.org/publication/HemelGKV11" cites: 0 citedby: 0 journal: "Journal of Symbolic Computation" volume: "46" number: "2" pages: "150-182" kind: "article" key: "HemelGKV11" - title: "Evolution of the WebDSL runtime: reliability engineering of the WebDSL web programming language" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Elmer van Chastelet" link: "https://researchr.org/profile/elmervanchastelet/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1145/3397537.3397553" abstract: "Web applications are ideal for implementing information systems; they can organize and persist the data in a database, do not require installation on client machines, and can be instantly updated everywhere. However, web programming is complex due to its heterogeneous nature, causing web frameworks to suffer from insufficient or leaky abstraction, weak static consistency checking, and security features that are not enforced. We developed the WebDSL web programming language, which supports direct expression of intent, strong static consistency checking, linguistic abstractions for web programming concerns, and automatically enforces security features for web applications. We have used WebDSL for over 10 years to create information systems for academic workflows with thousands of users. Based on our experiences with these applications, we improved the WebDSL compiler and runtime to increase robustness, performance, and security of applications. In this experience report, we reflect on the lessons learned and improvements made to the language runtime." links: doi: "https://doi.org/10.1145/3397537.3397553" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/programming/GroenewegenCV20" tags: - "WebDSL" researchr: "https://researchr.org/publication/GroenewegenCV20" cites: 0 citedby: 0 pages: "77-83" booktitle: "Programming'20: 4th International Conference on the Art, Science, and Engineering of Programming, Porto, Portugal, March 23-26, 2020" editor: - name: "Ademar Aguiar" link: "https://researchr.org/alias/ademar-aguiar" - name: "Shigeru Chiba" link: "https://researchr.org/alias/shigeru-chiba" - name: "Elisa Gonzalez Boix" link: "https://researchr.org/alias/elisa-gonzalez-boix" publisher: "ACM" isbn: "978-1-4503-7507-8" kind: "inproceedings" key: "GroenewegenCV20" - title: "Declarative Access Control for WebDSL: Combining Language Integration and Separation of Concerns" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1109/ICWE.2008.15" abstract: "In this paper, we present the extension of WebDSL, a domain-specific language for web application development, with abstractions for declarative definition of access control. The extension supports the definition of a wide range of access control policies concisely and transparently as a separate concern. In addition to regulating the access to pages and actions, access control rules are used to infer navigation options not accessible to the current user, preventing the presentation of inaccessible links. The extension is an illustration of a general approach to the design of domain-specific languages for different technical domains to support separation of concerns in application development, while preserving linguistic integration. This approach is realized by means of a transformational semantics that weaves separately defined aspects into an integrated implementation. " links: doi: "http://dx.doi.org/10.1109/ICWE.2008.15" "webdsl": "http://webdsl.org" tags: - "WebDSL" - "semantics" - "rule-based" - "separation of concerns" - "transformation language" - " action semantics" - "language design" - "weaving" - "rules" - "web applications" - "DSL" - "abstraction" - "access control policies" - "access control" - "aspect weaving" - "design" - "role-based access control" - "systematic-approach" - "transformation" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenV08" cites: 26 citedby: 7 pages: "175-188" booktitle: "Proceedings of the Eighth International Conference on Web Engineering, ICWE 2008, 14-18 July 2008, Yorktown Heights, New York, USA" editor: - name: "Daniel Schwabe" link: "https://researchr.org/alias/daniel-schwabe" - name: "Francisco Curbera" link: "https://researchr.org/alias/francisco-curbera" - name: "Paul Dantzig" link: "https://researchr.org/alias/paul-dantzig" publisher: "IEEE" isbn: "978-0-7695-3261-5" kind: "inproceedings" key: "GroenewegenV08" - title: "WebDSL: a domain-specific language for dynamic web applications" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://doi.acm.org/10.1145/1449814.1449858" abstract: "WebDSL is a domain-specific language for the implementation of dynamic web applications with a rich datamodel. It consists of a core language with constructs to define entities, pages and business logic. Higher-level abstractions, modeling access control and workflow, are defined in a modular fashion as extensions of the core language." links: doi: "http://doi.acm.org/10.1145/1449814.1449858" tags: - "WebDSL" - "meta-model" - "modeling language" - "modeling" - "language engineering" - "language modeling" - "web engineering" - "model-driven engineering" - "C++" - "web applications" - "DSL" - "logic" - "abstraction" - "Meta-Environment" - "access control" - "workflow" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenHKV08" cites: 0 citedby: 0 pages: "779-780" booktitle: "Companion to the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-13, 2007, Nashville, TN, USA" editor: - name: "Gail E. Harris" link: "https://researchr.org/alias/gail-e.-harris" publisher: "ACM" isbn: "978-1-60558-220-7" kind: "inproceedings" key: "GroenewegenHKV08" - title: "IceDust: Incremental and Eventual Computation of Derived Values in Persistent Object Graphs" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.11" abstract: "Derived values are values calculated from base values. They can be expressed in object-oriented languages by means of getters calculating the derived value, and in relational or logic databases by means of (materialized) views. However, switching to a different calculation strategy (for example caching) in object-oriented programming requires invasive code changes, and the databases limit expressiveness by disallowing recursive aggregation. In this paper, we present IceDust, a data modeling language for expressing derived attribute values without committing to a calculation strategy. IceDust provides three strategies for calculating derived values in persistent object graphs: Calculate-on-Read, Calculate-on-Write, and Calculate-Eventually. We have developed a path-based abstract interpretation that provides static dependency analysis to generate code for these strategies. Benchmarks show that different strategies perform better in different scenarios. In addition we have conducted a case study that suggests that derived value calculations of systems used in practice can be expressed in IceDust. " links: doi: "http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/HarkesGV16" researchr: "https://researchr.org/publication/HarkesGV16" cites: 0 citedby: 0 booktitle: "30th European Conference on Object-Oriented Programming, ECOOP 2016, July 18-22, 2016, Rome, Italy" editor: - name: "Shriram Krishnamurthi" link: "https://researchr.org/alias/shriram-krishnamurthi" - name: "Benjamin S. Lerner" link: "https://researchr.org/alias/benjamin-s.-lerner" volume: "56" series: "LIPIcs" publisher: "Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik" isbn: "978-3-95977-014-9" kind: "inproceedings" key: "HarkesGV16"