PPt4Web Хостинг презентаций

Главная / Экономика / Базовые правила и принципы проектирования
X Код для использования на сайте:

Скопируйте этот код и вставьте его на свой сайт

X

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

После чего скачивание начнётся автоматически!

Кнопки:

Презентация на тему: Базовые правила и принципы проектирования


Скачать эту презентацию

Презентация на тему: Базовые правила и принципы проектирования


Скачать эту презентацию

№ слайда 1
Описание слайда:

№ слайда 2 Имя: Евгений Кривошеев Имя: Евгений Кривошеев Статусы: SCJP, SCWCD, SCBCD, BEA W
Описание слайда:

Имя: Евгений Кривошеев Имя: Евгений Кривошеев Статусы: SCJP, SCWCD, SCBCD, BEA WLS CA, IBM WAS CA Контакты: [email protected]

№ слайда 3 Семинар призван систематизировать базовые правила и принципы проектирования ПО С
Описание слайда:

Семинар призван систематизировать базовые правила и принципы проектирования ПО Семинар призван систематизировать базовые правила и принципы проектирования ПО Представленные базовые принципы необходимы для понимания более сфокусированных техник и приемов - рефакторинга и шаблонов проектирования

№ слайда 4 Данный семинар – вводный, ~ 3 мин на принцип или правило Данный семинар – вводны
Описание слайда:

Данный семинар – вводный, ~ 3 мин на принцип или правило Данный семинар – вводный, ~ 3 мин на принцип или правило В дальнейшем будет разработан полноценный курс

№ слайда 5 Иметь опыт разработки на одном из ООП-языков программирования Иметь опыт разрабо
Описание слайда:

Иметь опыт разработки на одном из ООП-языков программирования Иметь опыт разработки на одном из ООП-языков программирования Понимать ключевые концепции ООП

№ слайда 6 Время начала и конца занятий Время начала и конца занятий Перерывы
Описание слайда:

Время начала и конца занятий Время начала и конца занятий Перерывы

№ слайда 7 Конференции (www.soft-labs.ru): Конференции (www.soft-labs.ru): 26 сентября, Кие
Описание слайда:

Конференции (www.soft-labs.ru): Конференции (www.soft-labs.ru): 26 сентября, Киев: TEST Labs 2009, программа сформирована, регистрация участников 17 ноября, Москва: Req Labs 2009, открыта регистрация докладчиков 15 декабря, Москва: Arch Labs 2009, открыта регистрация докладчиков

№ слайда 8 Расписание: Расписание: Класс руководителя группы разработки. Основные курсы (24
Описание слайда:

Расписание: Расписание: Класс руководителя группы разработки. Основные курсы (24.08.2009-15.09.2009) Класс менеджера проектов. Основы управления проектами (24.08.2009-17.09.2009) Класс тест-дизайнера. Дополнительные курсы (27.08.2009-11.09.2009) Класс java-разработчика. Разработка на базе платформы JavaSE. Экспертный уровень. (31.08.2009-30.09.2009) http://www.luxoft-training.ru/timetable

№ слайда 9
Описание слайда:

№ слайда 10 Наследование Наследование Полиморфизм
Описание слайда:

Наследование Наследование Полиморфизм

№ слайда 11 Responsibility (ответственность) Responsibility (ответственность) Intention (нам
Описание слайда:

Responsibility (ответственность) Responsibility (ответственность) Intention (намерение) Coupling (связность) Cohesion (сцепленность, сфокусированность) Granularity (гранулярность, детальность)

№ слайда 12 Ответственность – решаемая классом задача из предметной области Ответственность
Описание слайда:

Ответственность – решаемая классом задача из предметной области Ответственность – решаемая классом задача из предметной области Функциональная задача Инкапсуляция данных Чаще этот термин применяется для классов

№ слайда 13 Намерение – решаемая разработчиком задача Намерение – решаемая разработчиком зад
Описание слайда:

Намерение – решаемая разработчиком задача Намерение – решаемая разработчиком задача Чаще этот термин применяется для методов

№ слайда 14 Связность – метрика, характеризующая степень зависимости классов друг от друга С
Описание слайда:

Связность – метрика, характеризующая степень зависимости классов друг от друга Связность – метрика, характеризующая степень зависимости классов друг от друга Loosely coupled vs. Tightly coupled Классы могут быть связаны (coupled) различными образами: Зависимые По управлению По данным

№ слайда 15 Сцепленность (Сфокусированность) – метрика, характеризующая узость ответственнос
Описание слайда:

Сцепленность (Сфокусированность) – метрика, характеризующая узость ответственности класса Сцепленность (Сфокусированность) – метрика, характеризующая узость ответственности класса Low cohesion vs. High cohesion Классы могут иметь различную сфокусированность (cohesion): По функциональности По данным

№ слайда 16 Гранулированность (Детальность) – метрика, характеризующая способ реализации нам
Описание слайда:

Гранулированность (Детальность) – метрика, характеризующая способ реализации намерений Гранулированность (Детальность) – метрика, характеризующая способ реализации намерений Fine-grained vs. Coarse-grained Чаще этот термин применяется для интерфейсов, где намерение выражается методом

№ слайда 17 Наследование Наследование Делегирование
Описание слайда:

Наследование Наследование Делегирование

№ слайда 18 Brian Foote and William F. Opdyke. Lifecycle and refactoring patterns that suppo
Описание слайда:

Brian Foote and William F. Opdyke. Lifecycle and refactoring patterns that support evolution and reuse, 1995 (отдельно и в рамках книги Pattern Languages of Program Design vol. 1) Brian Foote and William F. Opdyke. Lifecycle and refactoring patterns that support evolution and reuse, 1995 (отдельно и в рамках книги Pattern Languages of Program Design vol. 1) Stefan Roock. Refactoring in Large Software, 2006 Martin Fowler. Refactoring: Improving the Design of Existing Code, 1999

№ слайда 19
Описание слайда:

№ слайда 20
Описание слайда:

№ слайда 21
Описание слайда:

№ слайда 22 В дальнейшем обсуждении мы рассмотрим не дословный перевод правил проектирования
Описание слайда:

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

№ слайда 23 Используйте непротиворечивые имена методов [и свойств] Используйте непротиворечи
Описание слайда:

Используйте непротиворечивые имена методов [и свойств] Используйте непротиворечивые имена методов [и свойств] Непротиворечивость здесь – это одинаковые имена для одинаковых намерений В книге [MF] есть аналогичный smell/refactoring

№ слайда 24 Избегайте смешивания бизнес-логики и логики выбора/ветвления Избегайте смешивани
Описание слайда:

Избегайте смешивания бизнес-логики и логики выбора/ветвления Избегайте смешивания бизнес-логики и логики выбора/ветвления В книге [MF] есть аналогичный smell/refactoring

№ слайда 25 Уменьшайте число аргументов/параметров Уменьшайте число аргументов/параметров В
Описание слайда:

Уменьшайте число аргументов/параметров Уменьшайте число аргументов/параметров В книге [MF] есть аналогичный smell/refactoring

№ слайда 26 Уменьшайте объем методов Уменьшайте объем методов В книге [MF] есть аналогичный
Описание слайда:

Уменьшайте объем методов Уменьшайте объем методов В книге [MF] есть аналогичный smell/refactoring

№ слайда 27 Иерархию наследования стоит проектировать глубокой и узкой Иерархию наследования
Описание слайда:

Иерархию наследования стоит проектировать глубокой и узкой Иерархию наследования стоит проектировать глубокой и узкой

№ слайда 28
Описание слайда:

№ слайда 29 На вершине иерархии наследования стоит размещать абстракцию На вершине иерархии
Описание слайда:

На вершине иерархии наследования стоит размещать абстракцию На вершине иерархии наследования стоит размещать абстракцию

№ слайда 30 Стоит минимизировать прямой доступ к переменным классов и экземпляров Стоит мини
Описание слайда:

Стоит минимизировать прямой доступ к переменным классов и экземпляров Стоит минимизировать прямой доступ к переменным классов и экземпляров Encapsulation aka Hiding В книге [MF] есть аналогичный smell/refactoring

№ слайда 31 Наследники должны быть специализациями базовых классов Наследники должны быть сп
Описание слайда:

Наследники должны быть специализациями базовых классов Наследники должны быть специализациями базовых классов Специализация – отношение «IS-A», «является» В книге [MF] есть аналогичный smell/refactoring (Refused Bequest)

№ слайда 32 Разбивайте большие классы Разбивайте большие классы В книге [MF] есть аналогичны
Описание слайда:

Разбивайте большие классы Разбивайте большие классы В книге [MF] есть аналогичный smell/refactoring

№ слайда 33 В случае серьезной разницы в реализации метода двумя «братьями» стоит задуматься
Описание слайда:

В случае серьезной разницы в реализации метода двумя «братьями» стоит задуматься о целесообразности описания этого метода в их «отце» В случае серьезной разницы в реализации метода двумя «братьями» стоит задуматься о целесообразности описания этого метода в их «отце» Потенциально можно вынести этот метод в иной класс (делегировать)

№ слайда 34 Разделяйте несвязанные методы Разделяйте несвязанные методы Связь: по управлению
Описание слайда:

Разделяйте несвязанные методы Разделяйте несвязанные методы Связь: по управлению по данным В книге [MF] есть аналогичный smell/refactoring

№ слайда 35 Делегируйте Делегируйте Inheritance-based framework vs component-based framework
Описание слайда:

Делегируйте Делегируйте Inheritance-based framework vs component-based framework – где ниже связность?

№ слайда 36 Передавайте параметры явно Передавайте параметры явно Варианты неявной передачи:
Описание слайда:

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

№ слайда 37
Описание слайда:

№ слайда 38 Буду рад ответить на Ваши вопросы Буду рад ответить на Ваши вопросы
Описание слайда:

Буду рад ответить на Ваши вопросы Буду рад ответить на Ваши вопросы

№ слайда 39
Описание слайда:

№ слайда 40
Описание слайда:

№ слайда 41
Описание слайда:

№ слайда 42 Минимизируйте повторение кода для снижения затрат на поддержку Минимизируйте пов
Описание слайда:

Минимизируйте повторение кода для снижения затрат на поддержку Минимизируйте повторение кода для снижения затрат на поддержку aka Single Point of Truth or Single Point of Maintenance В книге [MF] есть аналогичный smell/refactoring

№ слайда 43 Код должен явно и однозначно отражать намерение Код должен явно и однозначно отр
Описание слайда:

Код должен явно и однозначно отражать намерение Код должен явно и однозначно отражать намерение В книге [MF] есть аналогичный smell/refactoring

№ слайда 44 Программные сущности (классы, модули, функции) должны быть открыты для расширени
Описание слайда:

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

№ слайда 45 Принцип OCP используется в двух контекстах его реализации: Принцип OCP используе
Описание слайда:

Принцип OCP используется в двух контекстах его реализации: Принцип OCP используется в двух контекстах его реализации: Dr. Bertrand Meyer's Open/Closed Principle «Написанная реализация класса модифицируется только для исправления ошибок, новые ответственности или изменение существующих потребует создание нового класса, возможно, наследника. Этот новый класс не обязан реализовать тот же интерфейс.» Polymorphic Open/Closed Principle Более современная версия. «Множество реализаций классов можно использовать полиморфно, через один и тот же интерфейс.» Здесь зафиксирована интерфейсная часть, а реализация вариативна. См. так же «Protected Variation»

№ слайда 46
Описание слайда:

№ слайда 47 Существует два базовых определения: Существует два базовых определения: Barbara
Описание слайда:

Существует два базовых определения: Существует два базовых определения: Barbara Liskov «В коде приложения класс всегда можно заменить его наследником» Bertrand Meyer ("Design-by-Contract" formulation) «Наследники должны соблюдать контракт предка»

№ слайда 48
Описание слайда:

№ слайда 49 Высокоуровневые модули не должны зависеть от низкоуровневых. И те, и другие долж
Описание слайда:

Высокоуровневые модули не должны зависеть от низкоуровневых. И те, и другие должны зависеть от абстракций. Высокоуровневые модули не должны зависеть от низкоуровневых. И те, и другие должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракции.

№ слайда 50 С помощью абстракций детали системы изолируются друг от друга С помощью абстракц
Описание слайда:

С помощью абстракций детали системы изолируются друг от друга С помощью абстракций детали системы изолируются друг от друга Легко менять детали реализации без модификации высокоуровневой логики Шаблоны, с помощью которых реализуется принцип DIP: Plug-in, [A] Factory [M], Service Locator, Inversion of Control, Dependency Injection

№ слайда 51
Описание слайда:

№ слайда 52
Описание слайда:

№ слайда 53 Inversion Of Control Inversion Of Control Принцип инверсии управления потоком вы
Описание слайда:

Inversion Of Control Inversion Of Control Принцип инверсии управления потоком выполнения по сравнению с процедурным программированием Основа всех каркасов (frameworks) aka Hollywood Principle Dependency Injection Шаблон проектирования Не мы сами получаем необходимые объекты, а внешняя среда нам их передает

№ слайда 54 Не стоит заставлять клиентов зависеть от ненужных им интерфейсов Не стоит застав
Описание слайда:

Не стоит заставлять клиентов зависеть от ненужных им интерфейсов Не стоит заставлять клиентов зависеть от ненужных им интерфейсов Вместо одного многофункционального интерфейса лучше выделить несколько узкоспециальных

№ слайда 55
Описание слайда:

№ слайда 56 The granule of reuse is the granule of release. Only components that are release
Описание слайда:

The granule of reuse is the granule of release. Only components that are released through a tracking system can be effectively reused. This granule is the package The granule of reuse is the granule of release. Only components that are released through a tracking system can be effectively reused. This granule is the package Многократно используемая единица кода должна пройти завершенный цикл разработки – система контроля версий, багтрекер, тесты. Эта единица – пакет. REP и ряд следующих принципов – макропринципы организации разработки и пакетирования кода

№ слайда 57 Классы в пакете используются совместно. Если используется один класс из пакета,
Описание слайда:

Классы в пакете используются совместно. Если используется один класс из пакета, считается что используются все. Классы в пакете используются совместно. Если используется один класс из пакета, считается что используются все. Здесь использование – многократное использование при дальнейшей разработке

№ слайда 58 Классы в пакете должны быть связаны одинаковой причиной их изменения. Изменение
Описание слайда:

Классы в пакете должны быть связаны одинаковой причиной их изменения. Изменение пакета (одного из классов) касается всех классов в нем. Классы в пакете должны быть связаны одинаковой причиной их изменения. Изменение пакета (одного из классов) касается всех классов в нем.

№ слайда 59 Не должно быть взаимной зависимости между пакетами, только односторонняя. Не дол
Описание слайда:

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

№ слайда 60 Зависимости между пакетами должны быть в сторону более стабильного. Пакет должен
Описание слайда:

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

№ слайда 61 Самые стабильные пакеты должны быть самыми абстрактными. Нестабильные пакеты дол
Описание слайда:

Самые стабильные пакеты должны быть самыми абстрактными. Нестабильные пакеты должны быть конкретными. Степень абстракции пакета должна зависеть от его стабильности. Самые стабильные пакеты должны быть самыми абстрактными. Нестабильные пакеты должны быть конкретными. Степень абстракции пакета должна зависеть от его стабильности.

№ слайда 62
Описание слайда:

№ слайда 63 TDA – стиль ООП, при котором объектА сигнализирует объектуБ выполнить его ответс
Описание слайда:

TDA – стиль ООП, при котором объектА сигнализирует объектуБ выполнить его ответственность, вместо того, чтобы что-либо спрашивать у него и выполнять ответственность самому TDA – стиль ООП, при котором объектА сигнализирует объектуБ выполнить его ответственность, вместо того, чтобы что-либо спрашивать у него и выполнять ответственность самому

№ слайда 64 Объекты берут на себя сфокусированные ответственности и делегируют остальные отв
Описание слайда:

Объекты берут на себя сфокусированные ответственности и делегируют остальные ответственности другим объектам Объекты берут на себя сфокусированные ответственности и делегируют остальные ответственности другим объектам ООП vs Процедурный стиль См. так же «Low Of Demeter»

№ слайда 65 Разделяйте ответственности по сфокусированным классам Разделяйте ответственности
Описание слайда:

Разделяйте ответственности по сфокусированным классам Разделяйте ответственности по сфокусированным классам aka Single Responsibility Principle «Класс должен иметь только одну причину изменения»

№ слайда 66
Описание слайда:

№ слайда 67
Описание слайда:

№ слайда 68 Буду рад ответить на Ваши вопросы Буду рад ответить на Ваши вопросы
Описание слайда:

Буду рад ответить на Ваши вопросы Буду рад ответить на Ваши вопросы

№ слайда 69 УЦ Luxoft предлагает более 200 курсов и тренингов по различным направлениям пром
Описание слайда:

УЦ Luxoft предлагает более 200 курсов и тренингов по различным направлениям промышленной разработки ПО УЦ Luxoft предлагает более 200 курсов и тренингов по различным направлениям промышленной разработки ПО Наши инструкторы – практики, готовые передать свою экспертизу

№ слайда 70 Конференции (www.soft-labs.ru): Конференции (www.soft-labs.ru): 26 сентября, Кие
Описание слайда:

Конференции (www.soft-labs.ru): Конференции (www.soft-labs.ru): 26 сентября, Киев: TEST Labs 2009, программа сформирована, регистрация участников 17 ноября, Москва: Req Labs 2009, открыта регистрация докладчиков 15 декабря, Москва: Arch Labs 2009, открыта регистрация докладчиков

№ слайда 71 Расписание: Расписание: Класс руководителя группы разработки. Основные курсы (24
Описание слайда:

Расписание: Расписание: Класс руководителя группы разработки. Основные курсы (24.08.2009-15.09.2009) Класс менеджера проектов. Основы управления проектами (24.08.2009-17.09.2009) Класс тест-дизайнера. Дополнительные курсы (27.08.2009-11.09.2009) Класс java-разработчика. Разработка на базе платформы JavaSE. Экспертный уровень. (31.08.2009-30.09.2009) http://www.luxoft-training.ru/timetable

№ слайда 72
Описание слайда:

Скачать эту презентацию

Презентации по предмету
Презентации из категории
Лучшее на fresher.ru