Паттерны и фреймворки в архитектуре ИС

Содержание

Слайд 2

Вопрос №1

Вопрос №1

Слайд 3

Паттерны (шаблоны) впервые появились в середине 1990-х гг. как составная часть объектно-ориентированного

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

Слайд 4

Концептуальные паттерны — это паттерны, функционирование которых описывается в терминах предметной области.

Концептуальные паттерны — это паттерны, функционирование которых описывается в терминах предметной области.
Такие паттерны относятся к приложению в целом или крупным подсистемам ИС.
Паттерны проектирования — это паттерны, для описания которых используются термины, относящиеся к разработке программных систем, такие как объект, класс, модуль. Паттерны проектирования описывают решение общих проблем в конкретном контексте.

Слайд 5

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

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

Слайд 6

Архитектурный паттерн (architectural patterns) описывает структуру программной системы и определяет состав подсистем,

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

Слайд 7

Системные паттерны (system patterns) представляют собой приложение на верхнем (системном) уровне. Системные

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

Слайд 8

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

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

Слайд 9

Поведенческие паттерны (behavioral patterns) применяются для передачи управления в системе.
Цепочка ответственности

Поведенческие паттерны (behavioral patterns) применяются для передачи управления в системе. Цепочка ответственности
(Chain of Responsibility)
Команда (Command)
Интерпретатор(Interpreter)
Итератор (Iterator)
Медиатор (Mediator)
Моментальный «снимок» (Memento)

Слайд 10

Производящие паттерны (creational patterns) предназначены для создания объектов в системе.
Паттерны параллельного программирования

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

паттерны — это классы проверенных практикой проектных решений, использование которых приводит к положительным результатам.

Слайд 11

Вопрос №2

Вопрос №2

Слайд 12

Антипаттерны (antipatterns), также известные как ловушки (pitfalls) — это классы наиболее часто

Антипаттерны (antipatterns), также известные как ловушки (pitfalls) — это классы наиболее часто
внедряемых плохих решений проблем.
Они изучаются как категория, в случае, когда их хотят избежать в будущем, и некоторые отдельные случаи их могут быть распознаны при изучении неработающих систем
Частью хорошей практики программирования является избегание антипаттернов.

Слайд 13

Антипаттерны в управлении разработкой ПО и их свойства
«Дым и зеркала» (Smoke and

Антипаттерны в управлении разработкой ПО и их свойства «Дым и зеркала» (Smoke
mirrors) Демонстрация того, как будут выглядеть ненаписанные функции. Название происходит от двух излюбленных способов, которыми фокусники скрывают свои секреты
«Раздувание» ПО (Software bloat) Разрешение последующим версиям системы требовать все больше и больше ресурсов
«Функции для галочки» Превращение программы в конгломерат плохо реализованных и не связанных между собой функций (как правило, для того чтобы заявить в рекламе, что функция есть)

Слайд 14

Антипаттерны в разработке ПО
Неопределенная точка зрения (Ambiguous viewpoint) Представление модели без спецификации

Антипаттерны в разработке ПО Неопределенная точка зрения (Ambiguous viewpoint) Представление модели без
ее точки рассмотрения
«Большой комок грязи» (Big ball of mud) Система с нераспознаваемой структурой
«Раздувание интерфейса» (Interface bloat) Изготовление интерфейса очень мощным и очень трудным для осуществления

Слайд 15

Антипаттерны в объектно-ориентированном проектировании
«Божественный» объект (God object) Концентрация слишком большого количества функций в

Антипаттерны в объектно-ориентированном проектировании «Божественный» объект (God object) Концентрация слишком большого количества
одной части системы (классе)
«Полтергейст» (Poltergeist) Объекты, чье единственное предназначение — передавать информацию другим объектам

Слайд 16

Антипаттерны в области программирования
Ненужная сложность (Accidental complexity) Внесение ненужной сложности в решение
«Действие

Антипаттерны в области программирования Ненужная сложность (Accidental complexity) Внесение ненужной сложности в
на расстоянии» (Action at a distance) Неожиданное взаимодействие между широко разделенными частями системы
«Накопить и запустить» (Accumulate and fire) Установка параметров подпрограмм в наборе глобальных переменных

Слайд 17

Методологические антипаттерны
Организационные антипатгерны

Методологические антипаттерны Организационные антипатгерны

Слайд 18

Вопрос №3

Вопрос №3

Слайд 19

Фреймворк определяют, как набор типовых решений, методик проектирования и классов, которые могут

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

Слайд 20

Фреймворк можно рассматривать как реализацию системы паттернов проектирования.
Фреймворк представляет собой скелетное решение

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

Слайд 21

Классификация фреймворков

Классификация фреймворков

Слайд 22

Архитектурные фреймворки это«совокупность соглашений, принципов и практик, используемых для описаний архитектур и

Архитектурные фреймворки это«совокупность соглашений, принципов и практик, используемых для описаний архитектур и
принятых применительно к некоторому предметному домену и (или) в сообществе специалистов (заинтересованных лиц)»

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

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

Слайд 23

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

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

Фреймворки, используемые по принципу белого ящика, называют также архитектурными фреймворками (architecture-driving framework). Фреймворк, работающий по принципу белого ящика, определяется через интерфейсы объектов, которые разработчик может добавлять в систему.

Слайд 24

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

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

Фреймворки уровня приложения (application frameworks) обеспечивают полный набор функций, которые реализуются типовыми приложениями. Обычно сюда входят GUI, базы данных, документация. Примером таких фреймворков могут быть MFC (Microsoft Foundation Classes), которые служат для создания приложений, ориентированных на работу в среде MS Windows.

Слайд 25

Фреймворки уровня домена (Domain frameworks) используются для создания приложений, относящихся к определенному

Фреймворки уровня домена (Domain frameworks) используются для создания приложений, относящихся к определенному предметному домену.
предметному домену.

Слайд 26

Вопрос №4

Вопрос №4

Слайд 27

Фреймворк Захмана
В основе данного фреймворка лежит классификация (таксономия) артефактов. функционирование организации можно

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