М. В. Красильникова проектирование информационных систем раздел: Теоретические основы проектирования информационных систем Учебное пособие

Вид материалаУчебное пособие
Структурированный естественный язык
Таблицы решений
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   ...   20

Структурированный естественный язык


Структурированный естественный язык применяется для читабельного, строгого описания спецификаций процессов. Он является разумной комбинацией строгости языка программирования и читабельности естественного языка и состоит из подмножества слов, организованных в определенные логические структуры, арифметических выражений и диаграмм.

В состав языка входят следующие основные символы:
  • глаголы, ориентированные на действие и применяемые к объектам;
  • термины, определенные на любой стадии проекта ПО (например, задачи, процедуры, символы данных и т.п.);
  • предлоги и союзы, используемые в логических отношениях;
  • общеупотребительные математические, физические и технические термины;
  • арифметические уравнения;
  • таблицы, диаграммы, графы и т.п.;
  • комментарии.

Управляющие структуры языка имеют один вход и один выход. К ним относятся:
  1. последовательная конструкция:
    ВЫПОЛНИТЬ функция1
    ВЫПОЛНИТЬ функция2
    ВЫПОЛНИТЬ функция3

  2. конструкция выбора:
    ЕСЛИ <условие> ТО
    ВЫПОЛНИТЬ
    функция1
    ИНАЧЕ


ВЫПОЛНИТЬ функция2

КОНЕЦЕСЛИ

3) итерация:
ДЛЯ <условие>
ВЫПОЛНИТЬ функция
КОНЕЦДЛЯ


или

ПОКА <условиё>

ВЫПОЛНИТЬ функция

КОНЕЦПОКА

При использовании структурированного естественного языка приняты следующие соглашения:
  1. логика процесса выражается в виде комбинации последовательных конструкций, конструкций выбора и итераций;
  2. ключевые слова ЕСЛИ, ВЫПОЛНИТЬ, ИНАЧЕ и т.д. должны быть написаны заглавными буквами;
  3. слова или фразы, определенные в словаре данных, должны
    быть написаны заглавными буквами;
  4. глаголы должны быть активными, недвусмысленными и
    ориентированными на целевое действие (заполнить, вычислить,
    извлечь,
    а не модернизировать, обработать);
  5. логика процесса должна быть выражена четко, недвусмысленно.

Таблицы решений


Структурированный естественный язык неприемлем для некоторых типов преобразований. Например, если действие зависит от нескольких переменных, которые в совокупности могут продуцировать большое число комбинаций, то его описание будет слишком запутанным и с большим числом уровней вложенности. Для описания подобных действий традиционно используются таблицы и деревья решений.

Проектирование спецификаций процессов с помощью таблиц решений (ТР) заключается в задании матрицы, отображающей множество входных условий во множество действий.

Таблица решений состоит из двух частей. Верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ-частью оператора ЕСЛИ-ТО и требует ответа "да-нет". Однако иногда в условии может присутствовать и ограниченное множество значений, например, ЯВЛЯЕТСЯ ЛИ ДЛИНА СТРОКИ БОЛЬШЕЙ, МЕНЬШЕЙ ИЛИ РАВНОЙ ГРАНИЧНОМУ ЗНАЧЕНИЮ?

Нижняя часть таблицы решений используется для определения действий, т.е. ТО-части оператора ЕСЛИ-ТО. Так, в конструкции ЕСЛИ ИДЕТ ДОЖДЬ, ТО РАСКРЫТЬ ЗОНТ. ИДЕТ ДОЖДЬ является условием, а РАСКРЫТЬ ЗОНТ – действием.

Левая часть таблицы решений содержит собственно описание условий и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия и в какой последовательности выполняются, когда определенная комбинация условий имеет место.

Поясним вышесказанное на примере спецификации процесса выбора верхней одежды из корзины с вещами. При выборе верхней одежды необходимо руководствоваться следующими правилами:
  1. если очередная вещь является верхней одеждой, то взять и положить в свою сумку;
  2. если своя сумка полная, то закончить поиск верхней одежды;
  3. если корзина с вещами пуста, то закончить поиск;
  4. иначе поместить вещь в контейнер для просмотренных вещей.

Таблица решений для данного примера выглядит следующим образом:

Таблица 1




УСЛОВИЯ

1

2

3

4

5

6

7

8

С1

id_wear(c)

Д

Н

Д

Н

Д

Н

Д

Н

С2

Full_bag()

Н

Д

Д

Д

Н

Н

Д

Н

С3

Clear_kor()

Н

Д

Н

Н

Д

Д

Д

Н




ДЕЙСТВИЯ

























D1

Put_bag(c)

1










1










D2

End_search()




1

1

1

2

1

1




D3

Put_kont(c)






















1


Заметим, что если выполняется условие C2, то нет необходимости в проверке условий C1 и С3. Поэтому комбинации 2,3,4 и 7 могут быть заменены обобщающей комбинацией (-,Д,-), где "-" означает любую из возможных альтернатив (в нашем случае, Д или Н). Тогда мы получим редуцированную1 таблицу решений:

Таблица 2




УСЛОВИЯ

1

2

3

4

5

С1

id_wear(c)

Д

-

Д

Н

Н

С2

Full_bag()

Н

Д

Н

Н

Н

С3

Clear_kor()

Н

-

Д

Д

Н




ДЕЙСТВИЯ
















D1

Put_bag(c)

1




1







D2

End_search()




1

2

1




D3

Put_kont(c)













1


Построение таблицы решений рекомендуется осуществлять по следующим шагам:
  1. идентифицировать все условия (или переменные) в спецификации. Идентифицировать все значения, которые каждая переменная может иметь;
  2. вычислить число комбинаций условий. Если все условия являются бинарными, то существует 2**N комбинаций N переменных;
  3. идентифицировать каждое из возможных действий, которые могут вызываться в спецификации;
  4. построить пустую таблицу, включающую все возможные условия и действия, а также номера комбинаций условий;
  5. выписать и занести в таблицу все возможные комбинации
    условий;
  6. редуцировать комбинации условий;
  7. проверить каждую комбинацию условий и идентифицировать соответствующие выполняемые действия;
  8. выделить комбинации условий, для которых спецификация не указывает список выполняемых действий;
  9. обсудить построенную таблицу.