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

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheevluxoft. com абсолютно бесплатно. Урок-презентация на эту тему содержит всего 72 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Образование » Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheevluxoft. com



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    72 слайда
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    2.89 MB
  • Просмотров:
    83
  • Скачиваний:
    0
  • Автор:
    неизвестен



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

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

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

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

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

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

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

№7 слайд
Конференции www.soft-labs.ru
Содержание слайда: Конференции (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

№9 слайд
Содержание слайда:

№10 слайд
Введение Наследование
Содержание слайда: Введение Наследование Полиморфизм

№11 слайд
Введение 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
Содержание слайда: Введение 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 слайд
Design Rules
Содержание слайда: Design Rules

№21 слайд
Design Rules
Содержание слайда: Design Rules

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

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

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

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

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

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

№28 слайд
Design Rules
Содержание слайда: Design Rules

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

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

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

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

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

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

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

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

№37 слайд
Содержание слайда:

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

№39 слайд
Содержание слайда:

№40 слайд
Design Principles
Содержание слайда: Design Principles

№41 слайд
Design Principles
Содержание слайда: Design Principles

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

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

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

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

№46 слайд
Design Principles
Содержание слайда: Design Principles

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

№48 слайд
Design Principles
Содержание слайда: Design Principles

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

№50 слайд
Design Principles С помощью
Содержание слайда: 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
Содержание слайда: 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
Содержание слайда: 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 Объекты
Содержание слайда: Design Principles Объекты берут на себя сфокусированные ответственности и делегируют остальные ответственности другим объектам ООП vs Процедурный стиль См. так же «Low Of Demeter»

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

№66 слайд
Design Principles
Содержание слайда: Design Principles

№67 слайд
Содержание слайда:

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

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

№70 слайд
Конференции www.soft-labs.ru
Содержание слайда: Конференции (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

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

Скачать все slide презентации Базовые правила и принципы проектирования ПО Евгений Кривошеев EKrivosheevluxoft. com одним архивом: