Прагматический подход к разработке гибких программных систем Степан Родионов www.rodionovstepan.ru twitter.com/rodionovstepan Вторая конференция.NET разработчиков.

Презентация:



Advertisements
Похожие презентации
Базовые правила и принципы проектирования ПО Евгений Кривошеев
Advertisements

Иванов Денис, Ай Ти Консалтинг Федоров Андрей, LG Electronics Способ оценки качества исходного кода или Code Review Reminder.
Метапрограммирование интерфейсов в ASP.NET MVC Алексей Волков Сонда Технолоджи aivolkov.ru Вторая конференция.NET разработчиков.
TDD в Magento. С чего всё начиналось.. Agenda Введение в TDD Важные принципы при разработке ПО.
Аспектно-ориентированный подход на службе веб- приложений Цытович Павел Леонидович Fuse8, Южно-Уральский государственный университет
NHibernate что, где, когда Артур Дробинский ЗетаСофт Томск, 2012.
В мире SharePoint. Автор SharePoint Engineer Belarus SharePoint User Group Lead.
Тюгаева Елена Валерьевна, кафедра информационных технологий ИРО, г.Екатеринбург.
Инструментарий начинающего разработчика Drupal Колосов Алексей, IT-Patrol inc.
Microsoft TechDays Сергей Попов Независимый разработчик.
Учебный Центр Luxoft Обучение от экспертов программной инженерии.
Microsoft TechDays Сергей Попов Независимый разработчик.
Microsoft TechDays Межов Александр Разработчик ПО ОАО ЧЭМК
К АЧЕСТВО КОД. А НАЛИЗ КОДА С ND EPEND. План Качество Какие способы достичь качества Качество кода в аспекте проектирования Принципы ООП/ООД Метрики кода.
Куратор: Ямпольская Л.И., директор УЦ ТПУ&Softline, тел.раб.(3822) Томск Национальный исследовательский Томский политехнический.
Дисциплина: МДК Системное программирование ПМ.01 Разработка программных модулей программного обеспечения для компьютерных систем Группа: А/ПК(9)
Система управления проектами. Опыт разработки и внедрения Юрий Шиляев директор Artics-Минск.
Методология разработки программного обеспечения введение.
© 2009 IBM Corporation Закон 152-ФЗ и корпорация IBM Денис Сосновцев Руководитель направления партнёрских решений IBM Восточная европа/Азия Конференция.
РЕСУРСЫ ИНТЕРНЕТА:
Транксрипт:

Прагматический подход к разработке гибких программных систем Степан Родионов twitter.com/rodionovstepan Вторая конференция.NET разработчиков

Ортогональность

Неортогональная система

Что дает ортогональность? Разбиение системы на независимые модули

GRASP (General Responsibility Assignment Software Patterns) High cohesion Low coupling

Демонстрация

Вспомогательные практики Закон Деметры Принцип DRY Принцип «Говори, а не спрашивай» Принципы SOLID И прочие…

Демонстрация

Поднимаемся выше Класс Компонент Система

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

Reuse/Release Equivalence Principle Common Reuse Principle Common Closure Principle

Acyclic Dependencies Principle В графе зависимостей между компонентами не должно быть циклов

Ациклический граф Application Message BoxTasks File FormatsDialogs Windows XML Format

Циклический граф Application Message BoxTasks File FormatsDialogs Windows XML Format

Применение DIP Dialogs Application Class A Class B Application Class B A A Server

Введение нового компонента Application Message BoxTasks File FormatsDialogs Windows XML Format New

Stable-Dependencies Principle Зависимости должны быть направлены в сторону устойчивости

Устойчивость A Устойчивый компонент B Неустойчивый компонент

Метрика устойчивости

Компоненты с разной устойчивостью Неустойчивый (S = 0) Неустойчивый (S = 0) Устойчивый (S = 1) S = 0.75 S = 0.25 Идеальная схемаНарушение SDP Stable Flexible

Решение проблемы U Stable (S = 0.75) V Flexible (S = 0.25) U Stable V Flexible IU U Interface (S = 1)

Stable-Abstractions Principle Компонент должен быть столь же абстрактным, сколь и устойчивым

Главная последовательность (0,0) (1,0) (0,1) 1 - S A (1,1) Зона неприятностей Зона бесполезности d(K) = |A(K) – S(K)|

Применение d t

NDepend

Демонстрация

Ресурсы Инфраструктура NHibernate + UnitOfWork Принципы OOD NDepend OO Design Quality Metrics

Книги

Спасибо за внимание Степан Родионов