Software requirements elicitation

After reading several of my past entries, one can conclude that some of the most important things in software engineering is the requirements analysis and the requirements themselves. In fact, this is the one post in which I talk even more about them. Why? Because requirements are a part of the software purpose. And developing software without a purpose is not only useless and illogical, but also stupid.

If you haven’t read any other of my articles, you might want to start here. Software requirements are requirements made by the customer and the public for a particular software to develop. They are not static: they can change, evolve in time. One day, the customer wants a rubber duck. Another, he wants a stone duck. Maybe one day he wants a laser gun.

The process to requirements is divided into 4 steps:

  • Feasability analysis: Is it possible to be developed? Is the customer not asking for Godzilla?
  • Requierement gathering: The team listens to the customer’s requirements.
  • Requirement specification: This is the same that in past step, but more specific. Example: the user asked for a tool to make sales report. In this step, he says that the tool must have the funcionality to make reports by different dates.
  • Requirement validation: After listening to the client, the team talks by itself and goes back to the client to check if the requirements are feasible, to check there are no misunderstandings, etc.
flickr photo by ljguitar https://flickr.com/photos/ljguitar/7697808370 shared under a Creative Commons (BY) license
flickr photo by ljguitar https://flickr.com/photos/ljguitar/7697808370 shared under a Creative Commons (BY) license

Requirements Elicitation and Specification

roll-the-dice-craps-board-game-points-122427.jpeg

Elic… what? that sounds complicated. Well, it actually isn’t. I’ve talked about functional and non-functional requirements before, but this is something completely different.

As you may remember, the first step of the SDLC is collecting infomation, requirements elicitation and specification are part of this step.

Requirement elicitation, is actually the first thing you have to do in the software life-cycle and is the practice of finding out what the customer or user wants. In an informal concept, is more like a wish list of requirements. But there are many problems that are almost impossible to avoid because it depends more of the customer, for example: he doesn’t know exactly what he wants, he thinks that some specifications are obvious or his needs changed and want the software to do something else.

Requirements elicitation practices include:

  • Interviews
  • Questionnaires
  • User observation
  • Workshops
  • Brainstorming
  • Use cases
  • Role playing
  • Prototyping

Once you know what the customer wants, you’ll be able to do the software requirement specification (SRS), which is a process of recording the client’s requirements in any form, like a document, a graphical representation, a graph, a pie, a cake, brownies, etc.

SRS also contains the functional and non-functional requirements and other specification types, for example: performance, maintainability, reliability, resource, etc.

Sources:

http://www.tutorialspoint.com/software_engineering/software_requirements.htm

https://en.wikipedia.org/wiki/Requirements_elicitation

http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=12553


Essentials of Elicitation & Specification

The first step of the Software Development Lifecycle is Functional & non Functional Requirement Gathering , it is the result from the specification of the informal ideas a client has about a product. The goals of this phase are to define the needed software and hardware. It is a really important phase because failures at this stage may increase the cost of development in higher stages to ensure the customer needs.

gerard.rendell - Elicitation
gerard.rendell –
Elicitation

There are two factors to consider:

Initial Input: The idea of how a system will be created considering the needs of the client and defining a problem to be solved.

Desired Output: The requirements must be as specific as possible so the problem that needs to be solved can be completely understood.

Requirements Elicitation is mainly understanding and analyzing all of the requirements a client has for a system. Developers & engineers work closely with clients to understand the problems that need to be solved and what functionality a system should have and what hardware is optimal.

The problem is that clients usually do not have a clear idea of what they want or need and if there are many stakeholders, they will most surely have conflicting ideas. The conditions need to be met for the client to be able to solve a specific problem or achieve a certain objective and it must satisfy specific contracts, standards and specifications.

Requirements Elicitation – basic customer idea and definition.

Requirements Specification – Basic developer design and technical specifications.

Requirement analysis normaly uses one of two models: Dynamic model or Object Model. These specifications use formal (exact mathematical syntax or semanic syntax) or semi-formal notation (like UML).

In general this is a phase of understanding the stated problem that the client has and how it should be Continue reading "Essentials of Elicitation & Specification"

About functional an non functional requirements

Hello there! Today we are talking a little bit about Functional and non fuctional requirements in Software.

http://www.startxconsulting.com/wp-content/uploads/2015/05/iceberg-poster-300x200.jpg
Original at: http://www.startxconsulting.com

First of all, lets define what a requirement is:

Requirement: menas what needs to be covered to achieve the project,it cover the description and conditions in which the project must work and the things that needs to be covered.

We have User, System and Software requirements, user requirements are the ones stablished from the user, the main idea prototype of work and the main “characteristics” of the project.

The system requirements are the functionality of the project, all the services and specs joined thogether.

The software requirements are the details of which the software work, usually for the developers and Engineers to understand what is happening.

Let´s check what functional and non fucntional software requirements means with the help of a chapter of CS2 Software Engineering note 2 at CS2Ah Autumn 2004:

Functional requirements: Statements of services that the system should provide, how the system should react to particular inputs and how the system should behave in particular situations

Describe functionality or system services.

Depend on the type of software, expected users and the type of system where the software is used.

Functional user requirements may be high-level statements of what the system should do; functional system requirements should describe the system services in detail

Examples:

  • The user shall be able to search either all of the initial set of databases or select a subset from it.
  • The system shall provide appropriate viewers for the user to read documents in the document store.
  • Every order shall be allocated a unique identifier (ORDER ID) which the user shall be able to copy to the account’s permanent storage area

Non-functional requirements: Constraints on the services or functions offered by the system

5327432805_f430987fbc_z
by-nc-nd
Continue reading "About functional an non functional requirements"

Functional and non-functional requirements

A functional requirement is something the product needs to work, perform an action and fulfill the purpose. It answers the question of “What does it do?”. They describe the minimal requirements of the product functionality. A non-funtional requirement is something that the product have to increase it quality. It answers the question of  “How does it do it?”. Non-functional requirements are extras made to improve the functionality of the product.

To be more precise, in software engineer, functional requirements define the functions of the system, is the description of the feature required. It also includes description of the required functions. Some examples of functional requirements are calculations, technical details, data manipulation and processing.

Non-Functional requirements focus on quality factors and effectiveness. These factors are what give value to the software and make the functional requirements function appropriately.

epiphone.jpg

Some non-functional requirements may be:
1. Usability
2. Availability
3. Reliability
4. Flexibility
5. Supportability
6. Performance

References:

Sqa.org.uk. (2016). Functional and Non-Functional Requirements. [online] Available at: http://www.sqa.org.uk/e-learning/SDM03CD/page_02.htm [Accessed 13 Sep. 2016].

SearchSoftwareQuality. (2016). Functional vs non-functional requirements, what is the difference?. [online] Available at: http://searchsoftwarequality.techtarget.com/answer/Functional-vs-non-functional-requirements-what-is-the-difference [Accessed 13 Sep. 2016].


Functional and non functional requirements

A functional requirement is something the product needs to work, perform an action and fulfill the purpose. It answers the question of "What does it do?". They describe the minimal requirements of the product functionality. A non-funtional requirement is something that the product have to increase it quality. It answers the question of  "How does it do it?". Non-functional requirements are extras made to improve the functionality of the product.

Eventhough the definition is mostly used for engineering purposes, it can be used to describe all kind of products and subjects. An example of a product can be a shoe. One functional requirement can be to protect the feet. One example of a non-functional example is that the shoe has the right size and right weight for maximum comfort.

Knowing the requirements while developing a program is very important because it can save you time. Probably you want to present a functional software to a company in a week but you can get distracted if you spend your time coding non-functional requirements like the design or the resizable database. I mean, yes, non-functional requirements can be everything today, they are very useful to attract more users or to get a real distinction over all the other programs that do the same. However, sometimes the time is running and people want to see results as quickly as posible, while developing make sure to cover first the minimal requirements and list them to follow an ordered process, later you can start adding colors and extra features. Remember, if the time is on your back, don´t lose time on non-functional requirements and make sure the program do what is meant to do.

Lets get heavy this time, enjoy the headbanging:


source:
https://en.wikipedia.org/wiki/Non-functional_requirement
https://en.wikipedia.org/wiki/Functional_requirement

Functional and non functional requirements

A functional requirement is something the product needs to work, perform an action and fulfill the purpose. It answers the question of "What does it do?". They describe the minimal requirements of the product functionality. A non-funtional requirement is something that the product have to increase it quality. It answers the question of  "How does it do it?". Non-functional requirements are extras made to improve the functionality of the product.

Eventhough the definition is mostly used for engineering purposes, it can be used to describe all kind of products and subjects. An example of a product can be a shoe. One functional requirement can be to protect the feet. One example of a non-functional example is that the shoe has the right size and right weight for maximum comfort.

Knowing the requirements while developing a program is very important because it can save you time. Probably you want to present a functional software to a company in a week but you can get distracted if you spend your time coding non-functional requirements like the design or the resizable database. I mean, yes, non-functional requirements can be everything today, they are very useful to attract more users or to get a real distinction over all the other programs that do the same. However, sometimes the time is running and people want to see results as quickly as posible, while developing make sure to cover first the minimal requirements and list them to follow an ordered process, later you can start adding colors and extra features. Remember, if the time is on your back, don´t lose time on non-functional requirements and make sure the program do what is meant to do.

Lets get heavy this time, enjoy the headbanging:


source:
https://en.wikipedia.org/wiki/Non-functional_requirement
https://en.wikipedia.org/wiki/Functional_requirement

Functional and Non-Functional Requirements

Functional and Non-functional requirements are those statements that specify what the system should do.

Functional Requirements describe the behavior of the system; while on-functional requirements state a characteristic of the performance. For example: The functional requirement of a table is to hold objects, while the non-functional requirement is to hold up to 50kg.

6415553169_401ee8c1e7
Retrieved from: http://www.flickr.com

Some examples of Functional and Non-Functional requirements:

Functional Requirements

  • Business Rules
  • Transaction corrections, adjustments and cancellations
  • Administrative functions
  • Authentication
  • Authorization levels
  • Audit Tracking
  • External Interfaces
  • Certification Requirements
  • Reporting Requirements
  • Historical Data
  • Legal or Regulatory Requirements

Non-Fuctinal Requirements

  • Performance
  • Scalability
  • Capacity
  • Availability
  • Reliability
  • Recoverability
  • Maintainability
  • Serviceability
  • Security
  • Regulatory
  • Manageability
  • Environmental
  • Data Integrity
  • Usability
  • Interoperability

 

References:

StackOverflow. (2015). what is functional and non functional requirement. August 8th, 2016, from StackOverflow. Website: http://stackoverflow.com/questions/16475979/what-is-functional-and-non-functional-requirement

Ulf, E. (2012). Functional vs Non Functional Requirements. August 8th, 2016, from ReQtest. Website: http://reqtest.com/requirements-blog/functional-vs-non-functional-requirements/

 

 


Non-functional requirements matter too

Defining requirements can be difficult because there needs to be a distinction between functional and non-functional requirements; however, both of these requirements are important to the system, and without them the system can crash or fail. The problem is when people miss these non-functional requirements, either they know about it or not.

What is a functional requirement?

Refers mainly to the expected function of the product. Product or system features, or what the program does is what the functional requirements are. Definitely it is easier to determine the functional requirements than the non-functional because they are almost obvious.

What is a non-functional requirement?

These requirements refer mainly to the attributes that include performance, security, usability, etc. Developers usually miss these requirements because they focus mainly on the functional requirements. When addressing incorrectly these non-functional requirements, the system actually fails. For example, the lack of usability or performance can lead to frustration or system problems. This is why non-functional requirements are so important for a system to succeed.

Example

functional-and-non-functional-testing

Both of them are needed specifications.

References:

  1. http://searchsoftwarequality.techtarget.com/answer/Differentiating-between-Functional-and-Nonfunctional-Requirements

Non-functional? Not really.

First of all… What are requirements? They are specified conditions that are demanded by clients or stakeholders in the creation of a project.

Functional Requirements:

The logical aspects of a product, system or software are defined as functional requirements. In other words, what does it need to do to function?

Non-Functional Requirements:

nfr-non-functional-cart-before-horse

These requirements are not Non-Functional at all, they focus on quality factors and effectiveness. These factos are what guve value to the software and make the functional requirements function appropriately.
Some non-functional requirements may be:
-Usability
-Availability
-Reliability
-Flexibility
-Supportability
-Performance

Requirements are interchangeable depending on the type of project that must be built. Some software may not be able to limit what functionalities are categorized in which type of requirements.

When a software programmer starts out a project, normally the client has and idea of what functionality they want their software to have, but it is very common to forget about non-functional requirements or as some people call them “Quality Factors”. Both of these are a type of “High-Level” design.
For a product/system both of these type of requirements must match the business requirements of the market.

difference-between-functional-and-non-functional-requirement

Sources:
http://searchsoftwarequality.techtarget.com/answer/Differentiating-between-Functional-and-Nonfunctional-Requirements

http://searchsoftwarequality.techtarget.com/answer/Functional-vs-non-functional-requirements-what-is-the-difference

http://expertbusinessanalyst.com/tag/difference-between-functional-and-nonfunctional-requirements/