Transcript
Page 1: Lets focus on business value
Page 2: Lets focus on business value

Please rate athttp://speakerrate.com/talks/19451-lets-focus-on-business-value

Page 3: Lets focus on business value

Lets focus on business value

Power point template by Colin Eberhardt

Page 4: Lets focus on business value

Agenda

How to focus on business value

Domain Driven Design

Concrete patterns; CQRS, MVVM

Bifrost – an open-source framework to cover it all

Page 5: Lets focus on business value

Who am I

Einar Ingebrigtsen

[email protected]@einari

http_//www.dolittle.comhttp://blog.dolittle.com

http://www.ingebrigtsen.info

Page 6: Lets focus on business value

Statistics

Software projects2009:- 32% successful- 24% failed- 44% challenged

2004:- Cancelled projects cost $55 Billion

Annually http://www.projectsmart.co.uk/docs/chaos-report.pdf

Page 7: Lets focus on business value

Statistics

http://www.typemock.com/blog/2012/07/18/the-severity-of-bugs-are-we-doomed/

Page 8: Lets focus on business value

What are we getting paid to do?

Use the most fancy technology out there

C# 5.0, Roslyn, F#, TPL, ASP.net MVC 3, SignalR, RavenDB

Join the alpha geek crew and use all the latest buzz words and create an architecture around that showcase our technical skills?

DELIVER BUSINESS VALUE!

Page 9: Lets focus on business value

What is business value?

Helping the business achieve its objectives

The short answer

Simpler Cheaper Better MoreFaster

Page 10: Lets focus on business value

Why is this hard to do?

Developers don’t understand what the business needs

The Business doesn’t understand what the business needs

If the business does understand what it needs…

Page 11: Lets focus on business value

Why is this hard to do?

Even if we do understand what they want, we can’t build it because of ...

Race conditions

Transactions Logging SerializationEager

loadingPerformance

Caching Mapping Auditing Concurrency StalenessLazy

loading

Page 12: Lets focus on business value

Why is this hard to do?

If somehow we’ve managed to get our infrastructure in place and give the

business what it needs, it’s TOO LATE!

Market Changes

New CompetitorAcquisitions

Legal Changes

New Priorities

New Requirements

Page 13: Lets focus on business value

Be agile!

Not just in terms of process (Scrum, Kanban, XP)

We need to be able to changedecisionsprioritiesCODE!!

Page 14: Lets focus on business value

Understand who your user is

Page 15: Lets focus on business value

Feedback loop

Talk to users regularly

TestTDD / BDDExecutable SpecificationsTesters

Page 16: Lets focus on business value

Bounded Contexts

Different representations in different contexts

Page 17: Lets focus on business value

Bounded Contexts - Shopping

Page 18: Lets focus on business value

Bounded Contexts – Shift Management

EmployeePlays a central role – identified by Social Security Number

SubstituteIt refers to the Employee by concept, but we do not need its address – only its availability and possibly its name for display purposes

Page 19: Lets focus on business value

Domain Driven Design

Focus on the core domain

Creative collaboration between domain experts and software practitioners

Create a common language and common understanding of the domain

Page 20: Lets focus on business value

Domain Driven Design

Building blocksAggregate RootsValue ObjectsServicesRepositoriesEntities… and more…

http://domaindrivendesign.org/books/evans_2003

Page 21: Lets focus on business value

CQRS

Command

Domain Event Handlers

Persist

Publish

Update

Domain Persistence

Read Model

Client

Queries

Page 22: Lets focus on business value

Command

Expresses what should happen

Should express intentAddItem- / AddAccessory- ToCart - maps to AddProduct() on the AggregatedRoot

Page 23: Lets focus on business value

EventSource

The source of events

The place that events originate from

Page 24: Lets focus on business value

Aggregate Root

Holds only internal state, if needed - no public state

Exposes behavior as methods

Page 25: Lets focus on business value

Event

Represents the truth in the system; “... this is what happened...”

Simple DTO with primitive properties only!

Page 26: Lets focus on business value

MVVM

Model

View

ViewModel Observable

Observes

Get from server

Page 27: Lets focus on business value

bifrost

Page 28: Lets focus on business value

Bifrost

Full end to end framework for line-of-business application development

Promotes good practices such as CQRS, MVVM through high focus on DDD

You don’t need the entire thing, but will get benefits for every component you add

Page 29: Lets focus on business value

Bifrost

Client focusJavaScriptASP.net MVCWeb in generalSilverlightWinRT (Experimental)… changes coming

Page 30: Lets focus on business value

Bifrost

BackendCQRSCloud scale

Realtime applicationsClients persistently connected to the server

Page 31: Lets focus on business value

Bifrost - Architecture

Client

Server

DomainQueries

Meta DataRead

Models

Meta DataInvoke Behavior

Result that affectQueries and Read Models

Page 32: Lets focus on business value

CQRS – Bifrost Style

Command

Command Coordinator

Client

Command Handler(s)

Aggregate Root

Events

EventStore

Event Subscriber(s)Read Model

Page 33: Lets focus on business value
Page 34: Lets focus on business value
Page 35: Lets focus on business value

Summary

OUR SOFTWARE CAN GET BETTER!WE CAN DO BETTER!

Domain Driven DesignWill help you establish a language and understand what you’re creating

CQRSLets you establish a set of good patterns and practices, mind opener

BifrostOne incarnation – but not look at it as a CQRS implementation, it is so much more

http://blog.dolittle.com http://bifrost.dolittle.com http://github.com/dolittle/bifrost

Page 36: Lets focus on business value

Thanks for your

attention

Page 37: Lets focus on business value

Top Related