wiki:PRO_CHANGE_PRIMITIVES_R0

Version 10 (modified by gogov, 16 years ago) (diff)

--

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=PRO_CHANGE_PRIMITIVES_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

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
  • Changes form the type of information that will be stored in the Histories responsible for logging Changes in ResourseSpaces

This task is to develop a set of primitives which fulfils 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
  • 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
  • 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

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

Design

Implementation

Testing

Comments