КІНЕЦЬДОКИ
ВИКОНАТИ функція
Або
КІНЕЦЬЯКЩО
ВИКОНАТИ функция2
Структурована природна мова
Структурована природна мовавикористовується для читабельного, строгого опису специфікацій процесів. Це розумна комбінація строгої мови програмування та читабельної природньої мови і складається з підмножини слів, які організовані в певні логічні структури, арифметичних виразів і діаграм.
До складу мови входять наступні основні символи:
· дієслова, які використовують до об’єктів та орієнтовані на дію;
· терміни, визначені на будь-якій стадії проекту ПЗ (наприклад, завдання, процедури, символи даних і тому подібне);
· сполучники, які використовуються в логічних відношеннях;
· загальновживані математичні, фізичні і технічні терміни;
· арифметичні рівняння;
· таблиці, діаграми, графи і т.п.;
· коментарі.
Базові структури мови мають один вхід і один вихід. До них відносяться:
1) послідовна конструкція:
ВИКОНАТИ функция1
ВИКОНАТИфункция2
ВИКОНАТИфункция3
2) конструкція вибору:
ЯКЩО <умова> ТО
ВИКОНАТИфункция1
ІНАКШЕ
3) ітерація:
ДЛЯ <умова>
ВИКОНАТИ функція
КІНЕЦЬДЛЯ
ДОКИ <умова>
При використанні структурованої природної мови прийняті наступні угоди:
1) Логіка процесу виражається у вигляді комбінації послідовних конструкцій, конструкцій вибору і ітерацій.
2) Ключові слова ЯКЩО, ВИКОНАТИ, ІНАКШЕ і так далі повинні бути написані заголовними буквами.
3) Слова або фрази, визначені в словнику даних, повинні
бути написані заголовними буквами.
4) Дієслова повинні бути активними, недвозначними і орієнтованими на цільову дію (заповнити, обчислити,
витягувати, а не модернізувати, обробити).
5) Логіка процесу повинна бути виражена чітко і недвозначно.
Таблиці рішень
Структурована природна мова неприйнятна та деяких типів перетворень. Наприклад, якщо дія залежить від декількох змінних, які в сукупності можуть продукувати велике число комбінацій, то його опис буде дуже заплутаним і з великим числом рівнів вкладеності. Для опису подібних дій традиційно використовуються таблиці і дерева рішень.
Проектування специфікацій процесів за допомогою таблиць рішень(ТР) полягає в заданні матриці, що відображає безліч вхідних умовв безліч дій.
Таблиця Рішень складається з двох частин. Верхня частина таблиці використовується для визначення умов. Звичайна умова ЯКЩО є частиною оператора ЯКЩО-ТО і вимагає відповіді "так-ні". Проте іноді в умові може бути присутнім і обмежена безліч значень, наприклад, ЧИ Є ДОВЖИНА РЯДКА БІЛЬШОЮ, МЕНШОЮ АБО РІВНОЮ ГРАНИЧНОМУ ЗНАЧЕННЮ?
Нижня частина Таблиці Рішень використовується для визначення дій, тобто ТО-частина оператора ЯКЩО-ТО. Так, в конструкції ЯКЩО Йде дощ, ТОРОЗКРИТИ ПАРАСОЛЬКУ . Йде дощ є умовою, а РОЗКРИТИ ПАРАСОЛЬКУ - дією.
Ліва частина Таблиці Рішень містить власне опис умов і дій, а в правій частині перераховуються всі можливі комбінації умов і, відповідно, вказується, які конкретно дії і в якій послідовності виконуються, коли певна комбінація умов має місце.
Пояснимо вищесказане на прикладі специфікації процесу вибору верхнього одягу з корзини з речами. При виборі верхнього одягу необхідно керуватися наступними правилами:
1. якщо чергова річ є верхнім одягом, то узяти і покласти в свою сумку;
2. якщо своя сумка повна, то закінчити пошук верхнього одягу;
3. якщо корзина з речами порожня, то закінчити пошук;
4. інакше помістити річ в контейнер для проглянутих речей.
Таблиця рішень для даного прикладу виглядає таким чином (таблиця 8.1):
Таблиця 8.1
УМОВИ | |||||||||
С1 | id_wear(c) | Т | Н | Т | Н | Т | Н | Т | Н |
С2 | Full_bag() | Н | Т | Т | Т | Н | Н | Т | Н |
С3 | Clear_kor() | Н | Т | Н | Н | Т | Т | Т | Н |
ДІЇ | |||||||||
D1 | Put_bag(c) | ||||||||
D2 | End_search() | ||||||||
D3 | Put_kont(c) |
Відмітимо, що якщо виконується умова C2, то немає необхідності в перевірці умов C1 і С3. Тому комбінації 2,3,4 і 7 можуть бути замінені узагальнювальною комбінацією (-,Т,-), де "-" означає будь-яку з можливих альтернатив (у нашому випадку, Т або Н). Тоді ми отримаємо зредуковану таблицю рішень:
Таблиця 2
УМОВИ | ||||||
С1 | id_wear(c) | Т | - | Т | Н | Н |
С2 | Full_bag() | Н | Т | Н | Н | Н |
С3 | Clear_kor() | Н | - | Т | Т | Н |
ДІЇ | ||||||
D1 | Put_bag(c) | |||||
D2 | End_search() | |||||
D3 | Put_kont(c) |
Побудову Таблиці Рішень рекомендується здійснювати по наступних кроках:
1. Ідентифікувати всі умови (або змінні) в специфікації. Ідентифікувати всі значення, які кожна змінна може мати.
2. Обчислити число комбінацій умов. Якщо всі умови є бінарними, то існує 2**N комбінацій N змінних.
3. Ідентифікувати кожну з можливих дій, які можуть викликатися в специфікації.
4. Побудувати порожню таблицю, що включає всі можливі умови і дії, а також номери комбінацій умов.
5. Виписати і занести в таблицю всі можливі комбінації умов.
6. Редукувати комбінації умов.
7. Перевірити кожну комбінацію умов і ідентифікувати відповідні виконувані дії.
8. Виділити комбінації умов, для яких специфікація не вказує список дій, що треба виконати.
9. Обговорити побудовану таблицю.
Псевдокоди.
Псевдокод – формалізований текстовий опис алгоритму (текстова анотація). В літературі були представлені декілька варіантів псевдокодів. Один з них приведений в табл.8.3.
Таблиця 8.3
Структура | Псевдокод | Структура | Псевдокод |
Слідування | <Дія 1> <Дія 2> | Вибір | ВИБІР <код> <код 1>: <Дія 1> <код 2>: <Дія 2> Все-вибір |
Розгалуження | ЯКЩО <Умова> ТО <Дія 1> ІНАКШЕ <Дія 2> Все-якщо | Цикл з заданим числом повторень | ДЛЯ <індекс> = <n>,<к>,<h> <Дія> Все-цикл |
Цикл-доки | ЦИКЛ-ДОКИ <Умова> <Дія > Все-цикл | Цикл-до | Виконувати <Дія > ДО <умова > |