Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ К ГОСАМ.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
3.02 Mб
Скачать

8. Декомпозиция систем. Основные варианты декомпозиции систем. Декомпозиция систем в их проектировании.

Декомпозиция (структуризация) - расчленение системы на части при ее исследовании или проектировании.

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

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

Существует три основных варианта декомпозиции:

  • простая декомпозиция (trival),

  • функциональная (functional)

  • декомпозиция данных.

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

Тривиальная (простая) декомпозиция

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

Функциональная декомпозиция

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

Предположим наша задача сводится к применению некоего функционального оператора к большому массиву данных: S[i]=F(a[i]). Предположим также, что выполнение функции F над одним элементом массива занимает достаточно большое время и нам хотелось бы это время сократить. В этом случае мы можем попытаться представить исходную функцию как композицию нескольких фунуций: S[i]=I(H(R(a[i]). Произведя декомпозицию мы получим систему последовательных задач:

x=r(a[i]);

y=h(x);

b[i]=i(y);

Декомпозиция данных

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

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

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

1) по возможности создать и проанализировать как можно больше проекций рассматриваемой системы;

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

3) нахождение и локализация в одном или нескольких классах или модулях абстрактной функциональности с целью использования ее в других, более специфичных классах/модулях. Абстрактная функциональность, как правило, мало связана с прикладной задачей и выполняет вспомогательные (служебные) функции.