blob: 067f785ada2417cfbab54b22b7df6badcc340609 [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.4/uma.ecore"
xmlns:rmc="http://www.ibm.com/rmc" xmlns:epf="http://www.eclipse.org/epf"
epf:version="1.2.0" xmi:id="-BdYFG4-dbPBGFzF9z6KGPA"
name="supporting_requirements,_wr24gNcGEdqz_d2XWoVt6Q" guid="-BdYFG4-dbPBGFzF9z6KGPA"
changeDate="2006-12-21T09:43:46.709-0800" version="1.0.0">
<mainDescription>&lt;p>&#xD;
There is a finite set of requirements to consider when it comes to gathering system-wide requirements, qualities, or&#xD;
constraints. Many of them are unfamiliar to stakeholders; therefore, they may find it difficult to answer questions&#xD;
related to topics such as availability, performance, scalability, or localization. You can use this guideline and the&#xD;
associated checklist &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/checklists/supporting_requirements_3158BF2F.html&quot; guid=&quot;_Vael8CGMEdu3VKXZx45D3A&quot;>Checklist: Supporting Requirements&lt;/a>&amp;nbsp;when speaking to stakeholders to ensure that&#xD;
all topics are discussed. Make sure that stakeholders understand the costs of their selections and do not end up&#xD;
wanting everything that is on the list.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
Functional&#xD;
&lt;/h3>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Auditing:&lt;/strong> Is there a need to track who used the system and when they used it? State&#xD;
requirements for providing audit trails when running the system.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Authentication:&lt;/strong> Will access to the system be controlled? State requirements for&#xD;
authentication.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Licensing:&lt;/strong> Will the system or parts of the system be licensed? If open-source software has&#xD;
been used in the system, have all open-source agreements been respected? State requirements for acquiring,&#xD;
installing, tracking, and monitoring licenses.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Printing:&lt;/strong> Will printing capability be required? State requirements for printing.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Reporting:&lt;/strong> Is reporting capability required? State requirements for reporting.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Scheduling:&lt;/strong> Will certain system actions need to be scheduled? State requirements for&#xD;
scheduling capability.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Security:&lt;/strong> Will elements of the system or system data need to be secure? State requirements to&#xD;
protect access to certain resources or information.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
Usability&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
Usability requirements are critical to the success of any system. Unfortunately, usability requirements are often the&#xD;
most poorly specified requirements. Consider this common requirement: The system shall be easy to use. This doesn't&#xD;
help much, because it cannot be verified.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
While capturing usability requirements, it is a good idea to identify issues and concerns first, and then refine these&#xD;
into verifiable requirements later (see &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/guidelines/writing_good_requirements_48248536.html&quot; guid=&quot;_6jXzYNcKEdqz_d2XWoVt6Q&quot;>Guideline: Writing Good Requirements&lt;/a>). According to a traditional definition,&#xD;
usability consists of five factors:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Ease of learning:&lt;/strong> A user with a specified level of experience must be able to learn how to use&#xD;
the system in a specified amount of time.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Task efficiency:&lt;/strong> A user should be able to complete a specified task in a specified time (or&#xD;
number of mouse clicks).&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Ease of remembering:&lt;/strong> A user should be able to remember how to accomplish specified tasks after&#xD;
not using the system for a specified period of time.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Understandability:&lt;/strong> A user must be able to understand system prompts and messages and what the&#xD;
system does.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Subjective satisfaction:&lt;/strong> A specified percentage of the user community must express&#xD;
satisfaction with using the system.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
You may want to use the following method to identify and specify usability requirements:&#xD;
&lt;/p>&#xD;
&lt;div style=&quot;MARGIN-LEFT: 2em&quot;>&#xD;
&lt;ol>&#xD;
&lt;li>&#xD;
Identify the key usability issues by looking at critical tasks, user profiles, system goals, and previous&#xD;
usability problems.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Choose the appropriate style to express the requirements: &#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;strong>Performance style:&lt;/strong> Specify how fast users can learn various tasks and how fast they&#xD;
can perform the tasks after training.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Defect style:&lt;/strong> Rather than measuring task times, identify usability defects and&#xD;
specifies how frequently they may occur.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Guideline style:&lt;/strong> Specify the general appearance and response time of the user&#xD;
interface by reference to an accepted and well-defined standard&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Write the actual requirements, including performance criteria (see &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/guidelines/writing_good_requirements_48248536.html&quot; guid=&quot;_6jXzYNcKEdqz_d2XWoVt6Q&quot;>Guideline: Writing Good Requirements&lt;/a>&amp;nbsp;for more information).&#xD;
&lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;/div>&#xD;
&lt;h3>&#xD;
Reliability&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
Reliability includes the system's ability to continue running under stress and adverse conditions. In the case of an&#xD;
application, reliability relates to the amount of time that the software is available and running as opposed to time&#xD;
unavailable. Specify reliability acceptance levels, as well as how they will be measured and evaluated. Describe&#xD;
reliability criteria in measurable terms. This is usually expressed as the allowable time between failures or the total&#xD;
allowable failure rate. Other important reliability considerations include:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Accuracy:&lt;/strong> Specify requirements for the precision (resolution) and the accuracy (by some known&#xD;
standard) that is required in any calculation performed or in system output.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Availability:&lt;/strong> Specify requirements for the percentage of time the system is available for use,&#xD;
hours of use, maintenance access, and degraded-mode operations. Availability is typically specified in terms of&#xD;
the Mean Time Between Failures (MTBF).&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Recoverability:&lt;/strong> Specify requirements for recovery from failure. This is typically specified in&#xD;
terms of the Mean Time to Repair (MTTR).&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Frequency and severity of failures:&lt;/strong> Specify the maximum defect rate (typically expressed as&#xD;
defects/KSLOC or defects/function-point) and severity of failures. Severity&amp;nbsp;may be categorized in terms of&#xD;
&lt;strong>minor&lt;/strong>, &lt;strong>significant&lt;/strong>, and &lt;strong>critical&lt;/strong> defects. The requirements&#xD;
must define each of these terms unambiguously. For example, a &lt;strong>critical&lt;/strong> defect could be defined&#xD;
as one that results in loss of data or complete inability to use certain functionality of the system.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
Performance&#xD;
&lt;/h3>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Response times:&lt;/strong> Specify the amount of time available for the system to complete specified&#xD;
tasks and transactions (average, maximum). Use units of measurement. &lt;em>Examples:&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Any interface between a user and the system shall have a maximum response time of 2 seconds.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
The product shall download the new status parameters within 5 minutes of a change.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Throughput:&lt;/strong> Specify the capacity of the system to support a given flow of information (for&#xD;
example, transactions per second).&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Capacity:&lt;/strong> Specify on the volumes that the product must be able to deal with and the numbers of&#xD;
data stored by the product. Make sure that the requirement description is quantified, and thus can be tested. Use&#xD;
unit of measurement such as: the number of customers or transactions the system can accommodate, resource usage&#xD;
(memory, disk, . . . ) or degradation modes (what is the acceptable mode of operation when the system has been&#xD;
degraded in some manner) &lt;em>Examples:&lt;/em> &#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
The product shall cater for 300 simultaneous users within the period from 9:00 AM to 11 AM.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Maximum loading at other periods will be 150.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Start-up:&lt;/strong> The time for the system to start up.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Shut-down:&lt;/strong> The time for the system to shut down.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
Supportability&#xD;
&lt;/h3>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Adaptability:&lt;/strong> Are there any special requirements regarding adaptation of the software&#xD;
(including upgrading)? List requirements for the ease with which the system is adapted to new environments.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Compatibility:&lt;/strong> Are there any requirements regarding this system and its compatibility with&#xD;
previous versions of this system or legacy systems that provide the same capability?&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Configurability:&lt;/strong> Will the product be configured after it has been deployed? In what way will&#xD;
the system be configured?&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Installation:&lt;/strong> State any special requirements regarding system installation&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Level of Support:&lt;/strong> What is the level of support that the product requires? This is often done using&#xD;
a Help desk. If there are to be people who provide support for the product, is that support considered part of what&#xD;
you are providing to the customer? Are there any requirements for that support? You might also build support into&#xD;
the product itself, in which case this is the place to write those requirements. Consider the level of support that&#xD;
you anticipate providing and what forms it might take.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Maintainability:&lt;/strong> Are there any special requirements regarding system maintenance? What are the&#xD;
requirements for the intended release cycle for the product and the form that the release will take? Quantify the&#xD;
time necessary to make specified changes to the product. There may also be special requirements for&#xD;
maintainability, such as&amp;nbsp;a requirement that&amp;nbsp;the product must be able to be maintained by its end-users or&#xD;
developers who are not your development team. This has an effect on the way that the product is developed, and&#xD;
there may be additional requirements for documentation or training. Describe the type of maintenance and the amount&#xD;
of effort required. &lt;em>Examples:&lt;/em>&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
A new weather station must be able to be added to the system overnight.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
The maintenance releases will be offered to end-users once a year.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Scalability:&lt;/strong> What volumes of users and data will the system support? This specifies the expected&#xD;
increases in size that the product must be able to handle As businesses grow (or are expected to grow), the&#xD;
software products must increase their capacities to cope with the new volumes. This may be expressed as a profile&#xD;
over time.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Testability:&lt;/strong> Are there any special requirements regarding the testability of the system?&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
Constraints (+)&#xD;
&lt;/h3>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Design constraints:&lt;/strong> Are there any design decisions that have been mandated that the product&#xD;
must adhered to?&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Third-party components:&lt;/strong> Specify any mandated legacy, COTS, or open-source components to be&#xD;
used with the system.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Implementation languages:&lt;/strong> Specify requirements on the implementation languages to be used&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Platform support:&lt;/strong> Specify requirements on the platforms that the system will support&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Resource limits:&lt;/strong> Specify requirements on the use of system resources, such as memory and hard&#xD;
disk space&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Physical Constraints:&lt;/strong> Specify requirements on the shape, size, and weight of the resulting&#xD;
hardware to house the system&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
Interface Requirements (+)&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
Describe both the user interface and interfaces with external systems.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
User interface&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
Describe requirements related to user interfaces that are to be implemented by the software. The intention of this&#xD;
section is to state the requirements, but not to describe the user interface itself, because interface design may&#xD;
overlap the requirements-gathering process. This is particularly true if you are using prototyping as part of your&#xD;
requirements gathering process. As you develop prototypes, it is important to capture the requirements that relate to&#xD;
the look and feel of the user interface. In other words, be sure that you understand your client’s intentions for the&#xD;
product’s look and feel. Record these as requirements, rather than merely using a prototype for approval.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Look and feel:&lt;/strong> A description of the aesthetic appearance and layout of the interface. Your&#xD;
client may have given you particular demands, such as style, colors, degree of interaction, and so on. This&#xD;
section captures the requirements for the interface, rather than the design for the interface. The motivation&#xD;
is to capture the expectations, the constraints, and the client’s demands for the interface before designing&#xD;
it. &lt;em>Examples:&lt;/em>&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
The product shall have the same layout as the district maps from the engineering department.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
The product shall use the company color.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Layout and navigation requirements:&lt;/strong> Specify requirements on major screen areas and how they should&#xD;
be grouped together.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>Consistency:&lt;/strong> Consistency in the user interface enables users to predict what will happen. This&#xD;
section states requirements on the use of mechanisms to be employed in the user interface. This applies both within&#xD;
the system, and with other systems and can be applied at different levels: navigation controls, screen areas sizes&#xD;
and shapes, placements for entering / presenting data, terminology&lt;br />&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;strong>User personalization and customization requirements:&lt;/strong> Requirements on content that should&#xD;
automatically displayed to users or available based on user attributes. Sometimes users allowed to customize the&#xD;
content displayed or to personalize displayed content.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h4>&#xD;
Interfaces to external systems or devices&#xD;
&lt;/h4>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Software interfaces:&lt;/strong> Are there any external systems with which this system must interface? Are&#xD;
there any constraints on the nature of the interface between this system and any external system, such as the&#xD;
format of data passed between these systems? Do they use any particular protocol? Describe software interfaces&#xD;
with other components. These may be purchased components, components reused from another application, or&#xD;
components being developed for subsystems outside of the scope of the system under consideration, but with&#xD;
which this it must interact. For each system, consider both provided and required interfaces.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Hardware interfaces:&lt;/strong> Define any hardware interfaces that are to be supported by the software,&#xD;
including logical structure, physical addresses, expected behavior, and so on.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;p>&#xD;
&lt;strong>Communications interfaces:&lt;/strong> Describe any communications interfaces to other systems or devices,&#xD;
such as local area networks (LANs), remote serial devices, and so on.&#xD;
&lt;/p>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
Business Rules (+)&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
Besides technical requirements, also consider the particular business domain in which the system needs to fit.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Business rules or policies that the system must conform to may constrain system functionality. Business rules are&#xD;
referred to by system use cases and can be in the form of decision tables, computation rules, decision trees,&#xD;
algorithms, and so forth. Describing the rules in the flows of the use cases usually clutters the use-case&#xD;
specifications. Therefore, they are normally captured in separate artifacts or as annexes related to the use-case&#xD;
specifications. In many cases, a business rule applies to more then one use case. Shared business rules should be&#xD;
stored in a single repository, such as a supporting requirements document.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>