4.2. Основные характеристики программного модуля
Выделить "хороший" модуль - сложная задача. Неформально приемлемость модуля оценивается так: 1) хороший модуль снаружи проще, чем внутри, 2) хороший модуль проще использовать, чем построить. Для оценки приемлемости модуля используются более конструктивные характеристики: размер модуля, прочность модуля, сцепление с другими модулями, рутинность модуля (независимость от предыстории обращений к нему).
1. Размер модуля определяется числом содержащихся в нем операторов или строк. Модуль должен быть не малым и не большим. Маленькие модули приводят к громоздкой структуре программы и не окупают расходов, связанных с их оформлением. Большие модули неудобны для изучения и изменения. Рекомендуются модули от нескольких десятков до нескольких сотен операторов.
2. Прочность модуля это мера его внутренних связей. Чем выше прочность модуля, тем больше связей он может спрятать от внешней по отношению к нему программы и тем больший вклад в упрощение программы он внесет. Для оценки степени прочности используется упорядоченный набор классов модулей. Самой слабой степенью прочности обладает модуль, прочный по совпадению. Это модуль, между элементами которого нет осмысленных связей. Такой модуль выделяется при обнаружении в разных местах программы повторения одной и той же последовательности операторов. Изменение этой последовательности в одном месте приводит к изменению самого модуля, что делает его использование в других местах ошибочным. Этот класс модулей не рекомендуется использовать. Из остальных к использованию рекомендуются только два высших класса. Рассмотрим эти классы.
1) Функционально прочный модуль это модуль, выполняющий одну определенную функцию. Такой модуль могут использовать и другие модули.
2) Информационно прочный модуль это модуль, выполняющий несколько операций (функций) над одной и той же структурой данных или информационными объектами, которые считается неизвестными вне рамок модуля. Для каждой из этих операций в модуле имеется свой вход со своей формой обращения к нему. Этот класс модулей обладает высшей степенью прочности. Информационно прочный модуль реализует, например, абстрактный тип данных.
3. Сцепление модуля это мера его зависимости по данным от других модулей. Сцепление характеризуется способом передачи данных. Чем слабее сцепление модуля, тем сильнее его независимость. Для оценки степени сцепления используется упорядоченный набор видов сцепления. Худшим видом является сцепление по содержимому. Таким является сцепление двух модулей, когда один из них имеет прямые ссылки на содержимое другого модуля, например, его константу. Такое сцепление недопустимо. Не рекомендуется использовать также сцепление по общей области, когда несколько модулей используют одну и ту же область памяти. Такое сцепление реализовано, например, в языке ФОРТРАН в форме блоков COMMON. Единственным видом сцепления модулей, который рекомендуется для использования, является параметрическое сцепление, когда данные передаются модулю при обращении к нему как значения его параметров, или как результат его обращения к другому модулю для вычисления некоторой функции. Такой вид сцепления модулей реализован в языках программирования, использующих обращения к процедурам (функциям).
4. Рутинность модуля это его независимость от предыстории обращений к нему. Модуль называется рутинным, если результат (эффект) обращения к нему зависит только от значений его параметров. Модуль называется зависящим от предыстории, если результат обращения к нему зависит от его внутреннего состояния, изменяемого в результате предыдущих обращений. Такие модули могут провоцировать появление в программах неуловимых ошибок. Однако во многих случаях зависящий от предыстории модуль является лучшей реализаций информационно прочного модуля. Следует использовать рутинный модуль, если это не приводит к плохим сцеплениям модулей. Зависящие от предыстории модули следует использовать в случае, когда это необходимо для обеспечения параметрического сцепления. При этом в спецификации модуля необходимо формулировать эту зависимость, чтобы прогнозировать его поведение при последующих обращениях к нему.
- Введение в программирование и основы алгоритмизации
- 1.2. Понятие "правильной" программы
- 1.3. Надежность программного средства
- 1.4. Технология программирования как разработка надежных пс
- 1.5. Информатизация общества
- Тема 2 источники ошибок в программных средствах
- 2.1. Интеллектуальные возможности человека
- 2.2. Неправильный перевод как причина ошибок в пс
- 2.3. Модель перевода
- На каждом из этих шагов человек может совершить ошибку разной природы.
- 2.4. Основные пути борьбы с ошибками
- Тема 3 общие принципы разработки программных средств
- 3.1. Специфика разработки пс
- 3.2. Жизненный цикл пс
- 3.3. Понятие качества пс
- 3.4. Внешнего описания и его роль в обеспечении качества пс
- 3.5. Обеспечение надежности – основной мотив разработки пс
- 3.5. Борьба со сложностью систем и обеспечение точности перевода
- Тема 4 разработка структуры программы. Модульное и объектно-ориентированное программирование
- 4.1. Цель модульного программирования
- 4.2. Основные характеристики программного модуля
- 4.3. Методы разработки структуры программы
- 4.4. Объектно-ориентированное программирование
- 4.5. События и событийная модель
- Тема 5 Алгоритмизация и разработка программного модуля
- 5.1. Определение алгоритма
- Алгоритмизация - техника составления алгоритмов и программ для решения задач на эвм.
- 5.2. Изобразительные средства описания алгоритмов
- 5.3. Блок-схемы алгоритмов. Графические символы
- 5.4. Порядок разработки программного модуля
- 5.5. Структурное программирование
- 5.6. Пошаговая детализация и понятие о псевдокоде
- Тема 6 тестирование и отладка программного средства
- 6.1. Основные понятия
- 6.2. Принципы и виды отладки пс
- 6.3. Заповеди отладки пс
- 6.4. Автономная отладка пс
- Тема 7 Методы разработки алгоритмов
- 7.1. Метод частных целей
- 7.2. Метод подъема
- 7.3. Программирование с отходом назад
- Тема 8 Алгоритмы сортировки
- 8.1. Сортировка. Основные понятия
- 8.2. Пузырьковая сортировка
- 8.3. Сортировка с помощью дерева
- 8.4. Пирамидальная сортировка
- 8.5. Быстрая сортировка
- Тема 9 Алгоритмы поиска и перебора
- 9.1. Поиск. Основные понятия
- 9.2. Бинарный поиск
- 9.3. Поиск в сети
- Тема 10 Событийно-управляемое программирование на языке Visual Basic
- 10.1. Историческая справка
- 10.2. Основы Visual Basic
- Среда Windows: окна, события, сообщения
- Интерактивная разработка
- Интегрированная среда разработки
- 10.3. Формы и элементы управления
- Разработка и установка свойств формы
- События и методы формы
- Кнопки управления как основа выполнения действий
- 10.4. Элементы управления пользователя
- Флажки и переключатели
- Другие стандартные элементы управления
- 10.5. Фокус. Последовательность переходов. Меню Фокус
- Основы меню
- Контекстные меню
- Редактор меню
- Подсказки пользователю с помощью диалога
- Тема 11 Управление проектами
- 11.1. Работа с проектом и его структура
- 11.2. Работа с несколькими проектами
- 11.4. Установка параметров проекта
- 11.5. Дополнения и мастера
- Тема 12 Управляющие конструкции
- 12.1. Конструкции принятия решения (ветвление)
- 12.2. Циклы
- 12.3. Работа со структурами управления и досрочный выход из них
- Тема 13 Структура приложения. Техника написания кода
- 13.1. Структура приложения
- 13.2. Как работает событийное приложение
- 13.3. До начала кодирования
- 13.4. Техника написания кода
- 13.5. Автоматизация написания программы