# Специфікація вимог

**Специфікація вимог** – закінчений опис поведінки програми, яку потрібно розробити.

Документація для експлуатації трансформера

У цій статті ми розглянемо складові цього документа, рекомендовані стандартом IEEE 830 (структура SRS – Softwarerequirementsspecification):

**Вступ:**

* Цілі
* Угоди про терміни
* Передбачувана аудиторія та послідовність сприйняття
* Масштаб проекту
* Посилання на джерела

**Загальний опис:**&#x20;

* Бачення продукту
* Функціональність продукту
* Класи та характеристики користувачів
* Середовище функціонування продукту (операційне середовище)
* Рамки, обмеження, правила та стандарти
* Документація для користувачів
* Допущення та залежності

**Функціональність системи:**&#x20;

* Функціональний блок X (таких блоків може бути декілька)
* Опис та пріоритет
* Причинно-наслідкові зв'язки, алгоритми (рух процесів, workflows)
* Функціональні вимоги

**Вимоги до зовнішніх інтерфейсів:**

* Інтерфейси користувача (UX)
* Програмні інтерфейси
* Інтерфейси обладнання
* Інтерфейси зв'язку та комунікації

**Нефункціональні вимоги:**

* Вимоги до продуктивності
* Вимоги до безпеки (даних)
* Критерії якості програмного забезпечення
* Вимоги до безпеки системи

**Інші вимоги:**

* Додаток А: Глосарій
* Додаток Б: Моделі процесів та предметної області та інші діаграми
* Додаток: Список ключових завдань

Незважаючи на таку велику кількість пунктів, які входять до нашої специфікації, все ж таки «ядро» вимог до додатка знаходиться у функціональних вимогах. Найчастіше, їх представляють у вигляді сценаріїв користувача (Use cases).

*«Кожен сценарій використання зосереджується на описі того, як досягти мети чи завдання. Для більшості програмних проектів це означає, що потрібно багато сценаріїв використання, щоб визначити необхідний набір властивостей нової системи. Ступінь формальності програмного проекту та його стадії впливатиме на необхідний рівень деталізації для кожного сценарію використання.»* Також є кілька вимог до складання самої специфікації:

* *Опис усіх функцій має бути максимально коротким та чітким.*
* *Не допускати двозначних описів: кожна сутність має бути гранично зрозуміла будь-якій людині.*
* *У той самий час: простота.*
* *Деталізація має бути в рамках максимального розуміння та уникнення надлишкового тексту.*
