Thesis / lab / internship topics
If you're interested in any of these topics, please contact Máté Cserép (mcserep@inf.elte.hu), Anett Fekete (afekete@inf.elte.hu)
or Zoltán Porkoláb (gsd@inf.elte.hu) for further information. Any BSc or MSc student who qualifies for a task may join
the project for a university thesis or obligatory internship. It is also possible to join the project within the
Model-C++ Software Technology lab for MSc students.
The tasks are in descending order by priority in the project.
All tasks require fair knowledge in the following: C/C++, CMake, Git, database handling (ODB), compilers, design patterns.
Other technologies that a task requires are listed below the task.
Software metrics
MSc lab
Software metrics in software engineering are the standards for estimating the quality, progress, and health of software development activity. A software metric is a quantifiable or countable assessment of the qualities of the source code. Popular software metrics include coupling-based metrics, relational cohesion metrics, cyclomatic complexity metric (McCabe), bumpy road metric, etc. The current task consists of 2 major subtasks:
- On the backend, various software metrics should be calculated based on the static analysis of the source code. The implementation of these metrics are usually language-dependent, therefore the task should be carried out for each supported programming language in CodeCompass.
- On the frontend, various visualizations should be integrated for presenting the metrics.
Requirements: C++ / C# / Java (backend), TypeScript and React (frontend)
Find all possible values.yaml file sets in a Kubernetes project
MSc thesis / MSc lab
In Kubernetes orchestrated software systems, microservices are built and deployed using Helm charts. The compulsory files in a Helm chart include the chart, default values, and requirements. The file that contains the default, overridable variables of the system is the `values.yaml` file. The task is to work out an algorithm that uses static analysis to produce all possible sets of `values.yaml` files in a Kubernetes orchestrated project. The solution should prove that there are a finite number of file sets, independent of the number of microservices.
Requirements: basic Kubernetes and Helm
Integrated analysis of microservice-based software systems
MSc thesis / MSc lab
CodeCompass has a plugin that is capable of applying static analysis to Helm charts (Kubernetes configuration files). This plugin is inteded to automatically identify the microservices and Kubernetes objects in the system. The analysis is based on Helm and Kubernetes rules and it is applied to a certain subset of chart files. The task is to complement the plugin with dynamic analysis. CodeCompass is a fundamentally static analysis tool, hence the the task includes logging the deployed software, and analyzing the collected log files and messages. The task also includes comparing static and dynamic analysis results.
Requirements: basic Kubernetes and Helm
Online parsing support for CodeCompass users
BSc thesis / MSc lab
Currently, a request-based system works on codecompass.net, which makes it available for users to make requests on which projects to parse and showcase on the website. This project consists of implementing a system on the website which allows users to parse and deploy projects on their own. The website should be complemented with a page that receives the input from the user, and a Docker-based backend where parsing is executed automatically.
Requirements: C#/.NET, Docker, UNIX
Visual code comprehension support for existing language plugins (Java, Python)
BSc thesis / MSc lab
CodeCompass supports analyzing programming languages via plugins. There are currently multiple supported languages (C#, Python, and Java) which need to be complemented with web service functionalities that enrich code comprehension support, such as graph-based UML diagrams, automatically generated documentation, and other useful visualizations. The task is to implement such functionalities based on the existing parser for the listed languages in the service layer and frontend of the chosen language plugin.
Requirements: High level knowledge in the chosen language, Thrift, JavaScript (dojo.js)
JavaScript, PHP, Go language plugin
MSc thesis
CodeCompass supports analyzing programming languages via plugins.
Currently supported languages are C/C++, Python and Java.
The task is to integrate the parsers of further programming languages
(especially JavaScript, PHP, and Go) into CodeCompass as new plugins.
Each language plugin consists of 2 components:
- a parser, which shall be able to construct the abstract syntax tree (AST) of the analyzed programs, then retrieve and persist the semantically important information into a database; and
- a service, which shall be able to serve the requests of the web frontend based on said database.
Requirements: High level knowledge in the chosen language, Thrift, JavaScript (dojo.js)
CMake plugin
MSc thesis
CMake is a build system used by CodeCompass among plenty of other software projects.
The task consists of the specification and implementation of a special language plugin into CodeCompass which
executes the semantic analysis of the CMakeLists.txt
files in a given software project,
and displays textual, aggregated and visualized information based on them. The plugin structure shall be similar to
that of the language plugins.
Requirements: Thrift, JavaScript (dojo.js)