# Transpiler-Based Architecture Design Model for Back-End Layers in Software Development
## 3 Transpiler-Based Design Model for Back-End Layers
### Detailed Design
#### 3.4.1 The Proposal  
A new application design is proposed in which a software developer can build the back-end of a business platform or information system using a transpilable programming language with the objective of being the means by which the business logic, methods of connection to the database, business objects, and others are required for the specific solution. After the transformation process, different versions of the source code produced in the target programming languages must be prepared, integrated, and merged with the components of each platform and their execution services. Finally, they are compiled into their own native forms of execution for each language, as in.net to DLLs or Java to JAR or WAR files; these components can be deployed in the chosen application servers as any native application to finally expose it as a web endpoint. With this, it can operate and meet the requests invoked from the front-end. To ease this process, a communication layer is automatically generated as a proxy library, which is developed in the front-end programming language. Each transpiled version should operate in an equivalent manner to ensure that the front-end can point to any of the published endpoints while always expecting the same result. The objective of the transpiler in this design is to translate an origin source code into another or other destination code. However, making it applicable in the operating environment of a business platform requires several elements to make it usable for a development team. To achieve these objectives, the implementation of certain instruments is proposed to provide greater applicability on the part of the proposed design. Figure 3 presents the design and definition of the instruments needed in each phase to accomplish the expected results. Below, we provide conceptual details on the different instruments involved. * The development stage includes the components of the \"Development Kit\", consisting of following the main instruments, which are detailed later in the study:
* Common: a library for implementing standard functions that back-end developers use as a unified layer for development. * Security: a library that implements standard algorithms for providing developers with methods for encryption/decryption, best practices applicable to the back-end, and others. * ORM: a library that allows connecting to databases and enables registering transactions in a simplified way, leveraging developers to only work with a single language most of the time. * Runtime services: a library for providing developers with methods needed for configuration, service execution, call flow control, and others. * The preparation stage includes the components required for the automated process. The following are the main instruments used in this stage, and are detailed later in the paper:
* Code generators: tools that take the transpiled code and use reflection and other techniques to generate missing layers, service preparation, code injection, and others to prepare the code for the execution-specific platform. They prepare the final code for native compilation and generation of executable artifacts. Native compilers: the native compilers available for each programming language. Automation calls allow these compilers to obtain the required artifacts compatible with nest implementations. - Configuration: the tools needed to configure the server-side solution during the preparation and execution phases. - Deployment: tools for deploying artifacts produced in runtime technologies. * The usage stage encompasses the components necessary for the client-side library. Although this proposal primarily targets back-end layers, a front-end layer is integrated into the approach as well. This integration ensures that front-end developers have a dedicated communication layer, which can facilitate their consumption of the methods provided by the back-end. The process predominantly entails the generation of service class code, with an emphasis on the parameters and return values of the disclosed methods.