I am working on a collaborative or distributed editing problem, where every bit of the task has an owner, and others may offer changes which then should be propagated (for example, editing a map).
Any person is allowed to see the whole map. Every person is considered to be the owner of a certain piece of map they created. If person A created a piece of map MA, and person B wants to change that piece, they can edit it locally and then offer their changes to A. If A accepts the changes, the new MA is distributed to the whole team. B is not allowed to submit changes to MA themselves by definition.
My questions are:
I believe that there are strict rules in OO analysis, and design and strict criteria to measure design correctness. Hence, I don't want to make up some random "design" with zero knowledge, but rather to know how to approach things correctly.
The general architectural pattern for this type of problem is called "blackboard". You can read about it here