1_08 - МиСПИСТ (ТРПО Структура)
DESCRIPTION
ÂTRANSCRIPT
![Page 1: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/1.jpg)
Инструментально-программный
методический комплекс
Методы и средства проектирования информационных систем и технологий
Технология разработкипрограммного обеспечения
Часть 8.
Разработка структуры программы
и модульное программирование
![Page 2: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/2.jpg)
2
8.1. Цель модульного программирования
Цель - упростить программную систему. Средство
борьбы со сложностью программ
Программный модуль это любой фрагмент
описания процесса, оформляемый как
самостоятельный программный продукт,
пригодный для использования в описаниях
процесса.
![Page 3: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/3.jpg)
3
8.2. Основные характеристики программного модуля
• размер модуля,
• прочность модуля,
• сцепление с другими модулями,
• рутинность модуля (независимость от предыстории
обращений к нему).
Характеристики программного модуля [Г.Майерс]:
![Page 4: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/4.jpg)
4
• Измеряется числом содержащихся в нем операторов или строк.
• Модуль не должен быть слишком маленьким или слишком
большим.
• Маленькие модули приводят к громоздкой модульной структуре
программы и могут не окупать накладных расходов, связанных с
их оформлением.
• Большие модули неудобны для изучения и изменений, они могут
существенно увеличить суммарное время повторных трансляций
программы при отладке программы.
• Обычно рекомендуются программные модули размером от
нескольких десятков до нескольких сотен операторов.
Размер модуля
![Page 5: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/5.jpg)
5
Это мера его внутренних связей.
Чем выше прочность модуля, тем больше связей он может спрятать
от внешней по отношению к нему части программы и,
следовательно, тем больший вклад в упрощение программы он
может внести.
Прочность модуля
![Page 6: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/6.jpg)
6
• Это такой модуль, между элементами которого нет осмысленных
связей.
• Такой модуль может быть выделен, например, при обнаружении в
разных местах программы повторения одной и той же
последовательности операторов, которая и оформляется в
отдельный модуль.
• Необходимость изменения этой последовательности в одном из
контекстов может привести к изменению этого модуля, что может
сделать его использование в других контекстах ошибочным.
Прочность модуля по совпадению
![Page 7: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/7.jpg)
7
• Это модуль, выполняющий (реализующий)
одну какую-либо определенную функцию.
• При реализации этой функции такой модуль
может использовать и другие модули.
Функционально прочный модуль
![Page 8: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/8.jpg)
8
• Это модуль, выполняющий (реализующий) несколько операций
(функций) над одной и той же структурой данных (информационным
объектом), которая считается неизвестной вне этого модуля.
• Для каждой из этих операций в таком модуле имеется свой вход со
своей формой обращения к нему.
• Такой класс следует рассматривать как класс программных модулей
с высшей степенью прочности.
Информационно прочный модуль
![Page 9: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/9.jpg)
9
• Это мера его зависимости по данным от других модулей.
• Независимые модули могут быть модифицированы без
переделки других модулей
• Характеризуется способом передачи данных. Чем слабее
сцепление модуля с другими модулями, тем сильнее его
независимость от других модулей (тем лучше).
Сцепление модуля
![Page 10: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/10.jpg)
10
Сцепление по содержимому. Таким является сцепление двух модулей,
когда один из них имеет прямые ссылки на содержимое другого модуля
(например, на константу, содержащуюся в другом модуле).
Сцепление по общей области это такое сцепление модулей, когда
несколько модулей используют одну и ту же область памяти.
Параметрическое сцепление это случай, когда данные передаются
модулю либо при обращении к нему как значения его параметров, либо
как результат его обращения к другому модулю для вычисления
некоторой функции.
Оценки степени сцепления модулей
![Page 11: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/11.jpg)
11
• Это его независимость от предыстории обращений к нему.
• Модуль называется рутинным, если результат (эффект)
обращения к нему зависит только от значений его параметров (и
не зависит от предыстории обращений к нему).
• Модуль называется зависящим от предыстории, если результат
(эффект) обращения к нему зависит от внутреннего состояния
этого модуля, изменяемого в результате предыдущих обращений
к нему.
Рутинность модуля
![Page 12: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/12.jpg)
12
• В большинстве случаев надо делать модуль рутинным, т.е.
независимым от предыдущих обращений.
• Зависящие от предыстории модули следует использовать
только в тех случаях, когда это необходимо для сцепления
по данным
• В спецификации зависящего от предыстории модуля
должна быть четко сформулирована эта зависимость,
чтобы пользователи имели возможность прогнозировать
поведение такого модуля
Рутинность модуля (рекомендации)
![Page 13: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/13.jpg)
13
8.3. Методы разработки структуры программы
В основу положен модульный подход
В качестве модульной структуры программы принято использовать древовидную структуру.
В узлах такого дерева размещаются программные модули, а направленные дуги (стрелки) показывают статическую подчиненность модулей, т.е. каждая дуга показывает, что в тексте модуля, из которого она исходит, имеется ссылка на модуль, в который она входит.
Модуль 1
Модуль 2
Модуль 4
Модуль 3
![Page 14: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/14.jpg)
14
Спецификация программного модуля
1. Синтаксическую спецификацию его входов,
позволяющую построить на используемом языке
программирования синтаксически правильное
обращение к нему (к любому его входу)
2. Функциональную спецификацию модуля
(описание семантики функций, выполняемых этим
модулем по каждому из его входов).
Содержит:
![Page 15: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/15.jpg)
15
1. Метод восходящей разработки
2. Метод нисходящей разработки
Методы разработки структуры программы
Классический (водопадный) подход
Модульная структура программы была разработана до
начала программирования (кодирования) модулей.
![Page 16: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/16.jpg)
16
Модуль 1
Модуль 3
Модуль 4
Модуль 2
Модуль 51
2
3
4
5
Последовательность разработки
и тестирования
Методы восходящей разработки
![Page 17: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/17.jpg)
17
Методы нисходящей разработки
Модуль 1
Модуль 3
Модуль 4
Модуль 2
Модуль 55
4
3
2
1
Последовательность разработки и тестирования
![Page 18: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/18.jpg)
18
Модификация нисходящей разработки, при которой
модульная древовидная структура программы
формируется в процессе программирования модулей.
Методы разработки структуры программы
Конструктивный подход
![Page 19: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/19.jpg)
19
1-й шаг разработки структуры программыКонструктивный подход
Текст головного модуля
Спецификация программы(головного модуля)
Спецификация 1-й подзадачи
Спецификация 2-й подзадачи
Спецификация 3-й подзадачи
![Page 20: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/20.jpg)
20
Конструктивный подход
Текст головного модуля
Спецификация программы(головного модуля)
Спецификация 1-й подзадачи
Спецификация 2-й подзадачи
Спецификация 3-й подзадачи
Текст головного модуля 1-й подзадачи
Текст головного модуля 3-й подзадачи
Текст головного модуля 2-й подзадачи
Спецификация 2.1-й подзадачи
Спецификация 2.1-й подзадачи
2-й шаг разработки структуры программы
![Page 21: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/21.jpg)
21
Модификация восходящей разработки, при которой при которой модульная структура программы формируется в процессе программирования модуля.
Для заданной предметной области выделяются типичные функции, каждая из которых может использоваться при решении разных задач в этой области, и специфицируются, а затем и программируются отдельные программные модули, выполняющие эти функции.
Методы разработки структуры программы
Архитектурный подход
![Page 22: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/22.jpg)
22
Классификация методов разработки структуры программ
Методы разработки структуры программы
Нисходящие Восходящие
Классический подход
Конструктивный подход
Классический подход
Архитектурный подход
![Page 23: 1_08 - МиСПИСТ (ТРПО Структура)](https://reader031.vdocuments.site/reader031/viewer/2022013123/568c49ba1a28ab4916955321/html5/thumbnails/23.jpg)
23
8.4. Контроль структуры программы
1. Статический контроль.
2. Смежный контроль.
3. Сквозной контроль.