Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question

closed as primarily opinion-based by ChrisF Oct 7 '13 at 8:25

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

9  
I'd guess he means that something can't both be required (as in 'requirement') and optional (as in 'not required') –  scrwtp Mar 25 '12 at 13:32
2  
This really belongs over on English. And I'd just call them "options." –  Blrfl Mar 25 '12 at 13:40
12  
@Blrfl It doesn't belong on English. In the English language, the phrase "optional requirements" is contradictory. However, it has a widely accepted meaning in software development, and there are alternative ways of phrasing this concept within the context of a software project. It doesn't make sense to have it anywhere but here. –  Thomas Owens Mar 25 '12 at 13:55
3  
@ThomasOwens: I disagree. Any field where jobs have requirements could run into this problem, which would make this a project management question. It's also an oxymoron, which makes it good fodder for English, and the first topic in the first FAQ there says word choice is on-topic. But suit yourself. –  Blrfl Mar 25 '12 at 16:15
5  
"Things that won't get built" is what it means on many projects. –  user4051 Mar 25 '12 at 20:59
show 5 more comments

14 Answers 14

up vote 13 down vote accepted

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.

share|improve this answer
1  
A related term is 'change case', which is a requirement that is expected at some point in the future, but isn't in scope right now. By capturing change cases you can try and avoid doing something in the current design that makes the change cases difficult. When doing this you need to keep an eye out for YAGNI though. –  Kris C Mar 25 '12 at 19:02
    
IMHO, 'optional requirement' implies optional in the present-tense and requirement in the future tense which could also read optional potential requirement. Either way, I agree that out-of-scope is more appropriate in a business case where customer expectations need to be managed. –  Evan Plaice Mar 25 '12 at 23:47
add comment

We refer to them as "nice to have" features as opposed to requirements.

share|improve this answer
2  
From a requirements engineering perspective, the "nice to have features" still need to be captured as a requirement (in a specification, as a user story, as acceptance tests - however your process dictates that requirements are captured) and tracked throughout the life of the project. –  Thomas Owens Mar 25 '12 at 13:53
add comment

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:

This document uses definitions based upon those specified in RFC 2119.

share|improve this answer
3  
+1 for relating back to an RFC –  Gareth Mar 26 '12 at 17:44
    
I didn't even know this was an RFC. I'm not surprised that something like this exists, though, as an IEEE standard, ISO standard, RFC, or some other similar, published document. –  Thomas Owens Mar 26 '12 at 22:32
    
This document seems a bit too specific to be broadly applied as guidelines for software requirements. It's not titled "Key Words for Requirements," it's titled "Key Words for Requirements in RFC's," and in Directive 6 it intentionally limits its own scope. –  Robert Harvey Mar 26 '12 at 22:58
1  
@RobertHarvey well my point was to address the question idea that one should look for better word to replace established professional term with well defined and documented semantics only because they believe it's not a perfect English. As for it being too specific or not, that would be quite a different question don't you think? I for one can imagine plenty cases where I would prefer MoSCoW style categorizing. –  gnat Mar 27 '12 at 6:20
add comment

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.)

share|improve this answer
add comment

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.

share|improve this answer
add comment

A better word for an optional requirement is "Recommendation"

share|improve this answer
add comment

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.

share|improve this answer
add comment

Requirements are categorized into 4 area in Software Engineering:

  1. Business Requirements: Focuses on overall business goals and objectives of the system
  2. User Requirements: Focuses on user's objectives and what users have to do to use the system to achieve business objectives
  3. Functional Requirements: What functionality and tasks the system has to perform to achieve business objectives
  4. Non-functional Requirements: What requirements are there other than functional ones. This includes environment, constraints, interface, maintenance issues, etc.

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.

share|improve this answer
1  
The question asks for a different term for "optional requirements" not for a categorization of requirements. –  Yannis Rizos Mar 25 '12 at 13:42
1  
If he knew the categorization, he would never have said that Optional Requirements are contradictory in Software Engineering. :) –  Maxood Mar 25 '12 at 13:48
1  
good descriptions, but I'm still a bit peeved at the phrase - either something is required or it isn't. I think we've made "requirement" into a separate entity meaning "formal client need"... –  Aram Kocharyan Mar 25 '12 at 13:53
    
@Maxood Hmmm? The term is contradictory, not the concept, the question discusses the term. Do you have any reference that the term is part of any formal (or widely accepted) requirements model? I know it's common, but throwing stuff like "Optional Requirements will always be a part of Software Engineering" without a single reference isn't really my cup of tea. –  Yannis Rizos Mar 25 '12 at 14:39
    
@ Yannis Rizos When i said "Optional Requirements will always be a part of Software Engineering", I meant that in conceptual context. As engineering is about working out an effective solution within budget while balancing conflicting requirements. Also the asker never mentions Optional Requirement as a term here in the question and neither did I. –  Maxood Mar 25 '12 at 15:00
add comment

If your requirements are prioritized, you might consider them to be low priority requirements.

share|improve this answer
add comment

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.

share|improve this answer
add comment

In the Volere template the term "Waiting room" is used.

...This template is intended for use as the foundation for your requirements specifications. The template provides for each of the requirements types appropriate for today's business, scientific and software systems. It provides a checklist, structure and traceability for your requirements... The template is tool independent, and has been successfully used with Yonix, Requisite, DOORS, Caliber RM, IRqA and other popular tools...

The Volere techniques are described in the book Mastering the Requirements Process by Suzanne Robertson and James Robertson...

share|improve this answer
add comment

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.

share|improve this answer
add comment

The term "Desirement" is sometimes used for optional requirements. However, it may not be appropriate for a formal document.

share|improve this answer
add comment

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.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.