Giter Site home page Giter Site logo

noguespi / bounded-context-canvas Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ddd-crew/bounded-context-canvas

0.0 1.0 0.0 320 KB

A structured approach to designing and documenting each of your bounded contexts

License: Creative Commons Attribution Share Alike 4.0 International

bounded-context-canvas's Introduction

The Bounded Context Canvas

The Bounded Context Canvas is a collaborative tool for designing and documenting the design of a single bounded context.

A bounded context is a sub-system in a software architecture aligned to a part of your domain.

The canvas guides you through the process of designing a bounded context by requiring you to consider and make choices about the key elements of its design, from naming to responsibilities, to its public interface and dependencies.

alt text

How to Use

There is no strict rule about the order in which you should fill out the canvas, however, in general it is recommended to start at the top left with the name, move down the left column and then start at the top of the right column.

You may not have all the information you need to complete certain sections of the canvas. In such a case, you'll need to use other modelling techniques to find the information you require. See DDD Toolbox for suggestions.

Section Definitions

Here is a short explanation of each section of the canvas.

Name

Naming is hard. Writing down the name of your context and gaining agreement as a team will frame how you design the context.

Description

A few sentences describing the why and what of the context in business language. No technical details here.

Writing down the description forces you to clearly articulate fuzzy thoughts and ensure everybody in the team is on the same page.

Strategic Classification

How important is this context to the success of your organisation:

  • core domain: a key strategic initiative
  • supporting domain: necessary but not a differentiator
  • generic: a common capability found in many domains

What role does the context play in your business model:

  • revenue generator: people pay directly for this
  • engagement creator: users like it but they don't pay for it
  • compliance enforcer: protects your business reputation and existence

How evolved is the concept (see Wardley Maps):

  • genesis: new unexplored domain
  • custom built: companies are building their own versions
  • product: off-the-shelf versions exist with differentiation
  • commodity: highly-standardised versions exist

Business Decisions

What are the key business rules and policies within this context?

Ubiquitous Language

What are the key domain terms that exist within this context, and what do they mean?

Model Traits

How can you characterise the behaviour of this bounded context? Does it receive high volumes of data and crunch them into insights - an analysis context. Or does it enforce a workflow - an execution context.

Think about the best way to describe your context's behaviour, but do not specify architectural patterns here.

Check out Model Traits worksheet or Alberto Brandolini's ideas for inspiration.

Messages Consumed and Produced

What is the public interface or the contract of your bounded context? Which messages come in and which does it send out?

Dependencies and Relationships

To create loosely coupled systems it's essential to be wary of dependencies. In this section you should write the name of each dependency and a short explanation of why the dependency exists.

Additional Resources

Contributors

Thank you to the following individuals who have all contributed to the Bounded Context Canvas:

A significant contribution to the Bounded Context Canvas was the inspiration of the Business Model Canvas.

Contributions and Feedback

The Bounded Context Canvas is freely available for you to use. In addition, your feedback and ideas are welcome to improve the canvas or to create new versions.

Feel free to also send us a pull request with your examples.

CC BY 4.0

This work is licensed under a Creative Commons Attribution 4.0 International License.

CC BY 4.0

bounded-context-canvas's People

Contributors

cakper avatar ntcoding avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.