lets focus on business value

Post on 14-May-2015

384 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

A talk I presented at Grenland Web, 24th of January 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.

TRANSCRIPT

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

Lets focus on business value

Power point template by Colin Eberhardt

Agenda

How to focus on business value

Domain Driven Design

Concrete patterns; CQRS, MVVM

Bifrost – an open-source framework to cover it all

Who am I

Einar Ingebrigtsen

einar@dolittle.com@einari

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

http://www.ingebrigtsen.info

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

Statistics

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

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!

What is business value?

Helping the business achieve its objectives

The short answer

Simpler Cheaper Better MoreFaster

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…

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

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

Be agile!

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

We need to be able to changedecisionsprioritiesCODE!!

Understand who your user is

Feedback loop

Talk to users regularly

TestTDD / BDDExecutable SpecificationsTesters

Bounded Contexts

Different representations in different contexts

Bounded Contexts - Shopping

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

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

Domain Driven Design

Building blocksAggregate RootsValue ObjectsServicesRepositoriesEntities… and more…

http://domaindrivendesign.org/books/evans_2003

CQRS

Command

Domain Event Handlers

Persist

Publish

Update

Domain Persistence

Read Model

Client

Queries

Command

Expresses what should happen

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

EventSource

The source of events

The place that events originate from

Aggregate Root

Holds only internal state, if needed - no public state

Exposes behavior as methods

Event

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

Simple DTO with primitive properties only!

MVVM

Model

View

ViewModel Observable

Observes

Get from server

bifrost

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

Bifrost

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

Bifrost

BackendCQRSCloud scale

Realtime applicationsClients persistently connected to the server

Bifrost - Architecture

Client

Server

DomainQueries

Meta DataRead

Models

Meta DataInvoke Behavior

Result that affectQueries and Read Models

CQRS – Bifrost Style

Command

Command Coordinator

Client

Command Handler(s)

Aggregate Root

Events

EventStore

Event Subscriber(s)Read Model

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

Thanks for your

attention

top related