Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ekz_voprosy_TRPO_2016 (2).docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
3.14 Mб
Скачать
  1. Методы расширения ядра, подходы к реализации метода

  1. Метод jsp ДжексонаОсновные конструкции данных метода jsp Джексона. Этапы метода jsp

М етод структурного программирования JSP разработан М. Джексоном в 70-х гг. Наиболее эффективен в случае высокой степени структуризации данных. Базируется на исходном положении, состоящем в том, что структура программы зависит от структуры подлежащих обработке данных. Поэтому структура данных может использоваться для формирования структуры программы.

4 конструкции:

  1. Конструкция последовательности данных

  2. К онструкция выбора

  3. Конструкция повторения данных

  4. Элементарная конструкция

  1. Виды документов для создания структур

При создании структур данных обычно принято использовать три вида документов:

A. Таблицы для идентификации компонентов данных.

Б. Графическое представление структур данных.

B. Контрольные перечни вопросов для анализа структур данных

  1. Создание структуры программы. Этапы создания

Создание структуры программы

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

Подэтап 1. Слияние соответствующих компонентов входных и выходных данных для формирования компонентов программы.

В результате получается упрощенная структура (ядро) программы. Каждый из ее сформированных компонентов снабжается соответствующим именем (например, вида «Обработка Х для создания Y»).

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

Подэтап 2. Включение не имеющих соответствия компонентов структуры входных данных в формируемую структуру программы на те же относительные иерархические места и присвоение им соответствующих имен.

На рис. 4.53 содержится результат выполнения данного подэтапа. На данном рисунке двойной линией справа выделены добавленные на данном подэтапе компоненты программы. Повторяемые компоненты входной структуры стали повторяемыми компонентами программы. Выбираемые компоненты входной структуры стали выбираемыми компонентами программы. Однако, как будет видно при рассмотрении подэтапа 3, такое непосредственное преобразование возможно не всегда.

Подэтап 3. Включение не имеющих соответствия компонентов структуры выходных данных в формируемую структуру программы на те же относительные иерархические места и присвоение им соответствующих имен.

На рис. 4.54 представлен результат выполнения данного подэтапа. На данном рисунке двойной линией справа выделены добавленные на данном подэтапе компоненты программы.

  1. Связанность модуля. Сцепление модуля

Связность модуля (cohesion) – внутренняя характеристика модуля, характеризующая меру прочности соединения функциональных и информационных объектов внутри одного модуля. Связность модуля характеризует степень его «плотности», степень зависимости его частей и направленности на решение определенной задачи. Чем выше связность модуля, тем меньше «ручек управления» на модуле и тем они проще. При проектировании модулей нужно стремиться к высокой связности, ибо чем выше связность, тем лучше спроектирован модуль.

Существует 7 типов связности:

Функциональная связность

Последовательная связность

Информационная связность

Процедурная связность

Временная связность

Логическая связность

Связность по совпадению

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

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

Информационно связный модуль содержит объекты, использующие одни и те же входные или выходные данные. Так, по ISBN книги, можно узнать ее название, автора и год издания. Эти три процедуры (определить название, определить автора, определить год издания) связаны между собой тем, что все они работают с одним и тем же информационным объектом – ISBN.

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

Модуль с временной связностью – это такой модуль, в котором объекты модуля привязаны к конкретному промежутку времени. Примером может являться модуль, осуществляющий инициализацию системы. Элементы данного модуля почти не связаны друг с другом за исключением того, что должны выполняться в определенное время.

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

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

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

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

Сцепление

Модифицируемость

Понятность

Сопровождаемость

Функциональная

хорошее

хорошая

хорошая

хорошая

Последовательная

хорошее

хорошая

близкая к хорошей

хорошая

Информационная

среднее

средняя

средняя

средняя

Процедурная

приемлемое

приемлемая

приемлемая

плохая

Временная

плохое

плохая

средняя

плохая

Логическая

плохое

плохая

плохая

плохая

Случайная

плохое

плохая

плохая

плохая

С понятием связность тесно связано понятие связанность или сцепление модулей.

Связанность (coupling) модуля является мерой взаимозависимости модулей. При создании систем необходимо стремиться к максимальной независимости модулей, т.е. связанность модулей должна быть минимальной.

При проектировании систем допустимыми являются: связанность (сцепление) по данным, связанность по образцу и связанность по управлению.

Модули связаны по данным, если они взаимодействуют через передачу параметров и при этом каждый параметр является элементарным информационным объектом. Это наиболее предпочтительный тип связанности (сцепления).

Модули связаны по образцу если один модуль посылает другому составной информационный объект (например, объект – библиографическая запись, которая содержит имя автора, название книги и т.д.).

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

Модули связаны по общей области в том случае, если они ссылаются на одну и туже область глобальных данных. Связанность (сцепление) по общей области является нежелательным, так как, во-первых, ошибка в модуле, использующем глобальную область, может неожиданно проявиться в любом другом модуле; во-вторых, такие программы трудны для понимания, так как программисту трудно определить какие именно данные используются конкретным модулем.

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

С понятием связанность тесно связано понятие связность.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]