Software Requirements - Software Engineering

What are software requirements?

The features and functionalities of the target system are described by the system requirements. The user expectations from a software product are described as requirements. The requirements can be of many types. They can be either hidden or obvious, they can be either unknown or known, and they can be either expected or unexpected.

What is Requirement Engineering?

The software requirements are gathered from the client, they are analyzed and documented and the complete process of gathering, analyzing and documentation is known as requirement engineering.

A sophisticated and descriptive system Requirements Specification document is developed and maintained by requirement engineering.

Describe the process of Requirement Engineering.

The process of requirement engineering has four steps. They are -

  • Feasibility Study
  • Requirement Gathering
  • Software Requirement Specification
  • Software Requirement Validation

Feasibility study

The client comes with the rough idea of the functions to be performed by the software and the expected features from the software, for obtaining the desired product to be developed by the organization.

In accordance with the information provided, a detailed feasibility study is performed by the analysts.

The feasibility study is oriented towards achieving the goals of the organization. Whether the product can be materialized practically or not can be analyzed by this study. The study also analyzes the project contribution to the organization, cost constraints and the objectives of the organization. Some of the technical aspects of project and product such as usability, maintainability, productivity and integration ability are explored by this study.

The feasibility study report includes comments and recommendations that enable the management to decide on undertaking the project.

Requirement Gathering

The requirements from the user are gathered once the feasibility report turns to be positive. The clients and the end users are communicated by the engineers and analysts for gathering the requirements regarding the features that are to be included in the software and what exactly the software should provide.

Software Requirement Specification

Once the requirements are collected from various stakeholders, the system analyst creates a document which is known as Software Requirement Specification SRS.

The information about the interaction of the intended software with hardware, the speed of operation, the external interfaces, the after crash speed of recovery, quality, security etc are defined by SRS.

The client requirements are usually in natural language. The requirements are documented in technical language enabling them easily used by the software development team.

The features of SRS are as follows:

  • User requirements are expressed in natural language.
  • Technical requirements are expressed in structured language.
  • Pseudo code is used for describing the design.
  • The forms and GUI screen prints are formatted.
  • Mathematical notations are used for DFDs.

Software Requirement Validation

On developing the requirement specifications, validate the documented requirements. There are instances that illogical or impractical solutions may be demanded by the users or the requirements may be interpreted incorrectly, thus leading to increase in the cost. The requirements are checked under certain conditions. They are -

  • Whether they can be implemented practically
  • As per the domain and functionality of the software, whether the requirements are valid.
  • Whether there are any ambiguities
  • Whether they are complete
  • Whether they can be demonstrated

What is Requirement Elicitation Process?

The process of requirement elicitation is depicted below -

Requirement Elicitation Process

  • Requirements gathering – The end users and the clients are communicated and the requirements are gathered.
  • Organizing Requirements – In terms of urgency, importance and convenience the requirements are prioritized and arranged by the developers.
  • Negotiation & discussion – The ambiguous and requirement conflicts related to the requirements are discussed and negotiated with the stakeholders and accordingly the requirements are prioritized.

Ambiguity about the requirements is removed by discussing with the stakeholders.

  • Documentation – All formal & informal, functional and non-functional requirements are documented and made available for next phase processing.

What are the techniques of Requirement Elicitation?

The requirements of an desired software system are identified by communicating with the end users, system users and with the clients, and this process is referred as requirement elicitation.

Requirements can be identified by using different ways. They are

Interviews

Requirements can be collected by performing interviews which are considered as the strongest medium. Different types of interviews can be conducted. They are -

  • Structured interview – The information that is to be gathered is decided in advance.
  • Non-structured interviews – The information that is o be gathered is not decided in advance.
  • Oral interviews
  • Written interviews
  • One-to-one interviews between two people
  • Group interviews – The missing requirements are identified by group interviews as many people are involved in group interviews.

Surveys

The expectations of the stakeholders are known by conducting surveys among the stakeholders.

Questionnaires

The stakeholders are enabled to answer some of the pre-defined set of questions. The answers provided by the stakeholders are collected and compiled together.

The major drawback with this is that if appropriate option is not available for the question, then the question is left unanswered.

Task analysis

The operation for which there is a requirement of the new system is analyzed by developers and engineers. Already existing software which can perform some of the operations at the client side is studied by the developers and collects the requirements for the proposed system.

Domain Analysis

Some of the general and specific requirements can be analyzed by the domain experts.

Brainstorming

For future analysis of the requirements, an informal debate is conducted among the various stakeholders.

Prototyping

Without adding the functions, user interface is build which is known as prototyping. Prototype provides detailed interpretation of the desired software product. A better insight of the requirements is provided by prototyping. In the absence of the software at the client’s end, a prototype based on the initial requirements of the client is developed. The feedback is taken from the client y showing the prototype of the client. The feedback thus provided by the user serves as a basis for gathering relevant and qualitative requirement.

Observation

The organization or the workplace of the client is visited by the experts to observe how the existing installed system works. The expert’s observation is on the areas of dealing of the execution problems by the client. By this observations some conclusion are drawn by the experts which also form some of the requirements.

What are the characteristics of Software Requirements?

The basic foundation of the software development project is gathering of the software requirements. Hence, the software requirement specification to be complete must have the following features -

  • Clear
  • Correct
  • Consistent
  • Coherent
  • Comprehensible
  • Modifiable
  • Verifiable
  • Prioritized
  • Unambiguous
  • Traceable
  • Credible source

What are Software Requirements?

It is very essential to understand the type of requirements which are expected from the software system and the types of requirements that arise during the phase of requirement elicitation.

The software requirements are categorized in two categories:

Functional Requirements

The requirements that correspond to the functions of the software come under the category of functional requirements.

The functions of the software and the functionality of the software is defined by functional requirements.

EXAMPLES -

  • The search option facilitated to the user for searching among different invoices.
  • The user is facilitated to mail any report to the management.
  • Users are divided into groups and each of the groups are given separate rights.
  • The business rules and administrative functions need to be complied with.
  • By keeping the downward compatibility intact, the software is developed.

Non-Functional Requirements

The non function related requirements are known as non-functional requirements. They are considered as the characteristics which the users are assumed of.

The requirements of non-functional category include -

  • Security
  • Logging
  • Storage
  • Configuration
  • Performance
  • Cost
  • Interoperability
  • Flexibility
  • Disaster recovery
  • Accessibility

On the logical aspects, the requirements are categorized into -

  • Must Have : Software cannot be said operational without them.
  • Should have : Enhancing the functionality of software.
  • Could have : Software can still properly function with these requirements.
  • Wish list : These requirements do not map to any objectives of software.

The software is developed by implementing the ‘Must have’ requirements and for ‘Should have’ requirements, the developer needs to discuss with the stakeholders and the software can be updated by ‘could have’ and ‘wish list’ requirements.

What are User Interface requirements?

For all the software, hardware or hybrid systems, UI constitute an important part. The software is accepted on the following grounds -

  • easy to operate
  • quick in response
  • effectively handling operational errors
  • providing simple consistent user interface

On the basis of how comfortable the user use the software, the acceptance of the user is depends. The system is allowed to be perceived by the user only through UI. An attractive, responsive and clear user interface needs to be accompanied by the well performing software system which may lead to improper use of the functionality of the software system. The means for efficient use of the system is a good system. The requirements related to user interface are as follows -

  • Content presentation
  • Easy Navigation
  • Simple interface
  • Responsive
  • Consistent UI elements
  • Feedback mechanism
  • Default settings
  • Purposeful layout
  • Strategical use of color and texture.
  • Provide help information
  • User centric approach
  • Group based view settings.

Who is a Software System Analyst?

The requirements of the proposed system are analyzed and the person who ensured proper documentation of the requirements is known as system analyst. At the software analysis phase of SDLC, the system analyst comes into picture. It is the analyst who needs to ensure that the developed software meets the client requirements.

The responsibilities of a system analyst are as follows -

  • The requirements of the intended software are analyzed and understood.
  • Understanding of the project contribution to the objectives of the organization.
  • The source of the requirement are identified
  • The requirements are validated
  • A requirement management plan is developed and implemented
  • The process an product requirements, business and technical requirements are documented.
  • The clients are coordinated for eliminating the ambiguity and improving the requirements.
  • The acceptance is obtained by discussing with the client and the stakeholders.

What are Software Metrics and Measures?

The process by which different attributes and aspects of the software are measured is known as Software Measures.

For different aspects of the software product and process, measures are provided by Software Metrics.

The fundamental requirements of any software engineering are known as software measures. Software measures are meant for controlling the process of software development and assist in maintaining the excellent quality of the desired product.

It is said that the thing that is not measured cannot be able to control. Hence software measures are very essential.

There are many types of software metrics. They are -

  • Size Metrics – The functionality provided by the software is measured by Function Point Count. The size of the functional aspect of the software is defined by the Function Point Count.
  • Complexity Metrics – The count of the independent paths of a program specially the upper bound is measured and quantified by McCabe’s Cyclomatic complexity. The concept of graph theory is used for representing the upper bound number of independent paths. Mostly control flow graph is used.
  • Quality Metrics – The quality of the product is defined by the associated defects, causes of the defects, types of defects, severity of the defects.

On the other hand, the quality of the product is defined by the number of defects identified in the process of development and number of defects that the client reports.

  • Process Metrics – The software process metrics include the tools and methods that are used in different phases of SDLC.
  • Resource Metrics – The resource metrics include the time, resources and effort used for development of the software product.

All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd DMCA.com Protection Status

Software Engineering Topics