ContextMapper / context-map-generator

A graphical DDD Context Map Generator based on Graphviz
Apache License 2.0
21 stars 2 forks source link

Generate graphical Team Maps (according to our READMe and `Insurance-Example_Team-Map.cml`) #5

Closed joaoasrosa closed 3 years ago

joaoasrosa commented 4 years ago

Hi @stefan-ka ,

After the creation of the CLI example, I was playing around with the examples. I notice the example Insurance-Example_Team-Map.cml doesn't generate the expected result (including the teams).

example-teams_ContextMap

I'm wondering if it is an outdated version of the Context Mapper.

stefan-ka commented 4 years ago

Hi @joaoasrosa

Which output have you expected? The following one I created for the README:?

image

This is actually a manually created one... :) The Context Map generator does not support generating this yet. Is the graphic above what you expected or have I misunderstood the issue here?

joaoasrosa commented 4 years ago

Hi @stefan-ka ,

Indeed, that is my expectation. I wasn't aware that was generated manually, given the type directive of the context map.

Does it make sense?

stefan-ka commented 3 years ago

Hi @joaoasrosa,

sorry that I haven't answered to this one... Seems like I ignored the notification and forgot about it :( However, I do understand the requirement! We currently do not support it yet, but I will prioritize it in our planning.

Seems like there are other users who miss that feature :)

Best regards, Stefan

polmiro commented 3 years ago

Hi @stefan-ka,

One more here 😄 . I was a bit confused too since the diagram was being shown on the main page. Anyways, the tool looks really promising, I am excited to see where this is going!

Would you mind sharing the teams example generated graphviz dot file? I could use it to make some tweaks and show an example to my company based around the org structure in my team.

Thanks

stefan-ka commented 3 years ago

Hi @polmiro,

Thanks for the feedback! Seems like I should really implement this :) Unfortunately I have to work on something else right now, but it's on the list :)

Actually this one above (where I illustrate a mapping between teams and system Bounded Contexts) is not made with graphviz, sorry. Really made this by hand in Inkscape, before the Context Map generator even existed... (the svg is in the examples repository)

However, do you really need this kind of illustration to show the org structure around your team?

If you just understand your teams as the Bounded Contexts you could at least model something like the following:

ContextMap ExampleTeamMap {
  contains CustomersFrontofficeTeam, CustomersBackofficeTeam, ContractsTeam, ClaimsTeam

  /* relationships: */
  CustomersBackofficeTeam [U,S]->[D,C] CustomersFrontofficeTeam : CustomerTeamsRelationship

  CustomersBackofficeTeam [U]->[D] ContractsTeam

  ContractsTeam [P]<->[P] ClaimsTeam 
}

BoundedContext CustomersBackofficeTeam {
  type = TEAM
  domainVisionStatement = "This team is responsible for implementing the customers module in the back-office system."
}

BoundedContext CustomersFrontofficeTeam {
  type = TEAM
  domainVisionStatement = "This team is responsible for implementing the front-office application for the insurance customers."
}

BoundedContext ContractsTeam {
  type = TEAM
  domainVisionStatement = "This team is responsible for implementing the contract- and policy-management modules in the back-office system."
}

BoundedContext ClaimsTeam {
  type = TEAM
  domainVisionStatement = "This team is responsible for for implementing the claims module and providing customer risks information."
}

... with which you could generate a Context Map in @ContextMapper:

image

I know, not as fancy as the manually created above, but you could already illustrate the relationships and structure between your teams... :) Maybe this already helps; or maybe not :)

Thanks for getting in touch! The issue definitely got I higher priority on the list now...

Best regards, Stefan

polmiro commented 3 years ago

Hi Stefan,

Thanks for the detailed suggestions :).

I really liked the idea of combining the relationships in the team map with the relationships of the bounded contexts. I believe it can surface the daily challenges we run into in regards to socio-technical architecture and systems design. Most teams are responsible for more than one bounded context. When we take into account the dependencies between the teams and the dependencies between the bounded contexts you can imagine the different challenges that start show up in our day to day: endless priority discussions, blocked developments, duplicated solutions to similar problems, etc.

Curious, what was your initial intent when you draw that diagram that combines the teams and bounded contexts?

Thank you,

Pol

stefan-ka commented 3 years ago

Hi @polmiro,

Thanks for your explanation, I understand the requirement and fully agree with you.

That was actually exactly our idea, but we only realized it on the DSL-level yet :) With the Context Mapper DSL (CML) language you can already model that. Just an example:

ContextMap ExampleTeamMap {
  contains ContractsTeam, CustomersTeam
  contains Customers, Products, Contracts, Policies

  /* relationships between teams: */
  ContractsTeam -> CustomersTeam

  /* relationships between Bounded Contexts: */
  Customers -> Contracts

  Products -> Contracts

  Contracts -> Policies
}

BoundedContext CustomersTeam realizes Customers {
  type TEAM
}

BoundedContext ContractsTeam realizes Products, Contracts, Policies {
  type TEAM
}

BoundedContext Customers
BoundedContext Products
BoundedContext Contracts
BoundedContext Policies

With the realizes keyword you define on which Bounded Contexts a team works. And the Context Map can contain the relationships between Bounded Contexts and teams.

The thing is: the graphical representation above (from my readme) was originally created to illustrate this language abilities. I just wanted to show what you can do in CML in a graphical way. At that time the graphical Context Map generator didn't even exist... :)

So this is what is missing and what I still have to implement... And I understand the confusion now that we can generate graphics, people expect the corresponding output :)

Best regards, Stefan

polmiro commented 3 years ago

Thanks for the clarifications 👍

stefan-ka commented 3 years ago

Hey @joaoasrosa, @seb4stien, and @polmiro

We released Context Mapper v6.1.0 which can now generate the team maps you expected here...

https://contextmapper.org/news/2020/10/08/v6.1.0-released/

At least I hope that they somehow satisfy your requirements regarding this issue :)

You find an example CML model here. Using the Context Map generator produces something like this:

Team Map Example 1

... or like this: (you can parameterize whether you want to have it clustered or not)

Team Map Example 1

I close this issue for now. Let me know if you would like to have something differently. Feedback is always welcome!

Stefan

polmiro commented 3 years ago

Awesome, I will see if I can try it out some time soon 👏