Researcher in the Spotlight: Kousar Aslam

Necessarily, we first need to have a complete understanding of the software before we can maintain it

Hello, I’m Kousar Aslam and I’m doing my PhD research in the Software Engineering & Technology (SET) research group within the Department of Mathematics and Computer Science. My research topic is “Software evolution and model-based re-engineering.” I am conducting this research in collaboration with ASML. My supervisor is Professor Mark van den Brand.

In my research, I work on applying dynamic analysis techniques, active learning in particular, to infer the behavioral models of existing software components. These behavioral models are then used to infer the interface protocols for the components. The learned models can be used for further analysis and code generation.

Using two techniques

The existing techniques have their own limitations and strengths. The internal behavior of a component can be learned through active learning, but it loses the context of the environment, as we cut off the system that has to be learned from its environment. Passive learning, in contrast, provides information about how the system interacts with the environment, but the comprehensiveness of the result will depend on the completeness of the logs. Therefore, we propose using the techniques in combination. Scalability is one of the challenges when techniques are to be applied on a large scale.

Maintenance of software

My research is very interesting to high-tech companies that have huge software infrastructures and are concerned to ensure better maintenance of that software. Usually, the software documentation is not regularly updated and the initial developers involved in a project may have already left, making software maintenance hard. Necessarily, we first need to have a complete understanding of the software before we can maintain it, because the software components are interconnected and incorrect changes can have a drastic effect on the whole system.

We have developed a methodology to infer behavioral models and interface protocols for existing software components. So far, we have applied this on known components, i.e., the components which already have reference models. In this way, we have been able to analyze and compare our results. We have also worked on refining active learning with passive learning results and system logs.

At present, software is everywhere. We carry smartphones and devices with us everywhere. Better maintenance of the software will contribute to a good quality software.