SlideShare a Scribd company logo
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
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
Please fail!




Fail regularly and fail fast

Be Agile and really iterate

Be honest!
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…
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
Decoupling


Application Level
 Make many applications


Unit Level
 Interchangeable components


New Code
 Velocity
The opposite of decoupling




DRY – Don’t Repeat Yourself

Use of concrete implementations
Single Responsibility Principle


Types represent one thing

Methods do only one thing

Be fine grained and clear

Easier to name
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 AggregateRoot
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




Our motivation
 A platform for us to build LOB applications on
 Make us focus on delivering business value
 Easy to use, hard to use wrong
 “It just works!”
Bifrost



Client focus
 JavaScript
 ASP.net
 Single Page Applications
 Web in general
 Silverlight
 WinRT (Experimental)
Bifrost



Backend
 CQRS
 Cloud scale


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




  Result that affect
  Queries and                   Invoke Behavior               Results /
  Read Models                                                 Meta Data




                       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
Lets focus on business value
User story


Persona: Hannah
 Works with human resources, she is responsible
 for hiring of permanent employees but also for
 finding substitutes when people are on sick
 leaves


As Hannah I need to be able to quickly
register any employees coming in before we
got all the details about the person
User story




Requirements
 First Name - Required
 Last Name - Required
 Social Security Number – Required
  This is what identifies a person uniquely
Where are we??
                  Client

     Model          View            ViewModel



                                      Command

                                      Command
                                      Handler(s)

                                    Aggregate Root


 Read Model   Event Subscriber(s)       Events


                                      EventStore
Bifrost – What did we solve?




Decoupling
  Commands representing the behavior
  Events are the contract
  Read and behavior are two different things


Working in parallel

Making it easier to apply agile principles
Bifrost - Roadmap


Realtime applications
  Clients persistently connected to the server


Refine client model

Formalizations
  Bounded Context, Modules …


Simplifications

Scale out options
  Redis, Azure ++
Getting started
Lets focus on business value
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

Please rate the talk at
http://tinyurl.com/BusinessValue2


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

More Related Content

PPTX
Lets focus on business value
Einar Ingebrigtsen
 
PPTX
Catching The Long Tail With SaaS + Windows Azure
Rainer Stropek
 
PDF
Cloudbusting sept 2012
Richard Bowden
 
PPTX
Cloud computing was bringt's
Rainer Stropek
 
PPTX
Business Model Evolution - Why The Journey To SaaS Makes Sense
Rainer Stropek
 
PPT
It infrastructure cost reduction vision v5 customer
ddeschenes99
 
PPTX
DDHS 2009 Microsoft Heads In The Cloud Feet On The Ground Peter de Haas...
Peter de Haas
 
PPTX
SaaS, Multi-Tenancy and Cloud Computing
Rainer Stropek
 
Lets focus on business value
Einar Ingebrigtsen
 
Catching The Long Tail With SaaS + Windows Azure
Rainer Stropek
 
Cloudbusting sept 2012
Richard Bowden
 
Cloud computing was bringt's
Rainer Stropek
 
Business Model Evolution - Why The Journey To SaaS Makes Sense
Rainer Stropek
 
It infrastructure cost reduction vision v5 customer
ddeschenes99
 
DDHS 2009 Microsoft Heads In The Cloud Feet On The Ground Peter de Haas...
Peter de Haas
 
SaaS, Multi-Tenancy and Cloud Computing
Rainer Stropek
 

What's hot (17)

PDF
How to Leverage the Value of Your Application
Flexera
 
PDF
Having the Cloud Conversation: Why the Business Architect Should Care
Peter Coffee
 
PDF
Peter Coffee at share2010seattle
Peter Coffee
 
PDF
Retaj Tech & hr Update
fallatahz
 
XLSX
Crm application analysis tool
Ralph Paglia
 
PDF
AT2012_Pune_UserStories_BhawanaGupta
India Scrum Enthusiasts Community
 
PDF
Peter Coffee CIO Forum 20100406
Peter Coffee
 
PPT
Cast Iron Overview Webinar 6.13.12 Final(Jb)
Carolyn Crowe
 
PDF
SugarCON partner presentation by IBM
Bevdewitt
 
PPTX
Cloud product presentation
SKALI Group
 
PPTX
ARC Recruiting
Jodie Garrison
 
PPT
HeadTracker Value Proposition
Ashish Belagali
 
PDF
Cisco live 2013 anything as a service david deakin
OptusBusiness
 
PPTX
Designing DDD Aggregates
Andrew McCaughan
 
PDF
Sailing in the cloud
Dr Ganesh Iyer
 
PDF
Stream 3 - IT optimisation & virtualisation
IBM Business Insight
 
PDF
Gen-i Cloud 101 presentation
Simmy_online
 
How to Leverage the Value of Your Application
Flexera
 
Having the Cloud Conversation: Why the Business Architect Should Care
Peter Coffee
 
Peter Coffee at share2010seattle
Peter Coffee
 
Retaj Tech & hr Update
fallatahz
 
Crm application analysis tool
Ralph Paglia
 
AT2012_Pune_UserStories_BhawanaGupta
India Scrum Enthusiasts Community
 
Peter Coffee CIO Forum 20100406
Peter Coffee
 
Cast Iron Overview Webinar 6.13.12 Final(Jb)
Carolyn Crowe
 
SugarCON partner presentation by IBM
Bevdewitt
 
Cloud product presentation
SKALI Group
 
ARC Recruiting
Jodie Garrison
 
HeadTracker Value Proposition
Ashish Belagali
 
Cisco live 2013 anything as a service david deakin
OptusBusiness
 
Designing DDD Aggregates
Andrew McCaughan
 
Sailing in the cloud
Dr Ganesh Iyer
 
Stream 3 - IT optimisation & virtualisation
IBM Business Insight
 
Gen-i Cloud 101 presentation
Simmy_online
 
Ad

Viewers also liked (6)

PPTX
Tutorial wordpress
random117
 
KEY
Closing the gap between Web and Desktop with WinRT
Einar Ingebrigtsen
 
PPTX
Tutorial wordpress
random117
 
PPTX
Tutorial wordpress
random117
 
PDF
Essential japanese expressions - Expressões Essenciais em Japonês
Romulo Silva
 
PPT
Pamięć doskonała 1
Katarzyna Sobanska
 
Tutorial wordpress
random117
 
Closing the gap between Web and Desktop with WinRT
Einar Ingebrigtsen
 
Tutorial wordpress
random117
 
Tutorial wordpress
random117
 
Essential japanese expressions - Expressões Essenciais em Japonês
Romulo Silva
 
Pamięć doskonała 1
Katarzyna Sobanska
 
Ad

Similar to Lets focus on business value (20)

PPTX
RavenDB overview
Igor Moochnick
 
PPTX
CQRS recipes or how to cook your architecture
Thomas Jaskula
 
PDF
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
PDF
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak
 
PPTX
.NET Architecture for Enterprises
Wade Wegner
 
PDF
The Road To Event-Driven Architecture
SheenBrisals
 
PPTX
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
GlobalLogic Ukraine
 
PDF
Why there is no future for Model Driven Development
Johan den Haan
 
PPTX
Agile Development in .NET
danhermes
 
PDF
Business Event Driven Architecture & Governance in Action
HostedbyConfluent
 
PDF
AWS case study: real estate portal
Andreas Chatzakis
 
PPTX
Microsoft Microservices
Chase Aucoin
 
PPTX
Jumpstart Azure
Brian Blanchard
 
PDF
Computational Patterns of the Cloud - QCon NYC 2014
Ines Sombra
 
PDF
The Cloud, The Enterprise Architect and the CIO
Matt Deacon
 
PPTX
A perspective on cloud computing and enterprise saa s applications
George Milliken
 
PDF
External should that be a microservice
Rohit Kelapure
 
PDF
Deconstructing Monoliths with Domain Driven Design
VMware Tanzu
 
PDF
Brighttalk understanding the promise of sde - final
Andrew White
 
PDF
Business and Online Services - Ben Kepes
Intergen
 
RavenDB overview
Igor Moochnick
 
CQRS recipes or how to cook your architecture
Thomas Jaskula
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak
 
.NET Architecture for Enterprises
Wade Wegner
 
The Road To Event-Driven Architecture
SheenBrisals
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
GlobalLogic Ukraine
 
Why there is no future for Model Driven Development
Johan den Haan
 
Agile Development in .NET
danhermes
 
Business Event Driven Architecture & Governance in Action
HostedbyConfluent
 
AWS case study: real estate portal
Andreas Chatzakis
 
Microsoft Microservices
Chase Aucoin
 
Jumpstart Azure
Brian Blanchard
 
Computational Patterns of the Cloud - QCon NYC 2014
Ines Sombra
 
The Cloud, The Enterprise Architect and the CIO
Matt Deacon
 
A perspective on cloud computing and enterprise saa s applications
George Milliken
 
External should that be a microservice
Rohit Kelapure
 
Deconstructing Monoliths with Domain Driven Design
VMware Tanzu
 
Brighttalk understanding the promise of sde - final
Andrew White
 
Business and Online Services - Ben Kepes
Intergen
 

More from Einar Ingebrigtsen (8)

PPT
Making your application realtime with signal r
Einar Ingebrigtsen
 
PPTX
It's Primetime: A Javascript Story
Einar Ingebrigtsen
 
PPTX
Lets focus on business value
Einar Ingebrigtsen
 
PPTX
Windows Azure Camps - Oktober 2012
Einar Ingebrigtsen
 
PPTX
Developing on Windows 8
Einar Ingebrigtsen
 
PPTX
Windows 8 BootCamp
Einar Ingebrigtsen
 
KEY
Driving application development through behavior driven development
Einar Ingebrigtsen
 
KEY
Sugarcoating your frontend one ViewModel at a time
Einar Ingebrigtsen
 
Making your application realtime with signal r
Einar Ingebrigtsen
 
It's Primetime: A Javascript Story
Einar Ingebrigtsen
 
Lets focus on business value
Einar Ingebrigtsen
 
Windows Azure Camps - Oktober 2012
Einar Ingebrigtsen
 
Developing on Windows 8
Einar Ingebrigtsen
 
Windows 8 BootCamp
Einar Ingebrigtsen
 
Driving application development through behavior driven development
Einar Ingebrigtsen
 
Sugarcoating your frontend one ViewModel at a time
Einar Ingebrigtsen
 

Lets focus on business value

  • 2. Lets focus on business value Power point template by Colin Eberhardt
  • 3. Agenda How to focus on business value Domain Driven Design Concrete patterns; CQRS, MVVM Bifrost – an open-source framework to cover it all
  • 4. Who am I Einar Ingebrigtsen @einari [email protected] http_//www.dolittle.com http://blog.dolittle.com http://www.ingebrigtsen.info
  • 5. 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. 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?
  • 8. What is business value? The short answer Helping the business achieve its objectives Faster Simpler Cheaper Better More
  • 9. Why is this hard to do? Developers don’t understand what the business needs The Business doesn’t understand what the business needs
  • 10. 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
  • 11. 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
  • 12. Be agile! Not just in terms of process (Scrum, Kanban, XP) We need to be able to change decisions priorities CODE!!
  • 14. Feedback loop Talk to users regularly Test TDD / BDD Executable Specifications Testers
  • 15. Please fail! Fail regularly and fail fast Be Agile and really iterate Be honest!
  • 16. 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
  • 17. Domain Driven Design Building blocks Aggregate Roots Value Objects Services Repositories Entities … and more…
  • 19. Bounded Contexts - Shopping
  • 20. 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
  • 21. Decoupling Application Level Make many applications Unit Level Interchangeable components New Code Velocity
  • 22. The opposite of decoupling DRY – Don’t Repeat Yourself Use of concrete implementations
  • 23. Single Responsibility Principle Types represent one thing Methods do only one thing Be fine grained and clear Easier to name
  • 24. CQRS Client Command Queries Domain Event Handlers Publish Persist Update Domain Persistence Read Model
  • 25. Command Expresses what should happen Should express intent AddItem- / AddAccessory- ToCart - maps to AddProduct() on the AggregateRoot
  • 26. EventSource The source of events The place that events originate from
  • 27. Aggregate Root Holds only internal state, if needed - no public state Exposes behavior as methods
  • 28. Event Represents the truth in the system; 
“... this is what happened...” Simple DTO with primitive properties only!
  • 29. MVVM Model Get from server View Observes Observable ViewModel
  • 31. 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
  • 32. Bifrost Our motivation A platform for us to build LOB applications on Make us focus on delivering business value Easy to use, hard to use wrong “It just works!”
  • 33. Bifrost Client focus JavaScript ASP.net Single Page Applications Web in general Silverlight WinRT (Experimental)
  • 34. Bifrost Backend CQRS Cloud scale Realtime applications Clients persistently connected to the server
  • 35. Bifrost - Architecture Client Result that affect Queries and Invoke Behavior Results / Read Models Meta Data Server Queries Domain Read Models Meta Data
  • 36. CQRS – Bifrost Style Client Command Command Coordinator Command Handler(s) Aggregate Root Read Model Event Subscriber(s) Events EventStore
  • 38. User story Persona: Hannah Works with human resources, she is responsible for hiring of permanent employees but also for finding substitutes when people are on sick leaves As Hannah I need to be able to quickly register any employees coming in before we got all the details about the person
  • 39. User story Requirements First Name - Required Last Name - Required Social Security Number – Required This is what identifies a person uniquely
  • 40. Where are we?? Client Model View ViewModel Command Command Handler(s) Aggregate Root Read Model Event Subscriber(s) Events EventStore
  • 41. Bifrost – What did we solve? Decoupling Commands representing the behavior Events are the contract Read and behavior are two different things Working in parallel Making it easier to apply agile principles
  • 42. Bifrost - Roadmap Realtime applications Clients persistently connected to the server Refine client model Formalizations Bounded Context, Modules … Simplifications Scale out options Redis, Azure ++
  • 45. 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 Please rate the talk at http://tinyurl.com/BusinessValue2 http://blog.dolittle.com http://bifrost.dolittle.com
  • 46. Thanks for your attention

Editor's Notes

  • #16: Bring up Saga, EventStore, View->Query->ReadHonesty is really omportant – people tend to cover up failures!
  • #22: Fewer regression bugsMore stabile softwareEasier to estimate and be on timeLess complexityWriting mostly new code at this point – true velocity!
  • #23: DRY : Inheritance for instance – to save propertiesPut in place abstractions for your application needs – not rewrite things!
  • #24: The S in SOLID