Analysis
Overview
The Sophie 2 Server Facade layer provides interface which is the same on both the server and the client sides for manipulating the resources on the server. The Facade layer accesses the Server core logic.
When an user connects to the server, he/she should be able to edit the books online. The facade must expose the core methods for manipulating resource changes to the client. It should use the functionality the Change Manager provides.
Task requirements
Since this revision is the first for this task, the most important is to think out and define the way for dealing with resource changes. The core and persistence methods for this are not implemented yet, so not much can be done. Here are some things than certainly need to be finished in this revision:
- Change manager will be developed, which will have client and server implementations. Design a Server-side change manager and change server.
- In the design section, describe the structure of the new Manager. Make a visual representation of the result (diagram).
- Implement the proto version of the Manager / Server.
- Make a facade interface for working with the newly created change manager.
Task result
Source code (interface), specification (diagrams).
Implementation idea
- Since SVN clients have something like the desired functionality, you could look at the ideas implemented there.
- There should be provided ways to update a resource, commit changes to the server, revert/redo a certain count of changes.
- It would be good if the client updates automatically a resource to the last version every time before a commit, and the user should be notified about possible conflicts.
- It is neccessary to design this task together with PRO_CHANGE_MANAGER_R0, since they probably will implement same interface.
Related
S2S_FACADE_RESOURCE_ACCESS_R0
S2S_DEPLOY_TECHNOLOGIES_R0
S2S_CORE_RESOURCES_R0
PRO_CHANGE_MANAGER_R0
How to demo
Show the classes for the change manager, show diagrams (if present), explain them to the team.
Design
(Describe your design here.)
Implementation
(Describe and link the implementation results here (from the wiki or the repository).)
Testing
(Place the testing results here.)
Comments
(Write comments for this or later revisions here.)