Сформировать очередь №№ вызвавших этажей

@

Иногда в СП задаютсяпред- и пост-условия выполнения данного процесса. В пред-условии записываются объекты, значения которых должны быть истинны перед началом выполнения процесса, что обеспечивает определенные гарантии безопасности для пользователя. Аналогично, в случае наличия пост-условия гарантируется, что значения всех входящих в него объектов будут истинны при завершении процесса.

СП должна удовлетворять следующим требованиям [20]:

- для каждого процесса нижнего уровня должна существовать одна и только одна спецификация;

- спецификация должна определять способ, но не метод преобразования входных потоков в выходные;

- спецификация должна стремиться к ограничению избыточности: не следует переопределять то, что уже было определено на диаграмме или в словаре данных;

Ниже рассматриваются некоторые наиболее часто используемые методы задания СП.

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

- глаголы, ориентированные на действия и применяемые к объектам данной предметной области;

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

- предлоги и союзы, используемые в логических отношениях;

- общеупотребительные математические, логические, физические и технические термины;

- арифметические выражения;

- таблицы, диаграммы, графики и т.п.;

- комментарии.

Управляющие конструкции структурированного языка имеют вид:

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

При использовании структурированного естественного языка приняты следующие соглашения [20]:

- логика процесса выражается в виде комбинации последовательных конструкций, конструкций выбора и итераций;

- ключевые слова ЕСЛИ, ВЫПОЛНИТЬ, ИНАЧЕ и т.д. должны быть написаны заглавными буквами;

- слова или фразы, определенные в словаре данных, должны быть написаны заглавными буквами;

- глаголы должны быть активными, недвусмысленными и ориентированными на целевое действие (заполнить, вычислить, извлечь, а не модернизировать, обработать);

- логика процесса должна быть выражена четко и недвусмысленно.

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

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

ТР состоит из двух частей. Верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ-частьюоператораЕСЛИ-ТО и требует ответа «да-нет». Нижняя часть ТР используется для определения действий, т.е. ТО-части оператораЕСЛИ-ТО.

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

Построение ТР рекомендуется осуществлять путем выполнения следующих шагов [20]:

1. Идентифицировать все условия (или переменные), участвующие в описываемом процессе. Идентифицировать все значения, которые каждая переменная может иметь.

2. Вычислить число комбинаций условий.

3. Идентифицировать каждое из возможных действий, которые могут вызываться в описываемом процессе.

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

5. Выписать и занести в таблицу все возможные комбинации условий.

6. Редуцировать комбинации условий (если это возможно).

7. Проверить каждую комбинацию условий и идентифицировать соответствующие выполняемые действия.

8. Выделить комбинации условий, для которых в данном процессе нет выполняемых действий.

9. Обсудить построенную таблицу.

Поясним вышесказанное на примере СП управления движением лифта (рис. 3.7, процесс №1) и СП управления остановкой лифта (рис. 3.7, процесс №2) (см. таблицы 3.2 и 3.3 соответственно).

При составлении таблиц использованы следующие обозначения входных потоков процессов управления движением и остановкой лифта, как условий: перегрузка – П, стоп по назначению – Сн, вверх по назначению –Вн, вниз по назначению –Нн, стоп по вызову вверх –Свв, стоп по вызову вниз – Снв, вверх по вызову – Вв, вниз по вызову – Нв; и выходных потоков этих процессов, как действий: стоп – С, вверх – В, вниз – Н.

 

Таблица 3.2. Таблица решений процесса управления движением лифта

Условия
Вн
Нн
Вв
Нв
Действия                  
В
Н

 

Таблица 3.3. Таблица решений процесса управления остановкой лифта

Условия
П
Сн *
Свв * *
Снв * *
В * *
Н * *
Действия                            
С

 

Обсудим построенные таблицы. Данные таблицы визуализируют обычную логику работы лифта в офисном здании. Согласно табл. 3.2, если из лифта было назначено движение вниз или вверх, то независимо от вызовов лифт будет выполнять эти назначения. При этом назначений вверх и вниз одновременно быть не может, что обеспечивается формированием очереди №№ этажей, назначенных в лифте (см. рис. 3.5). При отсутствии назначений будут выполняться вызова с этажей, которые по той же причине (см. рис. 3.6) не могут быть одновременно и вверх, и вниз. Согласно табл. 3.3 наличие перегрузки или требования остановится из лифта вызывают безусловную остановку. Требования остановится с этажа выполняются только при попутном движении лифта. Управляющий сигнал «С» при наличии требования на остановку с этажа (вызова с этажа) в случае, когда лифт стоит (В = 0; Н = 0), используется для открывания двери на вызвавшем этаже механической системой лифта.

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

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

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

Символы FLOW-форм приведены на рисунке 3.8. Каждый символ является блоком обработки. Каждый прямоугольник внутри любого символа также представляет собой блок обработки.

 

 

 


На рисунке 3.9 приведен пример использования данного подхода при проектировании СП, обеспечивающего упорядочивание определенным образом элементов массива и являющегося фрагментом алгоритма сортировки методом «поплавка» [20].

 

       
 
 
   

 


Дальнейшее развитие FLOW-формы получили вдиаграммах Насси-Шнейдермана. На этих диаграммах символы последовательной обработки и цикла изображаются так же, как и соответствующие символы FLOW-форм. В символах условного выбора и case-выбора собственно условие располагается в верхнем треугольнике, выбираемые варианты – на нижних сторонах треугольника, а блоки обработки – под выбираемыми вариантами. Диаграмма Насси-Шнейдермана для вышеприведенного примера изображена на рисунке 3.10 [20].