[PATCH 1/4] eng: Update EARS syntax

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Mar 18 05:50:49 UTC 2021


On 18/03/2021 01:43, Chris Johns wrote:

> On 18/3/21 4:34 am, Sebastian Huber wrote:
>> The document used the EARS syntax from 2009 which slightly changed in
>> 2016, see "Listens Learned (8 Lessons Learned Applying EARS)".  The
>> optional pre-conditions moved to the state-driven pattern.  This refined
>> syntax fits better to the action requirements.
>>
>> Update #3715.
>> ---
>>   eng/req/howto.rst       | 38 +++++++++++++++++++-------------------
> The following seems like a formal specification and the section is "How to". Is
> the section really "Specification", that is specification of requirements?

This how-to section should help to write items of this type:

https://docs.rtems.org/branches/master/eng/req/items.html#spectypeactionrequirementitemtype

Action requirement items are a generator for event-driven requirements.

>
>>   eng/req/req-for-req.rst | 30 ++++++++++++++++++++----------
>>   2 files changed, 39 insertions(+), 29 deletions(-)
>>
>> diff --git a/eng/req/howto.rst b/eng/req/howto.rst
>> index 8481214..ee239d4 100644
>> --- a/eng/req/howto.rst
>> +++ b/eng/req/howto.rst
>> @@ -285,18 +285,18 @@ Action Requirements
>>   
>>   Use :ref:`SpecTypeActionRequirementItemType` items to specify and validate
>>   directive calls.  Action requirements are a generator for event-driven
>> -requirements which should be written in the following :ref:`syntax
>> -<ReqEngSyntax>`:
>> +requirements.  Such requirements should be written in the following
>> +:ref:`syntax <ReqEngSyntax>`:
>>   
>> -    *When* <optional preconditions> <trigger>, the <system name> shall
>> -    <system response>.
>> +    **While** <pre-condition>, **while** ..., **when** <trigger>, the <system
>> +    name> shall <system response>.
> Does the special formatting imply something special, ie **While** etc?

Yes, this is the notation used to describe the EARS syntax:

https://alistairmavin.com/ears/

>
>> -The <optional preconditions> are the pre-conditions of the action requirement.
>> -The <trigger> is the action of the action requirement.  The post-conditions
>> -should provide a list of the <system name> shall <system response> clauses.
>> -Each transition in the transition map is an event-driven requirement composed
>> -of the pre-condition states, the action, and the post-condition states defined
>> -by the map entry.
>> +The list of <pre-condition> clauses are the pre-conditions in a particular
> What do the '<' and '>' imply? Should `<pre-condition>` be used?

This was an attempt to explain the relationship between the EARS 
notation and the attributes of the item. I will try to make this more clear.

>
>> +state of the action requirement.  The <trigger> is the action of the action
>> +requirement.  The post-conditions in a particular state provide a list of the
>> +<system name> shall <system response> clauses.  Each transition in the
>> +transition map is an event-driven requirement composed of the pre-condition
>> +states, the action, and the post-condition states defined by the map entry.
> If you inspect the language used in detail you have a <trigger> that is an
> "action" of an "action requirement" however <trigger> is the only piece that has
> any special annotation yet it depends on "action" and "action requirement". In
> the current text "action requirement" is the section so that is OK but it does
> not deal with "action".
In the action code block of the item there may be a bit of code and not 
just a single function call.

In a follow up patch we have:

The trigger of the action requirement is defined by the link to an
:ref:`SpecTypeInterfaceFunctionItemType` or an
:ref:`SpecTypeInterfaceMacroItemType` item using the
:ref:`SpecTypeInterfaceFunctionLinkRole`.

And:

.. code-block:: yaml

     links:
     - role: interface-function
       uid: ../if/create
     test-action: |
       ctx->status = rtems_timer_create( ctx->name, ctx->id );

The link to the :c:func:`rtems_timer_create` interface specification 
item with
the ``interface-function`` link role defines the trigger.  The 
``test-action``
defines the trigger code for the validation test.   The validation test is
defined in this item along with the specification.

>
>>   Use ``CamelCase`` for the pre-condition names, post-condition
>>   names, and state names.  The more conditions a directive has, the shorter
> And to highlight my point is "pre-condition" and "post-condition" actually
> `<pre-condition> and <post-condition>?
No, this text refers to the attributes of the action requirement item.
>
> Is the snake-case for the tags defined and mandated

You mean the item attribute keys?

https://docs.rtems.org/branches/master/eng/req/items.html#name

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/



More information about the devel mailing list