Event storming

Last updated
An example process from an event storming Event Storming example process.jpg
An example process from an event storming

Event storming is a workshop-based method to quickly find out what is happening in the domain of a software program. [1] [2] Compared to other methods it is extremely lightweight and intentionally requires no support by a computer. The result is expressed in sticky notes on a wide wall.

Contents

The business process is "stormed out" as a series of domain events which are denoted as orange stickies. It was invented by Alberto Brandolini in the context of domain-driven design (DDD). Event storming can be used as a means for business process modeling and requirements engineering. The idea is to bring together software developers and domain experts and learn from each other. [3] The name was chosen to show that the focus should be on the domain events and the method works similar to brainstorming or agile modeling's model storming.

Requirements

It is important for an event storming workshop to have the right people present. This includes people who know the questions to ask (typically developers) and those who know the answers (domain experts, product owners). [1]

The modeling will be placed on a wide wall with a roll of paper rolled out on it. The sticky notes will be placed on this paper. You will require at least 5 distinct colors for the sticky notes. [3]

Steps

Event storming legend of notes by their conceptual name with their associated colors and how they are laid out in relation to each other. Event storming layout.png
Event storming legend of notes by their conceptual name with their associated colors and how they are laid out in relation to each other.
Step 1: Create domain events Event Storming domain event.jpg
Step 1: Create domain events
Step 2: Add the commands that caused the domain event Event Storming command.jpg
Step 2: Add the commands that caused the domain event
Step 2b: Add the actor that executes the command Event Storming actor.jpg
Step 2b: Add the actor that executes the command
Step 3: Add corresponding aggregate Event Storming aggregate.jpg
Step 3: Add corresponding aggregate

The first step is to find the domain events and write them on orange sticky notes.

When all domain events are found the second step is to find the command that caused each of the domain events. Commands are written on blue notes and placed directly before the corresponding domain event.

In the third step the aggregates within which commands are executed and where events happen are identified. The aggregates are written in yellow stickies.

The concepts gathered during an event storming session fall into several categories, each with its own colour of sticky note:

  Domain event
An event that occurs in the business process. Written in past tense.
  Actor
A person who executes a command through a view.
  Business process
Processes a command according to business rules and logic. Creates one or more domain events.
  Command
A command executed by a user through a view on an aggregate that results in the creation of a domain event.
  Aggregate
Cluster of domain objects that can be treated as a single unit.
  External system
A third-party service provider such as a payment gateway or shipping company.
  View
A view that users interact with to carry out a task in the system.

Example notes

These are examples, these would be different for different organizations.

Example

Users
CreateAccount
AccountCreated
Signup

Result

As a result, the business process can be seen on the modeling space. But more important is the knowledge that was built in the minds of the participants.

Related Research Articles

The rational unified process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs. RUP is a specific implementation of the Unified Process.

Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Software development is the process used to create software. Programming and maintaining the source code is the central step of this process, but it also includes conceiving the project, evaluating its feasibility, analyzing the business requirements, software design, testing, to release. Software engineering, in addition to development, also includes project management, employee management, and other overhead functions. Software development may be sequential, in which each step is complete before the next begins, but iterative development methods where multiple steps can be executed at once and earlier steps can be revisited have also been devised to improve flexibility, efficiency, and scheduling.

ABAP is a high-level programming language created by the German software company SAP SE. It is currently positioned, alongside Java, as the language for programming the SAP NetWeaver Application Server, which is part of the SAP NetWeaver platform for building business applications.

<span class="mw-page-title-main">Model–view–controller</span> Software design pattern

Model–view–controller (MVC) is a software design pattern commonly used for developing user interfaces that divides the related program logic into three interconnected elements. These elements are:

In software and systems engineering, the phrase use case is a polyseme with two senses:

  1. A usage scenario for a piece of software; often used in the plural to suggest situations where a piece of software may be useful.
  2. A potential scenario in which a system receives an external request and responds to it.

Windows Management Instrumentation (WMI) consists of a set of extensions to the Windows Driver Model that provides an operating system interface through which instrumented components provide information and notification. WMI is Microsoft's implementation of the Web-Based Enterprise Management (WBEM) and Common Information Model (CIM) standards from the Distributed Management Task Force (DMTF).

<span class="mw-page-title-main">Visual programming language</span> Programming language written graphically by a user

In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of Low-code development platforms.

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages, and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

<span class="mw-page-title-main">Requirements analysis</span> Engineering process

In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the various stakeholders, analyzing, documenting, validating, and managing software or system requirements.

<span class="mw-page-title-main">Systems development life cycle</span> Systems engineering terms

In systems engineering, information systems and software engineering, the systems development life cycle (SDLC), also referred to as the application development life cycle, is a process for planning, creating, testing, and deploying an information system. The SDLC concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both. There are usually six stages in this cycle: requirement analysis, design, development and testing, implementation, documentation, and evaluation.

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

Behavior-driven development (BDD) involves naming software tests using domain language to describe the behavior of the code.

A software factory is a structured collection of related software assets that aids in producing computer software applications or software components according to specific, externally defined end-user requirements through an assembly process. A software factory applies manufacturing techniques and principles to software development to mimic the benefits of traditional manufacturing. Software factories are generally involved with outsourced software creation.

In computing, data transformation is the process of converting data from one format or structure into another format or structure. It is a fundamental aspect of most data integration and data management tasks such as data wrangling, data warehousing, data integration and application integration.

Dimensional modeling (DM) is part of the Business Dimensional Lifecycle methodology developed by Ralph Kimball which includes a set of methods, techniques and concepts for use in data warehouse design. The approach focuses on identifying the key business processes within a business and modelling and implementing these first before adding additional business processes, as a bottom-up approach. An alternative approach from Inmon advocates a top down design of the model of all the enterprise data using tools such as entity-relationship modeling (ER).

<span class="mw-page-title-main">V-model (software development)</span> Software development methodology

In software development, the V-model represents a development process that may be considered an extension of the waterfall model and is an example of the more general V-model. Instead of moving down linearly, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction, respectively.

Domain-driven design (DDD) is a major software design approach, focusing on modeling software to match a domain according to input from that domain's experts. DDD is against the idea of having a single unified model; instead it divides a large system into bounded contexts, each of which have their own model.

Informal methods of validation and verification are some of the more frequently used in modeling and simulation. They are called informal because they are more qualitative than quantitative. While many methods of validation or verification rely on numerical results, informal methods tend to rely on the opinions of experts to draw a conclusion. While numerical results are not the primary focus, this does not mean that the numerical results are completely ignored. There are several reasons why an informal method might be chosen. In some cases, informal methods offer the convenience of quick testing to see if a model can be validated. In other instances, informal methods are simply the best available option. Informal methods are not less effective than formal methods and should be performed with the same discipline and structure that one would expect in "formal" methods. When executed properly, solid conclusions can be made.

Acceptance test–driven development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as specification by example (SBE), behavior-driven development (BDD), example-driven development (EDD), and support-driven development also called story test–driven development (SDD). All these processes aid developers and testers in understanding the customer's needs prior to implementation and allow customers to be able to converse in their own domain language.

References

  1. 1 2 Brandolini, Alberto (2013-11-18). "Introducing Event Storming" . Retrieved 2017-04-06.
  2. George, Chiraag (2021-07-19). "How to Design an Effective Event Storming Session". Creately Blog. Retrieved 2023-07-07.
  3. 1 2 Vernon, Vaughn (2016). Domain-Driven Design Distilled. Addison-Wesley. ISBN   978-0134434421.