Version 9 (modified by gogov, 16 years ago) (diff) |
---|
Analysis
Overview
Changes should be able to be decomposed into ProLib primitives.
The set of ProLib primitives should have the following characteristics:
- each primitive should be representable as a plain-text string of characters
- all the primitives together should describe some sort of a language which should correspond to all the functionality which the ProLib provides
- this way everything that happens inside Sophie 2 should be representable as some sort of a program written in this language
- this program could then be easily:
- transmitted to a server over the network
- viewable and understandable for debugging purposes
- converted to appropriate ProLib functions
- both primitives and changes form the type of information that will be stored in the ChangeManager
This task is to develop a set of primitives which fulfills the requirements above.
Task requirements
- Primitives should include the following operations:
- create
- each object the create primitive creates should have a unique id
- this primitive should be able to create a ProObject and return its id
- or create a Property for a given ProObject and return its id
- create a ProList and return its id
- destroy
- should destroy an object given its id
- set
- should be able to set a value to an object given its id
- create
- A few ProList operations should be available:
- add
- adds an object to a ProList given its id and position to be added to
- remove
- removes an object from a ProList given its id and position to be removed from
- the set operation should be adapted to accept a ProList, object and a position and should assign the given object to the given position in the given ProList
- add
- All ids used should be unique
- Synchronization problems with list operations should be considered
- An idea for solving those problems should be proposed
- Add more operations if needed
- Describe Changes decomposition to Change primitives, its purpose and provide a use-case
Task result
- Rough implementation
- Good description of the primitives
- Use-case for the primitives with diagrams
Implementation idea
- For the use case describe what happens when a Sophie client is connected to a Sophie server and how the ChangeManagers running on both sides work together
Related
PRO_CHANGE_COMMONS_R0
PRO_CHANGE_TRANSACTION_SAFETY_R0
PRO_CHANGE_COMPOSING_R0
PRO_CHANGE_MANAGER_R0
PRO_CHANGE_UNDO_MANAGER_R0
How to demo
- Show primitives set description
- Show and explain the use case