Domain model of Planning Poker

This section describes domain objects of Planning Poker. As rules of planning poker are very simple (although actually playing it is not), also the domain model is not complex. Basically there is a Scrum team with Scrum Master, developers and product owner, who just observe the game. Each estimator (Scrum Master or developer) has a set of cards, which he/she can pick exactly one. And in the end there is an result of estimation, that is actually all cards picked by each estimator.


Following classes exists in Planning Poker domain model:
  • ScrumTeam represents a group of people playing or observing planning poker game. It has unique name, so that members can join team by specifying team name. ScrumTeam provides methods Join and Disconnect to join or disconnect members of the team. Then it maintains state of the game.
  • Observer is a person, who can join ScrumTeam to observe game. It has unique name in the team. Most importantly it has queue of messages. Message is information about event in ScrumTeam, for example member joined team or estimation started. This way observer is informed about situation in team.
  • Member is person, who can actually play planning poker. Member is inherited from Observer, so it has all possibilities of observer. Additionally it has Estimation property that represents currently picked estimation of member.
  • ScrumMaster is person, who controls planning poker game. ScrumMaster is inherited from Member, so it has all possibilities of member. Additionally it has methods StartEstimation and CancelEstimation.
  • Estimation is object that represents planning poker card. It has Value property representing value of estimation.
  • EstimationResult is collection of selected estimations by all members. Actually it is Dictionary like class, where keys are Member objects and values are Estimation objects.


As mentioned earlier all team members (Observer, Member, ScrumMaster) receives messages to be informed about events in Scrum team. There are following types of messages:
  • MemberJoined - new member has joined the Scrum team. Message is of type MemberMessage.
  • MemberDisconnected - a member has left the Scrum team. Message is of type MemberMessage.
  • EstimationStarted - Scrum Master started new estimation and members can pick cards.
  • EstimationEnded - all members picked a card and estimation is finished. Estimates of all members can be revealed. Message is of type EstimationResultMessage.
  • EstimationCanceled - Scrum Master canceled estimation.
  • MemberEstimated - member has picked an estimate. This message informs, who already picked estimate and who has not. Message does not contain selected estimate as this cannot be revealed yet. Message is of type MemberMessage.

Messages are received by observers and Scrum team itself. Observer messages are processed by client JavaScript application. Scrum team messages are processed by hosting infrastructure. For example when MemberDisconnected message is received by team, it is checked, if the team contains any members. If not, then whole team is destroyed and team name is released.

Last edited Oct 17, 2012 at 2:53 PM by Duracellko, version 2


No comments yet.