evans_pt01.qxd 7/30/2003 3:57 PM Page 1 Putting the Domain Model to Work

Similar documents
ADVANCED MACHINE LEARNING WITH PYTHON BY JOHN HEARTY DOWNLOAD EBOOK : ADVANCED MACHINE LEARNING WITH PYTHON BY JOHN HEARTY PDF

Lucy Calkins Units of Study 3-5 Heinemann Books Support Document. Designed to support the implementation of the Lucy Calkins Curriculum

Harvesting the Wisdom of Coalitions

Common Core Exemplar for English Language Arts and Social Studies: GRADE 1

Introduction. 1. Evidence-informed teaching Prelude

TASK 2: INSTRUCTION COMMENTARY

Big Fish. Big Fish The Book. Big Fish. The Shooting Script. The Movie

Planning a Webcast. Steps You Need to Master When

DG 17: The changing nature and roles of mathematics textbooks: Form, use, access

Notetaking Directions

LOYOLA CATHOLIC SECONDARY SCHOOL FEB/MARCH 2015

END TIMES Series Overview for Leaders

Grade 6: Module 2A Unit 2: Overview

Multiple Intelligence Teaching Strategy Response Groups

Disciplinary Literacy in Science

Opening Essay. Darrell A. Hamlin, Ph.D. Fort Hays State University

Book Review: Build Lean: Transforming construction using Lean Thinking by Adrian Terry & Stuart Smith

WHAT DOES IT REALLY MEAN TO PAY ATTENTION?

Notes on The Sciences of the Artificial Adapted from a shorter document written for course (Deciding What to Design) 1

Unpacking a Standard: Making Dinner with Student Differences in Mind

Secret Code for Mazes

Why Pay Attention to Race?

Fundraising 101 Introduction to Autism Speaks. An Orientation for New Hires

Intensive Writing Class

Community Rhythms. Purpose/Overview NOTES. To understand the stages of community life and the strategic implications for moving communities

Fountas-Pinnell Level P Informational Text

Information for Candidates

Cognitive Thinking Style Sample Report

Maths Games Resource Kit - Sample Teaching Problem Solving

Evidence-based Practice: A Workshop for Training Adult Basic Education, TANF and One Stop Practitioners and Program Administrators

Urban Legends Three Week Unit 9th/10th Speech

WORK OF LEADERS GROUP REPORT

Secondary English-Language Arts

Section 7, Unit 4: Sample Student Book Activities for Teaching Listening

Synthesis Essay: The 7 Habits of a Highly Effective Teacher: What Graduate School Has Taught Me By: Kamille Samborski

How to make an A in Physics 101/102. Submitted by students who earned an A in PHYS 101 and PHYS 102.

Applying ADDIE Model for Research and Development: An Analysis Phase of Communicative Language of 9 Grad Students

PGCE Secondary Education. Primary School Experience

On May 3, 2013 at 9:30 a.m., Miss Dixon and I co-taught a ballet lesson to twenty

GENERAL COMMENTS Some students performed well on the 2013 Tamil written examination. However, there were some who did not perform well.

Critical Thinking in Everyday Life: 9 Strategies

2014 Free Spirit Publishing. All rights reserved.

SETTING THE STAGE. News in Review January 2013 Teacher Resource Guide ROB FORD: Toronto s Controversial Mayor. Vocabulary Platform

Total Knowledge Management. May 2002

Life Imitates Lit: A Road Trip to Cultural Understanding. Dr. Patricia Hamilton, Department of English

ANGLAIS LANGUE SECONDE

Professional Learning Suite Framework Edition Domain 3 Course Index

Innovating Toward a Vibrant Learning Ecosystem:

Rottenberg, Annette. Elements of Argument: A Text and Reader, 7 th edition Boston: Bedford/St. Martin s, pages.

Developing Grammar in Context

EXPERIENCE UGA Outstanding Process Improvement: Increase Service to Students

EQuIP Review Feedback

"Be who you are and say what you feel, because those who mind don't matter and

Grade 6: Module 2A: Unit 2: Lesson 8 Mid-Unit 3 Assessment: Analyzing Structure and Theme in Stanza 4 of If

Success Factors for Creativity Workshops in RE

The lasting impact of the Great Depression

USING INTERACTIVE VIDEO TO IMPROVE STUDENTS MOTIVATION IN LEARNING ENGLISH

Knowledge based expert systems D H A N A N J A Y K A L B A N D E

White Paper. The Art of Learning

Lecturing Module

PROCESS USE CASES: USE CASES IDENTIFICATION

HOLISTIC LESSON PLAN Nov. 15, 2010 Course: CHC2D (Grade 10, Academic History)

Changing User Attitudes to Reduce Spreadsheet Risk

Global Convention on Coaching: Together Envisaging a Future for coaching

PREP S SPEAKER LISTENER TECHNIQUE COACHING MANUAL

Chapter 4 - Fractions

Positive turning points for girls in mathematics classrooms: Do they stand the test of time?

Not the Quit ting Kind

ASTEN Fellowship report Priscilla Gaff Program Coordinator Life Science

Development and Innovation in Curriculum Design in Landscape Planning: Students as Agents of Change

Lecturing in the Preclinical Curriculum A GUIDE FOR FACULTY LECTURERS

American Studies Ph.D. Timeline and Requirements

Tutoring First-Year Writing Students at UNM

UCC2: Course Change Transmittal Form

Leader as Coach. Preview of the Online Course Igniting the Fire for learning

International Viewbook :Layout 1 2/20/12 12:04 PM Page 1. International Student Viewbook

CREATE YOUR OWN INFOMERCIAL

Maynooth University Study Abroad in Ireland

RTV 3320: Electronic Field Production Instructor: William A. Renkus, Ph.D.

HEROIC IMAGINATION PROJECT. A new way of looking at heroism

Introduction to CRC Cards

What Teachers Are Saying

The Indices Investigations Teacher s Notes

FREE COLLEGE Can Happen to You!

IN THIS UNIT YOU LEARN HOW TO: SPEAKING 1 Work in pairs. Discuss the questions. 2 Work with a new partner. Discuss the questions.

How People Learn Physics

Book Reviews. Michael K. Shaub, Editor

SAMPLE PAPER SYLLABUS

The Success Principles How to Get from Where You Are to Where You Want to Be

Cambridge NATIONALS. Creative imedia Level 1/2. UNIT R081 - Pre-Production Skills DELIVERY GUIDE

Davidson College Library Strategic Plan

Developing an Assessment Plan to Learn About Student Learning

1 3-5 = Subtraction - a binary operation

Vision for Science Education A Framework for K-12 Science Education: Practices, Crosscutting Concepts, and Core Ideas

Eliciting Language in the Classroom. Presented by: Dionne Ramey, SBCUSD SLP Amanda Drake, SBCUSD Special Ed. Program Specialist

Beyond The Forest Jewish Presence In Eastern Europe, by Loli Kantor

Films for ESOL training. Section 2 - Language Experience

Indiana Collaborative for Project Based Learning. PBL Certification Process

A Study of Video Effects on English Listening Comprehension

Tuesday 13 May 2014 Afternoon

Transcription:

evans_pt01.qxd 7/30/2003 3:57 PM Page 1 I Putting the Domain Model to Work

evans_pt01.qxd 7/30/2003 3:57 PM Page 2 This eighteenth-century Chinese map represents the whole world. In the center and taking up most of the space is China, surrounded by perfunctory representations of other countries. This was a model of the world appropriate to that society, which had intentionally turned inward. The worldview that the map represents must not have been helpful in dealing with foreigners. Certainly it would not serve modern China at all. Maps are models, and every model represents some aspect of reality or an idea that is of interest. A model is a simplification. It is an interpretation of reality that abstracts the aspects relevant to solving the problem at hand and ignores extraneous detail. Every software program relates to some activity or interest of its user. That subject area to which the user applies the program is the domain of the software. Some domains involve the physical world: The domain of an airline-booking program involves real people getting on real aircraft. Some domains are intangible: The domain of an accounting program is money and finance. Software domains usually have little to do with computers, though there are exceptions: The domain of a source-code control system is software development itself. 2 PART I

evans_pt01.qxd 7/30/2003 3:57 PM Page 3 To create software that is valuably involved in users activities, a development team must bring to bear a body of knowledge related to those activities. The breadth of knowledge required can be daunting. The volume and complexity of information can be overwhelming. Models are tools for grappling with this overload. A model is a selectively simplified and consciously structured form of knowledge. An appropriate model makes sense of information and focuses it on a problem. A domain model is not a particular diagram; it is the idea that the diagram is intended to convey. It is not just the knowledge in a domain expert s head; it is a rigorously organized and selective abstraction of that knowledge. A diagram can represent and communicate a model, as can carefully written code, as can an English sentence. Domain modeling is not a matter of making as realistic a model as possible. Even in a domain of tangible real-world things, our model is an artificial creation. Nor is it just the construction of a software mechanism that gives the necessary results. It is more like moviemaking, loosely representing reality to a particular purpose. Even a documentary film does not show unedited real life. Just as a moviemaker selects aspects of experience and presents them in an idiosyncratic way to tell a story or make a point, a domain modeler chooses a particular model for its utility. The Utility of a Model in Domain-Driven Design In domain-driven design, three basic uses determine the choice of a model. 1. The model and the heart of the design shape each other. It is the intimate link between the model and the implementation that makes the model relevant and ensures that the analysis that went into it applies to the final product, a running program. This binding of model and implementation also helps during maintenance and continuing development, because the code can be interpreted based on understanding the model. (See Chapter 3.) PUTTING THE DOMAIN MODEL TO WORK 3

evans_pt01.qxd 7/30/2003 3:57 PM Page 4 2. The model is the backbone of a language used by all team members. Because of the binding of model and implementation, developers can talk about the program in this language. They can communicate with domain experts without translation. And because the language is based on the model, our natural linguistic abilities can be turned to refining the model itself. (See Chapter 2.) 3. The model is distilled knowledge. The model is the team s agreedupon way of structuring domain knowledge and distinguishing the elements of most interest. A model captures how we choose to think about the domain as we select terms, break down concepts, and relate them. The shared language allows developers and domain experts to collaborate effectively as they wrestle information into this form. The binding of model and implementation makes experience with early versions of the software applicable as feedback into the modeling process. (See Chapter 1.) The next three chapters set out to examine the meaning and value of each of these contributions in turn, and the ways they are intertwined. Using a model in these ways can support the development of software with rich functionality that would otherwise take a massive investment of ad hoc development. The Heart of Software The heart of software is its ability to solve domain-related problems for its user. All other features, vital though they may be, support this basic purpose. When the domain is complex, this is a difficult task, calling for the concentrated effort of talented and skilled people. Developers have to steep themselves in the domain to build up knowledge of the business. They must hone their modeling skills and master domain design. Yet these are not the priorities on most software projects. Most talented developers do not have much interest in learning about the specific domain in which they are working, much less making a major commitment to expand their domain-modeling skills. Technical people enjoy quantifiable problems that exercise their technical skills. Domain work is messy and demands a lot of complicated new knowledge that doesn t seem to add to a computer scientist s capabilities. 4 PART I

evans_pt01.qxd 7/30/2003 3:57 PM Page 5 Instead, the technical talent goes to work on elaborate frameworks, trying to solve domain problems with technology. Learning about and modeling the domain is left to others. Complexity in the heart of software has to be tackled head-on. To do otherwise is to risk irrelevance. In a TV talk show interview, comedian John Cleese told a story of an event during the filming of Monty Python and the Holy Grail. They had been shooting a particular scene over and over, but somehow it wasn t funny. Finally, he took a break and consulted with fellow comedian Michael Palin (the other actor in the scene), and they came up with a slight variation. They shot one more take, and it turned out funny, so they called it a day. The next morning, Cleese was looking at the rough cut the film editor had put together of the previous day s work. Coming to the scene they had struggled with, Cleese found that it wasn t funny; one of the earlier takes had been used. He asked the film editor why he hadn t used the last take, as directed. Couldn t use it. Someone walked in-shot, the editor replied. Cleese watched the scene again, and then again. Still he could see nothing wrong. Finally, the editor stopped the film and pointed out a coat sleeve that was visible for a moment at the edge of the picture. The film editor was focused on the precise execution of his own specialty. He was concerned that other film editors who saw the movie would judge his work based on its technical perfection. In the process, the heart of the scene had been lost ( The Late Late Show with Craig Kilborn, CBS, September 2001). Fortunately, the funny scene was restored by a director who understood comedy. In just the same way, leaders within a team who understand the centrality of the domain can put their software project back on course when development of a model that reflects deep understanding gets lost in the shuffle. This book will show that domain development holds opportunities to cultivate very sophisticated design skills. The messiness of most PUTTING THE DOMAIN MODEL TO WORK 5

evans_pt01.qxd 7/30/2003 3:57 PM Page 6 software domains is actually an interesting technical challenge. In fact, in many scientific disciplines, complexity is one of the most exciting current topics, as researchers attempt to tackle the messiness of the real world. A software developer has that same prospect when facing a complicated domain that has never been formalized. Creating a lucid model that cuts through that complexity is exciting. There are systematic ways of thinking that developers can employ to search for insight and produce effective models. There are design techniques that can bring order to a sprawling software application. Cultivation of these skills makes a developer much more valuable, even in an initially unfamiliar domain. 6 PART I