What's a better word for an optional requirement in software engineering? The phrase is contradictory. I've used "Non-Core Requirements" in previous projects.
|
|
The term "out of scope requirement" can possibly be used. This means that the requirement has been captured within your process and is trackable, but it has been determined that the requirement is something that falls beyond the current scope of the system, due to a number of reasons, such as budget, schedule, time, or feasibility. However, the phrase "optional requirement" is commonly used to denote something that is in scope, but not necessarily required by the system. It is a measure of the priority of the requirement. In my experiences, requirements are often prioritized as mandatory, desirable, or optional (although there are also other schemes). In order for a project to be considered complete and fully functional, all of the mandatory requirements must be satisfied. Given sufficient resources, desirable requirements would be implemented next. Finally, anything considered optional would be included. I believe the confusion comes from the term "requirement". In the English language, a requirement is "a thing that is needed" or "a mandatory, compulsory, or necessary condition". However, in software engineering, the term requirement is simply a documented characteristic of a software system. The concept of optional and mandatory describe the priority of the documented characteristic of the software system. |
|||||||
|
|
We refer to them as "nice to have" features as opposed to requirements. |
|||||
|
|
For software requirements documentation, wording Optional Requirements is perfectly OK, as long as you use this term in conformance with RFC 2119 Key words to Indicate Requirement Levels - ie to indicate items that are truly optional. When your specification text implies verb instead of adjective, use "MAY" instead of "OPTIONAL". Since it is small and easy to read, RFC text is fully quoted below:
Network Working Group S. Bradner
Request for Comments: 2119 Harvard University
BCP: 14 March 1997
Category: Best Current Practice
Key words for use in RFCs to Indicate Requirement Levels
Status of this Memo
This document specifies an Internet Best Current Practices for the
Internet Community, and requests discussion and suggestions for
improvements. Distribution of this memo is unlimited.
Abstract
In many standards track documents several words are used to signify
the requirements in the specification. These words are often
capitalized. This document defines these words as they should be
interpreted in IETF documents. Authors who follow these guidelines
should incorporate this phrase near the beginning of their document:
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
RFC 2119.
Note that the force of these words is modified by the requirement
level of the document in which they are used.
1. MUST This word, or the terms "REQUIRED" or "SHALL", mean that the
definition is an absolute requirement of the specification.
2. MUST NOT This phrase, or the phrase "SHALL NOT", mean that the
definition is an absolute prohibition of the specification.
3. SHOULD This word, or the adjective "RECOMMENDED", mean that there
may exist valid reasons in particular circumstances to ignore a
particular item, but the full implications must be understood and
carefully weighed before choosing a different course.
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that
there may exist valid reasons in particular circumstances when the
particular behavior is acceptable or even useful, but the full
implications should be understood and the case carefully weighed
before implementing any behavior described with this label.
5. MAY This word, or the adjective "OPTIONAL", mean that an item is
truly optional. One vendor may choose to include the item because a
particular marketplace requires it or because the vendor feels that
it enhances the product while another vendor may omit the same item.
An implementation which does not include a particular option MUST be
prepared to interoperate with another implementation which does
include the option, though perhaps with reduced functionality. In the
same vein an implementation which does include a particular option
MUST be prepared to interoperate with another implementation which
does not include the option (except, of course, for the feature the
option provides.)
6. Guidance in the use of these Imperatives
Imperatives of the type defined in this memo must be used with care
and sparingly. In particular, they MUST only be used where it is
actually required for interoperation or to limit behavior which has
potential for causing harm (e.g., limiting retransmissions) For
example, they must not be used to try to impose a particular method
on implementors where the method is not required for interoperability.
7. Security Considerations
These terms are frequently used to specify behavior with security
implications. The effects on security of not implementing a MUST or
SHOULD, or doing something the specification says MUST NOT or SHOULD
NOT be done may be very subtle. Document authors should take the time
to elaborate the security implications of not following
recommendations or requirements as most implementors will not have
had the benefit of the experience and discussion that produced the
specification.
8. Acknowledgments
The definitions of these terms are an amalgam of definitions taken
from a number of RFCs. In addition, suggestions have been
incorporated from a number of people including Robert Ullmann, Thomas
Narten, Neal McBurnett, and Robert Elz.
It wouldn't hurt if your documentation refers to RFC as the source of definitions:
|
|||||||||||||
|
|
I appreciate it's not an answer to your question, but in my world, it's still a requirement, even if for whatever reason you're not going to fulfil it. I like the MoSCoW approach (Must Have, Should have, Could have, Won't have this time) to categorising requirements with users, along with other factors (in my regulated world, requirements can be critical or non-critical, and many an argument flares up over optional but critical requirements.) |
|||
|
|
|
How about identifying it as an optional feature or optional tasks. These will only be done if at a certain point in the project it has been determined that there is time and money available to complete these features. They could also be triggered if an external event occurs. If the customers makes the switch to Windows 8, the following tasks will need to be in done... The description of the feature should include a deadline for determining if they will be done. |
|||
|
|
|
In my business (spacecraft), they are called either "goals", indicating that they are documented and effort will be expended to meet them, but the system will still be considered successful if they are not met; "desirements" (not a real word, but there you are), indicating that someone wants them and they are trying to attain the status of goals but aren't accepted or documented yet; or "creeping requirements" which is a more derogatory version of desirements indicating things that are trying to take up resources but that aren't worth it in a project trying to achieve "good enough" where they will compromise or threaten achieving the real requirements. |
|||
|
|
|
If your requirements are prioritized, you might consider them to be low priority requirements. |
|||
|
|
|
Requirements are categorized into 4 area in Software Engineering:
Now requirements can be Optional or Mandatory, depending upon the above 4 categories, I have outlined above. Optional requirements can also fall into the scope of the system under consideration or out of it's scope as well. Optional requirements are good means to avoid Scope Creep and defining your scope in precise terms. Optional Requirements will always be a part of Software Engineering as they help us identify the scope and are a good means to avoid Scope Creep. You can never say that they contradict the engineering practices of SDLC. However, requirements have to prioritized and well defined. |
|||||||||||||||||
|
|
In the Volere template the term "Waiting room" is used. |
|||
|
|
|
The term "Desirement" is sometimes used for optional requirements. However, it may not be appropriate for a formal document. |
|||
|
|
|
I am surprised that all the responses are concerned with tracking requirements in project development. Despite being a developer I have never worried overmuch about this terminology in that context. When i first read the question I assumed it related to user product specification, not product development. For example, an encyclopaedia might list a color printer as an optional requirement. Its required if you want the full benefit of the app but optional if you want to view the screen. But what if you had for example a monochrome printer? How to make clear whether your app works with the obvuous restriction that some photos might not look so good? Or wont print at all?as another example, how should i check a printer review to check whether ink is a requirement or an optional requirement requirement in a multi-function printer? In other words can i still scan? Some hints on terminology and what to search for would be welcome both as a product developer/seller and as a consumer. |
|||
|
|
|
I would call them "optional features", not optional requirements. Requirements sound like something that you have to have, while features sound like an add-on to the original product. |
|||
|
|
|
I am quite surprised no one has mentioned that those are called "objectives". Every company I have worked for has called them that. They are denoted by use of the words "will" or "should" instead of "shall". Sometimes they are included in Braces when talking about numbers. e.g. The system shall operate continuously without need of operator attention for 100 {250} hours. Meaning that the requirement that must be met is 100 hours, but the objective is 250 hours. As a side note, very seldom does anyone ever actually design to meet the objective requirement, unless there is some sort of incentive involved. |
|||
|
|
|
Enhancement is the term used in the office I work at. |
|||
