Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Яп

.pdf
Скачиваний:
28
Добавлен:
15.03.2023
Размер:
6.44 Mб
Скачать

Принцип открытости/закрытости

401

Принцип подстановки Барбары Лисков

403

2/27/2023

Принцип подстановки Барбары Лисков

Поведение наследуемых классов не должно противоречить поведению, заданному базовым классом.

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

402

Принцип разделения интерфейса

Клиенты не должны зависеть от методов, которые они не используют.

Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе.

При изменении метода интерфейса не должны меняться клиенты, которые этот метод не используют.

404

101

Принцип разделения интерфейса

405

Принцип инверсии зависимостей

407

2/27/2023

Принцип инверсии зависимостей

Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.

Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

406

ОЦЕНКА КАЧЕСТВА ДЕКОМПОЗИЦИИ ПРЕДМЕТНОЙ ОБЛАСТИ

408

102

409

Типы зацеплений

Content coupling (Высокая)

Common coupling

External coupling

Control coupling

Stamp coupling (Data-structured coupling)

Data coupling

Message coupling (low)

No coupling

411

2/27/2023

Критерии оценки декомпозиции

• Для оценки качества декомпозиции существуют:

1.Зацепление – способ и степень взаимозависимости между разными программнымимодулями; мера того, насколькосвязаны подпрограммыили модули.

2.Связность(прочность) – степень взаимодействия между элементами отдельного модуля; мера силы взаимосвязанности элементов внутри модуля.

3.Достаточность– степень необходимого для реализации логичного и эффективногоповедения в классе.

4.Полнота– в интерфейсной части класса должны быть учтены все характеристикиабстракции.

5.Примитивность– примитивнымиявляются только те

операции,которыетребуют доступа к внутренней

 

реализации абстракции.

410

Content coupling

Contentcoupling(Pathologicalcoupling),

зацепление по содержимому.

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

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

412

103

Common coupling

Зацепление по общей области (Common coupling)

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

Изменение общего ресурса влечет за собой изменение всех модулей, использующих его.

413

Control coupling

Зацепление по управлению (Control coupling)

Появляется, когда один модуль управляет работой другого, передавая ему информацию о том, что делать, например, передавая флаг.

415

2/27/2023

External coupling

Внешнее зацепление (External coupling)

Появляется когда два модуля разделяют:

1.общий формат данных, описанный в ином месте

2.протокол обмена данными

3.интерфейс устройства.

В основном это связано с связи с внешними инструментами и устройствами.

414

Stamp coupling

Зацепление поструктурированным данным (Stamp coupling, data-structured coupling).

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

416

104

Data coupling

Зацепление по данным (Data coupling)

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

Например, передача целого числа в функцию, которая вычисляет квадратный корень.

417

Типы связности

Coincidental cohesion (worst)

Logical cohesion

Temporal cohesion

Procedural cohesion

Communicational/informational cohesion

Sequential cohesion

Functional cohesion (best)

419

2/27/2023

Message coupling

Обмен между модулями осуществляется только путем вызова методов (передачи сообщений).

418

Coincidental cohesion

Случайная связность - части модуля сгруппированы произвольно.

Множественные, абсолютно несвязанные действия.

Нет повторного использованиякода, трудно поддерживатьили улучшать

420

105

Logical Cohesion

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

В примере выше информация просто выводится на экран, поэтому все объединено.

421

Temporal Cohesion

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

Часто происходитпри инициализацииили завершении работы.

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

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

423

2/27/2023

Logical Cohesion

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

Однакочасто включает в себя действия как высокого так и низкого уровня (с точки зрения абстракции) в одном классе.

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

Трудно понять интерфейс, действия несвязанные.

422

Procedural Cohesion

Процедурная связность: части модуля сгруппированы, потому что они выполняются всегда в определенной последовательности.

Изменения в порядке выполнения шагов требуют изменения абстракции элементов.

Ситуации, в которых применяется эта конкретная последовательность, часто ограничены. 424

106

Communicational Cohesion

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

Действия связаны, но все еще не полностью разделены

Элемент нельзя использовать повторно

425

Functional Cohesion

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

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

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

т.д.

427

2/27/2023

Sequential Cohesion

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

Не обязательно плохо, если в названии метода нет четкой абстракции.

426

Informational Cohesion

Каждое действие имеет свою собственную точку входа и независимый код.

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

Истинно объектно-ориентированный подход!

428

107

ПАРАЛЛЕЛЬНОЕ

ПРОГРАММИРОВАНИЕ

429

Одновременные события - происходят в течение одного и того же временного интервала.

Параллельные события - когда задачи выполняются в течение одного и того же временного интервала.

2/27/2023

Цель технологий параллелизма

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

Проектирование программ должно ориентироваться на одновременное выполнение нескольких задач, на которые предварительно должна быть разбита программа.

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

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

108

2 подхода к параллельности

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

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

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

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

2/27/2023

Архитектура параллельной программы

Быстрее = лучше!

Архитектура распределенной программы

Схемы параллелизма

Программаделитсяна части – снижаетсяобщаясложность.

Использованиелокальнойсети или сети Интернет.

Использованиеразных информационныхсред.

Резервированиеоборудованияи вычислений.

Совместноеиспользованиедорогостоящихресурсов.

109

2/27/2023

Single-Program, Multiple-Data (SPMD)

Multiple-Programs, Multiple-Data (MPMD)

• процессорывыполняют различные виды работы

 

 

• при этом все они вместе пытаются решить одну проблему

 

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

однапрограмма,несколькопотоковданных.

всепроцессорывыполняютодни и те жеоперации,но с различными данными.

Простейшие модели распределенного программирования

Клиент - Сервер

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

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

110