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

Post on 18-Jul-2015

124 views 2 download

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

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

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

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

Павел Музыка

pmuzyka@custis.ru

30/30