Craig Berntson

Slides:



Advertisements
Similar presentations
Software Engineering Key design concepts Design heuristics Design practices.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
ARCH-01: Introduction to the OpenEdge™ Reference Architecture Don Sorcinelli Applied Technology Group.
SOLID Object Oriented Design Craig Berntson
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Oct 2, Ron McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m Function:
CSLA Presenter Sergey Barskiy, senior consultant at Magenic Technologies your questions Send an in order.
Domain Modelling Paul Stovell. Architecture: Implicit or Explicit? Architecture exists implicitly But if you don’t define it, it probably sucks.
Ganesh Subramanian 22/12/2010
From Class Diagrams to Databases. So far we have considered “objects” Objects have attributes Objects have operations Attributes are the things you record.
CSE 111: Object Oriented Design. Design “To program is human but to design is divine” (WEH)
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Course Instructor: Aisha Azeem
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
Presenter: PhuongNQK. Goal Give an overview of currently prominent app architectures in relation to each other.
The chapter will address the following questions:
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Chapter 10 Architectural Design
The Design Discipline.
Craig Berntson
Domain-Driven Design using the ADO.NET Entity Framework Tim McCarthy Principal Engineer, InterKnowlogy
What is Architecture  Architecture is a subjective thing, a shared understanding of a system’s design by the expert developers on a project  In the.
Domain Driven Design. Set of blog posts spanning 10 months – building an app Fefactored along the way code to Patterns eg repository.
GRASP Principles. How to Design Objects The hard step: moving from analysis to design How to do it? –Design principles (Larman: “patterns”) – an attempt.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Domain Driven Design Agile SIG Talk Richard Walls.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
Domain-Driven Design Tim McCarthy Principal Engineer, InterKnowlogy
Building an Offline Smart Client using Domain-Driven Design Principles Tim McCarthy.
Domain Driven Design Ryan Riley Catapult Systems, Inc.
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
Requirements To Design--Iteratively Chapter 12 Applying UML and Patterns Craig Larman.
1 Another group of Patterns Architectural Patterns.
Introduction To System Analysis and Design
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Chapter 9 Moving to Design
Chapter 17 GRASP: Designing Objects with Responsibilities. 1CS6359 Fall 2011 John Cole.
Design Patterns. Patterns “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution.
1-1 System Development Process System development process – a set of activities, methods, best practices, deliverables, and automated tools that stakeholders.
Copyright © Craig Larman All Rights Reserved Responsibility-Driven Design with the GRASP Patterns.
Systems Analysis and Design in a Changing World, 3rd Edition
GRASP: Designing Objects with Responsibilities
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
Domain and Persistence Patterns. Fundamental Pattern Types Design Patterns Business Logic Patterns.
Applying Domain-Driven Design Jimmy Nilsson Webcast with UML China
IntellAgile Copyright © 2002 Craig Larman. All rights reserved. Object Design and Use- Case Realizations with GRASP Patterns.
Kal Bugrara, Ph.DSoftware Engineering Northeastern University Fundamentals Of Software Engineering Lecture V.
1 CMPT 275 High Level Design Phase Modularization.
Software Design: Principles, Process, and Concepts Getting Started with Design.
Design CIS 4800 Kannan Mohan Department of CIS Zicklin School of Business, Baruch College Copyright © 2009 John Wiley & Sons, Inc. Copyright © 2008 Course.
Ch- 8. Class Diagrams Class diagrams are the most common diagram found in modeling object- oriented systems. Class diagrams are important not only for.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Analysis Yaodong Bi. Introduction to Analysis Purposes of Analysis – Resolve issues related to interference, concurrency, and conflicts among use cases.
SEA Side – Extreme Programming 1 SEA Side Software Engineering Annotations Architectural Patterns Professor Sara Stoecklin Director of Software Engineering-
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Copyright © Craig Larman All Rights Reserved COMP-350 Object-Oriented Analysis and Design GRASP: Designing Objects with Responsibilities Reference:
Modern Systems Analysis and Design Third Edition Chapter 2 Succeeding as a Systems Analyst 2.1.
Class Diagrams. Terms and Concepts A class diagram is a diagram that shows a set of classes, interfaces, and collaborations and their relationships.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
DOMAIN DRIVEN DESIGN Dave 12 May WHAT IS DDD? Set of principles to aid in building complex systems Enables us to focus on core problem domain NOT.
GRASP – Designing Objects with Responsibilities
DATA REQIREMENT ANALYSIS
Part 3 Design What does design mean in different fields?
Apply Expert, Creator, Controller, Low Coupling, High Cohesion
The Object Oriented Approach to Design
Design and Implementation
Systems Analysis – ITEC 3155 Modeling System Requirements – Part 2
Software Design Lecture 5.
Presentation transcript:

Craig Berntson

 Microsoft MVP since 1996  Magazine and book authoring  Speaker at developer events across US and in Canada, Germany, and Czech Republic

 A brief history of application design  What is Domain Driven Design  Dive into Domain Driven Design  Find out that you already do much of this

Object Oriented Programming Business rules N-tier design Distributed apps with COM+ Copyright , Craig Berntson. All rights reserved

Presents info to user and interprets user commands Business rules often stored here UI (Presentation) Thick layer that holds majority of business rules Heart of application Business Accesses the database Business rules often stored here Data

 Individuals and interactions over processes and tools  Working software over comprehensive documentation  Customer collaboration over contract negotiation  Responding to change over following a plan Source:

A behavioral approach mandates the assignment of responsibilities first. Only when you are satisfied with the distribution of responsibilities among your objects are you ready to make a decision about what they need to know…Behavior is the only criterion we use to differentiate among objects. - Dr. David West Source: Object Thinking

“When data is the center piece of your object, you assign data to objects before saying what they do. Descriptions of data don’t tell you squat about your objects.” - Rocky Lhotka Source:

This is the work that this application needs to do for the domain you’re working with. It involves calculations based on inputs and stored data, validation of any data that comes from the presentation, and figuring out what data source logic to dispatch, depending on commands received from the presentation. Logic that is the real point of the system. - Martin Fowler Source: Patterns of Enterprise Application Architecture

When you remember that DDD is really just “OO software done right”, it becomes more obvious that strong OO experience will also stand you in good stead when approaching DDD. Source: part-1

There are many things that make development complex. But the heart of this complexity is the essential intricacy of the problem domain itself…The key to controlling complexity is a good domain model…A good domain model can be incredibly valuable but it’s not something that’s not easy to make. Few people can do it well and it’s very hard to teach. Source: Martin Fowler – Forward to Domain Driven Design

 Start with the people inside the domain  Domain is often huge. Focus on domain where software will run  Create an abstraction or model of the domain

Define the vocabulary that is used by the Domain Experts and use it in your design ICD-9APG ICD-10APR DRGAPC DxPx HCPCSCPT

 Noun / Verb  Paper  Whiteboard  Post-It® Notes

Presents info to user and interprets user commands UI (Presentation) Thin layer that coordinates application activity. No biz logic or state of biz objects, but can hold state of an application task Application Heart of the software. Info about the domain. Holds state of biz objects Domain Persists biz objects. Supporting layer for layers. Provides communication between layers. Infrastructure

 Entities  Value Objects  Services  Modules  Aggregates  Factories  Repositories

 An object that has an identity  Consider them from the beginning of design  Be alert to mistaken identity

 Used when we’re interested in the attributes of an object, not what object it is  Golden rule: Immutable  Created with a constructor, and never changed during their lifetime  Keep them thin and simple  Can contain references to other Value Objects or to an Entity

Custome r CustomerID Name Street City State Custome r CustomerID Name Address Address Street City State

 An object that does not have state  Provides functionality across objects  Characteristics of a Service:  Operation refers to a Domain concept, but cannot be mapped to an Entity or Value Object  Operation refers to other objects in the Domain  Operation is stateless

 Used to organize related concepts to reduce complexity  Increases cohesion and reduces coupling  Communicational  Functional  Have well defined interfaces  Module names become part of the Ubiquitous Language

 1-1, 1-M, Bidirectional  How to simplify  Remove non-essential associations  Add constraints to reduce multiplicity  Transform bidirectional into unidirectional

 Used to simplify associated objects  Definition: A group of associated objects which are considered as one unit with regard to data changes.  A boundary separates objects on the inside form those on outside  Has a single root – an Entity  Outside objects can only access the root  Root Entity has global identity and maintains the invariants  Inside Entity has local identity

 Encapsulate the knowledge necessary for object creation  Create new objects from scratch or reconstitute old objects  GoF  Factory Method  Abstract Factory  Entity Factories vs. Value Object Factories

 Construction is not complicated  Creation of object does not include creation of other objects  Client is interested in the implementation  The class is the type (no hierarchy)

 Stores references to globally accessible objects  (Remember that the Root of an Aggregate is globally accessible)  If an object is requested and it doesn’t exist, it is created  Implementation is closely linked to the Infrastructure, but the Interface is Domain

 Continue refactoring the design  Start with a shallow model, refactor as you gain insight  Breakthrough can cause lots of refactoring – do it in small steps

 Domain Driven Design Eric Evans  Domain Driven Design Quickly Abel Avram  Applying Domain-Driven Design and Patterns Jimmy Nilsson .NET Domain-Driven Design with C# Tim McCarthy

Data first designBehavior first N-tier designLayers Business rulesDomain layer Distributed appsSupported AgileSupported Business LanguageUbiquitious language Analysis & DesignModeling

EntitiesMost not using Value ObjectsNew to most of us ServicesMany using ModulesMultiple VS projects AggregatesOOP/Design Patterns FactoriesOOP/Design Patterns RepositoriesNew to most of us RefactoringRefining design

 Web:   Copyright , Craig Berntson. All rights reserved