Domain Driven Design Day 2. DDD | Supple Design Inviting to change Reveals a deep model But … has no formula “… when complexity is holding back progress,

Slides:



Advertisements
Similar presentations
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Advertisements

Architecture Representation
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 11.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Knowledge Representation
The Fundamental Rule for Testing Methods Every method should be tested in a program in which every other method in the testing program has already been.
DEVELOPING LANGUAGES IN GENETICA A general and effective approach to domain-specific problem-solving is to use a high-level language specialized on the.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Axiomatic Semantics.
1 SWE Introduction to Software Engineering Lecture 23 – Architectural Design (Chapter 13)
Software Testing and Quality Assurance
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Axiomatic Semantics ICS 535.
Chapter 1 Principles of Programming and Software Engineering.
1 Introduction to C++ Programming Concept Basic C++ C++ Extension from C.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Relational Algebra and Calculus Yanlei Diao UMass Amherst Feb 1, 2007 Slides Courtesy of R. Ramakrishnan and J. Gehrke.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Foundations This chapter lays down the fundamental ideas and choices on which our approach is based. First, it identifies the needs of architects in the.
Chapter 4 Object and Object-Relational Databases (Part ½: Object-Oriented Concepts) Lecturer: H.Ben Othmen Department of Computer Science, Umm Al-Qura.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
PROGRAMMING LANGUAGES The Study of Programming Languages.
Systems Analysis and Design in a Changing World, Fifth Edition
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
1 N Degrees of Separation: Multi-Dimensional Separation of Concern (MDSOC) HyperJ: language and concepts of general concern combination.
An Introduction to Software Architecture
Knowledge representation
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.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
An Algebra for Composing Access Control Policies (2002) Author: PIERO BONATTI, SABRINA DE CAPITANI DI, PIERANGELA SAMARATI Presenter: Siqing Du Date:
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
Programming Logic and Design Using Methods. 2 Objectives Review how to use a simple method with local variables and constants Create a method that requires.
Design Model Lecture p6 T120B pavasario sem.
Simple Classes. ADTs A specification for a real world data item –defines types and valid ranges –defines valid operations on the data. Specification is.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Waterfall Life Cycle
Karolina Muszyńska Based on: S. Wrycza, B. Marcinkowski, K. Wyrzykowski „Język UML 2.0 w modelowaniu SI”
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Lecture 5 1 CSP tools for verification of Sec Prot Overview of the lecture The Casper interface Refinement checking and FDR Model checking Theorem proving.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Object-Oriented Programming © 2013 Goodrich, Tamassia, Goldwasser1Object-Oriented Programming.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 32. Review Behavioral Patterns – Observer Pattern – Chain of command.
Analysis Yaodong Bi. Introduction to Analysis Purposes of Analysis – Resolve issues related to interference, concurrency, and conflicts among use cases.
Inferring Declarative Requirements Specification from Operational Scenarios IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 24, NO. 12, DECEMBER, 1998.
CSSE501 Object-Oriented Development. Chapter 10: Subclasses and Subtypes  In this chapter we will explore the relationships between the two concepts.
Of 29 lecture 15: description logic - introduction.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
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.
Welcome to OBJECT ORIENTED PROGRAMMING Prepared By Prepared By : VINAY ALEXANDER PGT(CS) KV jhagrakhand.
16 April 2011 Alan, Edison, etc, Saturday.. Knowledge, Planning and Robotics 1.Knowledge 2.Types of knowledge 3.Representation of knowledge 4.Planning.
MDD-Kurs / MDA Cortex Brainware Consulting & Training GmbH Copyright © 2007 Cortex Brainware GmbH Bild 1Ver.: 1.0 How does intelligent functionality implemented.
Design Concepts ch-8
Principles of Programming & Software Engineering
Chapter 2 Object-Oriented Paradigm Overview
Interface Concepts Modeling Core Team
Analysis Classes Unit 5.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Complexity Time: 2 Hours.
Principles of Programming and Software Engineering
Web Service Modeling Ontology (WSMO)
Architecture Components
Knowledge Representation
Phil Tayco Slide version 1.0 Created Oct 2, 2017
Methontology: From Ontological art to Ontological Engineering
An Introduction to Software Architecture
Chapter 6: Programming Languages
Presentation transcript:

Domain Driven Design Day 2

DDD | Supple Design Inviting to change Reveals a deep model But … has no formula “… when complexity is holding back progress, honing the most crucial, intricate parts to a supple design makes the difference between getting sucked down into legacy maintenance and punching through the complexity ceiling” (Evans)

Supple Design | Overview Ubiquitous Language Model-Driven Design Intention- Revealing Interfaces Side-Effect-Free Functions Assertions Closure of Operations Standalone Classes Conceptual Contours make composition safe make side effects explicit simplify interpretation may use simplify interpretation reduce cost of change express model through draw from make safe and simple

SD | Intention-Revealing Interfaces Separation of Interface and Implementation Sense of effect, purpose “Name classes and operations to describe their effect and purpose, without reference to the means by which they do what they promise. (…) These names should conform to the Ubiquitous Language so that team members can quickly infer their meaning.” (Evans) Ubiquitous Language Model-Driven Design Intention- Revealing Interfaces express model through draw from

SD | Side-Effect-Free Functions Commands & queries State Change  Future Operations Anticipation “Strictly segregate commands (…) into very simple operations that do not return domain information. Further control side effects by moving complex logic into VALUE OBJECTS when a concept fitting the responsibility presents itself.” (Evans) Intention- Revealing Interfaces Side-Effect-Free Functions make safe and simple

SD | Assertions Entities: system state Pre-/post-conditions Specification Unit testing “State post-conditions of operations and invariants of classes and aggregates. (…) Seek models with coherent sets of concepts, which lead (…) to infer the intended assertions, accelerating the learning curve and reducing the risk of contradictory code”. (Evans) Intention- Revealing Interfaces Side-Effect-Free Functions Assertions make composition safe make side effects explicit make safe and simple

SD | Conceptual Contours Monolithic constructs Different concepts mixed together Cohesive Units “Decompose design elements (…) into cohesive units (…). Align the model with the consistent aspects of the domain that make it a viable area of knowledge in the first place”. (Evans) Model-Driven Design Conceptual Contours reduce cost of change

SD | Standalone Classes Interdependencies Mental overload Modules, aggregates Even more low coupling “Eliminate all other concepts from the picture. Then the class will be completely self- contained and can be studied and understood alone. Every such self-contained class significantly eases the burden of understanding a module.” (Evans) Model-Driven Design Standalone Classes simplify interpretation

SD | Closure of Operations High-level interface without dependency Implementer - Argument - Return Value “… define an operation whose return type is the same as the type of its argument(s). (…) Such an operation is closed under the set of instances of that type.” (Evans) Intention- Revealing Interfaces Closure of Operations Standalone Classes simplify interpretation may use

SD | Declarative Design Executable Specification Rule-based Programming Specialized Frameworks Domain-specific Languages Declarative Style of Design

SD | Declarative Style of Design Business Rules Specification (validation-selection-creation) Kind of predicate (can be combined using logical operations; closed under predicates) SpecificationObject {satisfied by}

SD | Declarative Style of Design public interface Specification { boolean isSatisfiedBy( Object candidate ); Specification and ( Specification other ); Specification or ( Specification other ); Specification not(); }

SD | “Procedure” Encapsulate complex logic in specialized VALUE OBJECTS with SIDE-EFFECT FREE FUNCTIONS. Write simple state-modifying operations, characterized with ASSERTIONS. Decouple model concepts (using a minimum of other types). Use a familiar formalism to make the protocol easy to grasp.