Разработка структуры программы. Модульное программирование

Содержание

Слайд 2

09/02/2023 Содержание Понятие модульного программирования Основные характеристики модуля Методы разработки структуры программы Контроль структуры

09/02/2023

Содержание

Понятие модульного программирования
Основные характеристики модуля
Методы разработки структуры программы
Контроль структуры

Слайд 3

09/02/2023 Цель модульного программирования Упрощение структуры ПС Отображение архитектуры ПС Повышение

09/02/2023

Цель модульного программирования

Упрощение структуры ПС
Отображение архитектуры ПС
Повышение качества разработки
Сокращение пространства поиска

ошибок
Слайд 4

09/02/2023 Понятие модульного программирования Модуль – любой фрагмент описания процесса, оформляемый

09/02/2023

Понятие модульного программирования

Модуль – любой фрагмент описания процесса, оформляемый как самостоятельный

программный продукт
Модуль может входить во многие процессы, если он должным образом документирован
Модульное программирование – разработка ПС в виде совокупности модулей
Слайд 5

09/02/2023 Процессы модульного программирования Разделение – выделение отдельных модулей на основе

09/02/2023

Процессы модульного программирования

Разделение – выделение отдельных модулей на основе их характеристик

(отношения между элементами, интенсивности взаимодействия и т.д.)
Программирование – разработка модулей индивидуальными программистами или группами (проходит параллельно)
Интеграция – проверка взаимодействия модулей в реальной среде
Слайд 6

09/02/2023 Схема модульного программирования

09/02/2023

Схема модульного программирования

Слайд 7

09/02/2023 Схема реализации модуля

09/02/2023

Схема реализации модуля

Слайд 8

09/02/2023 Свойства модулей Являются критериями оценки качества модуля Часто выражаются количественно

09/02/2023

Свойства модулей

Являются критериями оценки качества модуля
Часто выражаются количественно
Основные свойства:
Размер
Прочность
Сцепление
Рутинность

Слайд 9

09/02/2023 Размер модулей Измеряется числом содержащихся операторов или строк (в зависимости

09/02/2023

Размер модулей

Измеряется числом содержащихся операторов или строк (в зависимости от языка)
Маленький

модуль – большие потери на документирование
Большой модуль – неудобно изменять и повторно транслировать
Слайд 10

09/02/2023 Прочность модулей Определяет меру внутренних связей между элементами модуля Различают

09/02/2023

Прочность модулей

Определяет меру внутренних связей между элементами модуля
Различают несколько степеней прочности
Прочность

по совпадению – модуль, между элементами которого нет осмысленных связей
Слайд 11

09/02/2023 Прочность модулей Функционально прочный модуль – выполняет одну определенную функцию

09/02/2023

Прочность модулей

Функционально прочный модуль – выполняет одну определенную функцию
Может содержать вспомогательные

функции
Рекомендуется к использованию в структурном проектировании
Слайд 12

09/02/2023 Прочность модулей Информационно прочный модуль – выполняет операции над определенной

09/02/2023

Прочность модулей

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

известной только внутри модуля
Высшая степень прочности
Рекомендуется к использованию в ООП
Слайд 13

09/02/2023 Сцепление модулей Определяет меру зависимости по данным от других модулей

09/02/2023

Сцепление модулей

Определяет меру зависимости по данным от других модулей и характеризует

способ передачи данных
Сцепление по содержимому – прямые ссылки на содержимое другого модуля (константы)
Сцепление по общей области – использование общей области памяти для взаимодействия
Параметрическое сцепление – передача данных или их возврат в виде параметров при обращении
Слайд 14

09/02/2023 Рутинность Определяет независимость модуля от предыстории обращений к нему Рутинный

09/02/2023

Рутинность

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

обращения зависит только от переданных параметров
Зависящий от предыстории модуль – эффект обращения определяется внутренним состоянием модуля
Слайд 15

09/02/2023 Рекомендации по обеспечению рутинности Желательно использовать только рутинные модули Зависящие

09/02/2023

Рекомендации по обеспечению рутинности

Желательно использовать только рутинные модули
Зависящие от предыстории модули

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

09/02/2023 Метрики IEEE для оценки модуля Пусть s – это число

09/02/2023

Метрики IEEE для оценки модуля

Пусть s – это число отдельных операторов

в программе (например, *,+,-)
Пусть v – число отдельных операндов в программе
S – общее число операторов, V – общее число операндов
Оценки:
Предполагаемая длина программы
s*(log S) + v*(log V)
Сложность программы
s*V/(2*v)
Слайд 17

09/02/2023 Цикломатическая метрика Пусть N – это число операторов в программе

09/02/2023

Цикломатическая метрика

Пусть N – это число операторов в программе
Пусть E –

число переходов между операторами
Цикломатическая сложность: E-N+1
Слайд 18

09/02/2023 Разработка структуры программы Структура представляется в виде дерева, где каждый

09/02/2023

Разработка структуры программы

Структура представляется в виде дерева, где каждый модуль может

использовать или использоваться другими
Деревья могут иметь сросшиеся ветви
Слайд 19

09/02/2023 Пример структуры программы

09/02/2023

Пример структуры программы

Слайд 20

09/02/2023 Спецификация модуля Синтаксическая Функциональная или семантическая Представляет модуль законченной единицей Может быть формализована

09/02/2023

Спецификация модуля

Синтаксическая
Функциональная или семантическая
Представляет модуль законченной единицей
Может быть формализована

Слайд 21

09/02/2023 Методы разработки структуры ПС Определяются направлением и способом обхода дерева

09/02/2023

Методы разработки структуры ПС

Определяются направлением и способом обхода дерева
Восходящая и нисходящая

разработка
Комбинированный метод
Направленная разработка
Слайд 22

09/02/2023 Восходящая разработка Строится структура в виде дерева Движение начинается от

09/02/2023

Восходящая разработка

Строится структура в виде дерева
Движение начинается от наименьших модулей
Тестирование в

том же порядке
Порядок разработки кажется естественным
Слайд 23

09/02/2023 Недостатки восходящей разработки Для программирования модуля не обязательна готовность всех

09/02/2023

Недостатки восходящей разработки

Для программирования модуля не обязательна готовность всех используемых им

модулей (можно заменить заглушками)
Часто возникает проблема перепроектирования модулей высшего уровня
Для отладки модуля создается специальный стенд (программа, моделирующая внешнюю среду)
Слайд 24

09/02/2023 Нисходящая разработка Строится структура в виде дерева Движение начинается от

09/02/2023

Нисходящая разработка

Строится структура в виде дерева
Движение начинается от головного модуля
Модуль начинает

разрабатываться, если уже готов модуль, обращающийся к нему
Тестирование в том же порядке
Слайд 25

09/02/2023 Преимущества нисходящей разработки Использование имитаторов или заглушек Естественное формирование внешней

09/02/2023

Преимущества нисходящей разработки

Использование имитаторов или заглушек
Естественное формирование внешней среды
Возможность реализовать сложные

тесты
Меньшая вероятность перепроектирования
Слайд 26

09/02/2023 Другие подходы Восходящая и нисходящая разработка – классические подходы, требующие

09/02/2023

Другие подходы

Восходящая и нисходящая разработка – классические подходы, требующие наличия готовой

структуры программы
Структура может формироваться в ходе разработки:
Конструктивный подход
Архитектурный подход
Слайд 27

09/02/2023 Конструктивный подход Является модификацией нисходящей разработки Выделяются направления разработки и

09/02/2023

Конструктивный подход

Является модификацией нисходящей разработки
Выделяются направления разработки и формируются ветви дерева
Отсутствующие

модули и ветви заменяются имитаторами
Слайд 28

09/02/2023 Архитектурный подход Является модификацией восходящей разработки Основная цель – повышение

09/02/2023

Архитектурный подход

Является модификацией восходящей разработки
Основная цель – повышение уровня языка разработки

за счет создания крупных абстракций
Готовые модули параметризуются и допускают повторное использование
Слайд 29

09/02/2023 Комбинированный метод (сэндвич) Дерево обходят в двух направлениях – сверху

09/02/2023

Комбинированный метод (сэндвич)

Дерево обходят в двух направлениях – сверху и снизу
Сочетает

достоинства и недостатки классических подходов
Достаточно широко применяется