OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

tag message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [tag] handling optional (but normative) statements


 inline <JD>

-----Original Message-----
From: stephen.green@systml.co.uk [mailto:stephen.green@systml.co.uk] 
Sent: Monday, December 10, 2007 11:46 AM
To: tag@lists.oasis-open.org
Subject: Re: [tag] handling optional (but normative) statements

I agree we could state in a TA "a package contains a widget X" when the
spec says "a package MAY contain a widget X".

However there are strange side effects for the scenario I brought up
earlier:

What if the spec says:

"a package MAY contain a widget X but widget X MUST
  have property Y otherwise there MUST NOT be a widget X"

(I agree better wording would be possible like "a package MAY contain a
widget X if widget X
  contains property Y otherwise there MUST NOT be a widget X")

Two TAs might be

#TA1 "package contains a widget X"
#TA2 "widget X has property Y"

Then there might be a third TA which seems to contradict the first
because it has to negate the first
#TA3 "if NOT #TA2 then NOT #TA1"

How else could the TA(s) be written?

<JD> The problem with modeling TA3 as you did, is that it is not obvious
that the target of TA2 (the widget) is implicitly reused in TA1 which
has another target (the package). Now if you use a predicative form,
this link canbe made more explicit through variables: 
TA1(P,X) =  package(P) and widget(X) and contains(P, X)
TA2(W) = widget(W) and propertyof(W, Y) (note that Y is here assumed to
be known, not a variable)
Then you could say unambiguously: TA3(P) = for any widget X, not(TA2(X))
implies not(TA1(P, X)) 
(note:  here, I use the expression TA(x,y,z...) for the assertion
predicate)
</JD>

<JD> another approach is to consider we have two (not completely
equivalent) statements here, that do not try to break down the "package
part"  from the "widget part":
S1: "a package MAY contain a widget X with property Y"
S2: "a package MUST NOT contain a widget X that does not have property
Y"

#TA1a is now: "package contains a widget X with property Y"
#TA1b is now:  "package does not contain a widget X that does not have
property Y"
In a conformance profile  that preserves the optionality described in
S1, there would simply be no test case written for TA1a. But there could
be more demanding conformance profiles that will require TA1a to be true
for package targets. Both conformance profiles will however need a test
case to be derived from TA1b, that will map "false" to a "fail". Besides
all this, TA1a could be used in a test case that only verifies the
capabilities of an implementation (no testing against a specific
conformance profile), as in the "implementation statements" described in
the voting standard (see section 2.4 in
http://www.eac.gov/vvsg/part1/chapter02.php/)
However, you have a point that both #TA1a and #TA1b reuse the same #TA2
expression: "widget has property Y". It becomes then a convenience issue
to rewrite #TA1a and #TA1b so that they don't repeat this expression,
which is a hint to test case writers that they can reuse the same test
case derived from TA2:
 #TA1a' is : "package contains a widget X  AND TA2(X)"
#TA1b' is :  "not (package contains a widget X AND  not(TA2(X)))"
</JD>

To me it all makes more sense to the test writer when something is added
to include the MAY, the MUST and the MUST NOT, etc. I wouldn't want to
rule that as out of scope metadata. It seems it is the only way to pass
on from the spec how the TAs relate to eachother and to their outcomes
(their purposes, that is). I would see the MAY, MUST, etc as qualifying
something - perhaps the verb as in the prose or perhaps the TA as a
whole. Maybe it is metadata but if so I think it is still so much part
of the spec that it deserves to go with the TA, included by the TA
writers.

<JD> Stephen: initially, I wanted the result of a TA to be pass/fail as
I found it more intuitive (I believe so did you) and as a matter of
fact, TAs I have written in the past were of the pass/fail kind. But
like a few others in the TC I now agree that this may be too close to
test metadata, and that it is the job of a test case to actually decide
pass/fail - which is a conformance assessment - based on the true/false
of the TA this test case is derived from, and possibly in case of
MAY/SHOULD statement, interpreting true/false in a different way (e.g.
"false"  may map to "fail with warning". Or yet, no test case at all
will be written for this TA in case the conformance profile does not
care about this option). I believe the optional statements are a serious
challenge for pass/fail TAs... While they are not anymore if we scope
the TA role to only state a testable behavior/property (true/false). If
we leave the profile-dependent conformance decisions to derived test
cases, doesn't that simplify the job of writing Tas, while keeping these
more "reusable"?
</JD>. 

- Steve


Quoting "Durand, Jacques R." <JDurand@us.fujitsu.com>:

> Revisiting the proposals for handling optional statements:
>
> Examples:
>
> "a package MAY contain a widget X "
>
> "While the Sequence is not closed or terminated, the RM Source SHOULD 
> retransmit unacknowledged messages."
>
> The approach we were leaning toward at F2F, is to say: there is no TA 
> to write here, as it is impossible to violate such statements. Or at 
> least, one should wait for someone to write a conformance profile that

> "upgrades" such optional statements to MUST statements,  before 
> worrying about writing a TA for them.
>
> After more thoughts, I believe we need to reconsider this for two main
> reasons:
>
> 1- We agreed that TAs can be written with other goal in mind than 
> conformance. Here are two of these extra goals:
> - improve specification quality at the time it is written.
> By making sure that the (for now optional) feature is specified 
> clearly enough to be testable, we ensure that it will be testable 
> later on,

> should a conformance profile require it.
> - another use of TA that has been reported by others, e.g. the Voting 
> standard group: "implementation statements".
> See http://www.eac.gov/vvsg/part1/chapter02.php/, in section 2.3.  The

> idea is that one may want to know what an implementation is capable 
> of, independently of any conformance concerns. E.g. several options 
> exist, and some test suite will simply reveal which options are 
> supported and which are not, without any conformance profile 
> associated with these. In that case, clearly some TA will need be 
> written for all the SHOULD and MAY.
>
>
> 2- Even with conformance in mind, the TA is only about measuring 
> whether a specification feature is supported or not (true/false), and 
> NOT into making a conformance assessment. Support for specification 
> feature is a true or false proposition which is independent from the 
> requirement level MUST/SHOULD/MAY: these keywords matter when deciding

> of (pass/fail), not of (true/false).
> And different test cases could be derived from the same TA, one will 
> flag a "false" as a "pass with warning", the other as a "fail".
> There is no point to wait for a conformance profile to be fully 
> defined before writing the TA: the TA only depends on the feature to 
> be tested and does not vary with the conformance level. What to do 
> with the result of the TA expression (true/false), is precisely the 
> job of a test suite, and behind it of a conformance evaluation. Not 
> for the TA to be concerned about.
>
> Of course, I am not saying our guideline doc should mandate that folks
> *always* write TAs for optional statements. Only that such TAs are 
> useful, and should they decide to write such TAs they should do it the

> following way:
>
> Treat any of the 3 following statements in exactly the same way:
> "A package MAY contain a widget X "
> "A package SHOULD contain a widget X "
> "A package MUST contain a widget X "
>
> which means:
> - the same TA will equally address any one of these 3 normative 
> statements.
> - The assertion expression derived from each one of these normative 
> statements is then exactly the same, and proceeds from applying the 
> same
> rule: just ignore the <MAY/SHOULD/MUST> keyword, and give the 
> normative statement an assertive form: "the package contains a widget 
> X". (TA target = package) (the "bold statement" of UniSoft, see 
> http://www.unisoft.com/glossary.html
> <http://www.unisoft.com/glossary.html> )
>
> Immediate benefit:
> All the byzantine distinctions considered in F2F about the different 
> handling of use case #3 and use case #5 (see previous mail) go away.
>
> I suggest also to update the definition of TA as follows:
>
> replace:
> "A testable expression for evaluating adherence of an implementation 
> (or part of) to some normative statement or requirement in the 
> specification."
>
> with:
> "A testable expression for evaluating whether or not an implementation

> (or part of) exhibits a feature or behavior subject to a normative 
> statement or requirement in the specification."
>
> rationale:
> - this definition more clearly distanciates the role of a TA from 
> conformance evaluation. "Adherence" is still too close to conformance,

> which we carefully avoid to mention in anything concerning TA.
> - It puts the focus on measuring a feature /behavior, not on how well 
> the specification is followed (again too close to a conformance job).
> - "adherence to a normative statement" is meaningless in case of an 
> optional statement, if we agree a TA makes sense for such cases. Need 
> be more specific.
>
> Jacques
>




---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail.  You may a link to this group and all your TCs in
OASIS
at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]