Publicação

Going beyond templates

Ver documento

Detalhes bibliográficos
Resumo:Low-code frameworks strive to simplify and speed up application development. An essential mechanism to achieve these goals is to have native support for the safe reuse and usage of parameterized coarse-grain components, providing developers with strong guardrails and a rich software-building experience. OSTRICH —a rich template language for the OutSystems platform—was designed to simplify the use and creation of such components. Thus, the application developer can quickly reuse and assemble sophisticated and thoroughly tested application blocks. However, without a built-in composition and evolution mechanism, OSTRICH templates are still hard to create and maintain. This sometimes requires the repetition of code across different templates and creates a conflict between the customizations of the instantiated application models, and the update and reapplication of a template definition. This paper presents a principled mechanism for using abstraction in the creation of templates and simultaneously supporting the evolution of OSTRICH templates in applications after use. First, we introduce a template composition mechanism, its typing discipline, and its instantiation algorithm for model-driven low-code development environments. We start by extending OSTRICH to support nested templates and allow the instantiation (hatching) of templates in the definition of other templates. Nesting promotes a significant increase in code reuse potential, leading to a safer evolution of applications. We then introduce the support for customizable template instances, which allows one to evolve templates’ code and then update a template instance without losing customizations performed in the generated code. The present definition seamlessly extends the existing OutSystems metamodel with template constructs expressed by model annotations that maintain backward compatibility with the existing language toolchain. We present the metamodel, a set of annotations to support the extensions, and the corresponding validation and instantiation algorithms. In particular, we introduce a type-based validation procedure for abstractions that ensures that using templates always produces valid models. This work also extends prior developments on Nested OSTRICH with the support for safe customizations of instantiated code. We validate Nested OSTRICH using the OSTRICH benchmark by identifying the degree of reusability that can be reached in the existing sample of real templates and template uses. Our prototype is an extension of the OutSystems IDE that allows the annotation of models and their use to produce new models. We also analyze which existing OutSystems sample screen templates can be improved by using and sharing nested templates.
Autores principais:Seco, João Costa
Outros Autores:Lourenço, Hugo; Parreira, Joana; Ferreira, Carla
Assunto:Low-code models Metamodel Metaprogramming Model reuse Templating Typechecking templates Software Modelling and Simulation
Ano:2024
País:Portugal
Tipo de documento:artigo
Tipo de acesso:acesso aberto
Instituição associada:Universidade Nova de Lisboa
Idioma:inglês
Origem:Repositório Institucional da UNL
_version_ 1879447983152431104
author Seco, João Costa
author2 Lourenço, Hugo
Parreira, Joana
Ferreira, Carla
author2_role author
author
author
author_facet Seco, João Costa
Lourenço, Hugo
Parreira, Joana
Ferreira, Carla
author_role author
contributor_name_str_mv NOVALincs
Springer
RUN
country_str PT
creators_json_txt [{\"Person.name\":\"Seco, João Costa\"},{\"Person.name\":\"Lourenço, Hugo\"},{\"Person.name\":\"Parreira, Joana\"},{\"Person.name\":\"Ferreira, Carla\"}]
datacite.contributors.contributor.contributorName.fl_str_mv NOVALincs
Springer
RUN
datacite.creators.creator.creatorName.fl_str_mv Seco, João Costa
Lourenço, Hugo
Parreira, Joana
Ferreira, Carla
datacite.date.Accepted.fl_str_mv 2024-05-20T00:00:00Z
datacite.date.available.fl_str_mv 2024-06-26T22:25:57Z
datacite.date.embargoed.fl_str_mv 2024-06-26T22:25:57Z
datacite.rights.fl_str_mv http://purl.org/coar/access_right/c_abf2
datacite.subjects.subject.fl_str_mv Low-code models
Metamodel
Metaprogramming
Model reuse
Templating
Typechecking templates
Software
Modelling and Simulation
datacite.titles.title.fl_str_mv Going beyond templates
composition and evolution in nested OSTRICH
dc.contributor.none.fl_str_mv NOVALincs
Springer
RUN
dc.creator.none.fl_str_mv Seco, João Costa
Lourenço, Hugo
Parreira, Joana
Ferreira, Carla
dc.date.Accepted.fl_str_mv 2024-05-20T00:00:00Z
dc.date.available.fl_str_mv 2024-06-26T22:25:57Z
dc.date.embargoed.fl_str_mv 2024-06-26T22:25:57Z
dc.format.none.fl_str_mv application/pdf
dc.identifier.none.fl_str_mv http://hdl.handle.net/10362/169108
dc.language.none.fl_str_mv eng
dc.rights.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.subject.none.fl_str_mv Low-code models
Metamodel
Metaprogramming
Model reuse
Templating
Typechecking templates
Software
Modelling and Simulation
dc.title.fl_str_mv Going beyond templates
composition and evolution in nested OSTRICH
dc.type.none.fl_str_mv http://purl.org/coar/resource_type/c_6501
description Low-code frameworks strive to simplify and speed up application development. An essential mechanism to achieve these goals is to have native support for the safe reuse and usage of parameterized coarse-grain components, providing developers with strong guardrails and a rich software-building experience. OSTRICH —a rich template language for the OutSystems platform—was designed to simplify the use and creation of such components. Thus, the application developer can quickly reuse and assemble sophisticated and thoroughly tested application blocks. However, without a built-in composition and evolution mechanism, OSTRICH templates are still hard to create and maintain. This sometimes requires the repetition of code across different templates and creates a conflict between the customizations of the instantiated application models, and the update and reapplication of a template definition. This paper presents a principled mechanism for using abstraction in the creation of templates and simultaneously supporting the evolution of OSTRICH templates in applications after use. First, we introduce a template composition mechanism, its typing discipline, and its instantiation algorithm for model-driven low-code development environments. We start by extending OSTRICH to support nested templates and allow the instantiation (hatching) of templates in the definition of other templates. Nesting promotes a significant increase in code reuse potential, leading to a safer evolution of applications. We then introduce the support for customizable template instances, which allows one to evolve templates’ code and then update a template instance without losing customizations performed in the generated code. The present definition seamlessly extends the existing OutSystems metamodel with template constructs expressed by model annotations that maintain backward compatibility with the existing language toolchain. We present the metamodel, a set of annotations to support the extensions, and the corresponding validation and instantiation algorithms. In particular, we introduce a type-based validation procedure for abstractions that ensures that using templates always produces valid models. This work also extends prior developments on Nested OSTRICH with the support for safe customizations of instantiated code. We validate Nested OSTRICH using the OSTRICH benchmark by identifying the degree of reusability that can be reached in the existing sample of real templates and template uses. Our prototype is an extension of the OutSystems IDE that allows the annotation of models and their use to produce new models. We also analyze which existing OutSystems sample screen templates can be improved by using and sharing nested templates.
dirty 0
eu_rights_str_mv openAccess
format article
fulltext.url.fl_str_mv https://run.unl.pt/bitstreams/949eb843-9396-4ef2-912e-5ab631bcb183/download
funder_facet_str_mv FCT{{{_:::_}}}Fundação para a Ciência e a Tecnologia
FCT{{{_:::_}}}Fundação para a Ciência e a Tecnologia
funding.funder.alternateName_str_mv FCT
FCT
funding.funder.identifier_str_mv http://doi.org/10.13039/501100001871
http://doi.org/10.13039/501100001871
funding.funder.name_str_mv Fundação para a Ciência e a Tecnologia
Fundação para a Ciência e a Tecnologia
funding.identifier_str_mv UIDB/04516/2020
PTDC/CCI-INF/32081/2017
funding.name_str_mv 6817 - DCRRNI ID
Concurso para Financiamento de Projetos de Investigação Científica e Desenvolvimento Tecnológico em Todos os Domínios Científicos - 2017
funding_str_mv UIDB/04516/2020
info:eu-repo/grantAgreement/FCT/6817 - DCRRNI ID/UIDB%2F04516%2F2020/PT
PTDC/CCI-INF/32081/2017
info:eu-repo/grantAgreement/FCT/Concurso para Financiamento de Projetos de Investigação Científica e Desenvolvimento Tecnológico em Todos os Domínios Científicos - 2017/PTDC%2FCCI-INF%2F32081%2F2017/PT
id run_ebfdea4ad1a4329a27128a2075c426a8
identifier.url.fl_str_mv http://hdl.handle.net/10362/169108
inst_facet_str urn:organizationAcronym:unl{{{_:::_}}}Universidade Nova de Lisboa
instacron_str unl
institution Universidade Nova de Lisboa
instname_str Universidade Nova de Lisboa
language eng
network_acronym_str run
network_name_str Repositório Institucional da UNL
oai_identifier_str oai:run.unl.pt:10362/169108
organization_str_mv urn:organizationAcronym:unl
person_str_mv Seco, João Costa
Lourenço, Hugo
Parreira, Joana
Ferreira, Carla
publishDate 2024
repo_facet_str urn:repositoryAcronym:run{{{_:::_}}}Repositório Institucional da UNL
reponame_str Repositório Institucional da UNL
repository_id_str urn:repositoryAcronym:run
service_str_mv urn:repositoryAcronym:run
spelling engenLow-code frameworks strive to simplify and speed up application development. An essential mechanism to achieve these goals is to have native support for the safe reuse and usage of parameterized coarse-grain components, providing developers with strong guardrails and a rich software-building experience. OSTRICH —a rich template language for the OutSystems platform—was designed to simplify the use and creation of such components. Thus, the application developer can quickly reuse and assemble sophisticated and thoroughly tested application blocks. However, without a built-in composition and evolution mechanism, OSTRICH templates are still hard to create and maintain. This sometimes requires the repetition of code across different templates and creates a conflict between the customizations of the instantiated application models, and the update and reapplication of a template definition. This paper presents a principled mechanism for using abstraction in the creation of templates and simultaneously supporting the evolution of OSTRICH templates in applications after use. First, we introduce a template composition mechanism, its typing discipline, and its instantiation algorithm for model-driven low-code development environments. We start by extending OSTRICH to support nested templates and allow the instantiation (hatching) of templates in the definition of other templates. Nesting promotes a significant increase in code reuse potential, leading to a safer evolution of applications. We then introduce the support for customizable template instances, which allows one to evolve templates’ code and then update a template instance without losing customizations performed in the generated code. The present definition seamlessly extends the existing OutSystems metamodel with template constructs expressed by model annotations that maintain backward compatibility with the existing language toolchain. We present the metamodel, a set of annotations to support the extensions, and the corresponding validation and instantiation algorithms. In particular, we introduce a type-based validation procedure for abstractions that ensures that using templates always produces valid models. This work also extends prior developments on Nested OSTRICH with the support for safe customizations of instantiated code. We validate Nested OSTRICH using the OSTRICH benchmark by identifying the degree of reusability that can be reached in the existing sample of real templates and template uses. Our prototype is an extension of the OutSystems IDE that allows the annotation of models and their use to produce new models. We also analyze which existing OutSystems sample screen templates can be improved by using and sharing nested templates.application/pdfenGoing beyond templatesSubtitleencomposition and evolution in nested OSTRICHSeco, João CostaLourenço, HugoParreira, JoanaFerreira, CarlaNOVALincsSpringerHostingInstitutionOrganizationalRUNe-mailmailto:run@unl.ptrun@unl.ptISSNIsPartOf1619-1366URNIsPartOfPURE: 93106274URNIsPartOfPURE UUID: bc658260-edc9-4c04-a759-f103e53528d5URNIsPartOfScopus: 85193708909URNIsPartOfWOS: 001228239300002URNIsPartOfORCID: /0000-0003-3680-7634/work/162434057DOIIsPartOf10.1007/s10270-024-01178-w2024-06-26T22:25:57Z2024-05-202024-05-20T00:00:00ZHandlehttp://hdl.handle.net/10362/169108http://purl.org/coar/access_right/c_abf2open accessLow-code modelsMetamodelMetaprogrammingModel reuseTemplatingTypechecking templatesSoftwareModelling and Simulation3306231 bytesFundação para a Ciência e a TecnologiaNOVA Laboratory for Computer Science and Informaticsinfo:eu-repo/grantAgreement/FCT/6817 - DCRRNI ID/UIDB%2F04516%2F2020/PTUIDB/04516/20206817 - DCRRNI IDCrossref Funder IDhttp://doi.org/10.13039/501100001871Fundação para a Ciência e a TecnologiaA correct by design methodology for available cloud applicationsinfo:eu-repo/grantAgreement/FCT/Concurso para Financiamento de Projetos de Investigação Científica e Desenvolvimento Tecnológico em Todos os Domínios Científicos - 2017/PTDC%2FCCI-INF%2F32081%2F2017/PTPTDC/CCI-INF/32081/2017Concurso para Financiamento de Projetos de Investigação Científica e Desenvolvimento Tecnológico em Todos os Domínios Científicos - 2017Crossref Funder IDhttp://doi.org/10.13039/501100001871literaturehttp://purl.org/coar/resource_type/c_6501journal articlehttp://purl.org/coar/access_right/c_abf2application/pdffulltexthttps://run.unl.pt/bitstreams/949eb843-9396-4ef2-912e-5ab631bcb183/download
spellingShingle Going beyond templates
Seco, João Costa
Low-code models
Metamodel
Metaprogramming
Model reuse
Templating
Typechecking templates
Software
Modelling and Simulation
status SINGLETON
subject.fl_str_mv Low-code models
Metamodel
Metaprogramming
Model reuse
Templating
Typechecking templates
Software
Modelling and Simulation
title Going beyond templates
title_full Going beyond templates
title_fullStr Going beyond templates
title_full_unstemmed Going beyond templates
title_short Going beyond templates
title_sort Going beyond templates
topic Low-code models
Metamodel
Metaprogramming
Model reuse
Templating
Typechecking templates
Software
Modelling and Simulation
topic_facet Low-code models
Metamodel
Metaprogramming
Model reuse
Templating
Typechecking templates
Software
Modelling and Simulation
url http://hdl.handle.net/10362/169108
visible 1

Atividades financiadas

Carregando projetos financiados...