Funding for 'IT Lab' Project, Phase 1: Progress of sticker sales. Purchase a sticker to help us reach our target.Updated: 2010-02-28 11:53
10.7%
Software Requirements: An Introduction


by
Anupama A. Weerabahu



An Introduction

 As human beings we always try to satisfy our needs in one way or the other. In this computational era humans use computers extensively in their personal as well as professional life. As we all know computer comprises of Hardware and Software. But do you think that the same hardware and same software would fulfill the diverse needs of everybody? No. Because each of us has different and specific objectives that they wish to fulfill using the computer.

Here arises the need for the development of computer systems which caters to the individual requirement. When we take as a whole, developing computer systems for each of the different requirements does not give expected return for the investment. Thus there are common software written which covers considerable amount of requirements of people and they are together packed with moderate hardware, so that individuals can afford it (For an example, Word processing packages are built to cater for needs of word processing). But when it comes to organizations or institutions this is not the case. There are specific needs of organizations which they need to satisfy (Financial Systems and ERP Systems). In that case we need to write dedicated pieces of software and assemble platforms capable enough to run that software. To be used efficiently, all computer software needs certain hardware components or other software resources to be present on a computer system. Thus now we understand that, we cater the human needs through computer systems and in order to satisfy their needs we need to clearly articulate their requirement, which we call the ‘System Requirement’ which discusses the software as well as hardware aspect of the solution.

In the articles that we start from today, we will give much emphasis to ‘Software Requirements’ as opposed to ‘Hardware Requirements’. Today we will try to understand what ‘Requirements’ in the context of software are and its classification.



What is a Requirement?

A requirement for a computer system specifies what we want or desire from a system. For a business in particular this is, "What we want or desire from a system, which we believe will deliver you a business advantage". For an example, if we wish to have a Library Management Software for our library at school or university, one of the requirement would be to record the borrowings and lending of books to registered pupils. That is one of the desires that we need to fulfill from the software, hence a requirement.

A formal definition can be given to ‘Requirement’ as follows:

“A condition or capability needed by a user to solve a problem or achieve an objective. The set of all requirements forms the basis for subsequent development of the system or system component.”


          What are the Requirement Types?

          Now we know that requirements are the things that the product must do to achieve its purpose. We can clearly identify the following types of requirements when we define software requirement of a system.

                                Functional Requirements – These are the functions that the system is to execute; for example, registration of students in the Library Management System

               Non-Functional Requirements – These are restrictions on the types of solutions that will meet the functional requirements. Sometimes non-functional requirements are called as constraints or quality requirements.


Functional Requirements

These are the type of behavior we want the system to perform. If we were buying grass cutter for our home, the functional requirement might be:

‘The grass cutter should be able to cut the grass in the garden.’

Similarly for a computer system we define what the system is to do. For example:

‘The Library Management System should store all the details of the books and copies in the library.’

The important point to note is that WHAT is wanted is specified, and not HOW it will be delivered.


Non-Functional Requirements

These are the restrictions or constraints to be placed on the system and how to build it. Non-functional requirements can be broadly split into two types: performance and development.

            A.  Performance Constraints

These constraints are how the system should perform when it is delivered. The grass cutter example, without any constraints, might result in solutions being offered for everything from a knife or scissor to an axe. To restrict the types of solutions we might include these performance constraints:

  •     It must take be able to cut grass.

  •    The must run with petrol.

  •   The handle must be adjustable.

We may include more. Similarly for a computer system we might specify values for these generic types of performance constraints:

  •  The response time for information to appear to a user.

  •  The number of hours a system should be available.

  • The number of records a system should be able to hold.

  • The capacity for growth of the system.

  • The length of time a record should be held for auditing purposes.

For the book records example these might be:

  • Information should be made available and be stored in a maximum of 3 seconds.

  •  The system should be available from 9am to 5 pm Monday to Friday.

  •  The system should be able to hold a 100,000 book records initially.

  • The system should be able to add 10,000 records a year for 10 years.

  •   A record should be fully available on the system for at least 7 years.

The important point with these is that they restrict the number of solution options that are offered to us by the developer.


            B. Development Constraints

In addition to the performance constraints we may include some development constraints. These mainly fall in the field of project management, but are still a restriction on the types of solution that can be offered. There are three general types of development constraint:

       Time - When a system should be delivered is the obvious time constraint.
 
 Resource
 - How much money is available to develop the system is obvious, but a key resource would be the amount of time business staff could spend in briefing system development staff.

    Quality - Any standards which are used to develop the system including project management, development methods etc.

Who find the Requirement – Technical or Business People?

A good set of requirements is a must for any project in order it to be successful.  This is where many projects fail, in that they do not specify correctly what the system should do. In fact many systems have just been given a deadline for delivery, a budget to spend, and a vague notion of what it should do.

The root of this problem is:

  • Computer systems developers rarely have as good an idea of how a business runs and should run, compared with a business user,

  • Business users have little idea of what a computer system could achieve for them.

As a result paralysis sets in and business management time is concentrated on meeting timescales and budgets, rather than what is going to be delivered.

Thus there should be set of people who can collect the user requirements from the business people and present it to the technical people, in a way that they can understand. These people are known as the Business System Analysts, who bridges the gap between business and technical domains, by acting as the liaison of the two parties.  

Why Requirements are Important?

Between 40% and 60% of software failures and defects are the result of poor software management and requirements definition. In plain English, this means that about half of the problems encountered could have been avoided by making it clear, from the very 

beginning, what the end user expected from the respective product. This is to say that the programming was fine and the developers did their job well - only they did a different job from what they were supposed to.

The definition of a successful program is that it is 100% compliant with its initial requirements. But it those requirements contain mistakes, are unclear or poorly defined, then there is very little one can do to correct the problem later in the process. So, a bit of advance planning simply doubles the success changes of any software project.

Thus there needs to be a process to discover the correct requirement of the end user and way to communicate it to the software developers. This process is known as ‘Requirements Engineering’ and it has emerged as a discipline in Software Engineering.  

Summary

Today we learnt that software requirements are what we expect a system to do for us facilitating us to meet our desires. There are two types of requirements as functional and non-functional. Requirements are so important for the success of a project. There is a news discipline in Software Engineering as Requirement Engineering, which we will discuss from the next articles.

Sources

     http://www.softwareprojects.org

    http://www.coleyconsulting.co.uk




Share/Save
No votes yet

Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options