Software Requirement Engineering (Part-01)

By | February 16, 2019

Before discussing about Software Requirements Engineering let us know about-

What is Software?

Software is a

  • Set of computations
  • Builds on a context of some human activity
  • Run on some hardware
  • Support human to do the activity for which it build

So what does that mean exactly?

  • Software is an intensive system.
  • Software is the combination of 03 things whose are
    • The software itself
    • The hardware on which the software runs
    • The context on which the software used

Let’s see a real world example-

We often make transaction using ATM machine. In this case

  • There have the software that drives the logic of the ATM machine
  • There is the hardware on which the software runs
  • There is the context in which the software is used. In this case, the context is the bank

Only by considering the three things i.e. software itself + Hardware + Context we can really understand the functionality of the ATM machine.

Software is highly involved with its quality. Without quality it’s just loss of valuable time, efforts and money. So let’s see what the things that ensures the quality of software-

Software Quality

Software quality is not just a function of the software.

So the software itself doesn’t define the quality of the software.

Software quality is a function of both the software and its purpose.

Here purpose means the context for which we are developing the software.

So a software system can be of low quality for any of following two reasons-

  • It doesn’t work well i.e. poor functionality e.g. – crashes
  • It doesn’t fulfill its purpose

The second one is happen quite often. It happens due to

  • Inadequate understanding of the purpose of the system
  • Complete misunderstanding of the purpose of the software
  • No knowledge about what the user will do and want to do with the software.

So software quality is very much depends on the purpose of the software. The more the software fulfills its purpose the higher is its quality.

Identifying the purpose of the software

Identifying the purpose of the software system means the identifying the purpose for which we are going to develop the proposed system.

Identifying the purpose of the software and defining its requirements is extremely hard task.

Why is it so hard?

  • Most of the business system is extremely complex so it’s become very tough to identify the purpose of the system.
  • Extracting purpose from humans brain is very tough job because most of the case they don’t know what they want until they see it. So it’s very tough to figure out what they want
  • Purpose i.e. requirements often change over time
  • There may have many stakeholders and they often have conflicting goals

So for all these reasons, it is very, very difficult to perform requirements engineering in an effective way.

To identifying the purpose of the software we need requirement engineering.

So we knew that to build software that satisfy it’s clients, end-users and all stakeholders we need to identify it’s purpose to build and the only way to identifying the purpose we need requirement engineering.

So what is Requirement Engineering?

Wait. Do we know what actually the Requirement is?

No.

Then before knowing about it’s engineering let us know what is it-

What is Requirement in context of software?

  • Description of what the system has to do
  • Describe the functionality of the features that the system has to deliver to satisfy clients and end users

Types of Requirements

There are mainly two types of requirements whose are-

  • Functional Requirements
  • Non-functional Requirements

Functional Requirements

Functional requirement specifies the behavior/functionality of the developing product. Usually expressed as-

  • Input into the system: in an online purchase system users name, address, purchased items, transaction information etc.
  • Output of the system: transaction confirmation email after the transaction is performed

Functional requirements need to express with depth& specificity.  We use information flow diagram to visually represent the data flow throughout the system and its dependencies.  Information flow diagram shows how the entire system functions.

Following example shows-

  • A customer using credit card to purchase a product.
  • The card information is verified before print the receipt

Non-functional Requirements

They are also known as quality requirements. Describes how well the system must perform.

This types of requirements generally addresses product issues including-

  • Accuracy
  • Dependability
  • Security
  • Usability
  • Efficiency
  • Performance
  • Maintainability

Now we have a basic understanding about

  • What is a requirement
  • Different types of requirements
  • Why we need requirements

Next we will discuss details about requirement engineering details.

49 Total Views 1 Views Today
Md. Mojammel Haque

CSM, CSPO, CSD, CSP-SM, CSP-PO (ScrumAlliance.org)
Certification Profile Link-
https://www.scrumalliance.org/community/profile/mhaque13

Currently working as Lead Team (Application Architecture) at Raven Systems Ltd. Passion for software development especially agile practices such as TDD with in depth knowledge of Object Oriented Programming, SOLID Principles, Gang of Four Design Patterns, Some Enterprise Application Architectural Patterns. Over 8 years of software development experience ASP.NET. Has the ability to understand and transform complex business requirements into software ensuring applications are delivered on time. Also experience in non Microsoft .NET technologies such as Dapper.Net, Git, Structure Map & Angular, Bootstrap, HTML-5, CSS-3 etc.

Category: Agile Software Engineering
Md. Mojammel Haque

About Md. Mojammel Haque

CSM, CSPO, CSD, CSP-SM, CSP-PO (ScrumAlliance.org) Certification Profile Link- https://www.scrumalliance.org/community/profile/mhaque13 Currently working as Lead Team (Application Architecture) at Raven Systems Ltd. Passion for software development especially agile practices such as TDD with in depth knowledge of Object Oriented Programming, SOLID Principles, Gang of Four Design Patterns, Some Enterprise Application Architectural Patterns. Over 8 years of software development experience ASP.NET. Has the ability to understand and transform complex business requirements into software ensuring applications are delivered on time. Also experience in non Microsoft .NET technologies such as Dapper.Net, Git, Structure Map & Angular, Bootstrap, HTML-5, CSS-3 etc.

Leave a Reply

Your email address will not be published. Required fields are marked *