lets focus on business value
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
![Page 1: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/1.jpg)
![Page 2: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/2.jpg)
Please rate athttp://speakerrate.com/talks/19451-lets-focus-on-business-value
![Page 3: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/3.jpg)
Lets focus on business value
Power point template by Colin Eberhardt
![Page 4: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/4.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/5.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/6.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/7.jpg)
Statistics
http://www.typemock.com/blog/2012/07/18/the-severity-of-bugs-are-we-doomed/
![Page 8: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/8.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/9.jpg)
What is business value?
Helping the business achieve its objectives
The short answer
Simpler Cheaper Better MoreFaster
![Page 10: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/10.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/11.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/12.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/13.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/14.jpg)
Understand who your user is
![Page 15: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/15.jpg)
Feedback loop
Talk to users regularly
TestTDD / BDDExecutable SpecificationsTesters
![Page 16: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/16.jpg)
Bounded Contexts
Different representations in different contexts
![Page 17: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/17.jpg)
Bounded Contexts - Shopping
![Page 18: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/18.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/19.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/20.jpg)
Domain Driven Design
Building blocksAggregate RootsValue ObjectsServicesRepositoriesEntities… and more…
http://domaindrivendesign.org/books/evans_2003
![Page 21: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/21.jpg)
CQRS
Command
Domain Event Handlers
Persist
Publish
Update
Domain Persistence
Read Model
Client
Queries
![Page 22: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/22.jpg)
Command
Expresses what should happen
Should express intentAddItem- / AddAccessory- ToCart - maps to AddProduct() on the AggregatedRoot
![Page 23: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/23.jpg)
EventSource
The source of events
The place that events originate from
![Page 24: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/24.jpg)
Aggregate Root
Holds only internal state, if needed - no public state
Exposes behavior as methods
![Page 25: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/25.jpg)
Event
Represents the truth in the system; “... this is what happened...”
Simple DTO with primitive properties only!
![Page 26: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/26.jpg)
MVVM
Model
View
ViewModel Observable
Observes
Get from server
![Page 27: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/27.jpg)
bifrost
![Page 28: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/28.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/29.jpg)
Bifrost
Client focusJavaScriptASP.net MVCWeb in generalSilverlightWinRT (Experimental)… changes coming
![Page 30: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/30.jpg)
Bifrost
BackendCQRSCloud scale
Realtime applicationsClients persistently connected to the server
![Page 31: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/31.jpg)
Bifrost - Architecture
Client
Server
DomainQueries
Meta DataRead
Models
Meta DataInvoke Behavior
Result that affectQueries and Read Models
![Page 32: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/32.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/33.jpg)
![Page 34: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/34.jpg)
![Page 35: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/35.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/36.jpg)
Thanks for your
attention
![Page 37: Lets focus on business value](https://reader033.vdocument.in/reader033/viewer/2022052619/5553b750b4c905d9448b4de6/html5/thumbnails/37.jpg)