Software architecture and its implementation has always been hard to keep in sync. Stakeholders define functionality that a software should deliver and programmers implement these in a formal (programming) language. There is an inherent mismatch between the languages that both parties speak. Currently, there is no out-of-the-box solution where stakeholders can define their requirements and developers get a formal specification/framework that is well understood.
Goals of this master project
In this master project, the students are expected to investigate the current state of code generation based on requirement documents, especially in the context of web applications (e.g., Angular Schematics). As part of an academia-industry collaboration, they will design and implement a solution that generates web application code for Angular projects based on requirement specifications (user stories, validations, and GUI guidelines) in text/PDF form. First, the requirements should be transformed into into an intermediate representation; second, this machine-readable specification (e.g., domain-specific language) is then parsed and client (Angular) and server (Java/Spring Boot) code is automatically generated.
The main tasks of the project are (depending on number of students, this list is adaptable):
Familiarize with code generation tools for web applications
Design an architecture that enables generating web applications based on requirements
Develop a domain-specific language that can express web applications in a machine-readable way
Developer code generators for client proxies and server stubs based on Angular and Spring Boot
Work closely with an academia-industry team from UZH and Adesso on a real-world problem
Write a report summarizing the results of the master project and present it to the assistant/professor
The project is aimed for 2-3 students with strong programming skils. This project is also available as a master thesis.