Software development is not one size fits all. Domain-Driven Design is significant where there's high complexity and high value. In these areas different tools might be needed. EventStorming is the best way I know to gather requirements in a complex environment, and also maps with CQRS/ES architecture perfectly.
How to Track Employee Performance A Comprehensive Guide.pdf
Idea stickies green bar - Wroclaw edition
1. #CDays14 – Milano 25, 26 e 27 Febbraio 2014
Idea —> Post-It —>
Test Verdi
Idea
Stickies
Green Bar
avanscoperta
@ziobrando
(original concept with @andreabalducci)
2. About me
@ziobrando
I do something else instead
@ziobrandoAbout me
avanscoperta
#DDD
#Agile
#Lean
#Entrepreneur
#Developer
#EventStorming
#Coach
#Facilitator
#Consultant
155. Cucumber to the
rescue
Scenario Outline: Manually opening a project finances account
When I open a project account called <project name>
Then project account should be opened for <project name>
And project <project name> should be visible in the projects list
Examples:
| project name |
| Project Alpha |
| Project Omega |
156. Executing a Command
When(/^I open a project account called (.*)$/) do |project_name|
params = {
'headline' => project_name
}
command = OpenProject.from_params(params)
@project_account_id = command.aggregate_id
Quindi::Application::ProjectFinancesCommandHandler.handle(command)
end
157. Checking a Domain Event
Then(/^project account should be opened for (.*)$/) do |expected_headline|
eventually(timeout: 0.8) {
last_project_opened_event = @event_logger.received['ProjectOpened'].last
expect(last_project_opened_event).to_not be_nil
expect(last_project_opened_event).to be_a ProjectOpened
expect(last_project_opened_event.headline).to eq expected_headline
}
end
158. Checking a Read Model
And(/^project (.*) should be visible in the projects list$/) do |project_name|
fail 'Please set @project_account_id ' unless @project_account_id
eventually(timeout: 0.5) {
visible_project =
Quindi::Application::ProjectList.find_by_id(@project_account_id)
expect(visible_project).not_to be_nil
expect(visible_project['headline']).to eq project_name
}
end
159. Wrapping up
Doing the right thing matters
Doing it right matters too
Discovering it matters too
Have a look to CQRS/ES
EventStorming Friends