Software Engineering & Evolution

Software engineering is the most technical part of technical computer science, focused on developing and applying systematic principles common to other kinds of engineering (like mechanical or electrical engineering) to development of software systems. In particular, it covers:

Software evolution, in particular, is a branch of software engineering focused on studying existing software and not necessarily creating new one. It covers, among other topics:

A typical research project in software engineering involves an implementation of a software system at least up to a fully functioning prototype, performing a feasibility study and/or a user study. A typical software evolution project covers development of a software system that analyses or transforms another software system. Both often use methodologies from empirical software engineering.


Related Modules

Available Project Proposals

If you are interested in the general topic of Software Engineering and Evolution, or if have your own project idea related to the topic, please contact us directly. Alternatively, you can also work on one of the following concrete project proposals:

  • How complex is you model? (van der Wal, Stoelinga)

    Supervisors: Djurre van der Wal, Mariëlle Stoelinga

    In SW engineering, code metrics tell something about the complexity of a program. Various metrics exist, ranging form simple ones like the number of lines of code, to advanced ones like cyclomatic complexity.

    Code metrics can tell something about the code quality. This is extremely important: good code is easy to maintain, refactor, and port. Bad code costs time and money and frustration.
    However, for software models, few of such metrics exist, even though such metrics could be equally useful for models as for code. Thus, the idea of this project is to come up with model metrics and evaluate if they make sense.

    Note that various models could be studied: finite state automata, UML models, fault trees, etc.
    Even though no company is involved, this is relevant for industry; we can involve companies later.


    • Study the state of the art
    • Define model metrics
    • Evaluate on relevant case studies or examples: do these metrics really tell us what we want?
  • Islands All the Way Down (Zaytsev)

    Next to numerous parsing techniques, there are also semiparsing techniques such as fuzzy parsing, island parsing, permissive parsing, etc. Most of them are defined only informally, in a form of a working tool and its documentation. Choose one of the semiparsing methods (e.g., lake symbols published in 2021, there's also a presentation on youtube), understanding the tool and/or the documentation behind it, (re)define the core algorithm more formally and/or rigorously, up to the point where you can make some provable statements ("method X is a weaker variant of method Y" or "method X works in linear time" or "false negatives of X kind are impossible", etc), make an implementation that aligns with this new definition. As a BSc project, there will be time for one case study to prototype.

    See the full project description. Get in touch with your potential future supervisor to discuss details!

  • One's Nightmare is Another's Demo (Zaytsev)

    Supervisor: Vadim Zaytsev

    BabyCobol is a language that was designed to be the “worst nightmare” of compiler writers, deliberately combining worst features of the oldest and the ugliest programming languages (YT). Unfortunately, some of the most important software — that of banks, insurance and booking companies, military — is written in such languages, and in order to tackle them successfully, you need to train on smaller prey. BabyCobol is used in one of the CS MSc courses at UT, Software Evolution, where students treat it as a challenge and work towards its full implementation over the two months. For them, the goal is to implement as many features as possible, no matter the cost.

    The goal of this project is different: take one language framework (good lists can be found on this website under "Technologies" tab or in this paper in §4), implement whatever you can in it and report on difficulties. Sounds easy, right? Well, perhaps all this talk about BabyCobol being a nightmare is just for show…

  • Weird Flex But Okay (Zaytsev)

    Supervisor: Vadim Zaytsev

    It is a known problem in software analytics that a single commit in a repository actually can cover multiple issues (e.g., fix a bug and rename some related methods). To untangle such commits into separate concerns, in 2020 several British scientists have developed a technique called Delta Name Flow Graph (𝛿-NFG for short) and implemented it in a tool called Flexeme, freely available as open source. Their tool is written in Python and works on C# code — and this project is about doing the same for another language like Java.

  • Modelling and Analysis of Agent-based Models (Hahn, Stoelinga)

    Supervisor: Ernst Moritz Hahn and Mariëlle Stoelinga

    Agent-based models are a dominant model in areas such as the social sciences. These models have led to a better understanding of numerous societal phenomena, including climate models [1], policy applications to land-use [2], stock market index [3], and people’s behaviour in self-driving cars [4].

    This project targets at establishing better links between the social sciences and computer science. In this context, we want to investigate the potential of using model checking for the faithful analysis of such models. Therefore, in this project you will

    • collect appropriate models from publications in the social sciences,
    • formalise those models in the language of a probabilistic model checker,
    • use the model checker to compute properties of these models,
    • interpret the values obtained and compare them to the ones found in the literature.

    [1] Regime shifts in coupled socio-environmental systems: Review of modelling challenges and approaches. Tatiana Filatova, J. Gary Polhill, Stijn van Ewijk. 2016, Environ. Model. Softw., Vol. 75, pp. 333-347.

    [2] Agent-based land-use models: a review of applications. Robin B. Matthews, Nigel G. Gilbert, Alan Roach, J. Gary Polhill & Nick M. Gotts. s.l. : Springer, 2007, Landscape Ecology volume, Vol. 22, pp. 1447–1459.

    [3] An Agent-Based Approach to Artificial Stock Market Modeling. Samuel Vanfossana, Cihan H. Daglia, Benjamin Kwasaa. s.l. : Elsevier, 2020, Procedia Computer Science, Vol. 168, pp. 161-169.

    [4] Human behaviour with automated driving systems: a quantitative framework for meaningful human control. Daniël D. Heikoop, Marjan Hagenzieker, Giulio Mecacci, Simeon Calvert, Filippo Santoni De Sio, Bart van Arem. 6, 2019, Theoretical Issues in Ergonomics Science, Vol. 20, pp. 711-730.