🗊Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheev@luxoft.com

Нажмите для полного просмотра!
Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №1Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №2Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №3Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №4Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №5Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №6Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №7Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №8Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №9Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №10Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №11Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №12Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №13Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №14Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №15Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №16Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №17Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №18Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №19Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №20Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №21Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №22Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №23Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №24Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №25Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №26Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №27Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №28Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №29Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №30Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №31Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №32Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №33Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №34Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №35Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №36Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №37Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №38Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №39Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №40Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №41Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №42Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №43Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №44Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №45Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №46Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №47Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №48Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №49Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №50Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №51Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №52Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №53Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №54Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №55Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №56Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №57Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №58Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №59Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №60Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №61Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №62Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №63Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №64Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №65Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №66Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №67Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №68Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №69Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №70Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №71Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №72

Содержание

Вы можете ознакомиться и скачать Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheev@luxoft.com. Презентация содержит 72 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Базовые правила и принципы проектирования ПО
Евгений Кривошеев
EKrivosheev@luxoft.com
Описание слайда:
Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheev@luxoft.com

Слайд 2





О вашем инструкторе
Имя:
Евгений Кривошеев
Статусы:
SCJP, SCWCD, SCBCD, BEA WLS CA, IBM WAS CA
Контакты:
EKrivosheev@luxoft.com
Описание слайда:
О вашем инструкторе Имя: Евгений Кривошеев Статусы: SCJP, SCWCD, SCBCD, BEA WLS CA, IBM WAS CA Контакты: EKrivosheev@luxoft.com

Слайд 3





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

Слайд 4





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

Слайд 5





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

Слайд 6





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

Слайд 7





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

Слайд 8





Расписание:
Расписание:
Класс руководителя группы разработки. Основные курсы (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
Описание слайда:
Расписание: Расписание: Класс руководителя группы разработки. Основные курсы (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


Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №9
Описание слайда:

Слайд 10





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

Слайд 11





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

Слайд 12





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

Слайд 13





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

Слайд 14





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

Слайд 15





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

Слайд 16





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

Слайд 17





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

Слайд 18





Введение
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
Описание слайда:
Введение 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


Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №19
Описание слайда:

Слайд 20





Design Rules
Описание слайда:
Design Rules

Слайд 21





Design Rules
Описание слайда:
Design Rules

Слайд 22





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

Слайд 23





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

Слайд 24





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

Слайд 25





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

Слайд 26





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

Слайд 27





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

Слайд 28





Design Rules
Описание слайда:
Design Rules

Слайд 29





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

Слайд 30





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

Слайд 31





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

Слайд 32





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

Слайд 33





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

Слайд 34





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

Слайд 35





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

Слайд 36





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

Слайд 37


Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №37
Описание слайда:

Слайд 38





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

Слайд 39


Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №39
Описание слайда:

Слайд 40





Design Principles
Описание слайда:
Design Principles

Слайд 41





Design Principles
Описание слайда:
Design Principles

Слайд 42





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

Слайд 43





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

Слайд 44





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

Слайд 45





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

Слайд 46





Design Principles
Описание слайда:
Design Principles

Слайд 47





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

Слайд 48





Design Principles
Описание слайда:
Design Principles

Слайд 49





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

Слайд 50





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

Слайд 51





Design Principles
Описание слайда:
Design Principles

Слайд 52





Design Principles
Описание слайда:
Design Principles

Слайд 53





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

Слайд 54





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

Слайд 55





Design Principles
Описание слайда:
Design Principles

Слайд 56





Design Principles
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 и ряд следующих принципов – макропринципы организации разработки и пакетирования кода
Описание слайда:
Design Principles 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





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

Слайд 58





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

Слайд 59





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

Слайд 60





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

Слайд 61





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

Слайд 62





Design Principles
Описание слайда:
Design Principles

Слайд 63





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

Слайд 64





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

Слайд 65





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

Слайд 66





Design Principles
Описание слайда:
Design Principles

Слайд 67


Базовые правила и принципы проектирования ПО  Евгений Кривошеев  EKrivosheev@luxoft.com, слайд №67
Описание слайда:

Слайд 68





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

Слайд 69





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

Слайд 70





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

Слайд 71





Расписание:
Расписание:
Класс руководителя группы разработки. Основные курсы (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
Описание слайда:
Расписание: Расписание: Класс руководителя группы разработки. Основные курсы (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






Базовые правила и принципы проектирования ПО
Евгений Кривошеев
EKrivosheev@luxoft.com
Описание слайда:
Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheev@luxoft.com



Похожие презентации
Mypresentation.ru
Загрузить презентацию