The theme of the thesis is the design of a group of network applications, which are capable transparently mirroring the services of an arbitrary resource to a client application. After the interpretation of the task we can define four different parts of the system. We define the requirements for these system elements, design their roles in the network and specify the communications between them.
To manage the access to the resource server is our responsibility as well. We should only allow authenticated users to send requests to the server. On the other hand we should check whether the user has authorization for the requested action, because we assume a resource which cannot handle multiple requests which change his state, although users can ask for the state of the resource even when they have no authorization to change it. To determine which user has the right to run modifications on the resource server we need a schedule.
To be able to generate this schedule we ask every user to grant their preferences over the possible timeslots. Based on these preferences we create matchings between users and timeslots. In the thesis we discuss two algorithms for generating schedules. One is based on the stable marriage problem, and the other one is approaching the task with the specific aim that after the matching is done, there should be no possible changes between users which would result every user being at least as satisfied as before the changes.
We create a proxy to authenticate and authorize the users. This proxy application starts a service with the same interface as the original resource did. Behind this service is a class which performs the supervision of the users. This class is created with reflection from the original interface and is compiled in runtime.
In addition, we review the design process, we discuss the decisions that came up and go over some possible ideas to develop our system.