blob: 18f57023a0ed22ed5ff92a6e76eec26a2ce865cb [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-AJQLv2ldVv5KN9eUbdQe_g"
name="new_guideline,_6jXzYNcKEdqz_d2XWoVt6Q" guid="-AJQLv2ldVv5KN9eUbdQe_g" changeDate="2007-07-23T12:28:34.641-0700"
version="1.0.0">
<mainDescription>&lt;p>&#xD;
To write a good requirement, you must write it as a complete sentence, with a subject and a predicate. The&#xD;
subject&amp;nbsp;is an Actor, a stakeholder, the system under development, or a design entity that is related to the&#xD;
requirement. The predicate specifies an action or intended result that is done for, by, with, or to the subject, often&#xD;
including conditions and performance criteria.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Thus, you can analyze a requirement from a grammatical point of view. For example:&#xD;
&lt;/p>&#xD;
&lt;blockquote>&#xD;
&lt;p>&#xD;
&lt;em>The order entry clerk&amp;nbsp;shall be able to complete 10 customer orders in less than two hours.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;p>&#xD;
This requirement has a subject (the order entry clerk, who is an Actor), a specific and measurable end state (10&#xD;
customer orders completed), and a performance criterion (in less than two hours).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
In stakeholder requirements, use of the verb form &quot;shall be able to&quot; makes it clear that the requirement&amp;nbsp;specifies&#xD;
something that the stakeholder must be &lt;strong>able&lt;/strong> to do, but is not (necessarily) forced to do. In system&#xD;
requirements, the verb form &quot;shall &amp;lt;action&amp;gt;&quot; makes it clear that the system must perform this action under the&#xD;
specified conditions.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Numbered and bulleted lists may make writing clearer in some cases, but each list item must be a complete requirement&#xD;
in itself to maximize the benefit of any traceability information.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Words such as &lt;strong>all&lt;/strong>, &lt;strong>every,&lt;/strong> and &lt;strong>some&lt;/strong> can lead to ambiguity. Can you be&#xD;
certain that you have taken into account &lt;strong>all&lt;/strong> cases?&amp;nbsp; What proportion of the whole&amp;nbsp;does&#xD;
&lt;strong>some&lt;/strong> represent?&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The following simple guidelines will help you&amp;nbsp;write better requirements. For consistency, these examples are all&#xD;
in the context of an aircraft. &lt;a class=&quot;elementlinkwithusertext&quot;&#xD;
href=&quot;./../../../openup/guidances/supportingmaterials/references.html#TEL06&quot; guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;>[TEL06]&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Define one requirement at a time. For example,&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The pilot shall be able to control the aircraft's angle of climb with one hand.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;em>The pilot shall be able to feel the angle of climb from the climb control.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Avoid conjunctions (&lt;b>and&lt;/b>, &lt;b>or&lt;/b>) that make multiple requirements. For example, use:&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The navigator shall be able to view the aircraft's position relative to the route's radio beacons.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;em>The navigator shall be able to view the aircraft's position as estimated by inertial guidance.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;p>&#xD;
instead of:&#xD;
&lt;/p>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The navigator shall be able to view the aircrafts position relative to the route's radio beacons or as&#xD;
estimated by the inertial guidance.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;p>&#xD;
The latter form&amp;nbsp;is potentially dangerous because it is not clear whether the &quot;or&quot;&amp;nbsp;indicates that the&#xD;
navigator can chose which method to use for navigation or that the developers can decide which to implement.&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Avoid let-out clauses or words that imply options or exceptions (&lt;b>unless, except, if necessary, but&lt;/b>). These&#xD;
are dangerous since it is difficult to determine when the requirement applies. It is better to write separate&#xD;
requirements addressing each specific condition, or state of the system. For example, use:&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The system shall provide 100% of rating in normal conditions.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;em>The system shall be capable of providing&amp;nbsp;up to&amp;nbsp;125% of rating&amp;nbsp;for the first 15 minutes in&#xD;
an&amp;nbsp;emergency condition.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;em>The system shall provide a minimum of 90% of rating for not less than 15 minutes following first 15 minutes&#xD;
in an emergency condition.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;em>The system shall activate a reduced rating exception if a minimum of 95% of rating&amp;nbsp;is&#xD;
not&amp;nbsp;maintained in an emergency condition.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;p>&#xD;
instead of:&#xD;
&lt;/p>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The system shall perform at the maximum rating at all times &lt;strong>except&lt;/strong> that in emergencies it&#xD;
shall be capable of providing up to 125% of rating &lt;strong>unless&lt;/strong> the emergency condition continues&#xD;
for more than 15 minutes in which case the rating shall be reduced to 105% &lt;strong>but&lt;/strong> in the event&#xD;
that only 95% can be achieved then the system shall activate a reduced rating exception and shall maintain the&#xD;
rating within 10% of the stated values for a minimum of 30 minutes.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Use simple, direct sentences.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The pilot shall be able to see the airspeed indicator.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Use simple, ordinary words as much as possible, especially if your audience is international, which makes accurate&#xD;
translation a concern.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The airline shall be able to convert the aircraft from business to holiday charter use in less than 12&#xD;
hours.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;strong>Note:&lt;/strong> There is no need to use words such as &lt;strong>reconfigured.&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Identify the type of user who needs each requirement.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>The navigator shall be able to...&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Focus on stating what result you will provide for that type of user.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
&lt;em>...view storm clouds by radar...&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Define verifiable criteria&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote>&#xD;
&lt;p>&#xD;
&lt;em>...at least 100 miles ahead.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul dir=&quot;ltr&quot;>&#xD;
&lt;li>&#xD;
&lt;div>&#xD;
Use &lt;strong>To Be Confirmed&lt;/strong> (TBC) to flag a requirement is likely to change or is not yet definite.&#xD;
This helps identify&amp;nbsp;outstanding work.&amp;nbsp;For example:&#xD;
&lt;/div>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p dir=&quot;ltr&quot;>&#xD;
&lt;em>The aircraft shall be able to land safely on airstrips with a minimum length of 1000 meters (TBC).&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;ul dir=&quot;ltr&quot;>&#xD;
&lt;li>&#xD;
&lt;div>&#xD;
Use &lt;strong>To Be Determined&lt;/strong> (TBD) where it is known that a specific&amp;nbsp;requirement will be needed,&#xD;
but the details are not yet know (known-unknowns). This also helps identify outstanding work. For example,&#xD;
&lt;/div>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p dir=&quot;ltr&quot;>&#xD;
&lt;em>The aircraft shall be able to land safely on airstrips with a minimum length of TBD meters.&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;/blockquote></mainDescription>
</org.eclipse.epf.uma:ContentDescription>