Understanding Requirements Engineering Basics

Sep 25, 2024

Requirements Engineering Overview

Introduction

  • Presented by: Bigoted Penson Starla
  • Topic: Overview of the semester's course on Requirements Engineering.

Definition of Requirements Engineering

  • Requirements Engineering consists of two parts:
    1. Requirements: What people want or need from a software system.
    2. Engineering: The systematic approach to fulfilling these requirements using good practices, guidelines, and frameworks.

Importance of Requirements Engineering

  • Critical early part of software engineering that impacts the entire software lifecycle:
    • Eliciting requirements from stakeholders
    • Software design
    • Implementation and coding
    • Testing and integration
    • Deployment and maintenance
  • Poor requirements engineering can lead to increased effort and complications later in the project.

Key Concepts in Requirements

  • Requirements can include:
    • Wishes and needs of stakeholders (even if they are not aware of them)
    • Essential needs that stakeholders might not recognize
    • Constraints imposed by the technical environment or other systems.

Engineering Practices

  • Engineering emphasizes systematic processes:
    • Following best practices and guidelines
    • Applying principles developed from years of experience.

Learning Goals for the Course

  • Develop skills to elicit, define, document, and communicate requirements.
  • Understand different forms of requirements:
    • Natural Language Requirements
    • Modeled Requirements (graphs, formulas, pseudocode)
  • Learn the concept of Artifact-Based Requirements Engineering:
    • Artifacts include documentation, code, diagrams, etc.

Types of Requirements

  • Non-Functional vs. Quality Requirements:
    • Non-functional: Anything not related to specific features.
    • Quality: Subcategory of non-functional, focusing on performance, reliability, etc.

Importance of Communication

  • The Requirements Engineer serves as a communication bridge between:
    • Stakeholders (non-technical)
    • Software developers, designers, testers (technical)
  • Essential to translate requirements and proposals between both groups.

Summary

  • The course will cover:
    • How to elicit, document, and communicate requirements effectively.
    • Understanding the role of requirements engineers in software development.