Долой рутину из разработки! Автоматизация при создании ПО
Открытый семинар для студентов в компании CUSTIS (29 октября 2015 года).
Лекторы: Денис Гаврилов, архитектор, Денис Чекушин, ведущий разработчик .NET, и Игорь Шаталкин, разработчик .NET.
производственном подразделении 2011 – ведущий разработчик в отделе технологического развития 2013 – руководитель группы 2015 – архитектор Хорошо, когда в пределах одной компании можно реализовать все запросы роста! 4/175
сразу появился отдел, сфокусированный на технологизации производства Я работал в ОТР с 2011 года Рассказывать буду о том опыте, который мы накопили за все это время 5/175
– увлечение с детства С 2011 года в IT-отрасли Менеджер по продажам Программист Аналитик Свободное время провожу с семьей, читаю, играю на пианино Люблю творческие задачи, стараюсь автоматизировать то, что часто повторяется 7/175
механическую привычку Рутина – (франц. routine, от route – дорога), привычные приемы, методы работы, обычные для данного вида деятельности, пристрастие к шаблону; боязнь перемен, застой, косность 11/175
ограничивает область применения Сложный инструмент повышает требования к квалификации Идеальный инструмент делает все за вас, не требуя квалификации 18/175
инструмент Но не все можно автоматизировать Автоматизация (за исключением простейших случаев) требует комплексного, системного подхода к решению задачи 22/175
Повышение эффективности позволяет решать задачу командой меньшего размера – побочные расходы на совместную работу становятся меньше Высокая эффективность – ниже «прайс», больше заказов 48/175
просто В формулу входят параметры, которые почти невозможно посчитать, можно только предположить Решение об устранении рутины – предпринимательское 49/175
просто В формулу входят параметры, которые почти невозможно посчитать, можно только предположить Решение об устранении рутины – предпринимательское Готовое решение дать невозможно, однако в конкретной ситуации вы можете оценить риски и выгоды 49/175
просто В формулу входят параметры, которые почти невозможно посчитать, можно только предположить Решение об устранении рутины – предпринимательское Готовое решение дать невозможно, однако в конкретной ситуации вы можете оценить риски и выгоды Но… Если устранение на порядки дешевле самой рутины, другие параметры уже не так важны 49/175
ее декомпозиции на ряд внутренне связанных между собой модулей Модульность устройства – способность устройства изменять свои возможности путем использования функциональных блоков, выполняющих различные задачи 54/175
компьютерам, поэтому в IBM PC было использовано много «чужих» компонентов – одним из их ключевых решений было использование разработок сторонних производителей Это одновременно экономило множество средств и времени на собственные научные кадры 55/175
слотами, позволяющая вставлять в компьютер разнообразные платы расширения (видео-, звуковые, сетевые и прочие адаптеры) BIOS – набор системных функций, позволяющий разработчику ПО абстрагироваться от деталей работы аппаратуры и не зависеть от конкретной конфигурации системы (до этого все ПО разрабатывалось только под конкретные машины и поставлялось вместе с ними) Стандартный слот для процессора Стандартный слот для ОЗУ Стандартные интерфейсы подключения FDD и HDD 56/175
компоненты, так как изменения не затронут другие части системы Уменьшить стоимость вывода из эксплуатации Дешевле заменять устаревшие компоненты на более новые 57/175
– риск, что больше не пригодится Делать универсальное – дополнительные затраты на аналитику всех областей применимости В готовом и это тоже проделано за нас 72/175
рутину, которую убираем (область использования будущего инструмента) Собрать список конкурентов Определить важные критерии Проверить, возможно ли сделать тестовые приложения (сценарии) Отсеять тех, кто не прошел Среди тех, кто остался, произвести экспертный выбор 80/175
проектов в Visual Studio ServiceReference в Visual Studio Визуальный редактор форм в Visual Studio Создание таблиц через мастер в SQL Server Management Studio 97/175
Это инструмент генерации кода на основе шаблонов Позволяет писать логику шаблона на C# или VB.NET Позволяет генерировать все виды текстовой информации (артефакты) Шаблоны могут быть переиспользуемыми (наследование, включение) 102/175
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
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
клавиатуры и (реже) нажатий мыши Автоматизация простых действий Расширения (= плагины, подключаемые модули) Компилируются Можно скачать из «Галереи расширений» Внешние процессы AutoIt 143/175
среды разработки IntelliJ IDEA Да Да Да NetBeans IDE Да Да Да Eclipse Да (как расширение) Да Да Visual Studio Да (как расширение) Да Да Продвинутые блокноты Notepad++ Да Да Wiki-статья VIM Да Да Wiki-статья 144/175
редакторе текст с информацией о его местоположении 149/175 CTRL + SHIFT + C ExtendedCopier.CopySelectionWithLocation:14: var activeDocument = dte.ActiveDocument;
Visual Studio Откуда можно взаимодействовать Из расширения Из внешнего процесса Модель может быть расширена за счет пользовательского расширения самой Visual Studio 156/175
информация копируется в буфер обмена 160/175 ExtendedCopier.CopySelectionWithLocation:24: var fileName = activeDocument.Name ExtendedCopier.CopySelectionWithLocation, 24 var fileName = activeDocument.Name
информация копируется в буфер обмена 160/175 ExtendedCopier.CopySelectionWithLocation:24: var fileName = activeDocument.Name ExtendedCopier.CopySelectionWithLocation, 24 var fileName = activeDocument.Name ExtendedCopier, 24: var fileName = activeDocument.Name
Настройки задаются через свойства [DisplayName] – название настройки [Description] – описание настройки [ProvideOptionPage] Указывает тип класса, через который задаются настройки Дополнительная информация 161/175
Расширения для Visual Studio, отличные от VSPackage Доступность и видимость команд Поддержка новых языков программирования, новых типов проектов и пр. Публикация расширений в галерее 171/175
расширений на C# Extending Visual Studio 2013 Visual Studio 2010 Package Development Fundamentals Расширения с семинара Исходный код Copy with Location Batch Replace 172/175
Автоматизируйте работу с умом Ресурсы на автоматизацию и поддержку Готовые решения Модульность Широта охвата и эффективность Примеры Трансформация Метаданные Шаблоны кода Свои расширения 174/175