Here I’m proposing Model-Feature-Sensible software architectural pattern. At the same time, I’m refactoring my individual project Ackfock.com according to this pattern.
- The Model of the application contains object modeling, object relationships, logic, and rules of such application domain. It should be similar to Model in other patterns.
- Features are what a software can do for users in pure data perspective. For example, a feature can be an internal data processing procedure to achieve a user bank transaction, which user can’t see. Features is the center of Model-Feature-Sense pattern.
- A Sensible is a UI component. Synthesis of Sensibles forms the UI that a user can interact with. The users of the UI can be either humans or software agents. Therefore, a command-line or API software can also be built upon Model-Feature-Sensible pattern.
Relationship between Model-Feature-Sensible
Features provide functionality to users based on abstract Model through concrete Sensibles (UI).
Sensibles conform to abstract objects and rules from the Model to synthesize concrete UI.
Code in Sensibles invoke functions in Features during the interaction between the user and the software.
Benefits: it’s a user value centered pattern.
The central role of Model-Feature-Sensible pattern is Feature. Features are functionality of the software in pure data perspective, which provide utility value for users. Then, business managers, marketers, designers, coders, and testers can share the same language and target. Besides, it makes more automation possible. For example, materials of either product feature descriptions, feature change logs, reports, or marketing campaigns, etc, can be generated from the code in Features.
Sensibles have to constitute the experience integrity, so users can feel the software as an item in the real world to say “I want it!”. Thus, Sensibles provide the UX value to users. Sometimes, UX value can be more important than utility value to users.
Sensible is a conceptual improvement for the traditional View. View is visual dominance, but there are voice first, motion first, text first, hybrid sensational, and other types of applications. Since it’s about sensations, why not choosing a closer term to sensation? Therefore, Sensible should be a much better concept than View, especially we’re trending into Metaverse and IoT applications.
There’s no sample, yet. I’m refactoring Ackfock.com into this pattern. I might do an open source sample project in the future.
There should be some existing patterns similar to or the same as what I propose here. If you know one, please tell me. And feel free to give me other comments or feedback.