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 intrinsically 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:
Software Architecture (general)
- How to capture decisions, rationale or different options in an architecture document, such that it does not really hamper architects in their work?
- Can we use Rascal, Ontologies, Prolog, … to define and check architectural conformance? Can we extend this to modeling languages such as event-B?
Architecture Mining (and Process Mining)
- Can we discover interactions between components from software execution data?
- What is the effect of sampling in process mining?
- Cluster analysis on weighted graphs: suppose we add weights on graphs, can we find better modules with high cohesion and low coupling?
- Cluster database tables based on their use in modules: do they coincide 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?
- 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?)
- ArchitectureCity: what are new ways to visualize runtime behavior of software systems?
Learning to model
- Eye-tracking on models: how do people study a model to answer questions about it? Does this change over time?
- 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?