Практика применения enterprise architect и t4-шаблонов для...
TRANSCRIPT
11 апреля 2015 года
Практика применения Enterprise Architect и T4-шаблонов для разработки системы на Microsoft SQL Server Павел Музыка Технический лидер, группа компаний CUSTIS
О себе § В промышленной разработке с 2005 года
§ В CUSTIS c февраля 2012 года
§ Специализируюсь на создании Desktop-приложений
§ Сертифицированный разработчик .NET, MS SQL, WinForms и WPF
2/30
О компании
Проектирование и заказная разработка систем Enterprise-
масштаба
Для крупных банков, торговых сетей,
предприятий госсектора
Oracle + Java
Oracle + C#, Desktop-приложения на WinForms и WPF
3/30
План § Контекст реальной задачи
§ Слагаемые успеха
§ Enterprise Architect
§ Шаблоны T4
§ Автотесты
§ Continuous Integration + Delivery
4/30
Где я? § Контекст реальной задачи § Слагаемые успеха
§ Enterprise Architect
§ Шаблоны T4
§ Автотесты
§ Continuous Integration + Delivery
5/30
Реальная задача § Система в Microsoft SQL Server 2008 R2 § …полностью
§ Три внешних источника данных § …после полугода разработки появился четвертый
§ Математически сложные алгоритмы обработки данных внутри системы
§ Ежедневное формирование отчетов
§ Адаптация к существующей системе автоформ
6/30
Где я? § Контекст реальной задачи
§ Слагаемые успеха § Enterprise Architect
§ Шаблоны T4
§ Автотесты
§ Continuous Integration + Delivery
7/30
Слагаемые успеха. Процессы § Model First + кодогенерация
§ Автотесты для базы данных
§ Доработки и исправления в стиле TDD
§ Continuous Integration + Delivery = выпуск версии занимает 10 минут
8/30
Слагаемые успеха. Инструменты § Enterprise Architect для Model First
§ Шаблоны T4: § Отделение инфраструктуры от логики § Дешевое внесение изменений в инфраструктуру
§ Удобная навигация по исходному коду
§ Excel для подготовки тестовых данных аналитиком
§ + =
9/30
Где я? § Контекст реальной задачи
§ Слагаемые успеха
§ Enterprise Architect § Шаблоны T4
§ Автотесты
§ Continuous Integration + Delivery
10/30
Model First
Трансформация
Физическая модель
Magic
Логическая модель
11/30
§ Enterprise Architect как инструмент моделирования
§ Множество нотаций и представлений
§ Трансформация представлений
§ Генерация DDL-скриптов
§ Хранение моделей в системе контроля версий или в базе данных
§ Возможность писать плагины
12/30
Тюнинг Enterprise Architect
Трансформация
Физическая модель
Magic
Логическая модель
13/30
Доработка трансформации § Создание колонок для первичного и внешнего ключей, констрейнтов
§ Создание фискальных и служебных колонок для всех таблиц
§ Трансформация перечислений как особый вид трансформации
14/30
Magic
Magic
Тюнинг Enterprise Architect – 2 Физическая модель
15/30
Плагин для Enterprise Architect § Генерация вспомогательных классов для поддержки IntelliSense в T4-шаблонах
§ Генерация перечислений для перечислений
16/30
Где я? § Контекст реальной задачи
§ Слагаемые успеха
§ Enterprise Architect
§ Шаблоны T4 § Автотесты
§ Continuous Integration + Delivery
17/30
Шаблоны T4 § T4 = Text Template Transformation Toolkit
§ Файл с расширением *.tt или *.ttinclude
§ Встроенный в Visual Studio (начиная с 2008) движок кодогенерации
§ Позволяет писать логику шаблона на C# или VB.NET
§ Позволяет генерировать любой код
§ Шаблоны могут быть переиспользуемыми (наследование, включение)
18/30
Простейший шаблон T4
Шаблон T4
Результат
19/30
Пример с бизнес-правилами
§ Выглядит как C#...
§ …это и есть C#
§ Отсутствуют инфраструктурные подробности
§ Результат – сгенерированный фрагмент хранимой процедуры
20/30
21/30
Перекладывание данных
§ Полуавтоматический маппинг колонок
§ Опять нет инфраструктурного кода
§ Фокусировка только на бизнес-логике
§ Результат – опять простыня SQL-кода
22/30
23/30
Использование констант
24/30
Где я? § Контекст реальной задачи
§ Слагаемые успеха
§ Enterprise Architect
§ Шаблоны T4
§ Автотесты § Continuous Integration + Delivery
25/30
Автотесты § Автотесты на C#
§ Excel как источник эталонных данных
§ Данные готовит аналитик
§ Выполняются на сервере CI на каждый коммит
§ Smoke-тесты для публичного интерфейса
26/30
Где я? § Контекст реальной задачи
§ Слагаемые успеха
§ Enterprise Architect
§ Шаблоны T4
§ Автотесты
§ Continuous Integration + Delivery
27/30
Continuous Integration + Delivery § TeamCity – сервер для процессов CI и CD
§ Крупные коммиты (законченные блоки функционала)
§ На каждый коммит прогоняется пакет автотестов
§ После каждого удачного коммита система готова к выпуску очередной версии
§ PowerShell-скрипты для развертывания версии
28/30
Основные ресурсы § Enterprise Architect: § Описание на официальном сайте
§ Шаблоны T4: § Architecture of Text Templates § Oleg Sych Blog § Q&A at stackoverflow.com § Google Search
§ Семинар про T4 (Реальная кодогенерация): § Видео на vimeo § Исходники на github
29/30