mbeddr is of course targeted at technical users, people who develop embedded software based on C and mbeddr’s C extensions. However, there are also aspects of mbeddr that are aimed at non-technical people. In particular, the requirements management support is clearly aimed at non-developers: all kinds of stakeholders who write requirements, or who add some formal business logic into requirements (mbeddr’s requirements system is extensible in that way).
So how can you create DSLs and editors that are friendly to non-programmers? Many of these people are familiar with Word or DOORS as requirements management tools, so we should try to replicate the experience (while not adopting all the disadvantages of these tools).
Over the last few days we have improved our requirements management language in this respect. Below is an example of the tutorial (demo) requirements:
Note how the model/program uses (relatively) nice formatting and a hierarchical structure for the requirements. However, within the text blocks, you can still use real (refactoring-safe) references, and the stuff below the line are formal models that can be checked and processed. One thing we’ve learned is that non-programmers often don’t like IDE-like tools, but prefer buttons. So we’ve made the editor to optionally show buttons for the most important actions: add a new requirement, add a comment, move requirements up or down or make them a child of the previous sibling. The following screenshot shows the editor with helper buttons enabled:
Sometimes it is necessary to get a better overview over the requirements, and not be distracted by the details specified for each requirement. To enable this, we have created the Outline mode, where only the number, heading and tag of the requirements is shown. You can edit the details of the currently selected requirement in the inspector:
Notice how this rendering makes it look very familiar to non programmers, it provides some of the expected ways of editing things (buttons), but it still is highly structured (schema-driven) and formal parts can be added whenever needed. You also get diff/merge for free! We think this is a pretty great way to manage requirements!