web analytics

Requirement Engineering in Software Engineering

In the engineering design process, relevant requirements development refers to the process of establishing, documenting, and managing requirements. The development of requirement engineering in software engineering provides an appropriate mechanism for identifying customer desires as well as analyzing needs and evaluating implementation, agreeing on the right solution, clearly defining a solution, verifying specifications, and managing requirements as they are translated into an active system. With this in mind, requirements development is the specific, orderly application of proven principles, methods, tools, and notations to describe the hypothetical behavior of the proposed system and the constraints associated with it. Requirements engineering is basically the process of collecting, managing, and validating the requirements needed for further software development as specified by clients or end-users. This task is performed to begin within the early stages of software development. This requirements development process involves an appropriate team of software developers and engineers, business analysts, customers, and end-users. Requirements engineering gives the software developer a basic idea of what the client or end-user wants the software to do. 

What is requirements development in general?

Requirement engineering is a process that is performed in the initial stages of software development in software engineering. It includes a complete analysis of customer requirements and other tasks. The development of appropriate requirements is an important step in the development of any software in any form. In addition, it is believed that if requirements development is done properly, then the final software developed can be expected to keep pace in terms of design or functionality, leading to successful and profitable software. Requirements engineering gives the final vision to the software, i.e. what will the software do? The consumer and the software developer will feel more at ease as a result of this. Requirements engineering also helps determine the scope of the software, i.e. what the functionality of the final software will be. It also helps in the perception of the value of the final software.

Requirements Management in Software Engineering

Requirements management is the process of analyzing, documenting, tracking, prioritizing and agreeing on requirements, and controlling communications with relevant stakeholders. This stage takes into account how requirements change throughout time. The SRS should be as modifiable as possible to accommodate changes to requirements specified by end-users and at a later stage. The ability to modify the software for engineering part to meet requirements in a systematic and controlled manner is an extremely important part of the requirement development process.

The focus is on evaluating whether the system is useful for the business (feasibility study), identifying the requirements (identifying and analyzing), converting those requirements into some standard format (specification), and verifying that the requirements define the system the customer wants (validation). In practice, requirements development is not a sequential process, but an iterative process in which activities alternate. For example, you first repeat the user’s requirements, identify, specify, and verify, and repeat the same steps for system requirements. At the beginning of the process, most of the effort will be focused on understanding the high-level business and user requirements. Later in the process, more effort will be spent identifying and understanding detailed system requirements.

Some people consider requirements development to be the process of applying a structural analysis method, such as object-oriented analysis. This includes analyzing the system and developing a set of graphical models of the system, such as use case models, which then serve as the specification of the system. Although structured methods play a role in the requirements development process, requirements development involves much more than what is covered by these methods. User and system requirements would describe the services the system must provide and the constraints under which it must operate.

System requirements

 System requirements mean a more detailed description of system services and operational constraints, such as how the system will be used, and development constraints, such as programming languages. This level of detail is needed by those involved in the development of the system, such as engineers, system architects, testers, etc. Software Systems Analyst A systems analyst in an IT organization is a person who analyzes the requirements for a proposed system and ensures that the requirements are properly and correctly understood and documented. The role of an analyst begins in the analysis phase of the SDLC software. It is the responsibility of the analyst to make sure that the developed software meets the requirements of the client. Software Metrics and Metrics Software measurement can be understood as the process of quantifying and labeling various attributes and aspects of the software.

It also provide measures for various aspects of the software process and software product. Software measures are a fundamental requirement of software development. They not only help control the software development process, but also help maintain the excellent quality of the final product. In the words of Tom DeMarco, a software engineer, “you can’t control what you can’t measure.” According to him, it is very clear how important program measures are. Looking at some software metrics:

  1. Measures of size – LOC (lines of code) – mainly calculated in thousands of delivered lines of source code, referred to as KLOC. The Feature Point Score is a measure of the functionality provided by the software. The number of functional points determines the size of the functional aspect of the software.
  2. Indicators of difficulty – McCabe’s cyclomatic complexity quantifies an upper bound on the number of independent paths in a program, which is perceived as the complexity of the program or its modules. It is presented in terms of graph theory concepts using a control flow graph.
  3. Quality indicators – Defects, their types and causes, consequences, severity and consequences determine the quality of the product. The number of defects found during the development process and the number of defects reported by the customer after the product has been installed or delivered to the customer determine the quality of the product.
  4.  Process indicators – At various stages of the SDLC, the methods and tools used, company standards, and development efficiency are indicators of the software development process.
  5. Resource Metrics – Effort, time, and various resources used are metrics for measuring resources. Requirements development is often seen as the front end of the software systems development process. This is generally true, although it is also usually the case that requirements change during development and evolve after the system has been running for a while.

Thus, requirement engineering plays an important role in change management in software engineering development. However, the bulk of the requirements development effort occurs early in the project life cycle, motivated by the fact that requirements errors, such as misunderstood or omitted requirements, are more costly to correct later in the project life cycle. Some preparation is required before starting a project. In the past, requirements development methods often assumed that requirements development was done for a particular customer, who could sign the terms of reference. However, requirements development is actually done in a variety of contexts, including market-driven product development and customer-specific development with the possible intention of capturing a broader market.

The type of product will also influence the choice of method: Requirements development for information systems is very different from requirements development for embedded control systems, which is also different from requirements development for general services such as networks and operating systems. In addition, some assessment of the feasibility of the project and the associated risks must be carried out, and requirements development plays a critical role in this assessment. It is often possible to estimate project cost, timeline, and technical feasibility based on precise requirements specifications.

It is also important that conflicts between the high-level goals of the proposed system emerge early in order to establish the concept of the system and its boundaries. Of course, risk should be regularly reassessed throughout the system development lifecycle, as changes in the environment can change the associated development risks. The basic work also includes identifying the appropriate process for doing so and selecting methods and techniques for the various activities in the area of the tool.

We use the term process here to refer to an instance of a process model, which is an abstract description of how to perform a set of actions that describe their management of resources and the behavior or the action of one or more agents. A technique prescribes how to perform one particular action and, optionally, how to describe the product of that action in a specific notation. A method gives a prescription on how to perform a set of actions, focusing on how a related set of methods can be integrated, and provides guidance on how to use them.