RestRho: A JSON-Based Domain-Specific Language for Designing and Developing RESTful APIs to Validate RhoArchitecture
Abstract
1. Introduction
2. RestRho: Building REST APIs Based on JSON-DSL
2.1. A Look at DSL-Based Solutions to Specify RESTful APIs
2.2. Summary of RhoArchitecture
- Rho Programming Model (RhoModel): This model establishes a programming framework to add JavaScript functionality and support the corresponding code and documentation generation. RhoModel allows integrating (i) JSON-DSL specification, a programming language using JSON grammar, where RhoLanguage is a JSON-DSL combined with JavaScript classes to implement grammar elements (lower-central part of Figure 1). JavaScript components and web components [29,31] that interact with the JSON-DSL (bottom part of Figure 1). JavaScript template engines, like the Handlebars Engine, enabling the creation of custom templates efficiently (left-hand part of Figure 1). Definitions for connecting to various Data Sources such as JSON, XML, and text (top part of Figure 1).
- Rho JSON-DSL Evaluation Engine (RhoEngine): This JavaScript component (top-central part of Figure 1) can run multiple programs (RhoCode) written in different JSON-DSLs. Executing a JSON-DSL program involves evaluating the functionality of the nested grammar symbols, starting from the root and drilling down based on the grammar definition. JSON-DSLs running in RhoEngine can connect and exchange heterogeneous information, use template engines, incorporate components and web components, apply security policies, and follow good programming practices [32,33], enhancing their functionality, reliability, and robustness.
- Web-Integrated Development Environment for Rho (WebIDERho): This is a web-development environment that uses the RhoModel for programming and the RhoEngine for execution. WebIDERho allows us to define projects for both server and client sides, visualize class diagrams, automatically generate documentation, and deploy NodeJS-based web applications.
2.3. RestRho for the Specification, Implementation, and Deployment of RESTful APIs
2.3.1. DBRestRho Language
- (i)
- Method: is the method of the HTTP request, where <method> is the name of the method to use: get (retrieves resources), post (creates new resources), put (updates resources), and delete (remove resources).
- (ii)
- Parameters: is the list of parameters (<param1>, …, <paramN>) to use within the HTTP request and SQL statement. For example, {“params”: [“key”]}, and its use in the template is “:key”.
- (iii)
- Default: are the default options (<option1>, …) to be used in an SQLRho program. For example, {“Fields”: “*”}, means that it takes the field specification of a table and lists the names separated by commas “,”.
- (iv)
- Path: is the URL structure of the HTTP request (Handlebars template). Generally, <templatePath> can be expressed as follows:
- /{{action}}: an action that is defined in a table of an SQLRho program.
- /<resource>: a fixed resource. For example, <resource>=/all.
- /<params>: the list of parameters defined in Params. For example, <params>=/:key.
- (v)
- SQL is the SQL template specified in Handlebars (Minimal templating on steroids: https://handlebarsjs.com/ (accessed on 12 July 2025)) where there is a predefined set of tags required for an SQL statement: Table, Fields, Distinct, Join, InnerJoin, LeftJoin, RightJoin, FullJoin, Where, GroupBy, Having, OrderBy, Limit, are added to Parameters. For example:
Algorithm 1 RhoCode DBRestRho |
{ "Name": "<name>", "Description": "<description>", "Databases": ["<SQLRhoCode1>", ..., "<SQLRhoCodeI>", ..., "<SQLRhoCodeN>"], "Definitions": { ... "<definition>": { "Method": "<method>", // <method>: get|post|put|delete "Parameters": {"params": ["<param1>", ..., "<paramM>"]}, "Default": {"<option1>": "*", ...}, "Path": "<templatePath>", "SQL": "<templateSql>" }, ... } } |
2.3.2. SQLRho Language
Algorithm 2 RhoCode SQLRho |
{ "Name": "<do>", "Description": "<description>", "Connector": "<connector>", // <connector>: mariadb|mysql "EnableToken": <enable>, // <enable>: false|true "Pool": {"host":"…", "user":"…", "password":"…", "database":"…", "connectionLimit":<int> }, "Registry": {"Table":"…", "User":"…", "Password":"…", "ValidityMinutes": <int> }, "Templates": { ..., "<nameTemplateI>": {"Dir":"<dirI>", "File":"<nameFileI>"}, ... }, "Tables": { ..., "<tableI>": { "Encrypt": ["<field1>", ..., "<fieldK>", ...], "Decrypt": ["<field1>", ..., "<fieldJ>", ...], "Uses": ["use1", ..., "useI", ..., "useN"], "Operations": { ... "<operationI>": { "Name": "<nameOperation>", "Action": "<action>", "Parameters": {"query": ["<param1>", ..., "<paramJ>"] }, "Clauses": {"Fields": "…", "Where": "…", "OrderBy": "…", ... }, "Transform": {"Type": "<type>", ..., "<varI>": ... }, "Template": "<nameTemplateI>" } } }, ... } } |
- (i)
- Encrypt: is the list of field names <FieldK>, of the table <tableI> to be encrypted for sending. For data encryption, RestRho uses an AES-256 algorithm in CBC (Cipher Block Chaining) mode. Sensitive fields are usually encrypted to protect confidential information (table identifiers, passwords, personal data, medical history, bank details, etc.).
- (ii)
- Decrypt: is the list of field names <FieldJ> of the table <tableI> to be decrypted on the server for processing. Similarly, RestRho uses the same AES-256 algorithm in CBC mode to decrypt the data.
- (iii)
- Uses: element defines the set of fundamental operations available for <tableI>. These include record-level actions—Insert, Update, Delete, and Select—as well as table-level operations such as Where clauses and the SelectAll operation.
- (iv))
- Operations: is the list of custom operations that support configuration and parameters in their definition, and transformations and templates can be applied to the results.
2.3.3. Implementation Summary
2.4. Sample RestRho
2.5. Final Comments
3. Validation and Experimentation
3.1. Code Validation
3.2. Empirical Validation
3.2.1. Experimentation Setup
Research Question Statement
- RQ1: What facets of user experience, including effectiveness, efficiency, and satisfaction, stand out when employing RestRho for defining and deploying a RESTful API server, as highlighted by both quantitative and qualitative analyses?
- RQ2: How do user perceptions of effectiveness, efficiency, and satisfaction differ when using RestRho to create a RESTful API server, considering their prior experience in programming, database design, and web development, as derived from both quantitative and qualitative analyses?
Participants
Experimental Procedure
Tasks
3.2.2. Quantitative
3.2.3. Qualitative
Validity
“In my opinion, the DBRestRho and SQLRho languages are quite easy to understand and implement. Other tools require learning an entire language from scratch, however, being based on JavaScript and JSON, the language base one already has and only has slight differences.”(Student 4)
“By using DBRestRho and SQLRho on the RestRho, some additional benefits can be gained compared to other RESTful API server options”(Student 5)
“I think they make efficient use of SQL and JSON for the creation of Pages. Yes, because there are other options that require a lot more writing to achieve the same thing.”(Student 35)
“It is complicated to learn and implement, I think it has potential but more work is needed on the documentation and tools to learn how to use it.”(Student 21)
“In my opinion, from what I was able to do it is very interesting, but more practice is needed to be able to create web pages, and I think it would bring some additional benefits.”(Student 33)
“There is not much documentation on the web, it takes time to get familiar with the language”(Student 37)
Utility
“Microservices allow you to split an application into smaller, independent components. Using RestRho to create web microservices could facilitate application modularity and scalability, as each microservice could have its own logic and responsibilities specific.”(Student 17)
“Efficiency, since it does not require too much code to make a request”(Student 19)
“Flexible database integration” is a positive aspect of RestRho.(Student 21)
“I would not have to create what I want to show several times, just calling that template will be enough to be able to visualize its function.”(Student 23)
“If the RestRho is not compatible with certain existing tools, frameworks or systems, it may have difficulty integrating with other infrastructure components or taking advantage of popular technologies.”(Student 17)
“From what I could observe it may be the limited scalability that was still seen, some limited complexity in some complex web projects”(Student 33)
Usability
“The ease of use. Much of the homework was done with the knowledge that I simply had up to now.”(Student 1)
“I find it quite useful once the workflow is known.”(Student 30)
“Little documentation.”(Student 6)
“I wish there was more documentation to look at in case there is a concept that I do not understand.”(Student 8)
“The documentation should be a bit more explanatory.”(Student 18)
“Lack of clear documentation and usage examples.”(Student 21)
“Having to learn new syntax and use more than one program to see results.”(Student 12)
Ease
“The server is much faster and its syntax is easier to handle. There is obviously an advantage against Java Spring, for example.”(Student 1)
“In general it is quite complete and fast.”(Student 7)
“Speed and above all his intuitiveness to do things.”(Student 13)
“The server is much faster and its syntax is easier to handle. There is obviously an advantage against Java Spring, for example.”(Student 18)
“It can be done faster unlike other programs”(Student 27)
“Speed to create them [Web Microservices].”(Student 30)
“It is faster”(Student 39)
“Simplicity and Fast code creation (crud, services, login)”(Student 6)
“It delivers a framework, where you only have to worry about defining what is necessary.”(Student 30)
“Error handling is complicated due to JavaScript; this could be improved in the future.”(Student 21)
“Mainly error handling, it would be useful to know what I’m missing or what I’ve done wrong, for example, if I misspelled the name of a table, it could indicate that “table “table1” does not exist in the database” or something for the style”(Student 32)
Security
“Flexibility—Control over the page—Security and personalization”(Student 16)
“If the RestRho uses third-party libraries or tools, there is a risk of being dependent on their maintenance and updating. If these dependencies are not regularly updated or become outdated, there could be security issues or lack of long-term support.”(Student 5)
“Consider including authentication and authorization functionalities in the RestRho.”(Student 5)
“Focus on security: Make sure that the RestRho implements strong security measures to protect web pages and associated data. This can include authentication, authorization, data encryption and prevention of attacks such as SQL injections and XSS (cross -site scripting).”(Student 17)
4. Discussion of the Findings
4.1. Code Validation
4.2. Empirical Validation
4.3. Integration of Findings
4.4. Comparison with State-of-the-Art DSL Tools
5. Threats to Validity
5.1. Integration of Findings
5.2. Threats to the Internal Validity
5.3. Threats to the External Validity
5.4. Threats to Construct Validity
6. Conclusions and Future Work
Author Contributions
Funding
Data Availability Statement
Acknowledgments
Conflicts of Interest
References
- Fowler, M.; White, T. Domain-Specific Languages; Addison-Wesley Professional: Denver, CO, USA, 2010; ISBN 0-13-210754-6. [Google Scholar]
- Mernik, M.; Heering, J.; Sloane, A.M. When and How to Develop Domain-Specific Languages. ACM Comput. Surv. (CSUR) 2005, 37, 316–344. [Google Scholar] [CrossRef]
- Ghosh, D. DSLs in Action; Manning Publications: London, UK, 2010; ISBN 1-935182-45-5. [Google Scholar]
- Wu, H.; Gray, J.; Mernik, M. Grammar-Driven Generation of Domain-Specific Language Debuggers. Softw. Pract. Exp. 2008, 38, 1073–1103. [Google Scholar] [CrossRef]
- Kelker, R.D. Clojure for Domain-Specific Languages; Packt Publishing: Birmingham, UK, 2013. [Google Scholar]
- Hudak, P. Building Domain-Specific Embedded Languages. ACM Comput. Surv. 1996, 28, 196. [Google Scholar] [CrossRef]
- Voelter, M. DSL Engineering: Designing, Implementing and Using Domain-Specific Languages; Springer: Berlin/Heidelberg, Germany, 2013. [Google Scholar]
- Pierantonio, A. Domain-Specific Languages in Practice: With JetBrains MPS; Springer: Cham, Switzerland, 2019; ISBN 978-3-030-73758-0. [Google Scholar]
- Fawcett, J.; Quin, L.R.E.; Ayers, D. Beginning XML, 5th ed.; Wrox Press: Hoboken, NJ, USA, 2012. [Google Scholar]
- ECMA ECMA-404: The JSON Data Interchange Syntax. Available online: https://www.ecma-international.org/publications-and-standards/standards/ecma-404/ (accessed on 2 September 2021).
- W3C Recommendation JSON-LD 1.1: A JSON-Based Serialization for Linked Data (W3C Recommendation 16 July 2020). Available online: https://www.w3.org/TR/json-ld/ (accessed on 12 December 2023).
- Chavarriaga, E.; Jurado, F.; Rodríguez, F.D. An Approach to Build JSON-Based Domain-Specific Languages Solutions for Web Applications. J. Comput. Lang. 2023, 75, 101203. [Google Scholar] [CrossRef]
- Hermida, J.M.; Meliá, S.; Arias, A. Xanui: A Textual Platform-Independent Model for Rich User Interfaces. J. Web Eng. 2016, 15, 45–83. [Google Scholar]
- Barisic, A.; Amaral, V.; Goulao, M.; Barroca, B. Evaluating the Usability of Domain-Specific Languages. In Software Design and Development; IGI Global: Hershey, PA, USA, 2014; pp. 2120–2141. [Google Scholar]
- ISO.org. Ergonomics of Human-System Interaction—Part 210: Human-Centred Design for Interactive Systems. In Online Browsing Platform (OBP); ISO: Geneva, Switzerland, 2023. [Google Scholar]
- Iung, A.; Carbonell, J.; Marchezan, L.; Rodrigues, E.; Bernardino, M.; Basso, F.P.; Medeiros, B. Systematic Mapping Study on Domain-Specific Language Development Tools. Empir. Softw. Eng. 2020, 25, 4205–4249. [Google Scholar] [CrossRef]
- do Nascimento, L.M.; Viana, D.L.; Neto, P.A.S.; Martins, D.A.; Garcia, V.C.; Meira, S.R. A Systematic Mapping Study on Domain-Specific Languages. In Proceedings of the Seventh International Conference on Software Engineering Advances (ICSEA 2012), Lisbon, Portugal, 18–23 November 2012; pp. 179–187. [Google Scholar]
- Hoffmann, B.; Urquhart, N.; Chalmers, K.; Guckert, M. An Empirical Evaluation of a Novel Domain-Specific Language—Modelling Vehicle Routing Problems with Athos. Empir. Softw. Eng. 2022, 27, 180. [Google Scholar] [CrossRef] [PubMed]
- Bojinov, V. RESTful Web API Design with Node.Js 10, Third Edition: Learn to Create Robust RESTful Web Services with Node.Js, MongoDB, and Express.Js, 3rd ed.; Packt Publishing: Birmingham, UK, 2018; ISBN 9781788629140. [Google Scholar]
- Wexler, J. Get Programming with Node.Js; Simon and Schuster: New York, NY, USA, 2019. [Google Scholar]
- Lee, M.C. Software quality factors and software quality metrics to enhance software quality assurance. Br. J. Appl. Sci. Technol. 2014, 7, 3069–3095. [Google Scholar] [CrossRef]
- Cordasco, G.; D’Auria, M.; Negro, A.; Scarano, V.; Spagnuolo, C. Toward a Domain-Specific Language for Scientific Workflow-Based Applications on Multicloud System. Concurr. Comput. Pract. Exp. 2021, 33, e5802. [Google Scholar] [CrossRef]
- Johanson, A.N.; Hasselbring, W. Effectiveness and Efficiency of a Domain-Specific Language for High-Performance Marine Ecosystem Simulation: A Controlled Experiment. Empir. Softw. Eng. 2017, 22, 2206–2236. [Google Scholar] [CrossRef]
- Frantz, R.Z.; Rehbein, M.H.; Berlezi, R.; Roos-Frantz, F. Ranking Open Source Application Integration Frameworks Based on Maintainability Metrics: A Review of Five-Year Evolution. Softw. Pract. Exp. 2019, 49, 1531–1549. [Google Scholar] [CrossRef]
- Bocanegra, J.; Frantz, R.Z.; Roos-Frantz, F.; Basso, F.P. Evaluating the Semantic Transparency of Guaraná: A Domain-Specific Language for Enterprise Application Integration. Softw. Pract. Exp. 2022, 52, 967–983. [Google Scholar] [CrossRef]
- Poltronieri Rodrigues, I.; de Borba Campos, M.; Zorzo, A.F. Usability Evaluation of Domain-Specific Languages: A Systematic Literature Review. In Proceedings of the Human-Computer Interaction, User Interface Design, Development and Multimodality; Kurosu, M., Ed.; Springer International Publishing: Cham, Germany, 2017; pp. 522–534. [Google Scholar]
- Subramanian, H.; Raj, P. Hands-On RESTful API Design Patterns and Best Practices: Design, Develop, and Deploy Highly Adaptable, Scalable, and Secure RESTful Web APIs; Packt Publishing Ltd.: Birmingham, UK, 2019. [Google Scholar]
- Malakhov, K.; Kurgaev, O.; Velychko, V. Modern RESTful API DLs and Frameworks for RESTful Web Services API Schema Modeling, Documenting, Visualizing. Probl. Program. 2018, 4, 59–68. [Google Scholar] [CrossRef]
- Ferguson, R. JavaScript and Development Tools. In Beginning JavaScript: The Ultimate Guide to Modern JavaScript Development; Apress: Berkeley, CA, USA, 2019; pp. 11–24. ISBN 978-1-4842-4395-4. [Google Scholar]
- API BluePrint. Available online: https://apiblueprint.org/ (accessed on 10 July 2025).
- Flanagan, D. JavaScript: The Definitive Guide: Master the World’s Most-Used Programming Language, 7th ed.; O’Reilly Media: Sebastopol, CA, USA, 2020. [Google Scholar]
- Czech, G.; Moser, M.; Pichler, J. Best Practices for Domain-Specific Modeling. A Systematic Mapping Study. In Proceedings of the 2018 44th Euromicro Conference on Software Engineering and Advanced Applications (SEAA), Prague, Czech Republic, 29–31 August 2018; pp. 137–145. [Google Scholar]
- Yue, C.; Wang, H. A Measurement Study of Insecure Javascript Practices on the Web. ACM Trans. Web (TWEB) 2013, 7, 1–39. [Google Scholar] [CrossRef]
- Rani, F.; Diez, P.; Chavarriaga, E.; Guerra, E.; de Lara, J. Automated Migration of Eugenia Graphical Editors to the Web. In Proceedings of the 23rd ACM/IEEE International Conference on Model Driven Engineering Languages and Systems: Companion Proceedings, Virtual, 16–23 October 2020; pp. 1–7. [Google Scholar]
- Chavarriaga, E. Modelo Programable para la Serialización y Evaluación de Modelos Heterogéneos en Clientes Web. Ph.D. Thesis, Repository Autonomous University of Madrid, Madrid, Spain, 2017. [Google Scholar]
- Tahir, A.; MacDonell, S.G. A Systematic Mapping Study on Dynamic Metrics and Software Quality. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM), Trento, Italy, 23–28 September 2012. [Google Scholar]
- Riaz, M.; Mendes, E.; Tempero, E. A Systematic Review of Software Maintainability Prediction and Metrics. In Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement, Lake Buena Vista, FL, USA, 15–16 October 2009; pp. 367–377. [Google Scholar]
- Jatain, A.; Mehta, Y. Metrics and Models for Software Reliability: A Systematic Review. In Proceedings of the 2014 International Conference on Issues and Challenges in Intelligent Computing Techniques (ICICT), Ghaziabad, India, 7–8 February 2014; pp. 210–214. [Google Scholar]
- Ahsan, S.; Hayat, F.; Afzal, M.; Ahmad, T.; Asif, K.H.; Asif, H.M.S.; Saleem, Y. Object Oriented Metrics for Prototype Based Languages. Life Sci. J. 2012, 9, 63–66. [Google Scholar]
- Nguyen, V.; Deeds-Rubin, S.; Tan, T.; Boehm, B. A SLOC Counting Standard; University of Southern California, Center for Systems and Software Engineering: Los Angeles, CA, USA, 2007. [Google Scholar]
- McCabe, T. A Complexity Measure. IEEE Trans. Softw. Eng. 1976, SE-2, 308–320. [Google Scholar] [CrossRef]
- Halstead, M. Elements of Software Science; Elsevier: Amsterdam, The Netherlands, 1977. [Google Scholar]
- Oman, P.W.; Hagemeister, J.; Ash, D. A Definition and Taxonomy for Software Maintainability; University of Idaho, Software Engineering Test Laboratory: Post Falls, ID, USA, 1991. [Google Scholar]
- Chavarriaga, E.; Jurado, F.; Díez, F. An Approach to Build XML-Based Domain Specific Languages Solutions for Client-Side Web Applications. Comput. Lang. Syst. Struct. 2017, 49, 133–151. [Google Scholar] [CrossRef]
- Gill, G.K.; Kemerer, C.F. Cyclomatic Complexity Density and Software Maintenance Productivity. IEEE Trans. Softw. Eng. 1991, 17, 1284. [Google Scholar] [CrossRef]
- Lund, A.M. Measuring Usability with the Use Questionnaire12. Usability Interface 2001, 8, 3–6. [Google Scholar]
- Davis, F.D. Perceived Usefulness, Perceived Ease of Use, and User Acceptance of Information Technology. MIS Q. 1989, 13, 319–340. [Google Scholar] [CrossRef]
- Lin, H.X.; Choong, Y.-Y.; Salvendy, G. A Proposed Index of Usability: A Method for Comparing the Relative Usability of Different Software Systems. Behav. Inf. Technol. 1997, 16, 267–277. [Google Scholar] [CrossRef]
- MySQL. Employees Sample Database. MySQL Documentation, Oracle Corporation. Available online: https://dev.mysql.com/doc/employee/en/ (accessed on 10 July 2025).
- Rojas, P.L.A.; Truyol, M.E.; Calderon Maureira, J.F.; Orellana Quiñones, M.; Puente, A. Qualitative Evaluation of the Usability of a Web-Based Survey Tool to Assess Reading Comprehension and Metacognitive Strategies of University Students. In Proceedings of the Social Computing and Social Media. Design, Ethics, User Behavior, and Social Network Analysis: 12th International Conference, SCSM 2020, Held as Part of the 22nd HCI International Conference, HCII 2020, Proceedings, Copenhagen, Denmark,, 19–24 July 2020; pp. 110–129. [Google Scholar]
Language Type | Web IDE | Integrate Documentation | Reuse and Modularity | Format | Validation and Code Generation | Tests and Simulations | Online Modeling | Extensions and Customization | Use Template Engines | Integration with Tools | |
---|---|---|---|---|---|---|---|---|---|---|---|
RAML | DSL | Yes | Yes | Lim. | YAML | Yes | Yes | Yes | Yes | No | Yes |
Swagger/OpenAPI | Spec. | Yes | Yes | No | YAML, JSON | Yes | Lim. | Yes | Yes | No | Yes |
WADL | DSL | Yes | Yes | Lim. | XML | Yes | Yes | No | Yes | No | Yes |
API Blueprint | DSL | Yes | Yes | Lim. | YAML | No | Lim. | No | Yes | No | Yes |
Project | File | RhoModel | JavaScript Generated Code | Conciseness | ||||||
---|---|---|---|---|---|---|---|---|---|---|
MRho | MIRho | RHOLOC | LOC | SLOC | LLOC | CLOC | BLOC | RHOLOC/SLOC | ||
RhoEngine | Rho.js (client) Rho.js (sever) | 237(1) | 1578(6) | 1815 | 2375 1598 | 1347 847 | 1350 809 | 714 510 | 314 241 | 2.19 |
RhoModel | MRho.js | 277(1) | 949(6) | 1226 | 2140 | 1518 | 1055 | 516 | 106 | 1.75 |
WebIDERho | WebIDERho.js | 129(1) | 910(3) | 1039 | 1232 | 812 | 886 | 287 | 133 | 1.19 |
RestRho | RestRho.js | 86(1) | 717(2) | 803 | 1186 | 1177 | 782 | 302 | 118 | 1.47 |
ServerRestRho | SeverRestRho.js | - | - | - | 21 | 11 | 11 | 4 | 3 | - |
Handlebars | Handlebars-all.js | - | - | - | 3351 | 2575 | 1643 | 311 | 465 | - |
Express | Express-all.js | - | - | - | 4054 | 1820 | 1379 | 1575 | 659 | - |
MariaDB | MariaDB-all.js | - | - | - | 14,318 | 11,531 | 8434 | 1635 | 1152 | - |
Total | 729(4) | 4118(17) | 4847 | 30,275 | 21,638 | 16,350 | 5859 | 3189 | 1.65 |
Framework/Component | CNN | CND | HS | HD | HV * | HE + | HEF | HB | HT * | MI |
---|---|---|---|---|---|---|---|---|---|---|
RhoEngine v1.1 (client) | 1.9 | 14.3 | 610 | 154 | 68.9 | 10.63 | 2663 | 23.0 | 590.4 | 114.3 |
RhoEngine v1.1 (server) | 1.8 | 13.7 | 413 | 140 | 41.2 | 5.78 | 2082 | 13.7 | 321.4 | 116.6 |
RhoModel v1.0 | 3.5 | 20.1 | 626 | 176 | 95.2 | 16.73 | 11,073 | 31.7 | 929.4 | 97.9 |
WebIDERho v1.1 | 1.7 | 9.4 | 575 | 118 | 54.8 | 6.45 | 2336 | 18.3 | 358.5 | 114.2 |
RestRho v1.0 | 1.4 | 7.9 | 449 | 97 | 38.4 | 3.73 | 1439 | 12.8 | 207.6 | 121.1 |
ServerRestRho v1.0 | 2 | 18.2 | 25 | 5 | 0.3 | 0.001 | 1525 | 0.1 | 0.1 | 106.9 |
Handlebars v5.0.0 | 2.5 | 20.8 | 887 | 134 | 98.4 | 13.3 | 2964 | 32.8 | 737.3 | 113.4 |
Express v4.16.4 | 3.0 | 21.5 | 742 | 148 | 81.0 | 12.0 | 3279 | 27.0 | 667.9 | 109.8 |
MariaDB v2.5.6 | 5.9 | 10.8 | 4346 | 96 | 306.4 | 29,6 | 54,784 | 102.1 | 1643.0 | 84.1 |
ID | Tasks | Task Weighting | Task Type | Main Activity |
---|---|---|---|---|
T1 | Setting up a file to launch an SQLRho program. | 0.0750 | TT1. Configure the SQLRho program with the ‘employees’ database | MA1. SQLRho program |
T2 | Query the current number of employees in each department, sorted alphabetically by department name. | 0.0450 | TT2. Operations on the ‘departments’ table | |
T3 | List all managers who have worked in a department in chronological order. | 0.0450 | ||
T4 | List the current managers of each department, sorted by last name and first name. | 0.0450 | ||
T5 | List the current employees in a department, including their current age. | 0.0450 | ||
T6 | Query the current number of men and women in each department, sorted by the number of employees in descending order. | 0.0600 | ||
T7 | Query the current minimum, maximum, and average salaries by department, sorted by average in ascending order. | 0.0600 | ||
T8 | Query the current number of men and women in the company. | 0.0300 | TT3. Operations on the ‘employees’ table | |
T9 | Query the titles that an employee has held in chronological order. | 0.0450 | ||
T10 | Query the departments where an employee has worked in chronological order. | 0.0450 | ||
T11 | Query the current number of men and women in the company within the following age brackets [0–17, 18–40, 40–65, 65+]. | 0.0450 | ||
T12 | Query an employee’s salary history in chronological order. | 0.0600 | ||
T13 | Create an HTML template for managing CRUD operations on the “departments” table. | 00444 | TT4. Usage of Handlebars templates | MA2. Company Website |
T14 | Create an HTML template for managing CRUD operations on the table of employees who are department managers. | 0.0889 | ||
T15 | Use “SelectManagersDepto (T4)” with its fields to create a template for cards of current managers in each department. | 0.0889 | ||
T16 | Use “SelectEmployeesListDepto (T5)” with its fields to create a template for pills of current employees in a department. | 0.0889 | ||
T17 | Create a diagram to display the current number of men and women in the company. | 0.0444 | ||
T18 | Create a diagram to display the current number of employees in each department. | 0.0444 | ||
Total | 1 |
P# | Tasks | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10 | T11 | T12 | T13 | T14 | T15 | T16 | T17 | T18 | Avg | SD | |
P1 | 100 | 66.7 | 33.3 | 66.7 | 66.7 | 50 | 50 | 50 | 66.7 | 66.7 | 33.3 | 75 | 0 | 0 | 0 | 0 | 0 | 0 | 40.3 | 32.9 |
P2 | 100 | 66.7 | 33.3 | 33.3 | 33.3 | 50 | 50 | 50 | 33.3 | 0 | 33.3 | 25 | 0 | 0 | 40 | 10 | 0 | 0 | 31 | 27.1 |
P3 | 100 | 33.3 | 100 | 66.7 | 66.7 | 50 | 50 | 50 | 66.7 | 66.7 | 33.3 | 75 | 60 | 70 | 60 | 30 | 80 | 80 | 63.2 | 20.2 |
P4 | 100 | 33.3 | 33.3 | 33.3 | 0 | 25 | 25 | 50 | 33.3 | 33.3 | 0 | 25 | 80 | 70 | 70 | 80 | 40 | 40 | 42.9 | 27.3 |
P5 | 100 | 66.7 | 33.3 | 33.3 | 33.3 | 25 | 50 | 50 | 66.7 | 33.3 | 33.3 | 100 | 20 | 40 | 10 | 10 | 20 | 20 | 41.4 | 26.8 |
P6 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 90 | 90 | 100 | 100 | 100 | 94.7 | 9.6 |
P7 | 100 | 0 | 66.7 | 66.7 | 66.7 | 50 | 75 | 100 | 66.7 | 66.7 | 0 | 50 | 60 | 70 | 50 | 40 | 40 | 0 | 53.8 | 29.7 |
P8 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 100 | 100 | 80 | 100 | 100 | 94.7 | 10.2 |
P9 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 100 | 100 | 90 | 80 | 100 | 94.2 | 10.2 |
P10 | 100 | 0 | 100 | 66.7 | 66.7 | 50 | 50 | 50 | 66.7 | 66.7 | 33.3 | 50 | 60 | 60 | 60 | 10 | 80 | 80 | 58.3 | 25.8 |
P11 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 90 | 90 | 90 | 80 | 80 | 91.9 | 10.3 |
P12 | 100 | 66.7 | 33.3 | 33.3 | 33.3 | 50 | 25 | 50 | 33.3 | 33.3 | 33.3 | 25 | 60 | 70 | 40 | 40 | 60 | 0 | 43.7 | 22.1 |
P13 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 100 | 90 | 90 | 100 | 100 | 94.7 | 9.6 |
P14 | 100 | 100 | 66.7 | 66.7 | 66.7 | 50 | 50 | 100 | 100 | 66.7 | 66.7 | 75 | 20 | 0 | 0 | 0 | 0 | 0 | 51.6 | 38.6 |
P15 | 100 | 100 | 66.7 | 66.7 | 33.3 | 75 | 50 | 100 | 66.7 | 66.7 | 0 | 50 | 100 | 90 | 0 | 50 | 80 | 0 | 60.8 | 34.2 |
P16 | 100 | 66.7 | 33.3 | 66.7 | 33.3 | 50 | 50 | 50 | 33.3 | 33.3 | 33.3 | 50 | 60 | 70 | 30 | 30 | 80 | 60 | 51.7 | 19.8 |
P17 | 100 | 66.7 | 33.3 | 33.3 | 33.3 | 25 | 25 | 50 | 66.7 | 33.3 | 33.3 | 100 | 0 | 0 | 0 | 0 | 0 | 0 | 33.3 | 32.7 |
P18 | 100 | 100 | 66.7 | 100 | 66.7 | 50 | 75 | 100 | 66.7 | 66.7 | 66.7 | 50 | 100 | 50 | 50 | 0 | 40 | 100 | 69.4 | 27.5 |
P19 | 100 | 100 | 100 | 66.7 | 100 | 75 | 75 | 100 | 100 | 66.7 | 0 | 75 | 100 | 0 | 70 | 50 | 100 | 0 | 71.2 | 36.3 |
P20 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 80 | 80 | 80 | 60 | 60 | 88.1 | 14.8 |
P21 | 100 | 33.3 | 33.3 | 66.7 | 66.7 | 50 | 50 | 50 | 66.7 | 66.7 | 33.3 | 100 | 20 | 50 | 20 | 10 | 20 | 0 | 46.5 | 28.2 |
P22 | 60 | 33.3 | 33.3 | 33.3 | 33.3 | 25 | 25 | 50 | 33.3 | 33.3 | 33.3 | 50 | 80 | 50 | 0 | 60 | 40 | 40 | 39.6 | 17.3 |
P23 | 100 | 100 | 66.7 | 66.7 | 66.7 | 75 | 50 | 100 | 66.7 | 66.7 | 66.7 | 50 | 60 | 60 | 80 | 0 | 0 | 0 | 59.7 | 31.3 |
P24 | 100 | 66.7 | 66.7 | 66.7 | 66.7 | 25 | 50 | 50 | 66.7 | 66.7 | 33.3 | 25 | 60 | 70 | 0 | 20 | 60 | 20 | 50.7 | 25 |
P25 | 100 | 100 | 100 | 66.7 | 66.7 | 75 | 75 | 100 | 66.7 | 66.7 | 100 | 50 | 60 | 0 | 70 | 60 | 20 | 20 | 66.5 | 29.6 |
P26 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 100 | 75 | 100 | 90 | 90 | 90 | 80 | 80 | 91.9 | 10.3 |
P27 | 100 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 66.7 | 66.7 | 100 | 50 | 40 | 60 | 70 | 30 | 40 | 40 | 42.4 | 37 |
P28 | 100 | 66.7 | 33.3 | 66.7 | 66.7 | 25 | 50 | 50 | 66.7 | 0 | 0 | 75 | 60 | 70 | 30 | 10 | 60 | 40 | 48.3 | 27.4 |
P29 | 100 | 33.3 | 100 | 66.7 | 66.7 | 50 | 50 | 50 | 66.7 | 66.7 | 33.3 | 75 | 60 | 70 | 60 | 10 | 80 | 80 | 62.1 | 22.6 |
P30 | 100 | 66.7 | 66.7 | 66.7 | 66.7 | 50 | 50 | 50 | 100 | 66.7 | 33.3 | 75 | 100 | 90 | 40 | 30 | 100 | 100 | 69.5 | 24.3 |
P31 | 100 | 66.7 | 100 | 66.7 | 66.7 | 50 | 50 | 50 | 100 | 66.7 | 33.3 | 75 | 60 | 70 | 40 | 30 | 100 | 0 | 62.5 | 27.3 |
P32 | 100 | 100 | 66.7 | 100 | 66.7 | 50 | 75 | 100 | 66.7 | 66.7 | 66.7 | 50 | 80 | 50 | 50 | 0 | 40 | 40 | 64.9 | 26.1 |
P33 | 100 | 33.3 | 33.3 | 33.3 | 33.3 | 25 | 25 | 50 | 33.3 | 33.3 | 33.3 | 25 | 40 | 60 | 20 | 10 | 20 | 20 | 34.9 | 19.9 |
P34 | 100 | 33.3 | 66.7 | 66.7 | 33.3 | 25 | 50 | 50 | 66.7 | 66.7 | 33.3 | 75 | 20 | 50 | 40 | 10 | 20 | 0 | 44.8 | 25.7 |
P35 | 100 | 33.3 | 33.3 | 33.3 | 0 | 25 | 25 | 50 | 33.3 | 33.3 | 0 | 25 | 100 | 90 | 50 | 70 | 40 | 40 | 43.4 | 29.4 |
P36 | 100 | 100 | 100 | 100 | 100 | 75 | 75 | 100 | 100 | 100 | 0 | 75 | 100 | 100 | 80 | 80 | 40 | 40 | 81.4 | 28.3 |
P37 | 100 | 100 | 66.7 | 100 | 66.7 | 75 | 50 | 50 | 100 | 66.7 | 66.7 | 100 | 60 | 70 | 40 | 30 | 60 | 40 | 69 | 23 |
P38 | 100 | 66.7 | 33.3 | 33.3 | 33.3 | 50 | 50 | 50 | 66.7 | 66.7 | 33.3 | 75 | 0 | 0 | 0 | 0 | 0 | 0 | 36.6 | 31.5 |
P39 | 100 | 66.7 | 66.7 | 66.7 | 33.3 | 50 | 50 | 50 | 66.7 | 33.3 | 33.3 | 25 | 60 | 70 | 50 | 30 | 100 | 100 | 58.4 | 23.9 |
Avg | 99 | 68.4 | 65.8 | 66.7 | 59.8 | 51.3 | 53.2 | 71.8 | 71.8 | 62.4 | 47.1 | 62.2 | 63.6 | 59.5 | 47.7 | 37.4 | 52.8 | 41.5 | 60.1 | |
SD | 6.4 | 32.4 | 309 | 26.5 | 29.8 | 20.6 | 19.2 | 25.1 | 23.6 | 26.7 | 34.8 | 22.9 | 33.7 | 32.2 | 31.7 | 32.9 | 34.5 | 38.5 | 31.5 |
Tasks | Task Success Rate | Task Completion Ratio | |||||
---|---|---|---|---|---|---|---|
% | SD | Task Type% (SD) | Main Activity% (SD) | N° of Uncompleted Tasks | N° of Completed Tasks | Completion Rate (%) | |
T1 | 99 | 6.4 | TT1. 99 (6.4) | MA1. 65 (28.6) | 0 | 39 | 100 |
T2 | 68.4 | 32.4 | TT2. 60.9 (26.4) | 3 | 36 | 92.3 | |
T3 | 65.8 | 309 | 1 | 38 | 97.4 | ||
T4 | 66.7 | 26.5 | 1 | 38 | 97.4 | ||
T5 | 59.8 | 29.8 | 3 | 36 | 92.3 | ||
T6 | 51.3 | 20.6 | 1 | 38 | 97.4 | ||
T7 | 53.2 | 19.2 | 1 | 38 | 97.4 | ||
T8 | 71.8 | 25.1 | TT3. 63 (26.6) | 0 | 39 | 100 | |
T9 | 71.8 | 23.6 | 0 | 39 | 100 | ||
T10 | 62.4 | 26.7 | 2 | 37 | 94.9 | ||
T11 | 47.1 | 34.8 | 7 | 32 | 82.1 | ||
T12 | 62.2 | 22.9 | 0 | 39 | 100 | ||
T13 | 63.6 | 33.7 | TT4. 50.4 (34) | MA2. 50.4 (34.9) | 4 | 35 | 89.7 |
T14 | 59.5 | 32.2 | 7 | 32 | 82.1 | ||
T15 | 47.7 | 31.7 | 7 | 32 | 82.1 | ||
T16 | 37.4 | 32.9 | 7 | 32 | 82.1 | ||
T17 | 52.8 | 34.5 | 6 | 33 | 84.1 | ||
T18 | 41.5 | 38.5 | 13 | 26 | 66.7 | ||
Total | 60.1 (31.5) | 63 | 639 | 90.1 |
No. | Question |
---|---|
1 | What do you think about the DBRestRho and SQLRho languages for creating web pages on the proposed RestRho? Do you think this could offer additional benefits compared to other RESTful API Server options? |
2 | What do you think would be the main advantages of being able to create web pages using the proposed RestRho? |
3 | What do you think would be the main advantages of being able to create web microservices using the proposed RestRho? |
4 | Imagine that you are developing a web project, and you need to use templates to speed up the process. How do you think Template Engines (e.g., Handlebars) could make this job easier for you? |
5 | Would you like to share any idea or additional suggestion about the functionalities proposed in the RestRho to create web pages? |
6 | What aspects do you consider negative of the RestRho? |
7 | What aspects do you consider positive of the RestRho? |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Chavarriaga, E.; Rojas, L.; Rodríguez, F.D.; Sorbello, K.; Jurado, F. RestRho: A JSON-Based Domain-Specific Language for Designing and Developing RESTful APIs to Validate RhoArchitecture. Future Internet 2025, 17, 346. https://doi.org/10.3390/fi17080346
Chavarriaga E, Rojas L, Rodríguez FD, Sorbello K, Jurado F. RestRho: A JSON-Based Domain-Specific Language for Designing and Developing RESTful APIs to Validate RhoArchitecture. Future Internet. 2025; 17(8):346. https://doi.org/10.3390/fi17080346
Chicago/Turabian StyleChavarriaga, Enrique, Luis Rojas, Francy D. Rodríguez, Kat Sorbello, and Francisco Jurado. 2025. "RestRho: A JSON-Based Domain-Specific Language for Designing and Developing RESTful APIs to Validate RhoArchitecture" Future Internet 17, no. 8: 346. https://doi.org/10.3390/fi17080346
APA StyleChavarriaga, E., Rojas, L., Rodríguez, F. D., Sorbello, K., & Jurado, F. (2025). RestRho: A JSON-Based Domain-Specific Language for Designing and Developing RESTful APIs to Validate RhoArchitecture. Future Internet, 17(8), 346. https://doi.org/10.3390/fi17080346