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

Post on 17-Jul-2015

89 views 1 download

Tags:

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

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

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

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

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

Павел Музыка pmuzyka@custis.ru

30/30