skip to main content
10.1145/3550355.3552442acmconferencesArticle/Chapter ViewAbstractPublication PagesmodelsConference Proceedingsconference-collections
research-article
Open access

Nested OSTRICH: hatching compositions of low-code templates

Published: 24 October 2022 Publication History

Abstract

Low-code frameworks strive to simplify and speed-up application development. Native support for the reuse and composition of parameterised coarse-grain components (templates) is essential to achieve these goals. OSTRICH --- a rich template language for the OutSystems platform --- was designed to simplify the use and creation of such templates. However, without a built-in composition mechanism, OSTRICH templates are hard to create and maintain.
This paper presents a template composition mechanism and its typing and instantiation algorithms for model-driven low-code development environments. We evolve OSTRICH to support nested templates and allow the instantiation (hatching) of templates in the definition of other templates. Thus, we observe a significant increase code reuse potential, leading to a safer evolution of applications. The present definition seamlessly extends the existing Out-Systems metamodel with template constructs expressed by model annotations that maintain backward compatibility with the existing language toolchain. We present the metamodel, its annotations, and the corresponding validation and instantiation algorithms. In particular, we introduce a type-based validation procedure that ensures that using a template inside a template produces valid models.
The work is validated using the OSTRICH benchmark. Our prototype is an extension of the OutSystems IDE allowing the annotation of models and their use to produce new models. We also analyse which existing OutSystems sample screens templates can be improved by using and sharing nested templates.

References

[1]
Atlas 2015. Atlas transformation language. https://wiki.eclipse.org/ATL/User_Guide. Last visited in 2022-05-11.
[2]
Gilad Bracha. 2004. Generics in the Java Programming Language. https://www.oracle.com/technetwork/java/javase/generics-tutorial-159168.pdf.
[3]
Luís Caires and Bernardo Toninho. 2019. Refinement kinds: type-safe programming with practical type-level computation. Proceedings of the ACM on Programming Languages 3, OOPSLA (10 Oct. 2019).
[4]
Luca Cardelli. 1988. Phase Distinctions in Type Theory. (January 1988). https://www.microsoft.com/en-us/research/publication/phase-distinctions-in-type-theory/
[5]
Luca Cardelli and Peter Wegner. 1985. On Understanding Types, Data Abstraction, and Polymorphism. ACM Comput. Surv. 17, 4 (Dec. 1985), 471--523.
[6]
Olivier Caron, Bernard Carré, Alexis Muller, and Gilles Vanwormhoudt. 2004. An OCL Formulation of UML2 Template Binding. In UML 2004 --- The Unified Modeling Language. Modeling Languages and Applications. Springer Berlin Heidelberg, Berlin, Heidelberg, 27--40.
[7]
James Cheney and Ralf Hinze. 2003. First-class phantom types. Technical Report. Cornell University.
[8]
Arnaud Cuccuru, Ansgar Radermacher, Sébastien Gérard, and François Terrier. 2009. Constraining Type Parameters of UML 2 Templates with Substitutable Classifiers. In Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems (Denver, CO) (MODELS '09). Springer-Verlag, Berlin, Heidelberg, 644--649.
[9]
Krzysztof Czarnecki and Simon Helsen. 2003. Classification of Model Transformation Approaches. In Proceedings of the 2nd OOPSLA Workshop on Generative Techniques in the Context of the Model Driven Architecture, Vol. 45. USA, 1--17.
[10]
Rowan Davies and Frank Pfenning. 2001. A Modal Analysis of Staged Computation. J. ACM 48, 3 (May 2001), 555--604.
[11]
Juan de Lara and Esther Guerra. 2013. From Types to Type Requirements: Genericity for Model-Driven Engineering. Softw. Syst. Model. 12, 3 (July 2013), 453--474.
[12]
Eddy Ghabach. 2018. Supporting Clone-and-Own in software product line. Ph. D. Dissertation. https://tel.archives-ouvertes.fr/tel-01931217
[13]
GitHub 2021. Mustache - Logic-less templates. https://mustache.github.io/. Last visited in 2022-05-11.
[14]
Martin Gogolla, Fabian Büttner, and Mark Richters. 2007. USE: A UML-based specification environment for validating UML and OCL. Science of Computer Programming 69, 1 (2007), 27--34.
[15]
GOLEM 2020. Automated Programming to Revolutionize App Development. https://www.cmuportugal.org/large-scale-collaborative-research-projects/golem/. Last visited in 2022-05-11.
[16]
Handlebars 2021. Handlebars - Minimal templating on steroids. https://handlebarsjs.com/. Last visited in 2022-05-11.
[17]
JetBrains. 2020. JetBrains Meta Programming System. http://github.com/JetBrains/MPS. Last visited in 2022-05-11.
[18]
Oleg Kiselyov. 2014. The Design and Implementation of BER MetaOCaml - System Description. In Functional and Logic Programming - 12th International Symposium, FLOPS 2014, Kanazawa, Japan, June 4--6, 2014. Proceedings (Lecture Notes in Computer Science, Vol. 8475). Springer, 86--102.
[19]
Barbara Liskov and John Guttag. 1986. Abstraction and Specification in Program Development. MIT Press, Cambridge, MA, USA.
[20]
Hugo Lourenço, Carla Ferreira, and João Costa Seco. 2021. OSTRICH - A Type-Safe Template Language for Low-Code Development. In 24th International Conference on Model Driven Engineering Languages and Systems, MODELS 2021, Fukuoka, Japan, October 10--15, 2021. IEEE, 216--226.
[21]
Hugo Lourenço, João Costa Seco, Joana Parreira, and Carla Ferreira. 2022. OSTRICH - A Rich Template Language for Low-code Development (Extended version). [under submission].
[22]
Robin Milner. 1978. A theory of type polymorphism in programming. J. Comput. System Sci. 17, 3 (1978), 348--375.
[23]
OMG 2016. Meta Object Facility Specification Version 2.5.1. https://www.omg.org/spec/MOF. Last visited in 2022-05-09.
[24]
OMG 2017. Modeling Language Specification Version 2.5.1. https://www.omg.org/spec/UML. Last visited in 2022-05-09.
[25]
Terence John Parr. 2004. Enforcing strict model-view separation in template engines. In Proceedings of the 13th international conference on World Wide Web, WWW 2004, New York, NY, USA, May 17--20, 2004. ACM, 224--233.
[26]
Vaclav Pech, Alex Shatalin, and Markus Voelter. 2013. JetBrains MPS as a tool for extending Java. In Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, Stuttgart, Germany, September 11--13, 2013. ACM, 165--168.
[27]
Davide Di Ruscio, Dimitrios S. Kolovos, Juan de Lara, Alfonso Pierantonio, Massimo Tisi, and Manuel Wimmer. 2022. Low-code development and model-driven engineering: Two sides of the same coin? Softw. Syst. Model. 21, 2 (2022), 437--446.
[28]
Tim Sheard and Simon Peyton Jones. 2002. Template meta-programming for Haskell. In Proceedings of the 2002 Haskell Workshop, Pittsburgh (proceedings of the 2002 haskell workshop, pittsburgh ed.). 1--16.
[29]
Dave Steinberg, Frank Budinsky, Marcelo Paternostro, and Ed Merks. 2009. EMF: Eclipse Modeling Framework (2 ed.). Addison-Wesley, Upper Saddle River, NJ. https://www.safaribooksonline.com/library/view/emf-eclipse-modeling/9780321331885/
[30]
Walid Taha and Tim Sheard. 1997. Multi-Stage Programming with Explicit Annotations. In Proceedings of the 1997 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (Amsterdam, The Netherlands) (PEPM '97). Association for Computing Machinery, New York, NY, USA, 203--217.
[31]
Gilles Vanwormhoudt, Matthieu Allon, Olivier Caron, and Bernard Carré. 2020. Template based model engineering in UML. In MODELS '20: ACM/IEEE 23rd International Conference on Model Driven Engineering Languages and Systems, Virtual Event, Canada, 18--23 October, 2020. ACM, 47--56.
[32]
Gilles Vanwormhoudt, Olivier Caron, and Bernard Carré. 2017. Aspectual templates in UML - Enhancing the semantics of UML templates in OCL. Softw. Syst. Model. 16, 2 (2017), 469--497.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
MODELS '22: Proceedings of the 25th International Conference on Model Driven Engineering Languages and Systems
October 2022
412 pages
ISBN:9781450394666
DOI:10.1145/3550355
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

  • Univ. of Montreal: University of Montreal
  • IEEE CS

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 24 October 2022

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article

Funding Sources

  • Portuguese Foundation for Science and Technology

Conference

MODELS '22
Sponsor:

Acceptance Rates

MODELS '22 Paper Acceptance Rate 35 of 125 submissions, 28%;
Overall Acceptance Rate 144 of 506 submissions, 28%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)124
  • Downloads (Last 6 weeks)24
Reflects downloads up to 01 Feb 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media