Tag Archives: model

Content strategy: a new chance for benefitting from domain modelling?

I have been interested in domain modelling for a long time. Analysis Patterns by Martin Fowler, Domain-Driven Design by Eric Evans and Streamlined Object Modeling by Jill Nicola, Mark Mayfield & Mike Abney greatly influenced my thinking and (some of) my work.

(The fundamental concepts described in Streamlined Object Modeling might actually be some of the most under-appreciated ideas in software development and information modelling.)

While I understood the benefits of good domain models early on, I can only recall one project incorporating a domain model into its software. Even when technology was able to effectively support implementing domain models, many developers seemed happy to read and write data structures to persistent storage manually and to manipulate these data structures with imperative code. To project managers, these things were probably too abstract, too invisible and too far removed from the myriad of immediate concerns they had to deal with in parallel.

And, of course, I probably didn’t make my point as well as I could have.

I was intrigued when I learned that content strategist had discovered domain modelling (and in particular Eric Evans’ work) for their purposes. Content strategists, if you read this, go and read Analysis Patterns and Streamlined Object Modeling, too — I’ll still be here when you’re done.

As I’m learning about content strategy and content management systems, I get a hunch (hope?) that this might actually be another chance to bring the benefits of domain modelling to the enterprise. This might be another chance to benefit from structured, connected and annotated information, and achieving objectives by interpreting these connections and annotations rather than writing lots and lots of imperative statements in code, process charts, rule lists or, for some of us, PowerPoint and Excel.

Content is likely to be much more tangible and immediately accessible to stakeholders than domain models ever where — as almost everyone has an opinion as to what needs to happen on the corporate website, I’m confident many stakeholders can be nudged into having an interest in content.

Let’s see how far I get this time…

Competing concerns in information modelling

This has been a recurring theme in my work so I figured I’d write about it:

Information models (domain models, object models, data models, content models) are typically subject to many different forces influencing their designs, and some of these forces can act in opposing directions. Some of these forces are specific to the problem at hand and its context while others are more generic and keep showing up in my work.

This post is about some of these more generic forces. (Or maybe its only about two potentially useful approaches.)

Avoiding redundancy vs. ease-of-use: Avoiding redundancy pushes towards fine-grained models in which classes and instances can be (re-) used in different contexts. A fine-grained model can be difficult to understand and may be difficult to use for developers, application/information managers and end-users. Ease-of-use pushes towards coarse-grained models which may be easier to understand but have a higher risk of inconsistencies if data is kept redundantly.

Instance-based vs. class-based differentiation: Class-based differentiation introduces different classes (and often inheritance hierarchies) to models in order to represent specific concepts. A high number of different classes can make a model unwieldy, difficult to understand and difficult to use, especially when the intent of and differences between classes are not described well. In contrast, instance-based differentiation represents specific concepts through instances of generic classes. In order to so, the model often has to introduce additional classes, e.g. for type, state or group objects. The resulting model typically has a simpler fundamental structure (fewer classes for core elements), but a necessarily higher level of abstraction can also make the model difficult to understand.

A few thoughts occured to me in this context:

Information access and modification are different concerns and might warrant different approaches: Command-Query Responsibility Segregation is one approach that might help here.

Information access & modification by administrators, developers and end-users are different concerns and might warrant different approaches:

In my experience (yours will vary), software systems tend to structure data according to development/runtime concerns, with some allowance being made for end-user concerns. Administration concerns tend to get little attention. Interestingly, this seems to be somewhat different for content management systems, likely because content managers are an essential end-user group in this context. CMSs are built to administer information in one structure and make it available in many different structures.

Could content management systems help address the different needs of administrators, developers and end-users? Even of administrators, developers and end-users of other integrated software systems?

And could this also have beneficial side effects with respect to automated testing, continuous integration & delivery, etc?