In the past decades, the IT technologies have gone through a significant development. That huge improvement allowed software developers creating bigger, and more complex software systems. However, as the size of the codebase increases, it becomes more and more difficult to maintain, and implementing new features in it.
In order to guarantee maintainability, testability, and modularity in the long term, reconsideration of the current codebase is a must, once in a while. That process is called refactoring.
In the course of refactoring, it is crucial to become familiar with the application, and the technologies used by it, to be able to apply useful changes, without changing the application’s behaviour. This can be achieved by reading documentations and code, doing manual tests, and communicating with former developers.
The main goal of my thesis, is refactoring a thick-client application. This application is part of a software architecture, which main feature is manual counting of traffic from recorded traffic videos. Just as the most component of the system, the thick-client is also based on the .NET framework, and uses Windows Presentation Foundation (WPF) to create the graphical user interface.
In the first part of my thesis, I revealed the problems of the application’s codebase, and created generic solutions for them. After that, I implemented these solutions, to improve the code quality. During that, I ran several manual tests, to make sure that the changes hadn’t created further bugs in the application. Finally, I showed the effects of the changes on the codebase. Besides examining the improvements of software quality metrics, I also gave some examples to show the positive effects of the refactoring.