Reaves.dev

v0.1.0

built using

Phoenix v1.7.12

Requirements Engineering

Stephen M. Reaves

::

2023-09-06

Notes about Lesson 4 of CS-6300

Summary

Definitions?

Requirements Engineering is the process of establishing the services that the customer requires from the software system, and compares that to the constraints under which the system operates.

Focuses on what, not how

Software is an abstract description of a set of computations that becomes concrete only when we run it on hardware and in the context of some human activity.

Software Intensive Systems := Software + Hardware + Context

We normally take hardware and context for granted, but they need to be explicitly considered.

Software Quality is a function of both the software and its purpose (Fitness for Purpose)

Identifying Purpose

Extremely hard

Completeness and Pertinence

It is difficult to get a grasp of the full picture of requirements.

Pertinence pertains to the relevance of the requirements

Funcational vs Non-Functional

Functional Requirements have to do with the function of the system.

Non-Functional Requirements relate to a system’s qualities

NFR typically don’t have clear criteria

NFR should strive for verifiability

User vs System

User Requirements are written for customers

System Requirements are written for developers

Requirement Origins

Requirements can come from multilple places

Elicitation Process

Domain knowledge is often thinly spread and distributed

Knowledge is often tacit

Observability is often limited

Collected information is often biased

Traditional Techniques

Other Techniques

Modeling Requirements

Decide what and how to model

Examples:

Analyzing Requirements

Requirements Prioritization

Limited resources lead to need to prioritize

Requirements Engineering Process

GeElicitationnNegotiatione->nmModelingn->maAnalysism->aa->e

Software Requirements Specification

SRS is a way to communicate requirements to others

Different projects require differen specs

IEEE defines a standard

Simplified standard has three sections:

  1. Introduction
  2. User Reqs
  3. System Reqs

Requirements should be