DCI - Not your Grandfather's Object-Oriented programming

Table of Contents

Format: Tutorial
Duration: 90 minutes

Abstract

Thirty years ago Trygve Reenskaug published his now famous Model-View-Controller architecture. It is an architecture that is widely used and widely understood — or is it? If you dig into the history and read some of the publications, it is more about the mental model of the end user than about helping the programmer register dependencies between objects; more about organizational design of the development teams than technical coupling and cohesion; more about people than technology. Yet even at this level of depth and appreciation, MVC fails to capture key components of the end-user mental model: their notion of the roles in a transaction, of the mapping of the roles to objects, and of the algorithms that thread through the roles to carry out what the user believes the program is doing on his or her behalf. Now, Trygve has completed the other half of MVC: it's called Data, Context and Interactions, or DCI. DCI allows programmers to directly capture Use Case algorithms in the code instead of distributing them across more objects than a programmer cares to try to understand at a time. This talk gives a taste of why DCI came about and the basics of its architectural rhythms.

This talk reports the current state of joint research being led by Trygve Reenskaug, inventor of Model-View-Controller, and Jim Coplien, Agile software development expert. DCI is also being broadly applied by practitioners worldwide. This talk returns to the roots of object-orientation — roots that are close to Agile origins of customer focus and supporting change, as well as a focus on working software. The result is a new kind of design that is closer to the vision of object-orientation originally articulated by Kay, Nygaard and Dahl. The approach is controversial because it runs against common object education in contemporary academia. However, it is easy to compare current popular orientation with DCI and see that DCI is even better at meeting the claims of contemporary OO than contemporary OO is. Further, DCI meets the desideratæ of the Agile manifesto having to do with working software, since it is a better match for the end-user mental model; since it better divides design along the lines of common change; and since it allows customer engagement more in terms of customer concepts. This approach will be highlighted in the forthcoming Wiley book, "Lean Architecture and Agile Software."

The lecture is about 70 minutes with about 20 minutes allocated to the expected questions and discussion.

Bio

Jim ("Cope") Coplien is a Software Architecture and Agile Consultant at Gertrud & Cope in Denmark. He has a 25-year history as an "early adopter" and innovator behind several strategic innovations in software: his C++ Idioms book was one of the major sources for Design Patterns; his work on Organizational Patterns was one of the foundations of the structural components of XP and was the inspiration for Scrums. His books cover areas as diverse as C++ programming, software design, and organizational design. His forthcoming book "Lean Architecture and Agile Software" will be published by Wiley. His current professional focus areas include Lean software architecture, highlighting the challenges of test-driven development, and Scrum process improvement using Organizational Patterns. His current day-to-day work includes architecture reviews, coding, and helping organizations work more effectively in lean economic conditions through process improvement and reduction of waste. His current hobby is creating advanced (housing) architecture CAD tools based on pattern languages. He lives with his wife and son in Mørdrup, Denmark. When he grows up, he wants to be an anthropologist.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Jul 29, 2009

    Vasco Duarte says:

    To what level is the DCI model going to be introduced? Can the participants expe...

    To what level is the DCI model going to be introduced? Can the participants expect some actual code being shown as a way to illustrate the concepts in DCI or should they expect only to be familiar with the concepts at the end of the session?