Home > Patterns and Practices > CRUD User Interfaces around entities Anti-Pattern

CRUD User Interfaces around entities Anti-Pattern

I am by no means an UI Design expert, but I am just blogging my current thoughts on the topic. Also this is my personal opinion (based on the limited experience I have) and I might change my opinion with time as I get to see better frameworks.

There is this school of thought “automagically generating user interfaces based on a model” (either the Domain Model or the Data Model). The most prominent examples which I had seen include

  1. A Business Application Platform which supports building a domain model on the fly and provides UI Design capabilities (e.g. Microsoft Dynamics CRM, Sharepoint). The UI is modeled as a projection of the business domain. You get Forms to Create and Update domain entities, Lists to View and Delete domain entities.
  2. A Framework which supports UI scaffolding. This may not be as bad as the previous one, since there may not be a notion of permanence here. I see this as an anti-pattern even in the prototyping stage as it might limit/bias the UI Designer’s / Developer’s  ideas. Examples include Ruby on Rails Scaffolding, Subsonic Scaffold control, ASP.NET Dynamic Data. I know very well that these are good frameworks and do not recommend anyone to use the generated UI in production applications. Also, I am talking only about the automagically generated UI.

A custom application where you do not have an UI Designer and the developer decides to structure the UI design around the domain model / data model. The UI will provide forms to Create and Update, Grids to View and Delete domain entities.

This CRUD of entities based  UI Design can be considered a leaky abstraction where the domain model (or worse data model) has leaked into the UI. The Worst part is that the end users of the system are forced to wriggle around their daily tasks using the provided User Interface. So if we do not structure our UI as CRUD of entities what should we structure them around?

User Interfaces should be designed around the tasks which the Users perform day to day. For example a task might include displaying / editing information from multiple entities. The same data can be visualized differently in a way it is the most intuitive to the users. So if you are thinking of building a Framework to automatically generate CRUD User Interfaces around entities understand the limitations it will impose on the end users of the system.

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: