Функціональна специфікація програмного засобу.

З урахуванням призначення функціональної специфікації ПС і тяжких наслідків неточностей і помилок в цьому документі, функціональна специфікація має бути математично точною. Це не означає, що вона має бути формалізована настільки, що по ній можна було б автоматично генерувати програми, що вирішують поставлену задачу. А означає лише, що вона повинна базуватися на поняттях, побудованих як математичні об'єкти, і твердженнях, що однозначно розуміються розробниками ПС. Досить часто функціональна специфікація формулюється на природній мові. Проте, використання математичних методів і формалізованих мов при розробці функціональної специфікації дуже бажано, тому цим питанням буде втаємничена окрема лекція.

Функціональна специфікація складається з трьох частин:

· описи зовнішнього інформаційного середовища, до якого повинні застосовуватися програми ПС, що розробляється;

· визначення функцій ПС, визначених на безлічі станів цього інформаційного середовища (такі функції називатимемо зовнішніми функціями ПС);

· опис небажаних (виняткових) ситуацій, які можуть виникнути при виконанні програм ПС, і реакцій на ці ситуації, які повинні забезпечити відповідні програми.

У першій частині мають бути визначені на концептуальному рівні усі використовувані канали введення і виводу і усі інформаційні об'єкти, до яких застосовуватиметься ПС, що розробляється, а також істотні зв'язки між цими інформаційними об'єктами. Прикладом опису інформаційного середовища може бути концептуальна схема бази даних або опис мережі датчиків і приладів, якій повинна управляти ПС, що розробляється.

У другій частині вводяться позначення усіх визначуваних функцій, специфікуються усі вхідні дані і результати виконання кожної визначуваної функції, включаючи вказівку їх типів і завдань усіх співвідношень (чи обмежень), яким повинні задовольняти ці дані і результати. І нарешті, визначається семантика кожної з цих функцій, що є найбільш важким завданням функціональної специфікації ПС. Зазвичай ця семантика описується неформально на природній мові - приблизно так, як це робиться при описі семантики багатьох мов програмування. Це завдання може бути у ряді випадків істотно полегшена при досить чіткому описі зовнішнього інформаційного середовища, якщо зовнішні функції задають які-небудь маніпуляції з її об'єктами.

У третій частині мають бути перераховані усі істотні з точки зору зовнішнього спостерігача (користувача) випадки, коли ПС не зможе нормально виконати ту або іншу свою функцію (наприклад, при виявленні помилки під час взаємодії з користувачем, або при спробі застосувати яку-небудь функцію до даних, не задовольняючих співвідношень, вказаних в її специфікації, або при отриманні результату, що порушує задане обмеження). Для кожного такого випадку має бути визначена (описана) реакція ПС.