6.2.1. Структурные методологии разработки программного обеспечения

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

Применение структурного анализа и проектирования подразумевает применение на этапе программирования модульного и структурного программирования.

Одним из принципов инженерного программирования является принцип концептуальной общности. Заключается принцип в следовании единой философии на всех этапах ЖЦ ПО: структурный анализ — структурное проектирование — структурное программирование — структурное тестирование.

Идеи структурной методологии:

- преодолеть сложность больших систем путем разделения их на части;

- представить части в виде иерархических структур;

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

Структурные методологии классифицируются по порядку построения модели:

- процедурно-ориентированные;

- ориентированные на данные;

- информационно-ориентированные.

Разработка ПО основана на модели ВХОД-ОБРАБОТКА-ВЫХОД: данные входят в систему, обрабатываются или преобразуются и выходят из системы. Такая модель используется во всех структурных методологиях. При этом важен порядок построения модели и всегда подчеркивается различие между данными и процессами их обработки.

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

- в первую очередь определяются процессы обработки данных;

- затем устанавливаются необходимые для этого данные;

- организуются информационные потоки между связанными процессами.

При подходе, ориентированном на данные, вход и выход модели являются наиболее важными — структуры данных (а не потоки данных) определяются первыми, а процедурные компоненты строятся как производные от структур данных:

- сначала специфицируют данные;

- затем описывают процессы, использующие эти данные.

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

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

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

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

- для решения задач консалтинга (современного направления по реорганизации бизнес-процессов, предваряющей автоматизацию пре­дп­ри­я­тия) информационная модель является недостаточной;

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

Большинство методологий использует в различных комбинациях большое количество методов и нотаций структурных диаграмм:

для анализа — функциональные диаграммы, диаграммы потоков данных, диаграммы декомпозиции, языки проектирования спецификаций, таблицы, деревья решений, диаграммы потоков управления, др.;

для проектирования — диаграммы переходов состояний, структурные карты, блок-схемы, схемы экранов, диаграммы "сущность-связь".

Структурные методологии классифицируются по типу целевых систем:

- для систем реального времени;

- для информационных систем.

Основная особенность систем реального времени заключается в том, что они контролируют и контролируются внешними событиями; реагирование на эти события во времени — основная и первоочередная функция таких систем.

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

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

Таблица 6.1

Главные различия информационных систем и систем реального времени

Информационные системы

Системы реального времени

Управляемы данными

Управляемы событиями

Сложные структуры данных

Простые структуры данных

Большой объем входных данных

Малое количество входных данных

Интенсивный ввод/вывод

Интенсивные вычисления

Машинная независимость

Машинная зависимость

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

Однако многие из них являются вариациями структурных диаграмм для проектирования информационных систем. Более того, известные структурные методологии разработки систем реального времени базируются на методологиях разработки информационных систем, расширяя их соответствующими методами и нотациями.

Известные структурные методологии:

- SADT (Structured Analysis and Design Technique) — процедурно-ориен-тированная и ориентированная на данные методология (два варианта использования) для информационных систем. Введена Россом (Ross) в 1973 г.;

- Гейна-Сарсона (Gane-Sarson) - процедурно-ориентированная методология для информационных систем и систем реального времени;

- Йодана-Де Марко (Yourdon/DeMarko) - процедурно-ориентированная методология для информационных систем и систем реального времени;

- Джексона (Jackson) — ориентированная на данные методология для информационных систем и систем реального времени;

- Мартина (Martin) - информационно-ориентированная методология для информационных систем;

- Уорда-Меллора (Ward-Mellor) — методология анализа и проектирования систем реального времени;

- Хатли (Hatley) — методология анализа и проектирования систем реального времени.

Кроме того, крупные компании — производители ПО разрабатывают собственные методологии на основе известных классических методологий. Главной отличительной чертой таких методологий является их ориентация на конкретное CASE-средство анализа и проектирования, производимое и/или продвигаемое компанией.

В различных методологиях для функционального моделирования могут использоваться диаграммы потоков данных (DFD) в различных нотациях или SADT-диа-граммы в нотации IDEF0.

Это два приблизительно одинаковых по мощности языка передачи понимания. И одним из основных критериев выбора должен являться следующий: насколько хорошо каждым из этих языков владеет консультант, аналитик, проектировщик.

Соотношение CASE-средств, поддерживающих эти методы, примерно 93 % и 3 % соответственно, остальные 3 % — другие методы. 

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

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