Search code examples
design-patternsarchitecturesoftware-design

Which architectural style and pattern(s) would be suitable for this system?


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:

  • What is the general class of such systems called in software design?
  • Which styles and patterns should be used in systems like this?

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.


Solution

  • The general architectural pattern for this type of problem is called "blackboard". You can read about it here