Interview for Creating a Domain Model
"Creating a Domain Model" interview with Hal Helms
Michael Smith: This time we are talking with Hal Helms about his CFUNITED-05
talk "Creating a Domain Model". So why should a developer come to your session
Hal Helms: I'm going to be talking about looking at application development a
bit differently. As ColdFusion (and ColdFusion programmers) have matured and the
requirements for apps has moved from the simple "grab the data and display it"
type, developers run into issues of handling the complexity of a large-scale
application. I'm going to be talking about how to build domain models -- and
especially how a domain model API can help tame the complexity that undermines
the ongoing maintenance of software applications.
MS: What exactlyis a domain?
HH: A domain is just another word for area. In terms of a "domain model", we're
referring to the "area" the programmer is concerned with. This might be one very
small part of their company/organization, or it might be the entire
company/organization. But regardless of how large the domain is, the domain
model is a software representation - a sort of virtual world, if you will - of
the domain. And it's the programmer/architect's job to get this model right.
MS: So, is a domain model just another word for an application? HH: No. A domain
model is used by a developer to create a specific application, but the domain
model itself isn't an application. In fact, a really good domain model can be
used by several applications.
MS: How so?
HH: Take a simple example: you've defined the concept of a Customer in your
domain model. You start by asking "What sort of things does a Customer know
about itself?" followed by a second question, "What sort of things can a
MS: Ah, this is something you wrote about in your Occasional Newsletter
(www.halhelms.com) a while back. You called it "applied..." something-or-other.
HH: Applied ontology. Ontology is the study of the nature of being. So in
determining a domain model, you're really studying the nature of what elements
make up the domain, what those elements can do, and how they interact.
MS: "Ontology" sounds...a bit impractical. Is this something that people can
HH: Absolutely. For a simple app -- say creating a signup form -- then no domain
model is necessary. But as the sophistication of the app grows, moving from the
MS: Page-centric model?
HH: Where everything is on one page, or at most, you may have some includes of
MS: So you move FROM the page-centric model to?
HH: To the domain model, in which the domain model is a virtual representation
of your little world. Pages then form an application. One application might need
only a portion of the richness of the entire domain model.
MS: And domain models -- what language are these done in?
HH: They can be done in almost any language. But having an OO language like ColdFusion to use
sure makes life easier for us ol' domain modelers.
MS: That is excellent - I will look forward to seeing you at CFUNITED.