ABSTRACT
Single Page Application (SPA) is a most common approach for developing modern web applications. A chief benefit of SPA is reduced round-trip to the server and more responsive user experience. Although several well-known SPA frameworks have been developed and applied in practice, SPA developers are still facing two main challenges: (i) design an SPA that would work accross the frameworks and (ii) realise this design in an intermediate high-level language that would effectively be transformed into a target framework of choice. In this paper, we propose a multi-platform, hierarchical domain-driven design method to tackle these challenges. Our method uses the domain model as the core to build the SPA. We formulate a set of essential technical SPA requirement patterns and, based on these, define a precise SPA metamodel in UML/OCL. We use an annotation-based DSL as an intermediate representational language for the SPA metamodel and from this propose an SPA generator that generates SPAs for four popular SPA frameworks (Angular, React (Native) and Vuejs). The evaluation results show that our method is very promising for building multi-platform SPAs.
- Alex Banks. 2020. Learning React: modern patterns for developing React apps (2nd ed.). O’Reilly, Beijing.Google Scholar
- Adam Boduch. 2020. React and React Native(3rd ed.). Packt, Birmingham, UK.Google Scholar
- Doguhan Uluca. 2020. Angular for Enterprise-Ready Web Applications (2nd ed.). Packt.Google Scholar
- Tamir Dresher, Amir Zuker, and Shay Friedman. 2018. Hands-On Full-Stack Web Development with ASP.NET Core: Learn end-to-end web development with leading frontend frameworks, such as Angular, React, and Vue. Packt. Google-Books-ID: Tel1DwAAQBAJ.Google Scholar
- Evan You. 2022. Vue.js. https://vuejs.org/guide/introduction.htmlGoogle Scholar
- Philipp Fehre. 2015. JavaScript Domain-Driven Design. Packt, Birmingham.Google Scholar
- Google. 2022. Angular Docs. https://angular.io/docsGoogle Scholar
- Jesse Griffin. 2020. Domain-Driven Laravel: Learn to Implement Domain-Driven Design Using Laravel(1st ed.). Apress, S.l.Google Scholar
- Shama Hoque. 2020. Full-Stack React Projects: Learn MERN stack development by building modern web apps using MongoDB, Express, React, and Node.js (2nd ed.). Packt.Google Scholar
- Philip Klauzinski and John Moore. 2016. Mastering JavaScript Single Page Application Development. Packt, Birmingham.Google Scholar
- Jörg Krause. 2021. Developing web components with typescript: native web development using thin libraries (1st ed.). Apress.Google Scholar
- Duc Minh Le, Duc-Hanh Dang, and Viet-Ha Nguyen. 2018. On Domain Driven Design Using Annotation-Based Domain Specific Language. Computer Languages, Systems & Structures 54 (2018), 199–235.Google ScholarDigital Library
- Duc Minh Le, Duc-Hanh Dang, and Viet-Ha Nguyen. 2020. Generative Software Module Development for Domain-Driven Design with Annotation-Based Domain Specific Language. Information and Software Technology 120 (April 2020), 106–239.Google Scholar
- Duc Minh Le, Duc-Hanh Dang, and Ha Thanh Vu. 2019. jDomainApp: A Module-Based Domain-Driven Software Framework. In Proc. 10th Int. Symp. on Information and Communication Technology (SOICT). ACM, New York, USA, 399–406.Google ScholarDigital Library
- Duc Minh Le and Ha Thanh Vu. 2022. Towards Generating RESTful Full Stack Software: A Module Based Domain Driven Design Approach. In 2nd Conf. ICISN 2022. Springer LNCS, Hanoi, Vietnam.Google Scholar
- Meta. 2022. React Docs. https://reactjs.org/docs/getting-started.htmlGoogle Scholar
- Meta. 2022. React Native: Components and APIs. https://reactnative.dev/docs/components-and-apisGoogle Scholar
- Vijay Nair. 2019. Practical Domain-Driven Design in Enterprise Java: Using Jakarta EE, Eclipse MicroProfile, Spring Boot, and the Axon Framework (1st ed.). Apress, Mountain View, CA, USA.Google Scholar
- Milan Nosál’, Matúš Sulír, and Ján Juhár. 2016. Language Composition Using Source Code Annotations. Computer Science and Information Systems 13, 3 (2016), 707–729.Google ScholarCross Ref
- OMG. 2014. Object Constraint Language Version 2.4. http://www.omg.org/spec/OCL/2.4/Google Scholar
- OMG. 2015. Unified Modeling Language version 2.5. http://www.omg.org/spec/UML/2.5/Google Scholar
- OMG. 2017. Unified Modeling Language version 2.5.1. Technical Report formal/2015-03-01. OMG. https://www.omg.org/spec/UML/2.5.1/PDFGoogle Scholar
- Harry Percival and Bob Gregory. 2020. Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices (1st ed.). O’Reilly Media, Boston.Google Scholar
- Heitor Ribeiro. 2020. Vue.js 3 Cookbook(1st ed.). Packt.Google Scholar
- Emmit Scott. 2015. SPA Design and Architecture: Understanding Single Page Web Applications (1sted.). Manning, Shelter Island, NY.Google Scholar
- Scott Wlaschin. 2018. Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#(1st ed.). Pragmatic Bookshelf, Raleigh, North Carolina.Google Scholar
- Alexey Zimarev. 2019. Hands-On Domain-Driven Design with.NET Core: Tackling complexity in the heart of software by putting DDD principles into practice (1st ed.). Packt, Birmingham.Google Scholar
Index Terms
- Generating Multi-platform Single Page Applications: A Hierarchical Domain-Driven Design Approach
Recommendations
A Model-driven Approach for Generating RESTful Web Services in Single-Page Applications
MODELSWARD 2018: Proceedings of the 6th International Conference on Model-Driven Engineering and Software DevelopmentModern Single-Page Applications (SPA) use data from multiple Web services to support essential process in the enterprises. By using data from several Web services, the SPA changed their architecture from a one-to-one communication between client and ...
Model-driven engineering with domain-specific meta-modelling languages
Domain-specific modelling languages are normally defined through general-purpose meta-modelling languages like the MOF. While this is satisfactory for many model-driven engineering (MDE) projects, several researchers have identified the need for domain-...
A rational approach to model-driven development
Model-driven software developmentModels, modeling, and model transformation form the basis for a set of software development approaches that are known as model-driven development (MDD). Models are used in reasoning about a problem domain and the corresponding solution domain for some ...
Comments