SlideShare a Scribd company logo
1 of 233
Download to read offline
29 октября 2015 года
Долой рутину из разработки!
Автоматизация при создании ПО
Архитектор
Денис Гаврилов
Денис Чекушин
Игорь Шаталкин
Ведущий разработчик .NET
Разработчик .NET
Творческий путь в CUSTIS
2/175
2010 2011 2012 2013 2014 2015
RMS TechEvol
МРТ Разработка
Диспетчеризация RMS
Развитие
Давайте познакомимся: Денис Гаврилов
3/175
 Родился, учился, женился, двое детей
 Программирую уже лет 20
 Из них 12 лет – профессионально
 C 2010 года в CUSTIS
 5,5 лет, OMG!
Трудовой путь в CUSTIS
 2010 – ведущий разработчик
в производственном подразделении
 2011 – ведущий разработчик в отделе
технологического развития
 2013 – руководитель группы
 2015 – архитектор
Хорошо, когда в пределах одной компании
можно реализовать все запросы роста!
4/175
Отдел технологического развития
 Компании уже 19 лет
 Почти сразу появился отдел, сфокусированный
на технологизации производства
 Я работал в ОТР с 2011 года
 Рассказывать буду о том опыте, который
мы накопили за все это время
5/175
Давайте познакомимся: Денис Чекушин
 Увлекаюсь программированием
 В компании СUSTIS с 2012 года
 Ведущий разработчик в RMS
6/175
Давайте познакомимся: Игорь Шаталкин
 Образование – экономическое
 Программирование – увлечение с детства
 С 2011 года в IT-отрасли
 Менеджер по продажам
 Программист
 Аналитик
 Свободное время провожу с семьей,
читаю, играю на пианино
 Люблю творческие задачи, стараюсь
автоматизировать то, что часто повторяется
7/175
О семинаре
 Теоретическая часть – Денис Гаврилов
 Примеры – Денис Чекушин
 Разработка плагинов
для Visual Studio – Игорь Шаталкин
8/175
Что такое рутина?
9/175
Рутина – это…
 Монотонное
 Повторяемое
 Скучное
 Занудное
 Обыденное
 Застойное
 Однообразное
 …
10/175
Из энциклопедии
 Рутина – следование заведенному шаблону,
превратившееся в механическую привычку
 Рутина – (франц. routine, от route – дорога),
привычные приемы, методы работы,
обычные для данного вида деятельности,
пристрастие к шаблону; боязнь перемен,
застой, косность
11/175
Рутина – это…
12/175
Рутина – это…
 …повторяющиеся
12/175
Рутина – это…
 …повторяющиеся
 надоевшие
12/175
Рутина – это…
 …повторяющиеся
 надоевшие
 действия
12/175
План
 Теоретическая часть
 3 способа убрать рутину
 Эффективность и окупаемость
 Экономим
 Готовые решения?
 Примеры
 Разработка плагинов для Visual Studio
13/175
Повторяющиеся действия делятся на…
14/175
Повторяющиеся действия делятся на…
14/175
«Включая мозг»
Повторяющиеся действия делятся на…
14/175
«Включая мозг» «Не приходя в сознание»
Повторяющиеся действия делятся на…
14/175
«Включая мозг» «Не приходя в сознание»
Инструмент
Повторяющиеся действия делятся на…
14/175
«Включая мозг» «Не приходя в сознание»
Инструмент Автоматизация
Инструмент
 Нужен человек, чтобы пользоваться
 Не избавляет нас от рутины совсем,
но позволяет делать ее быстрее
15/175
16/175
17/175
Еще про инструменты
 Специализированный инструмент
позволяет делать быстрее,
но ограничивает область применения
 Сложный инструмент повышает
требования к квалификации
 Идеальный инструмент делает все
за вас, не требуя квалификации
18/175
Идеальный инструмент
19/175
Автоматизация
 Человек только запускает, дальше
все работает само
20/175
Автоматизация
 Человек только запускает, дальше
все работает само
 Полное избавление от рутины
20/175
Автоматизация
 Человек только запускает, дальше
все работает само
 Полное избавление от рутины
 Почти…
20/175
Из Wikipedia
 Автоматизация позволяет:
 повысить производительность труда
 улучшить качество продукции
 оптимизировать процессы управления
 отстранить человека от производств,
опасных для здоровья
21/175
Автоматизация vs инструмент
 Практически всегда автоматизация
более выгодна, чем инструмент
 Но не все можно автоматизировать
 Автоматизация (за исключением
простейших случаев) требует
комплексного, системного подхода
к решению задачи
22/175
Человек и автомат
 Роль человека заключается в:
 подготовке исходных данных
 выборе алгоритма (метода решения)
 анализе полученных результатов
23/175
Критерий автоматизируемости
 Нормированный материал на входе
 Формализуемый алгоритм обработки
 Критерии качества на выходе
24/175
25/175
26/175
27/175
28/175
 Автоматизация порождает рутину
по поддержке автоматизации 
 Но это совсем другая история…
Третий способ убрать рутину
 Просто ее не делать
 Взять готовое
29/175
Нужно 3 кг чищеного картофеля
30/175
Нужно 3 кг чищеного картофеля
30/175
Мощный инструмент
31/175
Мощный инструмент
31/175
47 кг, Карл!!1
Дешево и сердито
32/175
Ссылка на видео
А можно взять готовое
33/175
Третий способ убрать рутину
 Просто ее не делать
 Взять готовое
34/175
Третий способ убрать рутину
 Просто ее не делать
 Взять готовое
 Делегировать тому, кто сделает лучше;
что для одного – рутина, для другого
может быть интересной работой
34/175
Итог: ключевые слова
 Инструмент
 Автоматизация
 Не делать
35/175
План
 Теоретическая часть
 3 способа убрать рутину
 Эффективность и окупаемость
 Экономим
 Готовые решения?
 Примеры
 Разработка плагинов для Visual Studio
36/175
Как устранить рутину?
37/175
Как устранить рутину?
 Чтобы устранить рутину, нужно найти рутину!
37/175
Как найти рутину?
 Проанализировать свою работу
 Найти повторяемое
38/175
Как найти рутину?
 Проанализировать свою работу
 Найти повторяемое
 Применить «критерий автоматизируемости»
 Автоматизировать
 Инструментализировать
38/175
С какой рутиной бороться
в первую очередь?
 С той, которой больше
 С той, которую проще устранить
 С устранением которой все согласны
39/175
Взгляд на рутину с разных сторон
40/175
Взгляд на рутину с разных сторон
40/175
Взгляд на рутину с разных сторон
40/175
Взгляд на рутину с разных сторон
40/175
Взгляд на рутину с разных сторон
40/175
Окупаемость
Единообразие
 Одинаковые проблемы нужно решать
одинаковым способом
41/175
Единообразие
 Одинаковые проблемы нужно решать
одинаковым способом
 Иначе
 Обучение
 Переделывание
 Затраты на поддержку – вот это все
41/175
Окупаемость
 Затраты на рутину – Sр
 Затраты на устранение рутины – Sу
42/175
Окупаемость
 Затраты на рутину – Sр
 Затраты на устранение рутины – Sу
 Если Sр > Sy, то…
42/175
Окупаемость
 Затраты на рутину – Sр
 Затраты на устранение рутины – Sу
 Если Sр > Sy, то…
 …бежим устранять?
42/175
Все немного сложнее
 Погрешность оценки устранения
 Стоимость на ПЖЦ
 Побочные затраты
 Неожиданные профиты
43/175
Погрешность оценки
 Стоимость рутины мы оценили точно,
поскольку цифры уже есть
 Стоимость устранения оцениваем
предположительно
 Sр > Sу * «пи»
44/175
Стоимость «владения»
 На каком временном промежутке
мы оценивали Sр?
 Стоимость эксплуатации инструмента Sэ
 Sр(t) > Sу * «пи» + Sэ(t)
45/175
Побочные затраты
 Обучение
 Инструментом нужно суметь овладеть
 Нерыночный инструмент может
вызывать отторжение
46/175
Побочные затраты
 Вывод из эксплуатации
 Появился другой, более подходящий инструмент
 В уже готовых частях продукта
может потребоваться замена
старого инструмента на новый
47/175
Неожиданные профиты
 Комфорт от использования – повышение
мотивации
 Повышение эффективности позволяет
решать задачу командой меньшего
размера – побочные расходы
на совместную работу становятся меньше
 Высокая эффективность – ниже «прайс»,
больше заказов
48/175
Окупаемость. Итог
 Итак, оценить окупаемость устранения рутины не так просто
49/175
Окупаемость. Итог
 Итак, оценить окупаемость устранения рутины не так просто
 В формулу входят параметры, которые почти невозможно
посчитать, можно только предположить
49/175
Окупаемость. Итог
 Итак, оценить окупаемость устранения рутины не так просто
 В формулу входят параметры, которые почти невозможно
посчитать, можно только предположить
 Решение об устранении рутины – предпринимательское
49/175
Окупаемость. Итог
 Итак, оценить окупаемость устранения рутины не так просто
 В формулу входят параметры, которые почти невозможно
посчитать, можно только предположить
 Решение об устранении рутины – предпринимательское
 Готовое решение дать невозможно, однако в конкретной
ситуации вы можете оценить риски и выгоды
49/175
Окупаемость. Итог
 Итак, оценить окупаемость устранения рутины не так просто
 В формулу входят параметры, которые почти невозможно
посчитать, можно только предположить
 Решение об устранении рутины – предпринимательское
 Готовое решение дать невозможно, однако в конкретной
ситуации вы можете оценить риски и выгоды
 Но… Если устранение на порядки дешевле самой рутины,
другие параметры уже не так важны
49/175
Окупаемость. Совсем итог
 Рутину можно и нужно устранять
50/175
Окупаемость. Совсем итог
 Рутину можно и нужно устранять
 Но не всю 
50/175
Окупаемость. Совсем итог
 Рутину можно и нужно устранять
 Но не всю 
 И это должно быть «командным» действием
50/175
План
 Теоретическая часть
 3 способа убрать рутину
 Эффективность и окупаемость
 Экономим
 Готовые решения?
 Примеры
 Разработка плагинов для Visual Studio
51/175
Как убрать рутину «дешевле»
52/175
Золотые правила
 Модульность
 «Пирамида»
53/175
Модульность
 Модульность – это свойство системы, связанное
с возможностью ее декомпозиции на ряд
внутренне связанных между собой модулей
 Модульность устройства – способность
устройства изменять свои возможности путем
использования функциональных блоков,
выполняющих различные задачи
54/175
IBM PC
 Фирма IBM не придавала большого значения
персональным компьютерам, поэтому
в IBM PC было использовано много «чужих»
компонентов – одним из их ключевых решений
было использование разработок сторонних
производителей
 Это одновременно экономило множество средств
и времени на собственные научные кадры
55/175
IBM PC. Ключевые технологии
 Системная шина ISA со стандартными слотами,
позволяющая вставлять в компьютер разнообразные платы
расширения (видео-, звуковые, сетевые и прочие адаптеры)
 BIOS – набор системных функций, позволяющий
разработчику ПО абстрагироваться от деталей работы
аппаратуры и не зависеть от конкретной конфигурации
системы (до этого все ПО разрабатывалось только
под конкретные машины и поставлялось вместе с ними)
 Стандартный слот для процессора
 Стандартный слот для ОЗУ
 Стандартные интерфейсы подключения FDD и HDD
56/175
Что позволит модульность?
 Уменьшить стоимость эксплуатации
 Дешевле модернизировать компоненты,
так как изменения не затронут другие
части системы
 Уменьшить стоимость вывода из эксплуатации
 Дешевле заменять устаревшие компоненты
на более новые
57/175
Пример модульности
 Нам не нужно иметь две разных дрели
для отверстий «на 8» и «на 10»
58/175
Пример модульности
 Нам не нужно иметь две разных дрели
для отверстий «на 8» и «на 10»
 Просто меняем «модульные» сверла
58/175
«Пирамида»
59/175
«Пирамида»
60/175
«Пирамида»
60/175
«Пирамида»
60/175
Пример
61/175
Пример
 Гоночный автомобиль
 Хорош на треке
 Непрактичен в жизни
 Мешок картошки не увезешь
61/175
Пример
 Гоночный автомобиль
 Хорош на треке
 Непрактичен в жизни
 Мешок картошки не увезешь
 Средний «семейный» автомобиль
 Плох на треке
 Не «Газель»
 Но сносно решает широкий круг задач
61/175
«Пирамида»
62/175
Два способа организации «пирамиды»
 На каждом «слое» свой набор инструментов
 Инструменты более высокого уровня
базируются на предыдущем уровне
63/175
Пример второго способа – UI
 Средства отрисовки графики
 Простые контролы
 Специфичные для проекта контролы
 Автоформы
64/175
Пример – модель OSI
65/175
OSI Model
Layer Data unit Examples
Host
layers
7. Application
Data
HTTP, FTP, SMTP, SSH, TELNET
6. Presentation HTML, CSS, GIF
5. Session RPC, PAP, SSL, SQL
4. Transport
Segments/
Datagram
TCP, UDP, NETBEUI
Media
layers
3. Network Packet IPv4, IPv6, IPsec, AppleTalk, ICMP
2. Data link Frame PPP, IEEE 802.2, L2TP, MAC, LLDP
1. Physical Bit
Ethernet physical
layer, DSL, USB, ISDN, DOCSIS
Пример – наследование в ООП
 Каждый новый наследник класса
использует весь функционал предка
 Но сам более специфичен
66/175
Плохая «пирамида»
67/175
Плохой пример
 Были в нашей практике
 Но признаться стыдно 
 Больше так не делаем!
68/175
Итог: ключевые слова
 Модульность
 «Пирамида»
 Взять готовое
69/175
План
 Теоретическая часть
 3 способа убрать рутину
 Эффективность и окупаемость
 Экономим
 Готовые решения?
 Примеры
 Разработка плагинов для Visual Studio
70/175
Готовое дешевле
 Готовое решение
 Фаза «создание» заменяется на «выбор»,
что дешевле
 Фаза «эксплуатация» дешевле,
так как распределяется на все сообщество
71/175
Свое – это очень дорого
 Делать решение «по месту» – риск,
что больше не пригодится
 Делать универсальное – дополнительные
затраты на аналитику всех областей
применимости
 В готовом и это тоже проделано за нас
72/175
Как понять – брать чужое
или делать свое?
 Определить зрелость экосистемы
 Определить специфичность задачи
73/175
Экосистема
74/175
Экосистема Java
75/175
Новая экосистема
 Появилась недавно
 Готовых решений мало
 Можно стать «точкой кристаллизации»
76/175
Устоявшаяся экосистема
 Все типовые задачи, скорее всего,
уже решены
 Есть множество разных библиотек
 Наш опыт (CUSTIS) и наши примеры
из устоявшихся экосистем
77/175
78/175
Насколько задача общая
для внешнего мира?
Специфичность
79/175
Как выбирать внешнее
 Сравнение по критериям
80/175
Как выбирать внешнее
 Сравнение по критериям
 Точнее описать рутину, которую убираем
(область использования будущего инструмента)
 Собрать список конкурентов
 Определить важные критерии
 Проверить, возможно ли сделать тестовые
приложения (сценарии)
 Отсеять тех, кто не прошел
 Среди тех, кто остался, произвести
экспертный выбор
80/175
Правила хорошего тона при работе
с внешними библиотеками
 Читать документацию
 Понять, как правильно использовать инструмент
 Репортить баги
 Отправлять правки
 Обмениваться опытом
81/175
Сделать свое общим
 Выложить исходники на GitHub
 Опубликовать в NuGet или репозитории
инструментов и расширений
 Сообщество разделит с вами бремя поддержки
 PR
82/175
Итог: ключевые слова
 Повторяющееся
 Инструмент, автоматизация, не делать
 Эффективность, окупаемость
 Используем готовое, если возможно
83/175
План
 Теоретическая часть
 Примеры
 Трансформации
 Построение типового UI
 Шаблоны файлов и проектов
 Hot Keys
 Разработка плагинов для Visual Studio
84/175
Layers & Tiers
85/175
GUI
ViewModel
КСВ
Прикладная
логика
БД БД
Сервер
Клиент
Трансформации
Слои
DAL
Звенья
Что такое трансформации?
86/175
Слой N-1 Слой NТрансформация
Метаданные
Трансформации – это рутина
 Трансформация – это то,
что хорошо автоматизируется
 Четко описаны входные и выходные данные
 Сам процесс хорошо формализован
87/175
Пример автоматизации трансформации
88/175
Прикладной
код
Трансформация
БД
Пример автоматизации трансформации
89/175
Без автоматизации
Пример автоматизации трансформации
89/175
Без автоматизации После автоматизации
Автоматизация через ORM
90/175
Прикладной
кодБД
ORM
ORM в индустрии
91/175
BLToolkit
Dapper.NET
Типология ORM
 Легковесные
 Полнофункциональные
92/175
Фичи ORM
 LINQ-провайдер
93/175
Фичи ORM
 Lazy Loading («Ленивая загрузка»)
94/175
Кодогенерация
95/175
Метаданные Кодогенерация
Задачи, решаемые кодогенерацией
 Избавление от рутины
 Ускорение процесса разработки
 Уменьшение количества ошибок
96/175
Примеры кодогенерации
 Динамические HTML-страницы ASP.NET
 Шаблоны файлов и проектов в Visual Studio
 ServiceReference в Visual Studio
 Визуальный редактор форм в Visual Studio
 Создание таблиц через мастер в SQL Server
Management Studio
97/175
ServiceReference в Visual Studio
98/175
http://mysite/api/orders?wsdl
ServiceReference в Visual Studio
98/175
http://mysite/api/orders?wsdl
Кодогенерация
ServiceReference в Visual Studio
98/175
http://mysite/api/orders?wsdl
Кодогенерация
ServiceReference в Visual Studio
98/175
http://mysite/api/orders?wsdl
Кодогенерация
ServiceReference в Visual Studio
98/175
http://mysite/api/orders?wsdl
Кодогенерация
Кодогенерация DDL по метаданным
99/175
Кодогенерация
Database First
100/175
Кодогенерация
Исходная
база данных
Model First
Модель данных
Enterprise Architect
101/175
Model First
Модель данных
Enterprise Architect
Кодогенерация
101/175
Model First
Сгенерированная
схема БД
Модель данных
Enterprise Architect
Кодогенерация
101/175
Model First
Сгенерированная
схема БД
Модель данных
Сгенерированный код
Enterprise Architect
Кодогенерация
101/175
Шаблоны Т4
 T4 = Text Template Transformation Toolkit
 Это инструмент генерации кода
на основе шаблонов
 Позволяет писать логику шаблона
на C# или VB.NET
 Позволяет генерировать все виды
текстовой информации (артефакты)
 Шаблоны могут быть переиспользуемыми
(наследование, включение)
102/175
Как работает шаблон T4
103/175
Как работает шаблон T4
103/175
Директивы
 Объявляются конструкцией <#@ … #>
 Задают параметры шаблона
 Управляют выполнением шаблона
104175
Текст шаблона
 Шаблон результирующего файла
 Задает структуру результата
 Обычный текст
105/175
Управляющий код
 Реализует логику работы шаблона
 Три основные конструкции
<# … #> – стандартный блок
<#= … #> – блок выражений
<#+ … #> – может содержать поля, свойства, методы и классы
106/175
Использование шаблонов Т4
 URL в ASP.NET MVC – рутина
107/175
Использование шаблонов Т4
 Строго типизированный линк
108/175
Результирующий код
109/175
Результирующий код
109/175
Результирующий код
109/175
Результирующий код
109/175
Результирующий код
109/175
Основные ресурсы по T4
 Семинар Павла Музыки:
http://vk.com/topic-52018779_31928178
 Architecture of Text Templates:
https://msdn.microsoft.com/en-us/library/bb126261
 Code Generation and T4 Text Templates
 Oleg Sych blog: http://www.olegsych.com/
 http://stackoverflow.com/search?q=T4
 https://www.google.ru/#q=T4
 Строго типизированный линк ASP.NET MVC: T4MVC
110/175
План
 Теоретическая часть
 Примеры
 Трансформации
 Построение типового UI
 Шаблоны файлов и проектов
 Hot Keys
 Разработка плагинов для Visual Studio
111/175
112/175
Построение типового UI – рутина
Инструмент UI
 Визуальный редактор WPF в Visual Studio
113/175
Автоматизация через автоформы
 Автоформы экономят время разработки
 Предоставляют инструмент прототипирования
 Унифицируют интерфейсы
114/175
Генерация автоформ по метаданным
115/175
CisForms + CommonUI
Метаданные GUI
План
 Теоретическая часть
 Примеры
 Трансформации
 Построение типового UI
 Шаблоны файлов и проектов
 Hot Keys
 Разработка плагинов для Visual Studio
116/175
Написание однотипных
фрагментов кода – рутина
117/175
Code Snippets (фрагменты кода)
118/175
Code Snippets (фрагменты кода)
118/175
TAB
Code Snippets (фрагменты кода)
118/175
TAB
Snippet Результат
class class MyClass { … }
cw Console.WriteLine();
for for (int i = 0; i < UPPER; i++) {…}
foreach foreach (var I in arr) { … }
switch switch (@enum) { … }
try try { … } catch
if if (b) { … }
Code Snippets, включенные в Visual Studio
119/175
Visual C# Code Snippets
Создание своего Code Snippets
 Однотипный фрагмент кода
120/175
Структура шаблона Code Snippets
TestCodeSnippet.snippet
121/175
Структура шаблона Code Snippets
TestCodeSnippet.snippet
121/175
Структура шаблона Code Snippets
TestCodeSnippet.snippet
121/175
Структура шаблона Code Snippets
TestCodeSnippet.snippet
121/175
Подключение Code Snippets в Visual Studio
 Пункт меню TOOLS
 Code Snippets Manager
 Import → Выбираем TestCodeSnippet.snippet
 Используем!
122/175
Использование Code Snippets
123/175
Шаблоны ReSharper
124/175
Структура шаблона ReSharper
125/175
unientity.Templates.DotSettings
Подключение шаблонов R# в Visual Studio
 RESHARPER → Manage Options → Import From File
126/175
Редактирование шаблона R#
 Templates Explorer
127/175
Использование шаблона unientity
128/175
Создание нового проекта – рутина
1. Создать проект (Add → NewProject… →)
2. Включить файл ProductInfo.cs
из корня Solution
3. Редактировать *.proj-файл…
4. Отредактировать AssemblyInfo.cs
5. Добавить файл VersionInfo.cs
6. Добавить признак компиляции
7. В .csproj-файле выставить
<OutputPath> в bin
8. И так далее
129/175
Шаблоны проектов Visual Studio
 Создаем шаблон
 Устанавливаем шаблон в Visual Studio
 Создаем проекты по шаблону Add →
NewProject → «Мой шаблон для проектов»
130/175
Создание шаблона проекта
131/175
 Добавляем проект С# ProjectTemplate
 Описываем метаданные шаблона
 Добавляем шаблон проекта (.csproj)
Метаданные шаблона проекта
 *.vstemplate-файл
132/175
Шаблон проекта
 *.csproj-файл
133/175
Создание нового проекта по шаблону
134/175
Создание однотипных файлов – рутина
135/175
Шаблон файла
136/175
Шаблон файла
136/175
Основные ресурсы по шаблонам
 How to: Create a Basic Code Snippet
 Snippet Designer
 ReSharper Code Templates
 How to create Visual Studio project templates
 How to: Create Item Templates
137/175
План
 Теоретическая часть
 Примеры
 Трансформации
 Построение типового UI
 Шаблоны файлов и проектов
 Hot Keys
 Разработка плагинов для Visual Studio
138/175
Hot Keys
139/175
Visual Studio keyboard shortcuts
Перерыв
140/175
План
 Теоретическая часть
 Примеры
 Разработка плагинов для Visual Studio
 Возможности и ограничения
 Создание команд
 Объектная модель автоматизации
 Хранение настроек
 Инструментальные окна
141/175
Зачем автоматизировать
среду разработки?
 Существующие инструменты автоматизации
не подходят
142/175
Способы автоматизации сред
для программирования
 Макросы
 Запись событий клавиатуры
и (реже) нажатий мыши
 Автоматизация простых действий
 Расширения
(= плагины, подключаемые модули)
 Компилируются
 Можно скачать из «Галереи расширений»
 Внешние процессы
 AutoIt
143/175
Сравнение сред для программирования
Среда Макросы Расширения Галерея
расширений
Интегрированные среды разработки
IntelliJ IDEA Да Да Да
NetBeans IDE Да Да Да
Eclipse Да (как расширение) Да Да
Visual Studio Да (как расширение) Да Да
Продвинутые блокноты
Notepad++ Да Да Wiki-статья
VIM Да Да Wiki-статья
144/175
Что можно расширять в Visual Studio?
 Кнопки в меню и на панелях инструментов
 Инструментальные окна
 Поддержка новых языков программирования
 Поддержка новых типов проектов и документов
145/175
Что можно расширять в Visual Studio?
 Кнопки в меню и на панелях инструментов
 Инструментальные окна
 Поддержка новых языков программирования
 Поддержка новых типов проектов и документов
145/175
Требования для разработки расширений
 Visual Studio
 2005–2013 Professional
 2015 Community
 Visual Studio SDK
 DreamSpark – пакет для студентов
 BizSpark – пакет для стартапов
146/175
План
 Теоретическая часть
 Примеры
 Разработка плагинов для Visual Studio
 Возможности и ограничения
 Создание команд
 Объектная модель автоматизации
 Хранение настроек
 Инструментальные окна
147/175
Команда
 Пункт меню
 Кнопка на панели инструментов
 Дополнительные способы вызова
 Через CommandWindow
 Через командную строку
 Из другого расширения
148/175
Пример 1
 Разработать расширение, которое позволит
копировать выделенный в редакторе текст
с информацией о его местоположении
149/175
CTRL + SHIFT + C
ExtendedCopier.CopySelectionWithLocation:14: var
activeDocument = dte.ActiveDocument;
Создание проекта автоматизации
 Инструкция
150/175
Внутри проекта автоматизации
 Как переместить команду в другое меню,
задать ей новое имя или поменять картинку?
 Где писать обработчик команды?
151/175
Таблицы команд
 Задают параметры команд
 Подпись
 Картинка
 Положение в меню
 Параметры видимости
 Быстрые клавиши
 И так далее
 По форме: XML
 Расширение: vsct
152/175
Таблицы команд. Структура
 Commands
 Buttons
 Bitmaps
 CommandPlacements
 Стандартные меню Visual Studio
 KeyBindings
 Symbols
 Есть и другие части
153/175
Пакетный класс
 Атрибуты
 Регистрируют расширение
 Метод Initialize
 Инициализирует расширение
 Связывает команду
и ее обработчик
154/175
План
 Теоретическая часть
 Примеры
 Разработка плагинов для Visual Studio
 Возможности и ограничения
 Создание команд
 Объектная модель автоматизации
 Хранение настроек
 Инструментальные окна
155/175
Объектная модель автоматизации
Visual Studio
 API для взаимодействия с Visual Studio
 Откуда можно взаимодействовать
 Из расширения
 Из внешнего процесса
 Модель может быть расширена за счет
пользовательского расширения самой
Visual Studio
156/175
Структура объектной модели
автоматизации Visual Studio
157/175
Ссылка на диаграмму
Структура объектной модели
автоматизации Visual Studio
157/175
Ссылка на диаграмму
Доступ к объектной модели
автоматизации
 Из пакетного класса
 var dte = (DTE2)GetService(typeof(SDTE));
 Из внешнего процесса
 Подробности (раздел «Независимый
внешний процесс»)
158/175
План
 Теоретическая часть
 Примеры
 Разработка плагинов для Visual Studio
 Возможности и ограничения
 Создание команд
 Объектная модель автоматизации
 Хранение настроек
 Инструментальные окна
159/175
Пример 2
 Дать возможность пользователю настраивать
формат, в котором информация копируется
в буфер обмена
160/175
Пример 2
 Дать возможность пользователю настраивать
формат, в котором информация копируется
в буфер обмена
160/175
ExtendedCopier.CopySelectionWithLocation:24: var
fileName = activeDocument.Name
Пример 2
 Дать возможность пользователю настраивать
формат, в котором информация копируется
в буфер обмена
160/175
ExtendedCopier.CopySelectionWithLocation:24: var
fileName = activeDocument.Name
ExtendedCopier.CopySelectionWithLocation, 24
var fileName = activeDocument.Name
Пример 2
 Дать возможность пользователю настраивать
формат, в котором информация копируется
в буфер обмена
160/175
ExtendedCopier.CopySelectionWithLocation:24: var
fileName = activeDocument.Name
ExtendedCopier.CopySelectionWithLocation, 24
var fileName = activeDocument.Name
ExtendedCopier, 24: var fileName =
activeDocument.Name
Интеграция в общие настройки
Visual Studio
 Класс-наследник DialogPage
 Настройки задаются через свойства
 [DisplayName] – название настройки
 [Description] – описание настройки
 [ProvideOptionPage]
 Указывает тип класса, через который
задаются настройки
 Дополнительная информация
161/175
Получение настроек
 Из пакетного класса
var options = (Options)GetDialogPage(typeof(Options));
162/175
План
 Теоретическая часть
 Примеры
 Разработка плагинов для Visual Studio
 Возможности и ограничения
 Создание команд
 Объектная модель автоматизации
 Хранение настроек
 Инструментальные окна
163/175
Инструментальное окно
 Выполнение задач, которые требуют
пользовательского ввода
 Отображение информации пользователю
164/175
Пример 3
 Разработать расширение, которое
позволило бы делать массовые замены
165/175
Пример 3
 Разработать расширение, которое
позволило бы делать массовые замены
165/175
Project
Item
Text
Solution
Проект
Строка
Текст
Решение
Создание проекта автоматизации
 Инструкция
166/175
Внутри проекта автоматизации
 Как переместить окно в другое меню,
задать ему новое имя или картинку?
 Где разрабатывать внешний вид окна?
 Как получить доступ к DTE?
167/175
Отображение окна
 Пункт меню настраивается
через таблицу команд
 Регистрируем окно в пакетном классе
 В обработчике команды показываем окно
168/175
Внешний вид и поведение окна
 Окно
 Наследник ToolWindowPane
 Внутри – WPF-контрол
 Лучшие практики разработки WPF
169/175
Доступ к DTE
 Передаем в конструктор контрола окно
 Используем окно для получения DTE
var dte = (DTE2)_serviceProvider.GetService(typeof(SDTE));
170/175
О чем не поговорили?
 Расширения для других сред программирования
 Расширения для Visual Studio,
отличные от VSPackage
 Доступность и видимость команд
 Поддержка новых языков программирования,
новых типов проектов и пр.
 Публикация расширений в галерее
171/175
Ссылки
 Visual Studio SDK
 Руководство по разработке модулей расширений
на C#
 Extending Visual Studio 2013
 Visual Studio 2010 Package Development
Fundamentals
 Расширения с семинара
 Исходный код
 Copy with Location
 Batch Replace
172/175
Семинары
 В. Муравлев
«Разработка Enterprise-приложения
на основе Spring Framework: собираем
конструктор»
 П. Музыка
«Реальная кодогенерация
с использованием T4-шаблонов»
 С. Кошель
«Грязная магия Java»
173/175
Итоги
 Что такое рутина и как с ней бороться
 Автоматизируйте работу с умом
 Ресурсы на автоматизацию и поддержку
 Готовые решения
 Модульность
 Широта охвата и эффективность
 Примеры
 Трансформация
 Метаданные
 Шаблоны кода
 Свои расширения
174/175
Спасибо!
Вопросы?
175/175
Денис Гаврилов
dgavrilov@custis.ru
Денис Чекушин
dchekushin@custis.ru
Игорь Шаталкин
ishatalkin@custis.ru

More Related Content

Viewers also liked

Инхаус и аутсорсинг: на пути к гибридным проектным командам
Инхаус и аутсорсинг: на пути к гибридным проектным командамИнхаус и аутсорсинг: на пути к гибридным проектным командам
Инхаус и аутсорсинг: на пути к гибридным проектным командамCUSTIS
 
Функциональное программирование: мифы и реальность
Функциональное программирование: мифы и реальностьФункциональное программирование: мифы и реальность
Функциональное программирование: мифы и реальностьCUSTIS
 
У всех на виду: нюансы Open Source разработки
У всех на виду: нюансы Open Source разработкиУ всех на виду: нюансы Open Source разработки
У всех на виду: нюансы Open Source разработкиCUSTIS
 
Секрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноСекрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноCUSTIS
 
Domain Driven Design и архитектура корпоративных приложений
Domain Driven Design и архитектура корпоративных приложенийDomain Driven Design и архитектура корпоративных приложений
Domain Driven Design и архитектура корпоративных приложенийCUSTIS
 
Автоматизация учета в банке: жизненно важный баланс
Автоматизация учета в банке: жизненно важный балансАвтоматизация учета в банке: жизненно важный баланс
Автоматизация учета в банке: жизненно важный балансCUSTIS
 
Разработка ПО с помощью UML
Разработка ПО с помощью UMLРазработка ПО с помощью UML
Разработка ПО с помощью UMLCUSTIS
 
Централизованное управление товародвижением
Централизованное управление товародвижениемЦентрализованное управление товародвижением
Централизованное управление товародвижениемCUSTIS
 
Использование Edition Based Redefinition для обновления приложений, доступных...
Использование Edition Based Redefinition для обновления приложений, доступных...Использование Edition Based Redefinition для обновления приложений, доступных...
Использование Edition Based Redefinition для обновления приложений, доступных...CUSTIS
 
Agile в больших и очень больших проектах
Agile в больших и очень больших проектахAgile в больших и очень больших проектах
Agile в больших и очень больших проектахCUSTIS
 
Прогноз социально экономического развития города Москвы на 2015-2017 годы
Прогноз социально экономического развития города Москвы на 2015-2017 годыПрогноз социально экономического развития города Москвы на 2015-2017 годы
Прогноз социально экономического развития города Москвы на 2015-2017 годыДарья Каштанова
 
Стратегия развития черной и цветной металлургии РФ 2014-2020
Стратегия развития черной и цветной металлургии РФ 2014-2020 Стратегия развития черной и цветной металлургии РФ 2014-2020
Стратегия развития черной и цветной металлургии РФ 2014-2020 Ilya Dolinin
 
Data Access Layer как страховка на случай миграции СУБД
Data Access Layer как страховка на случай миграции СУБДData Access Layer как страховка на случай миграции СУБД
Data Access Layer как страховка на случай миграции СУБДCUSTIS
 
Разработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPFРазработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPFCUSTIS
 
Действуй, опираясь на ценности, а не просто применяй инструменты
Действуй, опираясь на ценности, а не просто применяй инструментыДействуй, опираясь на ценности, а не просто применяй инструменты
Действуй, опираясь на ценности, а не просто применяй инструментыCUSTIS
 
Создание веб-приложений с помощью Oracle APEX
Создание веб-приложений с помощью Oracle APEX Создание веб-приложений с помощью Oracle APEX
Создание веб-приложений с помощью Oracle APEX CUSTIS
 
Тестирование ПО: баг не пройдет!
Тестирование ПО: баг не пройдет!Тестирование ПО: баг не пройдет!
Тестирование ПО: баг не пройдет!CUSTIS
 
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетГибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетCUSTIS
 

Viewers also liked (19)

Инхаус и аутсорсинг: на пути к гибридным проектным командам
Инхаус и аутсорсинг: на пути к гибридным проектным командамИнхаус и аутсорсинг: на пути к гибридным проектным командам
Инхаус и аутсорсинг: на пути к гибридным проектным командам
 
Функциональное программирование: мифы и реальность
Функциональное программирование: мифы и реальностьФункциональное программирование: мифы и реальность
Функциональное программирование: мифы и реальность
 
У всех на виду: нюансы Open Source разработки
У всех на виду: нюансы Open Source разработкиУ всех на виду: нюансы Open Source разработки
У всех на виду: нюансы Open Source разработки
 
Секрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноСекрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдно
 
Domain Driven Design и архитектура корпоративных приложений
Domain Driven Design и архитектура корпоративных приложенийDomain Driven Design и архитектура корпоративных приложений
Domain Driven Design и архитектура корпоративных приложений
 
Автоматизация учета в банке: жизненно важный баланс
Автоматизация учета в банке: жизненно важный балансАвтоматизация учета в банке: жизненно важный баланс
Автоматизация учета в банке: жизненно важный баланс
 
Разработка ПО с помощью UML
Разработка ПО с помощью UMLРазработка ПО с помощью UML
Разработка ПО с помощью UML
 
Централизованное управление товародвижением
Централизованное управление товародвижениемЦентрализованное управление товародвижением
Централизованное управление товародвижением
 
Использование Edition Based Redefinition для обновления приложений, доступных...
Использование Edition Based Redefinition для обновления приложений, доступных...Использование Edition Based Redefinition для обновления приложений, доступных...
Использование Edition Based Redefinition для обновления приложений, доступных...
 
Agile в больших и очень больших проектах
Agile в больших и очень больших проектахAgile в больших и очень больших проектах
Agile в больших и очень больших проектах
 
Прогноз социально экономического развития города Москвы на 2015-2017 годы
Прогноз социально экономического развития города Москвы на 2015-2017 годыПрогноз социально экономического развития города Москвы на 2015-2017 годы
Прогноз социально экономического развития города Москвы на 2015-2017 годы
 
Стратегия развития черной и цветной металлургии РФ 2014-2020
Стратегия развития черной и цветной металлургии РФ 2014-2020 Стратегия развития черной и цветной металлургии РФ 2014-2020
Стратегия развития черной и цветной металлургии РФ 2014-2020
 
Data Access Layer как страховка на случай миграции СУБД
Data Access Layer как страховка на случай миграции СУБДData Access Layer как страховка на случай миграции СУБД
Data Access Layer как страховка на случай миграции СУБД
 
Разработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPFРазработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPF
 
Действуй, опираясь на ценности, а не просто применяй инструменты
Действуй, опираясь на ценности, а не просто применяй инструментыДействуй, опираясь на ценности, а не просто применяй инструменты
Действуй, опираясь на ценности, а не просто применяй инструменты
 
Создание веб-приложений с помощью Oracle APEX
Создание веб-приложений с помощью Oracle APEX Создание веб-приложений с помощью Oracle APEX
Создание веб-приложений с помощью Oracle APEX
 
Big datatech by-vkrylov
Big datatech by-vkrylovBig datatech by-vkrylov
Big datatech by-vkrylov
 
Тестирование ПО: баг не пройдет!
Тестирование ПО: баг не пройдет!Тестирование ПО: баг не пройдет!
Тестирование ПО: баг не пройдет!
 
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватаетГибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
 

Similar to Долой рутину из разработки! Автоматизация при создании ПО

Видимое ускорение разработки
Видимое ускорение разработкиВидимое ускорение разработки
Видимое ускорение разработкиAlex Troshin
 
Шаг-Рысь-Галоп: видимое ускорение разработки
Шаг-Рысь-Галоп: видимое ускорение разработкиШаг-Рысь-Галоп: видимое ускорение разработки
Шаг-Рысь-Галоп: видимое ускорение разработкиSQALab
 
Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...
Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...
Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...Netpeak
 
Инструменты юзабилити для роста бизнеса
Инструменты юзабилити для роста бизнесаИнструменты юзабилити для роста бизнеса
Инструменты юзабилити для роста бизнесаFedotov Alex
 
12+ инструментов юзабилити для роста бизнес показателей
12+ инструментов юзабилити для роста бизнес показателей12+ инструментов юзабилити для роста бизнес показателей
12+ инструментов юзабилити для роста бизнес показателейOlshansky & Partners
 
Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)
Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)
Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)Alexander Krass
 
Применение инструментов бережливого производства на практике
Применение инструментов бережливого производства на практикеПрименение инструментов бережливого производства на практике
Применение инструментов бережливого производства на практикеRoman Bunin
 
Продукты Atlassian для работы по гибким процессам. опыт реализаци
Продукты Atlassian для работы по гибким процессам. опыт реализациПродукты Atlassian для работы по гибким процессам. опыт реализаци
Продукты Atlassian для работы по гибким процессам. опыт реализациAndrey Rebrov
 
EPAM Insider - Izhevsk - Agile in real world
EPAM Insider - Izhevsk - Agile in real worldEPAM Insider - Izhevsk - Agile in real world
EPAM Insider - Izhevsk - Agile in real worldYury Shilyaev
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Sigma Software
 
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примереПрименение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примереSergey Sobolev
 
Agile — это не то, что ты думаешь
Agile — это не то, что ты думаешьAgile — это не то, что ты думаешь
Agile — это не то, что ты думаешьVasiliy Cheptsov
 
Интервью Александра Нефёдова
Интервью Александра НефёдоваИнтервью Александра Нефёдова
Интервью Александра НефёдоваAVIATOR
 
Старт работы в Мегаплане
Старт работы в МегапланеСтарт работы в Мегаплане
Старт работы в Мегапланеglebkudr
 
Анатомия личного бизнеса. Семинар
Анатомия личного бизнеса. СеминарАнатомия личного бизнеса. Семинар
Анатомия личного бизнеса. СеминарRagnar
 
Debunking Risk Management in Software (RUS)
Debunking Risk Management in Software (RUS)Debunking Risk Management in Software (RUS)
Debunking Risk Management in Software (RUS)Alexey Kuznetsov
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 
Гемба Кайдзен от СК Лондон-Алматы
Гемба Кайдзен от СК Лондон-АлматыГемба Кайдзен от СК Лондон-Алматы
Гемба Кайдзен от СК Лондон-АлматыRuslan Kuanyshbayev
 

Similar to Долой рутину из разработки! Автоматизация при создании ПО (20)

Видимое ускорение разработки
Видимое ускорение разработкиВидимое ускорение разработки
Видимое ускорение разработки
 
Шаг-Рысь-Галоп: видимое ускорение разработки
Шаг-Рысь-Галоп: видимое ускорение разработкиШаг-Рысь-Галоп: видимое ускорение разработки
Шаг-Рысь-Галоп: видимое ускорение разработки
 
Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...
Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...
Теория ограничений в работе и жизни. Как стать системным мыслителем и решать ...
 
Инструменты юзабилити для роста бизнеса
Инструменты юзабилити для роста бизнесаИнструменты юзабилити для роста бизнеса
Инструменты юзабилити для роста бизнеса
 
12+ инструментов юзабилити для роста бизнес показателей
12+ инструментов юзабилити для роста бизнес показателей12+ инструментов юзабилити для роста бизнес показателей
12+ инструментов юзабилити для роста бизнес показателей
 
Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)
Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)
Lifestyle для стартапера. Что может помочь (Internet life 2011, Алесандр Красс)
 
Применение инструментов бережливого производства на практике
Применение инструментов бережливого производства на практикеПрименение инструментов бережливого производства на практике
Применение инструментов бережливого производства на практике
 
1
11
1
 
Продукты Atlassian для работы по гибким процессам. опыт реализаци
Продукты Atlassian для работы по гибким процессам. опыт реализациПродукты Atlassian для работы по гибким процессам. опыт реализаци
Продукты Atlassian для работы по гибким процессам. опыт реализаци
 
EPAM Insider - Izhevsk - Agile in real world
EPAM Insider - Izhevsk - Agile in real worldEPAM Insider - Izhevsk - Agile in real world
EPAM Insider - Izhevsk - Agile in real world
 
Agile, cmmi and everything
Agile, cmmi and everythingAgile, cmmi and everything
Agile, cmmi and everything
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
 
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примереПрименение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
Применение ТРИЗ (Теории Решения Изобретательских Задач) в ИТ на примере
 
Agile — это не то, что ты думаешь
Agile — это не то, что ты думаешьAgile — это не то, что ты думаешь
Agile — это не то, что ты думаешь
 
Интервью Александра Нефёдова
Интервью Александра НефёдоваИнтервью Александра Нефёдова
Интервью Александра Нефёдова
 
Старт работы в Мегаплане
Старт работы в МегапланеСтарт работы в Мегаплане
Старт работы в Мегаплане
 
Анатомия личного бизнеса. Семинар
Анатомия личного бизнеса. СеминарАнатомия личного бизнеса. Семинар
Анатомия личного бизнеса. Семинар
 
Debunking Risk Management in Software (RUS)
Debunking Risk Management in Software (RUS)Debunking Risk Management in Software (RUS)
Debunking Risk Management in Software (RUS)
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Гемба Кайдзен от СК Лондон-Алматы
Гемба Кайдзен от СК Лондон-АлматыГемба Кайдзен от СК Лондон-Алматы
Гемба Кайдзен от СК Лондон-Алматы
 

More from CUSTIS

Три истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseТри истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseCUSTIS
 
Долгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеДолгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеCUSTIS
 
Будущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямБудущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямCUSTIS
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиCUSTIS
 
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...CUSTIS
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиCUSTIS
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииCUSTIS
 
Опыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеОпыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеCUSTIS
 
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?CUSTIS
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектурыCUSTIS
 
Три истории микросервисов
Три истории микросервисовТри истории микросервисов
Три истории микросервисовCUSTIS
 
От монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульнымОт монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульнымCUSTIS
 
Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...CUSTIS
 
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыБудущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыCUSTIS
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахCUSTIS
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net PerformanceCUSTIS
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьCUSTIS
 
Опыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыОпыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыCUSTIS
 
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...CUSTIS
 
Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...CUSTIS
 

More from CUSTIS (20)

Три истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для EnterpriseТри истории микросервисов, или MSA для Enterprise
Три истории микросервисов, или MSA для Enterprise
 
Долгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейлеДолгоживущие ИТ в динамичном ритейле
Долгоживущие ИТ в динамичном ритейле
 
Будущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациямБудущее уже наступило: от Agile к бирюзовым организациям
Будущее уже наступило: от Agile к бирюзовым организациям
 
Как выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
 
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...Диаграммы учета как средство для наглядного и целостного отображения правил у...
Диаграммы учета как средство для наглядного и целостного отображения правил у...
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
 
Agile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революцииAgile — ответ на вызовы третьей промышленной революции
Agile — ответ на вызовы третьей промышленной революции
 
Опыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банкеОпыт построения микросервисной архитектуры в цифровом банке
Опыт построения микросервисной архитектуры в цифровом банке
 
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?Золотая лихорадка MSA: почему нам не подошли микросервисы?
Золотая лихорадка MSA: почему нам не подошли микросервисы?
 
Барьеры микросервисной архитектуры
Барьеры микросервисной архитектурыБарьеры микросервисной архитектуры
Барьеры микросервисной архитектуры
 
Три истории микросервисов
Три истории микросервисовТри истории микросервисов
Три истории микросервисов
 
От монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульнымОт монолитных моделей предметной области — к модульным
От монолитных моделей предметной области — к модульным
 
Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...Проблемы управления правами доступа к информационным системам крупной торгово...
Проблемы управления правами доступа к информационным системам крупной торгово...
 
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифрыБудущее omni-channel маркетинга: инструменты, кейсы и цифры
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
 
Agile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектахAgile и управление знаниями в ИТ-проектах
Agile и управление знаниями в ИТ-проектах
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net Performance
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
 
Опыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектурыОпыт применения метода ATAM для оценки архитектуры
Опыт применения метода ATAM для оценки архитектуры
 
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
 
Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...Process и Case Management в информационной системе: от автоматизации As Is к ...
Process и Case Management в информационной системе: от автоматизации As Is к ...
 

Долой рутину из разработки! Автоматизация при создании ПО