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
Трансформация
Физическая модельЛогическая модель
11/30
Model First
Трансформация
Физическая модель
Magic
Логическая модель
11/30
 Enterprise Architect как инструмент
моделирования
 Множество нотаций и представлений
 Трансформация представлений
 Генерация DDL-скриптов
 Хранение моделей в Subversion
или в базе данных + версионирование
 Возможность писать плагины
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
21/30
21/30
Перекладывание данных
 Полуавтоматический маппинг колонок
 Опять нет инфраструктурного кода
 Фокусировка только на бизнес-логике
 Результат – опять простыня SQL-кода
22/30
23/30
23/30
Использование констант
24/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
Спасибо за внимание!
Павел Музыка
pmuzyka@custis.ru
30/30

Практика применения Enterprise Architect и T4-шаблонов для разработки системы на Microsoft SQL Server

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