SlideShare a Scribd company logo
1 of 15
Download to read offline
Как перестать беспокоиться…
и погасить «технический долг»?
Алексей Петров
25 июля 2014 г.
Разрешите представиться
АЛЕКСЕЙ ПЕТРОВ
тренер и консультант, эксперт-практик в области
программирования на языках высокого уровня, системного
анализа и программной инженерии, архитектуры ПО,
проектирования средств и методов взаимодействия и БД
2014 — наст. вр.:
преподаватель «Академии информационных систем»
(г. Москва), автор семинара «Как измерить архитектуру ПО?»
2013:
докладчик конференций Stratoplan TECH & BUSINESS
Summit (поток «Проектирование и анализ») и DEV Labs C++
2012 — наст. вр.:
преподаватель НОЦ «Технопарк информационных
технологий», ассистент кафедры «Информационные
технологии и телекоммуникации» НИУ МГТУ им. Н.Э. Баумана
2011 — наст. вр.:
автор серии курсов по разработке, прикладной и
корпоративной архитектуре ПО
2005 — 2011:
участник более 10 проектов внедрения корпоративных ИС,
моделирования бизнес-процессов и ИТ-аудита организаций
2
©Ю.Зайкина,2012
О чем пойдет речь?
3
1
2
Когда можно принимать
«технический долг»?
Чего следует опасаться? Проекты с нулевым
долгом
Что такое «технический долг»
проекта?
Почему разработчики — не единственные, кто
должен про него знать?
В чем состоят «техническая инфляция» и
«техническое банкротство»?
3
Признаки чрезмерного долга
Как оценить «технический долг» и как его
правильно погашать? Какие инструменты могут
прийти на помощь?
4
«Технический долг»: мифы и
заблуждения
Личный опыт в enterprise-разработке
Знакомьтесь!.. «Технический долг»
Уорд
Каннингем
1992
Назначение метафоры
возможность обсуждения
«неправильной разработки» с
заинтересованными сторонами
нетехнического профиля
1
2
Содержание
временные архитектурные решения
устаревающие и устаревшие
технологии
ошибки и «мертвый» код
нереализованные тесты
невыполненные работы по
рефакторингу продукта
Опасность
выплата «технического долга» стоит
денег, времени и усилий со
стороны разработчиков и
заинтересованных сторон
3
4
Принятие «технического долга»
«Да» «Нет»
 Краткосрочное ускорение разработки
 Утрата гибкости и усложнение
изменений
 Рост затрат спонсоров
 Неконтролируемый и «грязный» код
низкого качества
 Чрезмерная специализация
разработчиков
 Возможное «техническое банкротство»
— неизбежная потребность в полном
переписывании продукта
 Замедление разработки
 Упрощение будущих изменений,
гибкость продукта
 Поддержание качественной кодовой
базы и качественного дизайна
 Отсутствие затрат времени на
изучение и рефакторинг кода
 Отсутствие «технической инфляции» —
технологического отставания от
индустрии
5
Когда можно принимать
«технический долг»?
1
2
3
Быстрая отгрузка системы
… важнее «чистого» кода («исправим позднее»)
e.g. Близость релиза; реакция на изменения
законодательства
«Одноразовый» код
… принципиально не требует выплат
e.g. Некоторые ETL-процедуры; проекты,
принципиально не предполагающие поддержки
Стратегическое видение
дизайна
… позволяет ценой долга получить оперативный
отклик заказчика и сформировать требуемый
дизайн
e.g. Стремление захватить рынок или создать прототип
6
Когда можно брать в долг: график
Сложность
архитектуры
Функциональные
возможности
𝑥0
❶ Стратегическое
видение
𝑓0
𝑓1
𝑥′
𝑥′
′
Хорошая новость
значение 𝐱 𝟎 существует
1
2
Плохая новость
никто не знает, где
𝐱 𝟎 расположена
Удачная архитектура
Неудачная архитектура
𝑥′′
− 𝑥′
— долг
Мартин
Фаулер
7
Признаки чрезмерного долга

Дублирование кода и нечитаемый код
Нарушают принципы ОО-проектирования DRY [Don’t Repeat
Yourself] (ср. Single Point of Maintenance) и SCP [Speaking Code
Principle]
Ведут к аномалиям обновления и маскировке истинных целей,
проблемам понимания кода и заставляют разработчиков тратить
больше времени на чтение, чем это необходимо
Панический страх изменений
Добавление новых функций с каждым разом стоит
только дороже
Проблемный дизайн
Содержит «обходные пути» и побуждает к «трюкам»
при разработке
Зависит от знаний одного разработчика
Реализован в коде с множеством пометок на
доработку и исправление
Неверный выбор технологий и библиотек
Предпочтение должно отдаваться новейшим, зрелым и наиболее
«дешевым» в модификации технологиям
ПО устаревает и со временем влечет накопление долга


 8
Как оценить «технический долг?»
9
Стратегии погашения долга
1
2
3
«Технический налог»
 Эффективное распространение знаний
 Сложность планирования и расстановки
приоритетов
Выплата долга
Основной объем — рефакторинг
Проценты — время, потраченное не на написание
кода
Выделенная команда
 Удобство управления ресурсами и планирования
 Слабость в передаче знаний об архитектуре и коде
 Нарастающая психологическая усталость
10
Проекты с нулевым долгом (1 / 2)
1
2
Попытка доказательства
 Проектный треугольник
Гипотеза
 Проекты, реализуемые внутренней командой
(insourcing), накапливают «технический долг»
 Проекты, реализуемые подрядной организацией
(outsourcing), накапливают «технический долг»
 Проекты, реализуемые сообществом
(crowdsourcing), не накапливают «технический долг»
11
Состав работ
(требования), 𝒔
𝛾0 100
0
100
100
0
𝒔 = 𝐜𝐨𝐧𝐬𝐭

Проекты с нулевым долгом (2 / 2)
1
2
Попытка доказательства
 Проектный треугольник
Гипотеза
 Проекты, реализуемые внутренней командой
(insourcing), накапливают «технический долг»
 Проекты, реализуемые подрядной организацией
(outsourcing), накапливают «технический долг»
 Проекты, реализуемые сообществом
(crowdsourcing), не накапливают «технический долг»
12
3
Доказательство
 Шестиугольник проектных
ограничений
Бюджет
Состав работ
Краудсорсинговый проект
«Технический долг»:
личный опыт enterprise-разработки
1
2
«Технический налог»
Расширенные технические советы
Энтузиазм разработчиков
Оптимально — 1 день в 2 недели (один и тот же,
если позволяет план-график) или в спринте
Продуктовая разработка
Проекты с длительным циклом разработки рано
или поздно всегда переписываются «с нуля»
10%
13
Спасибо за внимание!
14
Алексей Петров
Академия информационных
систем: www.infosystems.ru
Россия, 105203, Москва
ул. Первомайская, 126
Тел: +7 (495) 231-30-49
E-mail: security@infosystem.ru
Источники
• Вольфсон Б. Стратегия сокращения технического долга // Форум технологий Mail.Ru
Group, 2012.
• Фаулер М. Рефакторинг: улучшение существующего кода. — СПб.: Символ-Плюс,
2003. — 432 с.
• Ergin, L. Technical Debt: Do Not Underestimate the Danger.
• Foote, B., Opdyke, W. ”Life Cycle and Refactoring Patterns that Support Evolution and
Reuse,” First Conference on Patterns Languages of Programs (PLoP’94), Aug. 1994.
• Refactoring. URL: http://refactoring.com
• SonarQube. URL: http://www.sonarqube.org
15
В ходе подготовки доклада использовались:
материалы авторского семинара А.В. Петрова
«Как измерить архитектуру ПО?»
(«Академия информационных систем», 2014)

More Related Content

What's hot

R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...
R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...
R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...Alexey Bulaev
 
DDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиDDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиCUSTIS
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON
 
Разделение ответственности в заказной разработке
Разделение ответственности в заказной разработкеРазделение ответственности в заказной разработке
Разделение ответственности в заказной разработкеSQALab
 
HTP. Business Requirements Elicitation & Documentation [1.01, RUS]
HTP. Business Requirements Elicitation & Documentation [1.01, RUS]HTP. Business Requirements Elicitation & Documentation [1.01, RUS]
HTP. Business Requirements Elicitation & Documentation [1.01, RUS]Alex V. Petrov
 
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]Alex V. Petrov
 
Continuous UX: встраиваем IxD в процесс гибкой разработки ПО
Continuous UX: встраиваем IxD в процесс гибкой разработки ПОContinuous UX: встраиваем IxD в процесс гибкой разработки ПО
Continuous UX: встраиваем IxD в процесс гибкой разработки ПОСобака Павлова
 

What's hot (9)

R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...
R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...
R&D проекты, как достигать результатов, в условиях неопределенности. Alexey B...
 
DDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложностиDDD — эффективный способ работы в условиях системной сложности
DDD — эффективный способ работы в условиях системной сложности
 
Malakhov Vladimir. ICE-18 (Investment&Construction Engineering): The Manifest...
Malakhov Vladimir. ICE-18 (Investment&Construction Engineering): The Manifest...Malakhov Vladimir. ICE-18 (Investment&Construction Engineering): The Manifest...
Malakhov Vladimir. ICE-18 (Investment&Construction Engineering): The Manifest...
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
 
Разделение ответственности в заказной разработке
Разделение ответственности в заказной разработкеРазделение ответственности в заказной разработке
Разделение ответственности в заказной разработке
 
HTP. Business Requirements Elicitation & Documentation [1.01, RUS]
HTP. Business Requirements Elicitation & Documentation [1.01, RUS]HTP. Business Requirements Elicitation & Documentation [1.01, RUS]
HTP. Business Requirements Elicitation & Documentation [1.01, RUS]
 
Student Guide - 5: Modern technologies of construction project management
Student Guide - 5: Modern technologies of construction project managementStudent Guide - 5: Modern technologies of construction project management
Student Guide - 5: Modern technologies of construction project management
 
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
 
Continuous UX: встраиваем IxD в процесс гибкой разработки ПО
Continuous UX: встраиваем IxD в процесс гибкой разработки ПОContinuous UX: встраиваем IxD в процесс гибкой разработки ПО
Continuous UX: встраиваем IxD в процесс гибкой разработки ПО
 

Viewers also liked

REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...
REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...
REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...Alex V. Petrov
 
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]Alex V. Petrov
 
CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...
CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...
CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...Alex V. Petrov
 
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...Alex V. Petrov
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
 
ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]
ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]
ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]Alex V. Petrov
 
SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]
SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]
SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]Alex V. Petrov
 
ITGM #5. What Is Enterprise Architecture [1.0, RUS]
ITGM #5. What Is Enterprise Architecture [1.0, RUS]ITGM #5. What Is Enterprise Architecture [1.0, RUS]
ITGM #5. What Is Enterprise Architecture [1.0, RUS]Alex V. Petrov
 
ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]
ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]
ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]Alex V. Petrov
 
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]Alex V. Petrov
 

Viewers also liked (10)

REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...
REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...
REQ Labs 2014. Smart Business Modelling: A Key to Success in Enterprise Autom...
 
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
SPb BA & SA Night. Learning a New Business Domain [1.01, RUS]
 
CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...
CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...
CEE-SECR 2015. Systems Engineering for Software Engineers in Top-Ranking Tech...
 
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]
ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]
ITGM #5. System Duality and Its Practical Effect on Business Analysis [1.0, RUS]
 
SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]
SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]
SPb BA & SA Night. Stakeholder Management Essentials [1.01, RUS]
 
ITGM #5. What Is Enterprise Architecture [1.0, RUS]
ITGM #5. What Is Enterprise Architecture [1.0, RUS]ITGM #5. What Is Enterprise Architecture [1.0, RUS]
ITGM #5. What Is Enterprise Architecture [1.0, RUS]
 
ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]
ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]
ISUCT & BSUIR. Successful Communication of the Process Architecture [1.0, RUS]
 
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
UML2. Eleven Trivial Tips for BPMN Modellers [1.01, RUS]
 

Similar to IT CAMPUS. How to Stop Worrying and Clear Your Technical Debt [RUS]

Процесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийПроцесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийМаксим Смирнов
 
Центр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектовЦентр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектовSkolkovo Mobiletech
 
Центр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектовЦентр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектовVasily Ryzhonkov
 
Разработка требований и Проектирование интерфейсов
Разработка требований и Проектирование интерфейсовРазработка требований и Проектирование интерфейсов
Разработка требований и Проектирование интерфейсовDenis Beskov
 
Software People 2010
Software People 2010Software People 2010
Software People 2010Sergey Orlik
 
архитектура ис
архитектура исархитектура ис
архитектура исAndrey Verbitsky
 
Презентация первых резидентов "Сколково"
Презентация первых резидентов "Сколково"Презентация первых резидентов "Сколково"
Презентация первых резидентов "Сколково"UNOVA
 
Сценарий генподрядчика по управлению проектом (2009)
Сценарий генподрядчика по управлению проектом (2009)Сценарий генподрядчика по управлению проектом (2009)
Сценарий генподрядчика по управлению проектом (2009)Vladimir Ivanov
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакинWRider
 
сессия #1. введение в школу по blockchain. что нас ждет. константин голь...
сессия #1. введение в школу по blockchain. что нас ждет. константин голь...сессия #1. введение в школу по blockchain. что нас ждет. константин голь...
сессия #1. введение в школу по blockchain. что нас ждет. константин голь...Aleksandr Kwaskoff
 
2012 andieva e_ju_innovative_management_of_complex_software_projects
2012 andieva e_ju_innovative_management_of_complex_software_projects2012 andieva e_ju_innovative_management_of_complex_software_projects
2012 andieva e_ju_innovative_management_of_complex_software_projectsdataomsk
 
Тренды в инженерии требований и управлении требованиями
Тренды в инженерии требований и управлении требованиямиТренды в инженерии требований и управлении требованиями
Тренды в инженерии требований и управлении требованиямиAnatoly Levenchuk
 
Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...
Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...
Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...Lviv Startup Club
 
Проблемы системной инженерии. Русский взгляд.
Проблемы системной инженерии. Русский взгляд.Проблемы системной инженерии. Русский взгляд.
Проблемы системной инженерии. Русский взгляд.Anatoly Levenchuk
 
Программа конференции "PM Bridge 2017"
Программа конференции "PM Bridge 2017"Программа конференции "PM Bridge 2017"
Программа конференции "PM Bridge 2017"Maxim Tsarkov
 
Доски проектов и продуктов: Agile-визуализация на уровне компании
Доски проектов и продуктов: Agile-визуализация на уровне компанииДоски проектов и продуктов: Agile-визуализация на уровне компании
Доски проектов и продуктов: Agile-визуализация на уровне компанииSergey Rogachev
 

Similar to IT CAMPUS. How to Stop Worrying and Clear Your Technical Debt [RUS] (20)

Urban
UrbanUrban
Urban
 
Процесс проектирования ИТ-решений
Процесс проектирования ИТ-решенийПроцесс проектирования ИТ-решений
Процесс проектирования ИТ-решений
 
Центр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектовЦентр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектов
 
Центр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектовЦентр мобильных технологий Сколково - программа для проектов
Центр мобильных технологий Сколково - программа для проектов
 
CCPM DBR Vebinar 28 01 2010
CCPM DBR Vebinar 28 01 2010CCPM DBR Vebinar 28 01 2010
CCPM DBR Vebinar 28 01 2010
 
Разработка требований и Проектирование интерфейсов
Разработка требований и Проектирование интерфейсовРазработка требований и Проектирование интерфейсов
Разработка требований и Проектирование интерфейсов
 
Software People 2010
Software People 2010Software People 2010
Software People 2010
 
архитектура ис
архитектура исархитектура ис
архитектура ис
 
Презентация первых резидентов "Сколково"
Презентация первых резидентов "Сколково"Презентация первых резидентов "Сколково"
Презентация первых резидентов "Сколково"
 
Сценарий генподрядчика по управлению проектом (2009)
Сценарий генподрядчика по управлению проектом (2009)Сценарий генподрядчика по управлению проектом (2009)
Сценарий генподрядчика по управлению проектом (2009)
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакин
 
сессия #1. введение в школу по blockchain. что нас ждет. константин голь...
сессия #1. введение в школу по blockchain. что нас ждет. константин голь...сессия #1. введение в школу по blockchain. что нас ждет. константин голь...
сессия #1. введение в школу по blockchain. что нас ждет. константин голь...
 
Efex
EfexEfex
Efex
 
2012 andieva e_ju_innovative_management_of_complex_software_projects
2012 andieva e_ju_innovative_management_of_complex_software_projects2012 andieva e_ju_innovative_management_of_complex_software_projects
2012 andieva e_ju_innovative_management_of_complex_software_projects
 
Urban22
Urban22Urban22
Urban22
 
Тренды в инженерии требований и управлении требованиями
Тренды в инженерии требований и управлении требованиямиТренды в инженерии требований и управлении требованиями
Тренды в инженерии требований и управлении требованиями
 
Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...
Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...
Aleksey Nikiforov: Управління будівельними проектами за допомогою інформаційн...
 
Проблемы системной инженерии. Русский взгляд.
Проблемы системной инженерии. Русский взгляд.Проблемы системной инженерии. Русский взгляд.
Проблемы системной инженерии. Русский взгляд.
 
Программа конференции "PM Bridge 2017"
Программа конференции "PM Bridge 2017"Программа конференции "PM Bridge 2017"
Программа конференции "PM Bridge 2017"
 
Доски проектов и продуктов: Agile-визуализация на уровне компании
Доски проектов и продуктов: Agile-визуализация на уровне компанииДоски проектов и продуктов: Agile-визуализация на уровне компании
Доски проектов и продуктов: Agile-визуализация на уровне компании
 

IT CAMPUS. How to Stop Worrying and Clear Your Technical Debt [RUS]

  • 1. Как перестать беспокоиться… и погасить «технический долг»? Алексей Петров 25 июля 2014 г.
  • 2. Разрешите представиться АЛЕКСЕЙ ПЕТРОВ тренер и консультант, эксперт-практик в области программирования на языках высокого уровня, системного анализа и программной инженерии, архитектуры ПО, проектирования средств и методов взаимодействия и БД 2014 — наст. вр.: преподаватель «Академии информационных систем» (г. Москва), автор семинара «Как измерить архитектуру ПО?» 2013: докладчик конференций Stratoplan TECH & BUSINESS Summit (поток «Проектирование и анализ») и DEV Labs C++ 2012 — наст. вр.: преподаватель НОЦ «Технопарк информационных технологий», ассистент кафедры «Информационные технологии и телекоммуникации» НИУ МГТУ им. Н.Э. Баумана 2011 — наст. вр.: автор серии курсов по разработке, прикладной и корпоративной архитектуре ПО 2005 — 2011: участник более 10 проектов внедрения корпоративных ИС, моделирования бизнес-процессов и ИТ-аудита организаций 2 ©Ю.Зайкина,2012
  • 3. О чем пойдет речь? 3 1 2 Когда можно принимать «технический долг»? Чего следует опасаться? Проекты с нулевым долгом Что такое «технический долг» проекта? Почему разработчики — не единственные, кто должен про него знать? В чем состоят «техническая инфляция» и «техническое банкротство»? 3 Признаки чрезмерного долга Как оценить «технический долг» и как его правильно погашать? Какие инструменты могут прийти на помощь? 4 «Технический долг»: мифы и заблуждения Личный опыт в enterprise-разработке
  • 4. Знакомьтесь!.. «Технический долг» Уорд Каннингем 1992 Назначение метафоры возможность обсуждения «неправильной разработки» с заинтересованными сторонами нетехнического профиля 1 2 Содержание временные архитектурные решения устаревающие и устаревшие технологии ошибки и «мертвый» код нереализованные тесты невыполненные работы по рефакторингу продукта Опасность выплата «технического долга» стоит денег, времени и усилий со стороны разработчиков и заинтересованных сторон 3 4
  • 5. Принятие «технического долга» «Да» «Нет»  Краткосрочное ускорение разработки  Утрата гибкости и усложнение изменений  Рост затрат спонсоров  Неконтролируемый и «грязный» код низкого качества  Чрезмерная специализация разработчиков  Возможное «техническое банкротство» — неизбежная потребность в полном переписывании продукта  Замедление разработки  Упрощение будущих изменений, гибкость продукта  Поддержание качественной кодовой базы и качественного дизайна  Отсутствие затрат времени на изучение и рефакторинг кода  Отсутствие «технической инфляции» — технологического отставания от индустрии 5
  • 6. Когда можно принимать «технический долг»? 1 2 3 Быстрая отгрузка системы … важнее «чистого» кода («исправим позднее») e.g. Близость релиза; реакция на изменения законодательства «Одноразовый» код … принципиально не требует выплат e.g. Некоторые ETL-процедуры; проекты, принципиально не предполагающие поддержки Стратегическое видение дизайна … позволяет ценой долга получить оперативный отклик заказчика и сформировать требуемый дизайн e.g. Стремление захватить рынок или создать прототип 6
  • 7. Когда можно брать в долг: график Сложность архитектуры Функциональные возможности 𝑥0 ❶ Стратегическое видение 𝑓0 𝑓1 𝑥′ 𝑥′ ′ Хорошая новость значение 𝐱 𝟎 существует 1 2 Плохая новость никто не знает, где 𝐱 𝟎 расположена Удачная архитектура Неудачная архитектура 𝑥′′ − 𝑥′ — долг Мартин Фаулер 7
  • 8. Признаки чрезмерного долга  Дублирование кода и нечитаемый код Нарушают принципы ОО-проектирования DRY [Don’t Repeat Yourself] (ср. Single Point of Maintenance) и SCP [Speaking Code Principle] Ведут к аномалиям обновления и маскировке истинных целей, проблемам понимания кода и заставляют разработчиков тратить больше времени на чтение, чем это необходимо Панический страх изменений Добавление новых функций с каждым разом стоит только дороже Проблемный дизайн Содержит «обходные пути» и побуждает к «трюкам» при разработке Зависит от знаний одного разработчика Реализован в коде с множеством пометок на доработку и исправление Неверный выбор технологий и библиотек Предпочтение должно отдаваться новейшим, зрелым и наиболее «дешевым» в модификации технологиям ПО устаревает и со временем влечет накопление долга    8
  • 10. Стратегии погашения долга 1 2 3 «Технический налог»  Эффективное распространение знаний  Сложность планирования и расстановки приоритетов Выплата долга Основной объем — рефакторинг Проценты — время, потраченное не на написание кода Выделенная команда  Удобство управления ресурсами и планирования  Слабость в передаче знаний об архитектуре и коде  Нарастающая психологическая усталость 10
  • 11. Проекты с нулевым долгом (1 / 2) 1 2 Попытка доказательства  Проектный треугольник Гипотеза  Проекты, реализуемые внутренней командой (insourcing), накапливают «технический долг»  Проекты, реализуемые подрядной организацией (outsourcing), накапливают «технический долг»  Проекты, реализуемые сообществом (crowdsourcing), не накапливают «технический долг» 11 Состав работ (требования), 𝒔 𝛾0 100 0 100 100 0 𝒔 = 𝐜𝐨𝐧𝐬𝐭 
  • 12. Проекты с нулевым долгом (2 / 2) 1 2 Попытка доказательства  Проектный треугольник Гипотеза  Проекты, реализуемые внутренней командой (insourcing), накапливают «технический долг»  Проекты, реализуемые подрядной организацией (outsourcing), накапливают «технический долг»  Проекты, реализуемые сообществом (crowdsourcing), не накапливают «технический долг» 12 3 Доказательство  Шестиугольник проектных ограничений Бюджет Состав работ Краудсорсинговый проект
  • 13. «Технический долг»: личный опыт enterprise-разработки 1 2 «Технический налог» Расширенные технические советы Энтузиазм разработчиков Оптимально — 1 день в 2 недели (один и тот же, если позволяет план-график) или в спринте Продуктовая разработка Проекты с длительным циклом разработки рано или поздно всегда переписываются «с нуля» 10% 13
  • 14. Спасибо за внимание! 14 Алексей Петров Академия информационных систем: www.infosystems.ru Россия, 105203, Москва ул. Первомайская, 126 Тел: +7 (495) 231-30-49 E-mail: security@infosystem.ru
  • 15. Источники • Вольфсон Б. Стратегия сокращения технического долга // Форум технологий Mail.Ru Group, 2012. • Фаулер М. Рефакторинг: улучшение существующего кода. — СПб.: Символ-Плюс, 2003. — 432 с. • Ergin, L. Technical Debt: Do Not Underestimate the Danger. • Foote, B., Opdyke, W. ”Life Cycle and Refactoring Patterns that Support Evolution and Reuse,” First Conference on Patterns Languages of Programs (PLoP’94), Aug. 1994. • Refactoring. URL: http://refactoring.com • SonarQube. URL: http://www.sonarqube.org 15 В ходе подготовки доклада использовались: материалы авторского семинара А.В. Петрова «Как измерить архитектуру ПО?» («Академия информационных систем», 2014)