Answering questions about the runtime behavior of software is a prerequisite for maintaining and evolving software systems. Most of the time this is done by using the debugger, as it allows developers to interact with a running system and inspect its state. This makes the debugger an essential tool in any programming environment. However, standard generic debuggers are not well suited for debugging contextual problems.
Consider the process of debugging a web server (or RESTful services). When something fails looking at the request and the response objects can help. Also seeing more specific information like cookies, logged in users, etc. can help us get a better understanding of the situation. Last but not lest, most of the time we need to rapidly find these information and perhaps look at them at the same time.
Relying just on a generic debugger can make finding the right information difficult, as all we have is the stack. Furthermore, most of the times we can only look at one object at a time. These problems can be addressed with the help of a domain-specific debugger that can directly show the right information, at the right moment.
The goal of these project is to create a domain-specific debugger for Zinc HTTP Components, an open source Smalltalk framework to deal with HTTP. It models most concepts of HTTP and its related standards and offers both client and server functionality. It can be used to create web applications and web servers.
The new debugger should focus on providing a new user-interface that displays relevant contextual informations, like requests, responses, cookies, etc.
This project will give you the chance to learn about HTTP, web servers, web clients and about the construction of debuggers. The project will be done in Pharo, an open-source Smalltalk-inspired environment. You will see a language quite different from Java and C#. The new debugger will be implemented using the "Moldable Debugger", a framework for creating domain-specific debuggers.
You should apply for this project if you have good programming skills in any object-oriented language and a basic knowledge of HTTP. Knowing anything about Pharo or having advanced HTTP knowledge is not required.
Available as a bachelor or master project.
Contact: Andrei Chiș