Last modified 14 years ago Last modified on 01/28/09 18:49:27

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

Error: Macro TicketQuery(summary=PRO_CHANGE_REVISION_ACCESS_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



The goal of this task is to develop a scheme on how to implement a history of changes resulting from the work of the user with Sophie 2 and provide access to any given point in time in this history.
This way a snapshot of the state of Sophie 2 at a given time point could be obtained for various purposes such as:

  • debugging
  • reverting changes
  • feeding the change manager with needed info
  • etc.

Task requirements

  • Propose ideas for the structure of the history of changes. It should be flexible enough, so the queries as the following could be answered:
    • get a snapshot of the state of all properties at a given time point
    • get the value of a given property at a given time point
    • get a history of all the values of a given property at a given time point
    • get a list of all Changes that affect a given property before and after a given time point
    • get a list of properties which a Change affects
  • Since these operations might turn out quite slow, performance should be taken into consideration as early as possible:
    • provide rough ideas on how these operations could be implemented algorithmically efficient
    • also provide ideas for suitable data structures which could improve the performance
  • Provide rough implementation of the above ideas, if possible
  • Add unit test for the implementation, if possible

Task result

  • Design ideas and diagrams of the proposed solutions to the given problems in this page
  • New code and unit tests, if any

Implementation idea

  • Consider using some data structure which provides logarithmic time for some of the queries
  • Try providing ideas for data structures and algorithms which perform at least some of the queries efficiently. Different approaches might be possibly combined to yield good results.


How to demo

  • Show this page and explain the problems and proposed solutions
  • Run the unit tests, if any


(Describe your design here.)


(Describe and link the implementation results here (from the wiki or the repository).)


(Place the testing results here.)


(Write comments for this or later revisions here.)