Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ПА и ПО (с пояснениями).doc
Скачиваний:
10
Добавлен:
23.09.2019
Размер:
851.97 Кб
Скачать

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

Основана на 2-х стратегиях:

1) пошаговое уточнение (Дейкстра)

2) анализ потоков данных (Иордан, Майерс)

1. Пошаговое уточнение:

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

Разбиение на модули при функциональной декомпозиции первоначально осуществлялось эвристическим способом.

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

Ещё одним подходом формализации является проектирование системы в виде набора виртуальных машин.

Преимущества метода пошагового уточнения состоит в поддержке корректности проектирования. Если первый шаг является верным, то все последующие шаги так же верны.

Недостаток: на поздних стадиях может обнаружится необходимость изменения на вышестоящих уровнях.

2. Метод анализа потоков данных:

Основан на 2-й стратегии декомпозиции и рассматривается поток данных как движущая сила потока проектирования.

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

П роцедура проектирования:

1) Идентифицируется поток данных и строится граф потока данных, причём поток может состоять из мн-ва потоков.

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

3) Формируется иерархическая структура программы использующая эти эл-ты.

4) Детализируется структура программы сформированная на 3-м шаге с применением методов использованных на шагах 1 и 2.

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

Пример программы обработки блоков данных с применением метода потоков данных:

Декомпозиция 1-го уровня:

И – исток, С – сток, О – обработчик.

Д екомпозиция 2-го уровня:

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

Н а входе и выходе так же указываются способы обмена данных.

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

Связанность модулей

Связанность – мера зависимости частей одного модуля.

Силу связанности будем обозначать в баллах от 0 до 10 (10 самая лучшая).

Типы связанности:

1) Функциональная связанность (10) – модуль с таким типом связанности не может быть разбит на две других функционально связанных частей (например: модуль высшего уровня иерархии).

2) Последовательная (9) – модуль с таким типом связанности может быть разбит на последовательные части, которые последовательно реализуют одну ф-цию.

3) Коммутативная (7) – части модуля при таком типе связанности разделяют общую структуру данных (применяются если необходимо изолировать сложную структуру данных).

Перечисленные виды связанности являются хорошими, к таким следует стремится.

4) Процедурная (5) – обнаруживается в модулях которые возникли при расчленении длинной программы на части в соответствии с передачей управления, т.е. плохо-продуманное разделение модулей.

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

6) Логическая (1) – имеет место если части модуля объединены по признаку функционального подобия (например: все части модуля предназначены для обработки ошибок).

7) Связанность по совпадению (0) – части модуля не связанны между собой, т.е. например: если необходимо указать, что они находятся в одной области памяти.