I try to understand the difference between software development approaches like MDE, and design processes like UCD:
- UCD is a framework of iterative processes. The end-user is the center of the development process and is the main source of all requirements. The goal is a software product/prototype which has a high usability.
- MDE focuses on the problem-domain with all its activities and information.
To me it seems like these two things are difficult to combine. For example, I may create an application based on the UCD framework because I want to reach a good usability. But I have to focus on the problem-domain because most of the information and actities comes from there.
How can I combine both? Are these two different processes, which are used at a different stage?
The two approaches address different needs. They can be used independently of each other but are complementary when combined:
- Model Driven Engineering aims to drive development with models. The focus is on functionality / capability needed to address domain needs. Of course, if you’d have a perfect domain solution, it wouldn’t be very efficient if it would be extremely difficult for the users to use.
- User Centered Design aims on contrary to maximise the usability of the product from the point of view of the user. But usability makes only sense if you have something useful to use, i.e. some capabilities.
- Both have an overlap: they need to identify the user goals and needs.
So the question is how to best combine the two without doing twice the work regarding the overlapping part. In this regard, I’d like to quote the fathers of UML who wrote in their book The Unified Development Process:
The problem is that the [detailed use-case] descriptions often contain implicit decisions about the user interface. Later, when the user interface designers suggest suitable user interfaces for the use-case, they might be limited by those implicit decisions.
Interestingly, these early MDE supporters also promote early UCC promoters on the same page of their book (page 164):
Lary Constantine [and Lucy Lockwood, please – she’s not even mentioned in the paragraph although she’s identified as co-author of the article referenced to support the claim…] (…) proposes that use-case specifiers first prepare lightweight use case descriptions – essential use-cases — that do not contain any implicit user interface decision. (…) Then the (…) designers can use these essential use cases as input to create user interfaces without being bound by any implicit decision.
Of course, this is only one example about combining the two. Nowadays, UCC is no longer only about user interface, but about user experience, which may lead to reframing the user’s goals before any use cases identification (or storming of any story map). The good news is that both approaches are iterative, so it’s mainly about aligning the common parts in the iterations.
P.S: If you would apply both approaches in different stages, you would be in an extreme waterfall approach, and could not benefit of the synergy of considering both angles at the same time. So the increments should go in the same pace or at least be interleaved.