Paul Schmiedmayer
E-Mail: paul.schmiedmayer (at) tum.de Office hours: Upon request. Contact me via e-mail to make an appointment. Postal address: |
||
Projects
- Apodini - A declarative, composable framework to build evolvable web services using Swift and Kotlin [Schmiedmayer2020] (Server-Side Swift Practical Course, GitHub)
- Ferienakademie 2021 - Collaborative Drone Interactions in Decentralized Resource Networks (Ferienakademie 2021)
- JASS 2021 - Continuous software engineering in smart city Internet of Things (IoT) environments [Schmiedmayer2022] (JASS 2021)
- TrainLens - Tracks the fitness level of athletes and provides an overview of athletes' readiness levels to reduce the risk of injuries, BBU'01 (iPraktikum 2021)
- FlurFunk - An easier transition from asynchronous to synchronous communication for remote teams, Equinux (iPraktikum 2020)
- LocalHero - Connect a Community of Helpers and People in Need, iHaus & German Red Cross (iPraktikum 2019/20)
- Autonomous Drones for Sustainability - Autonomous Drone-Based Water Quality Management System (Ferienakademie 2019)
- Apeer iOS App - Free and Open Platform for your Image Processing Needs, Zeiss (iPraktikum 2019, Website)
- Zeiss PiWeb App for Android - Visualize 3D Models and Measurements Across Multiple Devices Using Augmented Reality, Zeiss (JASS 2019)
- Intelligent Workplace - Controlling Smart Devices using Augmented Reality, Carnegie Mellon University (iPraktikum 2018/19)
- Zeiss PiWeb App - Tool for Metrologists to Visualize 3D Models and Measurements Using Augmented Reality, Zeiss (iPraktikum 2018, AppStore)
- JASS 2018 - Multimodal Pickup and Delivery System Using Autonomous Cars and Autonomous Drones, JetBrains (JASS 2018)
- BSB Reservation - Tool to reserve and administer workplaces in the Bavarian State Library, Bokowsky + Laymann (iPraktikum 2017/18, AppStore)
- Scentdipity - Create custom fragrances using the Scentdipity machine and the corresponding app, B/S/H/ (iPraktikum 2016/17)
- SWOOP - Stroke Workflow Optimization application to reduce the time needed for the stroke workflow in the KRI hospital, University Hospital rechts der Isar (iPraktikum 2016)
Teaching
Publications
Schmiedmayer, P. (2022, February). Designing Evolvable Web Services [Submitted, Doctoral dissertation]. Technical University of Munich.
Research Interests
- Applied software engineering: applying software engineering research and best practices to innovative and interdisciplinary application areas
- Domain-specific languages, including declarative and composable programming
- Client and service-side networking patterns, architectures, protocols, orchestration, deployment, and evolvability
- Swift programming language, including server-side Swift development
Thesis
Reach out to me via email if you are interested in an open thesis or related work to the theses that are currently in progress or finished. Feel free to bring your ideas if they fit into my research interests. Check out this article about approaching a thesis supervisor.
Your email should contain information about your previous experience in your area of interest and why you are motivated to work on the proposed challenge. Try to answer the following questions: What is your programming experience? Have you already done some interesting projects, e.g., open-source on GitHub, or did you previously publish an App? Why do you think the topic is scientifically interesting?
Open
In Progress
Master's Thesis
|
Mobile-Based Mental Health Prevention |
Advisor
|
|
Ninah Nyaranga Wambugu | |
Start Date
|
February 15, 2022
|
Abstract | Internet- and mobile-based interventions (IMIs) can potentially overcome the limitations of traditional psychological prevention programs, hence maximizing the impact of psychological preventive interventions. Producing psychology-based self-help content that addresses mental health is a challenge involving delivering the content to end-users and offering them an engaging experience. The goal of this thesis is to design and implement a mental health application that is built upon a scalable and extensible psychological content delivery process. To validate the design and implementation, we will create an instantiation of a mental health app in collaboration with a startup in the field of mental health prevention. |
Master's Thesis
|
An Architecture for Sustainability in Cloud-Native Applications |
Advisor
|
|
Valentin Bootz | |
Start Date
|
December 15, 2021
|
Abstract | Cloud providers schedule tasks and distribute resources in data centers resulting in ever-growing global energy demand. Cloud-native application sustainability depends on the cloud providers’ infrastructure, which needs insights to manage applications sustainably - yet information is not available to all stakeholders. Sustainable application design proposes steps to engage organizations in the sustainability of cloud-native applications. The master’s thesis enables web service developers to communicate web service insights in sustainable application models, integrates sustainability development frameworks in web services to annotate and disclose sustainability-related information in web services, and provides an interface that enables cloud providers to leverage the information. We identify use cases to evaluate sustainable application design in the context of cloud-native applications and validate the artifacts’ design. |
Master's Thesis
|
Declarative Development of Interface-Type-Agnostic Web Services |
Advisor
|
|
Lukas Kollmer | |
Start Date
|
October 15, 2021
|
Abstract |
The thesis aims to identify and address the challenges faced when using domain-specific languages (DSLs) to declaratively express the interface of a web service based on the service’s structure and the semantics of its implementation. Apodini proposes an internal DSL, with the intention of using a web service’s structure in combination with run-time type introspection to automatically generate, by the means of so-called interface exporters, client-facing interfaces for a variety of different protocols, such as REST, HTTP, WebSockets, or others. The approach of deriving service interfaces dynamically from an implementation presents an interface exporter developer with several new challenges, such as properly mapping the semantics of the service as expressed in Swift to the semantics of the respective protocols. We will conduct an expansive evaluation by adding two new interface exporters to Apodini: gRPC and GraphQL. These two interface exporters will serve as a validation of our general work on Apodini, and will be used to determine the quality, accuracy, and reliability of the API mappings generated by Apodini. |
Guided Research
|
Change Impact Analysis of Web API Evolution |
Advisor
|
|
Andreas Bauer | |
Start Date
|
October 15, 2021
|
Abstract | Web services need to continuously adapt to an ever-changing environment. Therefore, over time, web services evolve. A particular part of web service evolution is Web API evolution, concerning any evolutionary steps happening on the level of a particular API type. Web APIs can be classified into three types: remote procedure calls, message-based and resource-based. In the proposed guided research, we want to investigate differences in the propagation of changes in the individual API types. We will instantiate our approach using Apodini, a domain-specific language to write web services in an abstract and generalized manner that is independent of the concrete instantiation of an API type. Our findings are integrated into ApodiniMigrator, a tool-suite for automated, machine-readable migration guides. The system is validated using replications of common web APIs and applying real-world evolutionary steps from the past to assess the system’s capabilities. |
Finished
Bachelor's Thesis
|
Reliability and Observability of Declarative Web Services |
Advisor
|
|
Moritz Sternemann | |
Date
|
October 15, 2021 - February 15, 2022
|
Abstract | To guarantee the reliability and robustness of modern web services, enabling engineers to detect, diagnose, and resolve unpredicted behavior efficiently is crucial. Tracing can provide visibility into characteristics of a request that help to understand the flow through and asynchrony in a distributed system. This thesis aims to extend the domain-specific language of Apodini to support industry-standard techniques of distributed tracing. The frameworks existing error handling system will be improved using the data gathered through tracing. Ultimately, the applicability of our research is validated by comparing tracing functionality in Apodini to an open-source web service. The thesis contributed to the Apodini open source project: https://github.com/Apodini/Apodini. |
Master's Thesis
|
Automatic Deployment and Dynamic Reconfiguration of Web Services in Heterogeneous IoT Environments
|
Advisor
|
|
Date
|
May 15, 2021 - November 15, 2021
|
Abstract |
The operation of large amounts of data generated by Internet of Things (IoT) devices is challenging for classic centralized IoT systems. Fog Computing solves this issue by shifting the computing responsibility from a centralized instance to fog devices, thus enables large heterogenous environments with different device types. Moving away from a central approach also allows more dynamic environments with devices entering and leaving the network arbitrarily. In this thesis we present an approach that enables the simultaneous and automatic deployment of a webservice to an heterogeneous IoT environment. Our approach assumes certain IoT typical constraints, such as hardware restrictions on devices, limited access due to private and secure networks, heterogenity of devices and nodes as well as dynamic topology changes. To handle the latter, our approach is able to register changes in the network at runtime and reflect them in the components and services. To showcase our approach, we will present an example using a web service created with the Apodini framework that we deploy in selected scenarios. You can find the open source implementation at https://github.com/Apodini/ApodiniIoTDeploymentProvider. |
Bachelor's Thesis
|
Observability of Distributed Web Services |
Advisor
|
|
Date
|
May 15, 2021 - September 15, 2021
|
Abstract |
A fog computing architecture represents a solution for the challenges introduced by modern distributed systems containing countless heterogeneous and interconnected components. Monitoring these fog computing architectures is typically achieved by central cloud monitoring platforms, which result in increased network traffic and static responsibilities of maintenance teams. Decentralized Observability addresses the challenges above by transferring the responsibility of monitoring a system from a central cloud monitoring platform to each of the individual components. In the course of this thesis, we will try to integrate this approach into the declarative component-based Apodini framework and use its Domain-Specific Language (DSL) to automate most of the resulting observability overhead. The thesis contributed to the Apodini open source project: https://github.com/Apodini/Apodini. |
Master's Thesis
|
Automated Generation of Machine-Readable Migration Guides for Web Services
|
Advisor
|
|
Date
|
February 15, 2021 - August 15, 2021
|
Abstract |
Web services offer reusable, well-designed and pretested component solutions for their consumers. Whilst striving for stability and reliability, web services experience numerous evolutive phases due to changes in application domain or changed requirements, and often cause breaking compatibility. This thesis proposes automated generation of migration guides, that encapsulate a generic description on how to migrate breaking changes. Our approach focuses on generating migration guides for web services built on Apodini, a novel internal Domain Specific Language that describes web services declaratively. The applicability of our research is demonstrated on industry projects from telecommunication branch and healthcare industry in cooperation with Mobile Software AG. You can find the open source implementation at https://github.com/Apodini/ApodiniMigrator. |
Bachelor's Thesis
|
Improving Runtime Performance and Maintainability of the Apodini Server-Side Swift Framework
|
Advisor
|
|
Date
|
April 15, 2021 - August 15, 2021
|
Abstract |
Modern server-side development faces a multitude of challenges. While many of those challenges are solved well by most modern web-frameworks, the following are still subject of active research: Web services often have to use a variety of middlewares to serve a heterogenous set of clients. Moreover, agile development methodologies lead to constant change in regards to both, application logic and middleware. Apodini is a prototypic server-side framework that aims to solve these challenges by providing a declarative and composable syntax for defining a web-service, establishing a full abstraction between the implemented application logic, the web-service’s structure and the middleware in use. This thesis explores different strategies to improve the Apodini framework in terms of maintainability and runtime-performance. The thesis contributed to the Apodini open source project: https://github.com/Apodini/Apodini. |
Bachelor's Thesis
|
Requirements Traceability for Web Services
|
Advisor
|
|
Date
|
April 15, 2021 - August 15, 2021
|
Abstract |
When designing web services, requirements traceability is a challenging task. In the software engineering process, functional and non-functional requirements are defined in the Requirements Elicitation. Those requirements are structured and formalized in the Analysis, System Design and Object Design activities before the developed models are mapped to code. Therefore, tracing requirements through the individual design artifacts to the actual implementation is a challenge for software engineers. Requirements Traceability is essential as it enables us to verify our implementation against the requirements expected from the system. Furthermore, it improves the ability to deal with the change of requirements, yielding an improved iteration speed of the software engineering process. The thesis explores how a tighter coupling between the implementation and software engineering activities can improve traceability and thus verifiability and changeability of requirements. The research is done in the context of requirements typically encountered with web services, including non-functional requirements like security, performance and availability. The Apodini framework is used for the instantiation and validation of requirements. The thesis contributed to the Apodini open source project: https://github.com/Apodini/Apodini. |
Guided Research
|
Building Protocol-Agnostic Server-Side Applications Using Domain-Specific Languages
|
Advisor
|
|
Date
|
November 2, 2020 - April 16, 2021
|
Abstract | When choosing a protocol, server-side developers have many options available, ranging from building a JSON based API, to a RESTful Service, to a GraphQL API or using gRPC. The chosen protoccol will, in practice, shape the structure of a server’s implementation. Schmiedmayer proposes Apodini [Sch20], an internal domain-specific language that focuses on describing a server’s implementation declaratively and independently from the protocol. In this guided research we want to explore the feasibility and nuances of the Apodini internal domain-specific for different programming languages such as Swift and Kotlin. |
Bachelor's Thesis
|
Automated and User-Configurable Deployment of Web Services
|
Advisor
|
|
Date
|
December 15, 2020 - April 15, 2021
|
Abstract |
We propose the development of a toolkit for automated and user-configurable distributed deployment of a Swift program implementing a web service. The web service is defined as a composition of individual services, via the Apodini internal domain-specific language (DSL) [Sch20]. Our toolkit analyses the web service’s structure as expressed via the DSL, taking into account additional nonfunctional requirements. From this information it determines the deployment strategy which best satisfies these constraints. The resulting distributed system can be deployed to arbitrary target platforms, ranging from conventional web servers to FaaS providers such as AWS Lambda. |
Master's Thesis
|
A Process Model for Client Migration after Service Changes in Distributed Systems
|
Advisor
|
|
Date
|
July 15, 2020 - January 15, 2021
|
Abstract | Modern web-based APIs offer a broad variety of services for numerous distributed client applications. As with any other software product, Web APIs must evolve to remain functional and successful. Ideally, an API contract creates a consistent, shared understanding of its service between provider and consumer. The provider-side evolution of an API often introduces changes to this contract that consumers need to manually adapt to. Thus far, there is no automated process for migrating between different Web API versions. In this thesis, we propose a tool-supported workflow using a novel machine-readable migration guide. We evaluate our findings by implementing an automated migration tool for OpenAPI specifications. You can find the open source implementation at https://github.com/Apodini/Pallidor. |
Bachelor's Thesis
|
Event Based Actions in Domain Specific Languages
|
Advisor
|
|
Date
|
April 15, 2020 - September 15, 2020
|
Abstract | This thesis aims to focus on incorporating event based actions into a mainly static Domain Specific Language (DSL). When looking at a concrete DSL that facilitates the implementa- tion of RESTful APIs event based behaviour could include two-way communication and the ability to notify clients about changes from the server. The goal is to extend the work on Corvus, a declarative framework for server side Swift. By adding the functionality for WebSockets and push notifications event based aspects can be implemented to facilitate RESTful APIs. You can find the open source implementation at https://github.com/Apodini/CorvusWS and https://github.com/Apodini/corvus-notifications. |
Bachelor's Thesis
|
Semi-Automated System Decomposition Using Static and Dynamic Code Analysis
|
Advisor
|
|
Date
|
April 15, 2020 - August 15, 2020
|
Abstract | We want to propose an approach for semi-automated management of system decomposition utilizing static and dynamic code analysis. Semi-automated management of system decomposition describes the process of decomposing a software system into a fine grained service oriented architecture through a suite of tools that are managed by a software architect. Our decomposition management software supports this transition by continously analyzing the current state of the decomposition process with an extendable tool suite. With the help of user input, the business capabilities of the system under study are determined and associated with source code to create firm module boundaries. For this our software utilises static and dynamic code analysis. In this thesis we focus on the decomposition of monolithic software systems based on server-side swift, but the approach can be used for other languages and system architectures as well. You can find the open source implementation at https://github.com/Apodini/Bubo. |
Bachelor's Thesis
|
APIKit - A Declarative Framework for Defining Web Interfaces in Swift
|
Advisor
|
|
Date
|
March 15, 2020 - July 15, 2020
|
Abstract | This thesis is exploring the creation of a domain-specific language (DSLs) for describing interfaces of web services. We investigate the possibility of a Swift language based definition language that allows Swift developers defining their web service interfaces by using Swift syntax and concepts independent of the concrete communication protocol. Therefore we compare different communication approaches and investigate their similarities and differences. As additional goal we want to explore possibilities that allow developers the usage of ORM functionalities (e.g. database connection and access, model definition, relations) of traditional Swift powered frameworks. You can find the open source implementation at https://github.com/Apodini/APIKit. |
Master's Thesis
|
Swift Based Web Development with WebAssembly
|
Advisor
|
|
Date
|
December 15, 2019 - June 15, 2020
|
Abstract | WebAssembly is a new abstract instruction set primarily designed to target web browsers from higher level programming languages. To enable full stack web development in Swift, the Swift compiler should support targeting WebAssembly. This thesis will try to extend the Swift compiler to support WebAssembly and to compile the Swift Standard Library. Furthermore, the interaction with a web browser’s JavaScript API and the Document Object Model should be possible from Swift. Finally, the results will be evaluated by building a web application in Swift, including the client side code that runs in the browser. You can find the open source implementation at https://github.com/Apodini/webidl2swift. |
Master's Thesis
|
A Framework to Build and Maintain GraphQL Client-Server Architectures in Swift
|
Advisor
|
|
Date
|
November 15, 2019 - May 15, 2020
|
Abstract | This thesis attempts to address the issue of synchronizing the networking stack of client-server codebases by providing a full solution to write a client-server architecture using GraphQL in Swift. We want to provide a clean and readable declarative API for creating a GraphQL Server and a similar API for the client, as well as tools to ensure that these codebases continue being in sync. We plan to achieve the synchronization by autogenerating client code from the GraphQL schema, and updating the client automatically when the server changes. You can find the open source implementation at https://github.com/nerdsupremacist/GraphZahl and https://github.com/nerdsupremacist/Graphaello |
Master's Thesis
|
LI.CO.RE - A Lint Code Review Bot for Practical Programming Courses
|
Advisor
|
|
Date
|
November 15, 2019 - May 15, 2020
|
Abstract | This thesis introduces Li.Co.Re, a new and improved version of a Swift lint bot for automated reviews for pull requests in large scale student courses. During the thesis, we will collect user feedback, recent research, and experiences from the prototype to build a robust and extended application that should be useable across various distributed version control and source code management services. You can find the open source implementation at https://github.com/Apodini/licore |
Master's Thesis
|
WebUI - A Declarative User Interface Framework for Web Apps in Swift
|
Advisor
|
|
Date
|
November 15, 2019 - May 15, 2020
|
Abstract | This thesis details the development of a web-based user interface framework for the Swift programming language. The proposed framework can be used to deploy a Swift application to a server that serves a lean JavaScript application. The proposed framework should let a developer define a user interface using the SwiftUI syntax. The server should use a WebSocket based connection to update the server on user input and update the website based on server-side changes. You can find the open source implementation at https://github.com/Apodini/SwiftWeb |
Guided Research
|
Decentralized Observability Using Distributed User Interface Generation |
Advisor
|
|
Date
|
April 20, 2020 - November 6, 2020
|
Abstract | Ever-increasing complexity in micro-service architectures requires scaling and deployment of services according to current usage information and resource availability. In order to ensure the availability of a distributed server application, it is crucial to provide a maintainer of a micro-service application wide-reaching monitoring capabilities custom fit to its specific use case. We propose to develop a framework to provide tracing information about a server application and visualizing it on a client device using dynamic UI generation. |
Bachelor's Thesis
|
Grebe - A gRPC Swift Framework
|
Advisor
|
|
Date
|
December 1, 2019 - April 19, 2020
|
Abstract | The goal of this thesis is to develop a tool that simplifies the client-side developing workflow when using a gRPC based networking stack. We propose encapsulating networking logic in a separate Swift package and extending it for the use with commonly used frameworks such as Combine. We plan to build this abstraction layer above the SwiftNIO based grpc-swift framework. We plan to combine this abstraction layer with a CI-based code generation workflow to simplify the development process when syncing client and server codebases. You can find the open source implementation at https://github.com/Apodini/Grebe |
Bachelor's Thesis
|
Optimization of Deployment Strategies Using Machine Learning
|
Advisor
|
|
Date
|
December 15, 2019 - April 15, 2020
|
Abstract | The thesis investigates the improvement of current deployment strategies. We propose a mechanism that learns the behavior of the system within a Kubernetes Cluster by monitoring the system as well as user requests. We propose an intelligent deployment mechanism that can predict the best possible deployment strategy to optimize resource usage. We plan to visualize the relationships within the services of the cluster and the predictions made by the tool. You can find the open source implementation of the workflow and supporting tools at https://github.com/Apodini/pythia |
Bachelor's Thesis
|
A Server-Side Swift Middleware and Code Generator for gRPC Services in Vapor Applications
|
Advisor
|
|
Date
|
November 15, 2019 - March 15, 2020
|
Abstract | This thesis explores new ways to easily integrate gRPC in server-side Swift applications using code generation and extending existing frameworks. The goal of the thesis is to offer a simple workflow to connect a gRPC based networking stack to higher-level server-side Swift frameworks like Vapor and ORMs like Fluent. Our solution is a framework offering a gRPC middleware and code generator that can be used with the Vapor server stack. You can find the middleware on GitHub: https://github.com/Apodini/grpc-vapor |
Bachelor's Thesis
|
ELBRUS - Extension to Limit Boilerplate Code in Reactive UI-Centered Swift Development
|
Advisor
|
|
Date
|
November 15, 2019 - March 15, 2020
|
Abstract | This thesis focuses on the simplification of connecting application logic to a RESTful server endpoint. We want to explore the advantages of a declarative approach when designing a networking layer by taking advantage of modern Swift features like function builders and property wrappers. We want to provide a lightweight, expressive syntax for the communication with a RESTful service that can be used to connect the service with the user interface of an application. You can find ELBRUS on GitHub: https://github.com/Apodini/ELBRUS |
Bachelor's Thesis
|
Corvus - A Declarative Server-Side Swift Framework
|
Advisor
|
|
Date
|
October 15, 2019 - February 15, 2020
|
Abstract | Corvus is a declarative server-side Swift framework that allows you to generate a RESTful service. The framework supports authentication and database connection to a wide variety of database types. Corvus leverages the functionality of server-side Swift frameworks like Vapor, Fluent, and SwiftNIO. You can find Corvus on GitHub: https://github.com/Apodini/corvus |