SCMWise.com

Software Requirements


Definition

Software Requirements are the detailed specifications about the functionality and operational particulars of the software.

Typically, these are the commonly categorized types of requirements:

  • Business or Customer Requirements
  • Functional Requirements
  • Non-Functional Requirements
  • User Requirements
  • System Requirements


Requirement Inconsistencies

There is a lack of consistency on how these requirements are defined and used.

For example, some define the Functional and Non-Functional Requirements as a subset of the System Requirements.

Yet another well respected organization organizes User Requirements as a subset of the System Requirements.

However, most software projects use Software Requirements to describe the functionality and operational standards the software must adhere.

Even Agile projects which supposedly do not use SRSs have and use them.

So we are going to focus on the commonalities of SRSs.

Using a SRS Template will help most organizations become more consistent when developing and maintaining their requirements.

Here is a usable, if not entry level Software Requirements Template - SRS Template


Business or Customer Requirements

Business Requirements are a representation of the business needs of the software application.

Typically, they are comprised of the customer, business, vendor or external users of the software.

One of the most important benefits of the Business Requirements is to reduce the likelihood of the misalignment or missed customer requirements of the software.


Functional Requirements

Functional Requirements are the detailed description of what the software needs to do, or maybe better stated, accomplish.

The best description is that Functional Requirements should be complete and consistent.

To do this all the functions of the software should be completely defined.

and

The requirements be consistent to the extent that there is no inconsistencies in the description of the requirements.



Non-Functional Requirements

The best definition for Non-Functional Requirements is what it is not.

Meaning, they are not directly concerned with the specific functions performed by the software.

Common areas covered by Non-Functional Requirements:

  • Software Uptime and Availability
  • Software Performance
  • Software and System Security
  • Software Reliability
  • Software and System Efficiency

Always express Non-Functional Requirements quantitatively so there is no ambiguity. This also allows the requirement to be tested objectively.

It is very important not to be vague when describing Non-Functional Requirements.


System Requirements

Quite obviously, System Requirements are the starting point for the software system design.

Like the Functional Requirements, it is important to write the System Requirements so that they encompass the system consistently and completely.

System Requirements are intended to precisely describe the functions and behavior of the software system.

It is highly recommended to use a structured requirement format to communicate these requirements. This should help reduce ambiguity in the requirements.


User Requirements

The User Requirements for software need to describe the functional and non-functional requirements in a way that they are understood without a deep technical knowledge of the system.

Maybe a better way to put this is they should specify and describe external behavior of the software.

It is commonly agreed that user requirements should be written in a "Natural Language". Meaning that software jargon, formal notation and technical detail should be omitted.

However, here are some common issues with User Requirements when written using a "Natural Language":

  • Lack of Clarity or Specifics
  • A Hodge-Podge of Functional and Non-Functional Requirements can be expressed
  • Open to One's own Interpretation


Software Requirement Best Practices

The Best Practices involving Requirements focuses on the clarity, correctness and consistency of the Requirements.

  • Do Not Be Vague
  • Write Requirements Quantitatively
  • Do Not Use Jargon, Use Simple Language
  • Be Precise
  • Actively Involve the Customer or User
  • Prioritize the Requirements
  • Manage the Changes to the Requirements


Software Requirements Key Points

Requirements should clearly define what the software should do and the system constraints.

The SRS is the document that contains the requirements. It should be used by both the development teams and the customer to communicate the requirements.


Software Related Topics

Software Development Life Cycle

Software Development Life Cycle is the process in which you encapsulate your software development.

Specifically meaning, it is the processes, standards and tools that your software development team uses to ensure the accuracy and timeliness of your software development efforts.

For more information about Software Development Life Cycle


Software Development Life Cycle Methodologies

There are several different Software Development Life Cycle Methods.

Some have been around for years and years and some are relatively new.

  • Waterfall
  • Iterative
  • Top-Down
  • Feature Driven
  • Prototyping
  • Hybrid
  • Object-Oriented
  • Agile

For more information about Software Development Life Cycles Models


Software Engineering Best Practices

There are many Software Engineering Best Practices.

Here are some of the more commonly used SE Best Practices

  • Iteratively Develop Software
  • Actively Manage Specifications and Requirements
  • Develop and Leverage Component-based Software
  • Continuously Review and Improve your Software Development Practices
  • Verify and Quantify Software Quality
  • Manage Software Change

For more information about Software Engineering Best Practices


Software Engineering

The IEEE Computer Society defines Software Engineering as the application of a systematic, disciplined and quantifiable approach to the development, maintenance and operation of software.

For more information about Software Engineering



Software Development Life Cycle Table of Contents

Software Development Life Cycle Software Development Life Cycle is the process in which you encapsulate your software development. Specifically meaning, it is the process and tools you use to ensure the accuracy and timeliness of your software development efforts.

Agile SCM Implementing Agile Software Configuration Management processes and practices will help your ability to successfully implement Agile software development processes.

Agile Software Agile software attempts to minimize risk by developing software in short iterations. This development methodology is about adaptability. Because of the chaotic nature of software development, it may be impossible to control or to predict.

Agile Source Code Providing agile source code control processes and procedures greatly aids an organization's ability to successfully implement Agile software development processes.

Feature Driven Development Feature Driven Development, FDD, is a short-iteration development process. It consists of five basic activities: Develop an Overall Model, Build a Feature List, Plan by Feature, Design by Feature, Build by Feature

Software Development Processes The Software Development Process, SDP, is the methodology used by a development team to produce software.

Software Development Life Cycle Models Software Development Life Cycle Models are systems and processes a software developer or software development team leverage to systematically produce software: Agile, Feature Driven Development, Waterfall, Object Oriented, Prototyping.

Software Engineering The IEEE Computer Society defines Software Engineering as the application of a systematic, disciplined and quantifiable approach to the development, maintenance and operation of software.

Software Engineering Best Practices Software Engineering Best Practices, SE Best Practices are the processes and techniques that have been proven over time to provide successful Software Engineering Results. When searching the Internet, there are many Software Engineering Best Practices to be found on the World Wide Web. Here are some of the more commonly used and proven SE Best Practices.

Software and Requirements Software Requirements are the details and specifications about how the software should act and behave. There are several types requirements: Business, Functional, Non-Functional, User and System Requirements.

Software Requirements Template Software Requirements Template is an outline of a Software Requirements Specification that was used in a large software company. It is not meant to be the one and only way to do cover your Software Requirements. It is intended to be a starting point for you or your organization to approach Software Requirements.

Software Engineering Salaries Software Engineering Salaries - This page is dedicated to publishing salary information about Software Engineering jobs around the World.

Software Engineering Salaries Australia Software Engineering Salaries Australia - This page is dedicated to publishing salary information about Software Engineering jobs in Australia.

Software Engineering Salaries Canada Software Engineering Salaries Canada - This page is dedicated to publishing salary information about Software Engineering jobs in Canada.

Software Engineering Salaries India Software Engineering Salaries India - This page is dedicated to publishing salary information about Software Engineering jobs in India.

Software Engineering Salaries Italy Software Engineering Salaries Italy - This page is dedicated to publishing salary information about Software Engineering jobs in Italy.

Software Engineering Salaries Jamaica Software Engineering Salaries Jamaica - This page is dedicated to publishing salary information about Software Engineering jobs in Jamaica.

Software Engineering Salaries Malaysia Software Engineering Salaries Malaysia - This page is dedicated to publishing salary information about Software Engineering jobs in Malaysia.

Software Engineering Salaries Netherlands Software Engineering Salaries Netherlands - This page is dedicated to publishing salary information about Software Engineering jobs in Netherlands.

Software Engineering Salaries United States Software Engineering Salaries United States - This page is dedicated to publishing salary information about Software Engineering jobs in United States.

Software Quality Assurance Software Quality Assurance is the systematic testing of a software product to meet the planned requirements. Quality Assurance is the testing of a software product and the process improvement of the testing cycle.

Software Testing Software Testing is the systematic and sometimes programmatic, investigation of software for defects and to ensure the application runs appropriately.

SCMWise Software Configuration Management SCMWise is dedicated to Software Configuration Management. This site is a central repository for the collection of best practices, processes, methodologies and tools that surround SCM.



SCMWise Configuration Spec



© Copyright 2007 - 2017
Powered by Site Build It!
Page copy protected against web site content infringement by Copyscape SCMWise.com's Privacy Policy
ADD TO YOUR SOCIAL BOOKMARKS: add to BlinkBlink add to Del.icio.usDel.icio.us add to DiggDigg
add to FurlFurl add to GoogleGoogle add to SimpySimpy add to SpurlSpurl Bookmark at TechnoratiTechnorati add to YahooY! MyWeb