Software Engineering Tutorial

Introduction SDLC

SDLC Models

Agile Model Big-bang Model Incremental Model Iterative Model Prototype Model RAD Model Spiral Model V-Model Waterfall Model Open Source Development Model

Software Management

Project Management Project Management Activities Project Management Tools

Software Metrics

Software Quality Metrics Halstead's Software Metrics Object Oriented Metrices Data Structure Metrics Overall Equipment Effectiveness Some Important Quality Metrics

Project Planning

Software project planning Cost Estimation Model

Software Configuration

Software Configuration Management Project Monitoring and Control

System Design

Strategies for System Design Caching in System Design Load Balancer – System Design Dropbox - System Design Netflix - System Design Twitter - System Design

Misc

Routing Requests through Load Balancers Object Oriented Analysis and Design in Software Engineering Online Library Management System ER Diagram in Software Engineering Umbrella Activities in Software Engineering Jelianska Moranda Software Relability Model RAD Model vs SDLC Model Software Myths in Software Engineering What is Capability Maturity Model Characteristics of Software Engineering Characteristics of Good Design in Software Engineering Program Analysis Tools in Software Engineering Reactive and Proactive Software Risk Management in Software Engineering Size-Oriented Metrics in Software Engineering Software Requirements and their Types in Software Engineering Structured Programming in Software Engineering System Development Life Cycle in MIS Difference between V Model and Waterfall Model Overview of Fish SDLC Model

Software Requirements and their Types in Software Engineering

Introduction Of Software Requirements:

The term "requirement" can refer to either a broad, general declaration or a specific, mathematical functional specification of the services, operations, and limitations of a system. These are representations of the traits and capabilities of the intended system. The word "requirements" refers to what users are anticipating from the software.

The criterion should be clear enough to grasp and provide room for interpretation. Understanding software requirements is crucial because it reduces the developer's time and effort needs as well as the cost of development.

The notion of software engineering, various software requirements, functional and non-functional requirements, and domain requirements are all covered in this article.

Three types of software requirements. They are:

1.Functional Requirements.

2.Non-Functional Requirements.

3.Domain Requirements.

Functional Requirements

An explanation of how a system must function is known as a functional requirement. It specifies what has to be done by the system in order to fulfill user demands or expectations. The features that the user notices can be thought of as functional requirements. These differ from non-functional requirements, which outline the internal operations of the system.

Functional requirements, according to their definition in requirements engineering, outline specific outcomes of a system. Non-functional requirements, on the other hand, specify general qualities like cost and dependability. Technical architecture of a system is driven by non-functional needs, whereas application architecture is driven by functional requirements.

A requirements analyst may occasionally produce use cases after compiling and confirming a list of functional requirements. Generally speaking, the hierarchy of gathering functional requirements and making changes is as follows:

  • user/stakeholder request, analysis, use case, and incorporation.
  • Stakeholders submit a request,
  • systems engineers try to discuss, observe, and comprehend its components,
  • use cases, entity relationship diagrams, and other models are constructed to validate the requirement, and if documented and approved, the demand is implemented or incorporated.

Types of functional requirements:

  • Business Rules
  • Audit Tracking
  • External Interfaces
  • Legal and Regulatory Requirements

2.Non-Functional Requirements

A non-functional requirement (NFR) is a requirement that, rather of defining specific behaviors, specifies criteria that can be used to assess how well a system performs. Functional requirements, which specify particular behavior or functions, are contrasted with them. The system design includes a thorough plan for putting functional requirements into practice. Because they are typically architecturally significant requirements, the system architecture includes a through plan for implementing non-functional requirements.

In software engineering, non-functional requirements are features of a software system that are not connected to a particular functionality or behavior. Instead of stating what the system should do, they explain how it should behave. Non-functional needs include the following examples: Performance requirements include those pertaining to the system's speed, scalability, and responsiveness. For instance, the system may need to be able to handle a given number of users concurrently or process a certain quantity of data in a certain length of time.

  • Security: This refers to the criteria for safeguarding the system and its data against unwanted access as well as the capacity to identify and remedy security flaws.
  • Usability: This covers requirements for how simple and clear the system is for end users to utilize.
  • Reliability: This refers to the requirements for the system's ability to operate correctly and consistently in both expected and unexpected circumstances.
  • Maintainability: This refers to the conditions that must be met for the system to be simple to test, debug, and alter.
  • Portability: The capacity of the system to be easily transferred to various hardware or software environments is referred to as portability.
  • Compliance: This refers to the actions necessary to ensure that policies, rules, and laws are followed.

The limitations or requirements placed on the system are known as non-functional requirements. These outline the software's quality feature. Scalability, maintainability, performance, portability, security, dependability, and many more challenges are covered by non-functional requirements. Non-functional requirements focus on critical quality issues for software systems.

Non-functional requirements are crucial because they can have a big impact on a software system's overall success and quality. They frequently have a close connection to the system's usability, security, and performance. They also aid in making sure the system is portable, maintained, and compatible with all applicable rules and laws.

Types of non-functional requirements:

1.Scalability

2.reliability

3.Utility

4.security

5. Availability.

Advantages of Non-Functionality:

1.They guarantee that the software system complies with applicable laws and regulations.

2.These outline the software's quality feature.

3.They guarantee the software system's dependability, availability, performance, and scalability.

4.They aid in developing the software system's security policy.

5.They guarantee a positive user experience, make the product simple to use, and keep costs to a minimum.

6.Enhancing system quality Engineers can improve the overall quality of the system by defining non-functional requirements that will guarantee the system has the desired performance, security, usability, dependability, maintainability, portability, and compliance features.

7. Engineers can guarantee that the system complies with pertinent laws, rules, industry standards, or business policies by establishing non-functional compliance requirements.

8. Engineers may guarantee that the system is simple to maintain, test, and debug, which can ultimately save time and money, by stating non-functional requirements relating to maintainability.

Disadvantages of non-functional requirements:

  1. Since they need particular consideration throughout the software architecture/high-level design phase, they typically raise the cost.
  2. After you send non-functional criteria on to the architecture phase, it is challenging to replace or modify them.
  3. Finding every non-functional necessity can be challenging, particularly when working with sophisticated systems or cutting-edge technologies.
  4. Future non-functional requirements might be challenging to foresee, which may cause the software to become antiquated or necessitate a redesign.
  5. Danger of changing requirements: Non-functional requirements are subject to change, which may cause confusion and add to the amount of work necessary to keep the project in line with the most recent needs.
  6. It might be challenging to reconcile competing non-functional requirements and decide which one should be implemented.
  7.  During the requirement collection process, non-functional requirements might not be fully identified, and some requirements might only be found after the system has been launched.

3.Domain Requirements

When we refer to an application domain, we mean environments like train operation, medical records, e-commerce, etc. Domain requirements reflect the context in which the system runs.

Specific domain vocabulary or references to specific domain concepts may be used to describe domain requirements. Software engineers frequently struggle to comprehend how these criteria connect to other system needs due to their specialized nature.

Because they frequently represent the basics of the application area, domain requirements are significant. It might be impossible to make the system function satisfactorily if these conditions are not met.

Because of this requirement, the developers must be knowledgeable about that standard to ensure they do not break it. It limits both the device's design and the creation process. It is necessary to compare other requirements to this standard.

The requirements specification may occasionally need to contain a description of how to perform particular computations due to the features of the application domain. For instance, the requirements specification for an automated train protection system contains the domain need shown below. If a train passes a red signal, this mechanism immediately stops it. This criterion specifies how the system should calculate the train's deceleration. You must have some knowledge of how train systems operate in order to comprehend it.

Differences between Functional and Non-functional Requirements

  • A non-functional requirement describes the performance attribute of a software system, whereas a functional requirement defines the system or a component of it.
  • The advantage of non-functional requirements is that it enables you to assure a positive user experience and simplicity of using the product. Functional requirements, coupled with requirement analysis, assist uncover missing requirements.
  • Non-functional requirements are attributes, whereas functional requirements are verbs.
  • Scalability capacity, availability, reliability, recoverability, and data integrity are examples of non-functional requirements, whereas business rules, certification requirements, reporting requirements, administrative tasks, authorization levels, audit tracking, external interfaces, historical data management, and legal or regulatory requirements are examples of functional requirements. Transaction corrections, adjustments, and cancellations are also examples of non-functional requirements.
  • Use cases or user stories can be used to convey functional requirements since they show externally evident functional behavior.
  • The nonfunctional requirements guarantee the software system complies with all applicable laws and regulations. Whereas, Identification of unmet requirements is aided by functional requirements and requirement analysis. They assist in precisely defining the desired system behavior and functionality.They guarantee a positive user experience and make the software simple to use.