23
1 Технология разработки программного обеспечения Часть 8. Разработка структуры программы и модульное программирование (©) Владислав Лавров, vlavrov.professorjournal.ru

ТРПО (структура)

Embed Size (px)

Citation preview

Page 1: ТРПО (структура)

1

Технология разработки

программного обеспечения

Часть 8.

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

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 2: ТРПО (структура)

2

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

Цель - упростить программную систему. Средство

борьбы со сложностью программ

Программный модуль это любой фрагмент

описания процесса, оформляемый как

самостоятельный программный продукт,

пригодный для использования в описаниях

процесса.

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 3: ТРПО (структура)

3

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

• размер модуля,

• прочность модуля,

• сцепление с другими модулями,

• рутинность модуля (независимость от предыстории

обращений к нему).

Характеристики программного модуля [Г.Майерс]:

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 4: ТРПО (структура)

4

• Измеряется числом содержащихся в нем операторов или строк.

• Модуль не должен быть слишком маленьким или слишком

большим.

• Маленькие модули приводят к громоздкой модульной структуре

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

их оформлением.

• Большие модули неудобны для изучения и изменений, они могут

существенно увеличить суммарное время повторных трансляций

программы при отладке программы.

• Обычно рекомендуются программные модули размером от

нескольких десятков до нескольких сотен операторов.

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 5: ТРПО (структура)

5

Это мера его внутренних связей.

Чем выше прочность модуля, тем больше связей он может спрятать

от внешней по отношению к нему части программы и,

следовательно, тем больший вклад в упрощение программы он

может внести.

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 6: ТРПО (структура)

6

• Это такой модуль, между элементами которого нет осмысленных

связей.

• Такой модуль может быть выделен, например, при обнаружении в

разных местах программы повторения одной и той же

последовательности операторов, которая и оформляется в отдельный

модуль.

• Необходимость изменения этой последовательности в одном из

контекстов может привести к изменению этого модуля, что может

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

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 7: ТРПО (структура)

7

• Это модуль, выполняющий (реализующий)

одну какую-либо определенную функцию.

• При реализации этой функции такой модуль

может использовать и другие модули.

Функционально прочный модуль

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 8: ТРПО (структура)

8

• Это модуль, выполняющий (реализующий) несколько операций

(функций) над одной и той же структурой данных (информационным

объектом), которая считается неизвестной вне этого модуля.

• Для каждой из этих операций в таком модуле имеется свой вход со

своей формой обращения к нему.

• Такой класс следует рассматривать как класс программных модулей

с высшей степенью прочности.

Информационно прочный модуль

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 9: ТРПО (структура)

9

• Это мера его зависимости по данным от других модулей.

• Независимые модули могут быть модифицированы без

переделки других модулей

• Характеризуется способом передачи данных. Чем слабее

сцепление модуля с другими модулями, тем сильнее его

независимость от других модулей (тем лучше).

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 10: ТРПО (структура)

10

Сцепление по содержимому. Таким является сцепление двух модулей,

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

(например, на константу, содержащуюся в другом модуле).

Сцепление по общей области это такое сцепление модулей, когда

несколько модулей используют одну и ту же область памяти.

Параметрическое сцепление это случай, когда данные передаются

модулю либо при обращении к нему как значения его параметров, либо

как результат его обращения к другому модулю для вычисления

некоторой функции.

Оценки степени сцепления модулей

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 11: ТРПО (структура)

11

• Это его независимость от предыстории обращений к нему.

• Модуль называется рутинным, если результат (эффект)

обращения к нему зависит только от значений его параметров (и

не зависит от предыстории обращений к нему).

• Модуль называется зависящим от предыстории, если результат

(эффект) обращения к нему зависит от внутреннего состояния

этого модуля, изменяемого в результате предыдущих обращений

к нему.

Рутинность модуля

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 12: ТРПО (структура)

12

• В большинстве случаев надо делать модуль рутинным, т.е.

независимым от предыдущих обращений.

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

только в тех случаях, когда это необходимо для сцепления

по данным

• В спецификации зависящего от предыстории модуля

должна быть чётко сформулирована эта зависимость,

чтобы пользователи имели возможность прогнозировать

поведение такого модуля

Рутинность модуля (рекомендации)

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 13: ТРПО (структура)

13

8.3. Методы разработки структуры программы

В основу положен модульный подход

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

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

Модуль 1

Модуль 2

Модуль 4

Модуль 3

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 14: ТРПО (структура)

14

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

1. Синтаксическую спецификацию его входов,

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

программирования синтаксически правильное

обращение к нему (к любому его входу)

2. Функциональную спецификацию модуля

(описание семантики функций, выполняемых этим

модулем по каждому из его входов).

Содержит:

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 15: ТРПО (структура)

15

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

2. Метод нисходящей разработки

Методы разработки структуры программы

Классический (водопадный) подход

Модульная структура программы была разработана до

начала программирования (кодирования) модулей.

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 16: ТРПО (структура)

16

Модуль 1

Модуль 3

Модуль 4

Модуль 2

Модуль 51

2

3

4

5

Последовательность разработки

и тестирования

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 17: ТРПО (структура)

17

Методы нисходящей разработки

Модуль 1

Модуль 3

Модуль 4

Модуль 2

Модуль 55

4

3

2

1

Последовательность разработки и тестирования

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 18: ТРПО (структура)

18

Модификация нисходящей разработки, при которой

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

формируется в процессе программирования модулей.

Методы разработки структуры программы

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 19: ТРПО (структура)

19

1-й шаг разработки структуры программыКонструктивный подход

Текст головного модуля

Спецификация программы(головного модуля)

Спецификация 1-й подзадачи

Спецификация 2-й подзадачи

Спецификация 3-й подзадачи

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 20: ТРПО (структура)

20

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

Текст головного модуля

Спецификация программы(головного модуля)

Спецификация 1-й подзадачи

Спецификация 2-й подзадачи

Спецификация 3-й подзадачи

Текст головного модуля 1-й подзадачи

Текст головного модуля 3-й подзадачи

Текст головного модуля 2-й подзадачи

Спецификация 2.1-й подзадачи

Спецификация 2.1-й подзадачи

2-й шаг разработки структуры программы

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 21: ТРПО (структура)

21

Модификация восходящей разработки, при которой при

которой модульная структура программы

формируется в процессе программирования модуля.

Для заданной предметной области выделяются типичные

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

при решении разных задач в этой области, и

специфицируются, а затем и программируются

отдельные программные модули, выполняющие эти

функции.

Методы разработки структуры программы

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 22: ТРПО (структура)

22

Классификация методов разработки структуры программ

Методы разработки структуры программы

Нисходящие Восходящие

Классический подход

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

Классический подход

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

• (©) Владислав Лавров, vlavrov.professorjournal.ru

Page 23: ТРПО (структура)

23

8.4. Контроль структуры программы

1. Статический контроль.

2. Смежный контроль.

3. Сквозной контроль.

• (©) Владислав Лавров, vlavrov.professorjournal.ru