Client-server architecture is a message-based and modular infrastructure that became common by the end of the 1980s. Compared to the previous, centralised, mainframe, time-sharing systems, it increases flexibility, cooperation, upgradability and scalability. The server makes services and resources available for the clients, while the clients can send requests to the server-side. It is an established architecture for multiuser systems, enabling communication among computers.
Automated and computer-based test writing could save a huge amount of time and money in schools. The client-server architecture was a great help to my solution, since this is a multiuser-system and several computers are communicating with each other simultaneously. Moreover, for such a system scalability is another important aspect, which is one of the advantages of the client-server architecture.
In my thesis, I developed an application using .NET framework, which makes test-writing at schools simpler and faster. My application consists of a server and two types of thick client: one for the teachers and one for the students. The clients communicate with the server via HTTP requests.
Besides the functional requirements, I focused on meeting the non-functional requirements as well. It is important that we create a software which is reliable, maintainable, easy to upgrade and testable in production environment. I ensured these properties with the help of different design patterns during the development.
The architecture of my application is easy to upgrade, certain implementations can be changed. The reliability of the software is ensured by the unit-testable modules, which I illustrated with test results.