Please rate at
http://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




       @einari           einar@dolittle.com


                      http_//www.dolittle.com
                        http://blog.dolittle.com
                 http://www.ingebrigtsen.info
Statistics

Software projects
2009:
- 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?
What is business value?


               The short answer

Helping the business achieve its
           objectives

 Faster   Simpler   Cheaper   Better   More
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                                                  Eager
conditions
             Transactions   Logging    Serialization               Performance
                                                       loading


                                                                     Lazy
Caching      Mapping        Auditing   Concurrency     Staleness
                                                                   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!


           Legal           New          Market
          Changes        Priorities     Changes



                           New           New
         Acquisitions
                        Requirements   Competitor
Be agile!



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


We need to be able to change
 decisions
 priorities
 CODE!!
Understand who your user is
Feedback loop



Talk to users regularly

Test
 TDD / BDD
 Executable Specifications
 Testers
Bounded Contexts




Different representations in different
contexts
Bounded Contexts - Shopping
Bounded Contexts – Shift Management


Employee
 Plays a central role – identified by Social Security
 Number


Substitute
 It 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 blocks
 Aggregate Roots
 Value Objects
 Services
 Repositories
 Entities
 … and more…
CQRS

                                  Client


   Command


                                                       Queries
     Domain                    Event Handlers
                     Publish

         Persist               Update




Domain Persistence                              Read Model
Command




Expresses what should happen

Should express intent
 AddItem- / 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   Get from server




           View


Observes
                          Observable
             ViewModel
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 focus
 JavaScript
 ASP.net MVC
 Web in general
 Silverlight
 WinRT (Experimental)
 … changes coming
Bifrost



Backend
 CQRS
 Cloud scale


Realtime applications
 Clients persistently connected to the server
Bifrost - Architecture
                       Client




  Result that affect
  Queries and                   Invoke Behavior               Meta Data
  Read Models




                       Server

  Queries                                          Domain

Read Models                                       Meta Data
CQRS – Bifrost Style
                  Client

                                     Command

                                      Command
                                     Coordinator

                                      Command
                                      Handler(s)

                                    Aggregate Root


 Read Model   Event Subscriber(s)       Events


                                      EventStore
Summary




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


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

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




  http://blog.dolittle.com http://bifrost.dolittle.com
Thanks for your
   attention
Lets focus on business value

Lets focus on business value

  • 2.
  • 3.
    Lets focus onbusiness value Power point template by Colin Eberhardt
  • 4.
    Agenda How to focuson business value Domain Driven Design Concrete patterns; CQRS, MVVM Bifrost – an open-source framework to cover it all
  • 5.
    Who am I Einar Ingebrigtsen @einari einar@dolittle.com http_//www.dolittle.com http://blog.dolittle.com http://www.ingebrigtsen.info
  • 6.
    Statistics Software projects 2009: - 32%successful - 24% failed - 44% challenged 2004: - Cancelled projects cost $55 Billion Annually http://www.projectsmart.co.uk/docs/chaos-report.pdf
  • 7.
  • 8.
    What are wegetting 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?
  • 9.
    What is businessvalue? The short answer Helping the business achieve its objectives Faster Simpler Cheaper Better More
  • 10.
    Why is thishard 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…
  • 11.
    Why is thishard to do? Even if we do understand what they want, we can’t build it because of ... Race Eager conditions Transactions Logging Serialization Performance loading Lazy Caching Mapping Auditing Concurrency Staleness loading
  • 12.
    Why is thishard to do? If somehow we’ve managed to get our infrastructure in place and give the business what it needs, it’s TOO LATE! Legal New Market Changes Priorities Changes New New Acquisitions Requirements Competitor
  • 13.
    Be agile! Not justin terms of process (Scrum, Kanban, XP) We need to be able to change decisions priorities CODE!!
  • 14.
  • 15.
    Feedback loop Talk tousers regularly Test TDD / BDD Executable Specifications Testers
  • 16.
  • 17.
  • 18.
    Bounded Contexts –Shift Management Employee Plays a central role – identified by Social Security Number Substitute It refers to the Employee by concept, but we do not need its address – only its availability and possibly its name for display purposes
  • 19.
    Domain Driven Design Focuson the core domain Creative collaboration between domain experts and software practitioners Create a common language and common understanding of the domain
  • 20.
    Domain Driven Design Buildingblocks Aggregate Roots Value Objects Services Repositories Entities … and more…
  • 21.
    CQRS Client Command Queries Domain Event Handlers Publish Persist Update Domain Persistence Read Model
  • 22.
    Command Expresses what shouldhappen Should express intent AddItem- / AddAccessory- ToCart - maps to AddProduct() on the AggregatedRoot
  • 23.
    EventSource The source ofevents The place that events originate from
  • 24.
    Aggregate Root Holds onlyinternal state, if needed - no public state Exposes behavior as methods
  • 25.
    Event Represents the truthin the system; 
“... this is what happened...” Simple DTO with primitive properties only!
  • 26.
    MVVM Model Get from server View Observes Observable ViewModel
  • 27.
  • 28.
    Bifrost Full end toend 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
  • 29.
    Bifrost Client focus JavaScript ASP.net MVC Web in general Silverlight WinRT (Experimental) … changes coming
  • 30.
    Bifrost Backend CQRS Cloudscale Realtime applications Clients persistently connected to the server
  • 31.
    Bifrost - Architecture Client Result that affect Queries and Invoke Behavior Meta Data Read Models Server Queries Domain Read Models Meta Data
  • 32.
    CQRS – BifrostStyle Client Command Command Coordinator Command Handler(s) Aggregate Root Read Model Event Subscriber(s) Events EventStore
  • 35.
    Summary Domain Driven Design Willhelp you establish a language and understand what you’re creating CQRS Lets you establish a set of good patterns and practices, mind opener Bifrost One incarnation – but not look at it as a CQRS implementation, it is so much more http://blog.dolittle.com http://bifrost.dolittle.com
  • 36.