1_08 - МиСПИСТ (ТРПО Структура)

Post on 25-Mar-2016

242 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Инструментально-программный

методический комплекс

Методы и средства проектирования информационных систем и технологий

Технология разработкипрограммного обеспечения

Часть 8.

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

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

2

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

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

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

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

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

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

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

процесса.

3

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

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

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

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

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

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

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

4

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

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

большим.

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

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

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

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

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

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

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

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

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

5

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

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

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

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

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

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

6

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

связей.

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

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

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

отдельный модуль.

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

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

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

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

7

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

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

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

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

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

8

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

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

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

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

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

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

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

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

9

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

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

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

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

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

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

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

10

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

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

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

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

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

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

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

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

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

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

11

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

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

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

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

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

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

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

к нему.

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

12

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

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

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

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

по данным

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

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

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

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

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

13

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

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

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

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

Модуль 1

Модуль 2

Модуль 4

Модуль 3

14

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

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

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

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

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

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

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

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

Содержит:

15

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

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

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

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

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

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

16

Модуль 1

Модуль 3

Модуль 4

Модуль 2

Модуль 51

2

3

4

5

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

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

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

17

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

Модуль 1

Модуль 3

Модуль 4

Модуль 2

Модуль 55

4

3

2

1

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

18

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

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

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

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

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

19

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

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

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

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

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

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

20

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

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

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

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

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

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

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

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

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

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

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

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

21

Модификация восходящей разработки, при которой при которой модульная структура программы формируется в процессе программирования модуля.

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

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

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

22

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

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

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

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

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

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

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

23

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

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

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

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

top related