Практика применения Enterprise Architect и T4-шаблонов для...

35
11 апреля 2015 года Практика применения Enterprise Architect и T4-шаблонов для разработки системы на Microsoft SQL Server Павел Музыка Технический лидер, группа компаний CUSTIS

Transcript of Практика применения Enterprise Architect и T4-шаблонов для...

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

11 апреля 2015 года

Практика применения

Enterprise Architect и T4-шаблонов

для разработки системы

на Microsoft SQL Server

Павел Музыка

Технический лидер, группа компаний CUSTIS

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

О себе

В промышленной разработке

с 2005 года

В CUSTIS c февраля 2012 года

Специализируюсь на создании

Desktop-приложений

Сертифицированный разработчик

.NET, MS SQL, WinForms и WPF

2/30

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

О компании

Проектирование

и заказная разработка

систем Enterprise-

масштаба

Для крупных банков,

торговых сетей,

предприятий госсектора

Oracle + Java

Oracle + C#,

Desktop-приложения

на WinForms и WPF

3/30

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

План

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

4/30

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

Где я?

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

5/30

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

Реальная задача

Система в Microsoft SQL Server 2008 R2

…полностью

Три внешних источника данных

…после полугода разработки появился

четвертый

Математически сложные алгоритмы

обработки данных внутри системы

Ежедневное формирование отчетов

Адаптация к существующей системе

автоформ

6/30

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

Где я?

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

7/30

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

Слагаемые успеха. Процессы

Model First + кодогенерация

Автотесты для базы данных

Доработки и исправления

в стиле TDD

Continuous Integration +

Delivery = выпуск версии

занимает 10 минут

8/30

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

Слагаемые успеха. Инструменты

Enterprise Architect для Model First

Шаблоны T4:

Отделение инфраструктуры от логики

Дешевое внесение изменений

в инфраструктуру

Удобная навигация по исходному коду

Excel для подготовки тестовых данных

аналитиком

+ =

9/30

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

Где я?

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

10/30

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

Model First

Трансформация

Физическая модельЛогическая модель

11/30

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

Model First

Трансформация

Физическая модель

Magic

Логическая модель

11/30

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

Enterprise Architect как инструмент

моделирования

Множество нотаций и представлений

Трансформация представлений

Генерация DDL-скриптов

Хранение моделей в Subversion

или в базе данных + версионирование

Возможность писать плагины

12/30

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

Тюнинг Enterprise Architect

Трансформация

Физическая модель

Magic

Логическая модель

13/30

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

Доработка трансформации

Создание колонок для первичного

и внешнего ключей, констрейнтов

Создание фискальных и служебных

колонок для всех таблиц

Трансформация перечислений

как особый вид трансформации

14/30

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

Magic

Magic

Тюнинг Enterprise Architect – 2

Физическая модель

15/30

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

Плагин для Enterprise Architect

Генерация вспомогательных классов

для поддержки IntelliSense в T4-шаблонах

Генерация перечислений

для перечислений

16/30

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

Где я?

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

17/30

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

Шаблоны T4

T4 = Text Template Transformation Toolkit

Файл с расширением *.tt или *.ttinclude

Встроенный в Visual Studio

(начиная с 2008) движок кодогенерации

Позволяет писать логику шаблона на C#

или VB.NET

Позволяет генерировать любой код

Шаблоны могут быть переиспользуемыми

(наследование, включение)

18/30

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

Простейший шаблон T4

Шаблон T4

Результат

19/30

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

Пример с бизнес-правилами

Выглядит как C#...

…это и есть C#

Отсутствуют инфраструктурные подробности

Результат – сгенерированный фрагмент

хранимой процедуры

20/30

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

21/30

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

21/30

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

21/30

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

Перекладывание данных

Полуавтоматический маппинг колонок

Опять нет инфраструктурного кода

Фокусировка только на бизнес-логике

Результат – опять простыня SQL-кода

22/30

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

23/30

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

23/30

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

Использование констант

24/30

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

Использование констант

24/30

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

Где я?

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

25/30

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

Автотесты

Автотесты на C#

Excel как источник эталонных данных

Данные готовит аналитик

Выполняются на сервере CI на каждый

коммит

Smoke-тесты для публичного интерфейса

26/30

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

Где я?

Контекст реальной задачи

Слагаемые успеха

Enterprise Architect

Шаблоны T4

Автотесты

Continuous Integration + Delivery

27/30

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

Continuous Integration + Delivery

Крупные коммиты (законченные блоки

функционала)

TeamCity – сервер для процессов CI и CD

На каждый коммит прогоняется пакет

автотестов

После каждого удачного коммита система

готова к выпуску очередной версии

PowerShell-скрипты для развертывания

версии

28/30

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

Основные ресурсы

Enterprise Architect:

Описание на официальном сайте

Шаблоны T4:

Architecture of Text Templates

Oleg Sych Blog

Q&A at stackoverflow.com

Google Search

Семинар про T4 (Реальная кодогенерация):

Видео на vimeo

Исходники на github29/30

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

Спасибо за внимание!

Павел Музыка

[email protected]

30/30