Doing a research project with me – being a BSc MSc or even a PhD project, can be very fun and challenging, but there are some rules to the game, I want to discuss here… First of all, I’m going to challenge you. At every step, I want you to go further, beyond what you have done before. Not because I’m picky, but because I want to get the best out of you. And that only works if you’re motivated!

That brings me to the second point. As a supervisor, I always emphasize the holy trinity in educational projects: project idea, student and supervisor. A good project idea with a motivated supervisor, but the student is not intrinsicly motivated: it won’t work. A good project idea, a motivated student, but not in the main interest area of the supervisor: the project won’t work.

Thirdly, As a student do not just pick a project from a list: you need to work on it for quite some months, you need to be motivated! And, always approach a supervisor with your idea before you contact (or even worse, sign a contract) with some company, you need to “win” the interest of your supervisor: otherwise the project won’t work! So, pick an interesting problem – keep alist of interesting questions yourself! – find a supervisor that is interested, and maybe an organisation that wants to support your research. That’s the only way you will succeed your project!

In case you want to do your research project with me, here are some ideas that I find interesting. Shape it to your interest, to make it your project:

  • In Java there is a close connection with package and directory, in C# there is not such a connection. Somehow this seems to influence compliancy with the intended architecture. Is there evidence for this? [SAEROCON 2017]
  • Eye-tracking on models: how do people study a model to answer questions about it? Does this change over time?
  • Cluster analysis on weighted graphs: suppose we add weights on graphs, can we find better modules with high cohesion and low coupling
  • Automated story telling; can we generate a story out of a model to present and discuss with stakeholders for validation?
  • Do collaborative designers better explore the design space than individual designers?
  • Can we apply NLP techniques on source code to improve architecture documentation?
  • Cluster database tables based on their use in modules: do they coincode with the intended clustering? Are modules that are “independent” in the SA, dependent in the tables they use? How can we visualize and analyze this? What if we annotate these dependencies with CRUD?
  • Dependency modelling mostly focuses on the package structure of code. But, how can we relate this to functional architectures: if we draw an information flow between two modules, how is this flow resembled in dependencies?
  • In the work of Joeri Peters, we use genetic algorithms to map code units to architectural elements. His work shows that it is not sufficient to only look at dependencies. Other techniques are needed to get better mappings, e.g. NLP (nomenclature of classes), by adding facts (“I know this code unit belongs to that module”) or add modularity metrics (graph density etc.), and how this can be visualized (e.g. using GraphStream?)
  • Privacy by design for the new AVG. How do you this? What are the consequences, and how can you reason about privacy concern using your architecture?
  • How to capture decisions, rationale or different options in an architecture document, such that it does not really hamper architects in their work?
  • Extract ontologies from architectural documentation, so that we have links between the different elements and a conceptual model (e.g. created by the user story extraction tools built by Marcel Robeer)
  • Using FAMIX tools to generate an ontology from source code to couple with architectural models
  • Can we use ontologies / prolog to define and check conformance rules implemented in HUSACCT? Can we extend to languages like e.g. event-B?
  • Mining protocols from event sources
Research and project ideas

Leave a Reply

Your email address will not be published. Required fields are marked *