Discovering the value of Domain-Driven Design presented by Herman Lintvelt (c) 2011 Polymorph Systems.

Slides:



Advertisements
Similar presentations
GRASP: Designing Objects with Responsibilities
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Visual Scripting of XML
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Not all of a large system will be well designed..
Ganesh Subramanian 22/12/2010
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
UML CASE Tool. ABSTRACT Domain analysis enables identifying families of applications and capturing their terminology in order to assist and guide system.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Marcelo Santos – OOAD-CDT309, Spring 2008, IDE-MdH Object-Oriented Analysis and Design - CDT309 Period 4, Spring 2008 Introduction.
COMP 350: Object Oriented Analysis and Design Lecture 2
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Computer Science 240 Principles of Software Design.
Software Engineering Case Study Slide 1 Introductory case study.
Oakkar Fall The Need for Decision Engine Automate business processes Implement complex business decision logic Separation of rules and process Business.
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
Spectra Software Defined Radio Products Applying Model Driven Design, Generative Programming, and Agile Software Techniques to the SDR Domain OOPSLA '05.
COMP 6471 Software Design Methodologies Winter 2006 Dr Greg Butler
UML - Development Process 1 Software Development Process Using UML (2)
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Domain Driven Design. Set of blog posts spanning 10 months – building an app Fefactored along the way code to Patterns eg repository.
Domain Driven Design Agile SIG Talk Richard Walls.
1 REQUIREMENT ENGINEERING Chapter 7. 2 REQUIREMENT ENGINEERING Definition Establishing what the customer requires from a software system. OR It helps.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
Business Analysis and Essential Competencies
Building an Offline Smart Client using Domain-Driven Design Principles Tim McCarthy.
Chapter 1 Object-Oriented Analysis and Design. Disclaimer Slides come from a variety of sources: –Craig Larman-developed slides; author of this classic.
Industry SDLCs and Business Climate. Justin Kalicharan Credentials Director and Senior Technology Officer Over 14 years of coding experience in various.
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
Systems Design Approaches The Waterfall vs. Iterative Methodologies.
11 Partnership for Performance How to hear this lecture Click on the icon: to hear the narration for each slide.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
The Systems Development Life Cycle
An Anonymous Approach to Group Based Assessment Wayne Ellis & Mark Ratcliffe University of Wales, Aberystwyth
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
♦ Use Case Model  Detailled use case - Important  Use case diagram- Refactoring Use case diagram  > 1 Last Lectures.
Roles in Software Development using Domain Specific Modelling Languages Holger Krahn, Bernhard Rumpe, Steven Völkel Software Systems Engineering Technische.
OBJECT-ORIENTED SOFTWARE DEVELOPMENT PROCESS BTS430 Systems Analysis and Design using UML.
Copyright ©2004 Cezary Z Janikow 1 OOAD Overview n OO language – Necessary for OO systems? – Sufficient for OO systems? Owning a hummer doesn’t make you.
Source Mastering UML with Rational Rose 2002 Information System Engineering Introduction to UML.
Object Oriented Analysis and Design Chapter 1 Applying UML and Patterns -Craig Larman.
OOPSLA workshop on Domain-Specific Visual Languages 1 Juha-Pekka Tolvanen, Steven Kelly, Jeff Gray, Kalle Lyytinen.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
1 Presentation Title Test-driven development (TDD) Overview David Wu.
Designing Multimedia Presentation Concept to Presentation.
Session 3 How to Approach the UML Written by Thomas A. Pender Published by Wiley Publishing, Inc. October 5, 2011 Presented by Kang-Pyo Lee.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
Unit 6 Understanding and Implementing Crew Resource Management.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Lecture 5 Introduction to Use Case Analysis and the Analysis Model Introduction to the UML.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
1 Requirements Engineering for Agile Methods Lecture # 41.
© NALO Solutions Limited NALO Solutions, presents the – Revenue Collector App Using Mobile Phones to gather Revenue SOFTWARE ENGINEERING.
Industrial Group Project Introduction to Object Oriented Programming Adelina Basholli, February, 2016.
/16 Final Project Report By Facializer Team Final Project Report Eagle, Leo, Bessie, Five, Evan Dan, Kyle, Ben, Caleb.
GRASP – Designing Objects with Responsibilities
Algorithms and Problem Solving
What is Wrong with Models?
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Chapter 1 OBJECT-ORIENTED ANALYSIS AND DESIGN
ADO.NET Entity Framework Marcus Tillett
COMP 350: Object Oriented Analysis and Design Lecture 2
Algorithms and Problem Solving
Logical Architecture & UML Package Diagrams
Presentation transcript:

Discovering the value of Domain-Driven Design presented by Herman Lintvelt (c) 2011 Polymorph Systems

Do the right thing, and do the thing right. “When we first set out to write software, we never know enough.”

? What are some of the prominent problems you struggle with in your software development projects?

? When faced with these problems or complex requirements, how do you go about to resolve them?

An Experiment In which we make use of volunteers to do some role-playing.

Scenario A

Scenario B

So what was the difference? Build up a model of the domain to enhance understanding Based on this a common language was being developed New understanding immediately fed into model and language

Coming to terms... Domain: subject area to which solution must be applied Domain Model: simplification of real world abstracts aspects relevant to solving problem at hand not just a particular diagram Ubiquitous Language: everywhere the same language

What is DDD? DDD is both way of thinking and set of priorities aimed to accelerate software dealing with complex domains primary focus on domain and domain logic complex domain designs should be based on a model Two development practices prerequisites: 1. Development is iterative 2. Developers and domain experts have a close relationship

Where does DDD fit? DDD is not a new idea! Central part of OO Analysis & Design Model Langua ge Code

? What are different nouns that can be used for “car”?

car vehicle bakkie automobile SUV minibus HMUV (High Mobility Utility Vehicle) jamjar (Cockney slang)

Case Study [Req-XXXX] - Car Finder Allow the end user to locate itself and the vehicle.

Case Study 0 - (SoapRequest*) GetLastKnownVehiclePosition: (id ) handler uiTokenID: (NSString*) uiTokenID vehicleRegistrationNr: (NSString*) vehicleRegistrationNr; - (SoapRequest*) UnitPlayback: (id ) handler uiTokenID: (NSString*) uiTokenID dtStartDate: (NSDate*) dtStartDate dtEndDate: (NSDate*) dtEndDate liCustomerVehicleID: (long) liCustomerVehicleID;

Case Study 0

Case Study 1 As a user of the XXXX iphone application I want to view my current location and my car’s location on a map, with the shortest route indicated visually So that I can easily find my car

Case Study 1

The direct benefits we gained in project: Simpler code better separation in layers Faster development requirements, code & tests could be verified against domain model easier to debug & refactor in domain layer than in UI, Persistence, Web-service layers Focused on correct user stories Better tested Team interaction & communication improved dramatically

Utility of a Model In DDD, the Model has 3 basic uses: 1. The model and the heart of the design shape each other makes model relevant, ensures the analysis applies to final product 2. The model is a backbone of a language used by all team members 3. The model is distilled knowledge team’s agreed way of structuring domain knowledge and key domain elements

DDD and DSLs DSL “allows solutions to be expressed more clearly and closer to the domain” Model can be expressed as DSL DSL can be used to generate scaffolding code generate specification and test docs define business (domain) rules Model Langu age Code

Ingredients of Effective Modeling 1. Binding the model and the implementation 2. Cultivating a language based on the model can also include technical terms to be taught to domain experts 3. Developing a knowledge-rich model Objects not just data scheme (anemic objects), but has behaviour and enforce rules 4. Distilling the model 5. Brainstorming and experimenting Agile modeling, Model out Loud

Deep Domain Model When faced with complexity, do you deepen your domain knowledge OR deepen your technology stack?

Sad Example Client: “Our system is very expensive to maintain, and performance is horrible” Me: “Why do you think?” Client: “Well, cause we’re using Java and it is really slow and has a high learning curve” Me: “Interesting. Tell me about the business domain of the system...” Client: “Well, we’re integrating with a legacy system and use Java EE and added ESB to help with that....”

Modeling out Loud People has a genius for spoken language Unfortunately they usually don’t use the language of domain model when speaking We must harness linguistic ability to the modeling effort It complements the visual/spatial reasoning done by sketching diagrams As we model out loud, we find easier ways to say what we need to say NB to then take those new ideas back to the diagrams and code

? Discuss what you see as benefits of DDD that applies to your current projects of software development circumstances? What benefits will you gain if you start thinking and designing more domain- focused? (short, medium, long term?)

DDD Benefits Allows effective collaboration Earlier experience feed back into model and understanding of whole team Helps focus requirement analysis Allows evolving of model over time “When we first set out to write software, we never know enough.”

References Applying UML and Patterns, Prentice Hall - Craig Larman Domain Driven Design, Addison- Wesley - Eric Evans

If you want... contact me: twitter: hermanlintvelt blog: training: OO A&D Course, CapeTown, end of July Thank you