June 11, 2013
Enola Labs

Enola Labs creates custom strategy and products for mobile and web.

Let’s Talk

Subscribe to our blog:

By: Gene Fojtik, Enola Labs COO

I am an architect. I design systems, and have done so for the past seventeen years. My solutions are typically in the very large system-of-systems category. These systems are on an Enterprise level, requiring rule inference engines, business process automation, mathematical solvers, and numerous other system components.

When approaching these complex programs, I typically take a Domain Driven Design (DDD) approach or a Model Driven Architecture (MDA) approach as defined by the Object Management Group (OMG). Understanding the underlying data model and behavior is key to delivering these class of systems. The MDA and DDD approach, coupled with Unified Modeling Language (UML 2.x) , and a few other OMG specifications, such as Product Rule Representation (PPR1.0), Business Process Modeling Notation (BPMN2.0), and Semantics of Business Vocabulary and Business Rules (SBVR), provide a great modeling mechanism to capture the system specifications as first class UML citizens.

The overall premise of Domain-Driven Design is as follows:

  • Placing the project’s primary focus on the core domain and domain logic.
  • Basing complex designs on a model of the domain
  • Initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.

The overall premise of Model Driven Architecture is as following:

  • Separating design from architecture through abstractions
  • Platform-Independent Model (PIM): The model describes the behavior and structure of the application regardless of the implementation platform.
  • Computation-Independent Model (CIM): The most abstract model in MDA framework, which represents the context and purpose of the model without any computational complexities.
  • Platform-Specific Model (PSM): The model may not be executed but it contains all required information regarding a specific platform that developers may use to implement the executable code.

These approaches and techniques work great when the overall goal is system characterization and optimization, specifically in a high automation domain. My primary objective during my career has been designing and delivering next generation factory systems for some of the top global semiconductor manufacturing companies. When it came to the systems I designed in this space, when and if a human needed to interact with the system, I had failed.

With both DDD and MDA, the overall user interaction and experience is neglected, or comes as an afterthought within the overall design and development. Within the web and mobile application space, user experience is the primary key to success. This is where User Centered Design (UCD) comes into play.

UCD differs from traditional software design in the perspective to conceptual modeling. It concentrates on knowledge about the context of use rather than the features of problem domain [Entities & Behavior]. UCD optimizes the product around how users can, want or need to use the product. UCD provides a platform in which the needs, wants and limitations of end-users of a product are given extensive attention at each of the design processes. UCD follows the ISO standard ‘Human-centered design for interactive systems [ISO ISO 9241-210:2010].

The ISO standard describes 6 key principles that will ensure a design is user centered:

1. The design is based upon an explicit understanding of users, tasks and environments.

2. Users are involved throughout design and development.

3. The design is driven and refined by user-centered evaluation.

4. The process is iterative.

5. The design addresses the whole user experience.

6. The design team includes multidisciplinary skills and perspectives.

Standards and methods are a language I speak fluently, and I’ve been able to come up to speed with the UCD process rather quickly. The key element missing with this space is a standard based approach to modeling and documenting the overall artifacts required at each step of UCD. UCD needs a complimentary standard modeling approach, as MDA/DDD both have UML. If you have insight into the best practices or modeling for UCD, please reach out to me.