SlideShare a Scribd company logo
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

More Related Content

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

Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
CUSTIS
 
Разработка автоматизированной системы компоновки проектной документации и обу...
Разработка автоматизированной системы компоновки проектной документации и обу...Разработка автоматизированной системы компоновки проектной документации и обу...
Разработка автоматизированной системы компоновки проектной документации и обу...
Andrew Chuprina
 
Software People 2010
Software People 2010Software People 2010
Software People 2010
Sergey Orlik
 
ПО Vertex для всего цикла ЛСТК бизнеса
ПО Vertex для всего цикла ЛСТК бизнесаПО Vertex для всего цикла ЛСТК бизнеса
ПО Vertex для всего цикла ЛСТК бизнеса
Vertex Systems Россия
 
Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Sergey Orlik
 
NEX Integrator - разработка качественного программного обеспечения
NEX Integrator - разработка качественного программного обеспеченияNEX Integrator - разработка качественного программного обеспечения
NEX Integrator - разработка качественного программного обеспечения
Kateryna Odarchenko
 
Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0
КРОК
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU
 
петров антон Short cv2
петров антон Short  cv2петров антон Short  cv2
петров антон Short cv2
Anton Petrov
 
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
SQALab
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
KewpaN
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Ontico
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
Alexander Babich
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
Artsofte IT company
 
О.Савин -- Modelica в архитектурном моделировании
О.Савин -- Modelica в архитектурном моделированииО.Савин -- Modelica в архитектурном моделировании
О.Савин -- Modelica в архитектурном моделировании
Anatoly Levenchuk
 
DocTrix Platform 2010/2013
DocTrix Platform 2010/2013DocTrix Platform 2010/2013
DocTrix Platform 2010/2013
DocTrix Product Line
 
Учебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектамиУчебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектами
Technomatix
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиковMedia Gorod
 
Технологии Microsoft для "Интернета Вещей"
Технологии Microsoft для "Интернета Вещей"Технологии Microsoft для "Интернета Вещей"
Технологии Microsoft для "Интернета Вещей"
Quarta-Embedded
 
Решения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТ
Решения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТРешения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТ
Решения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТ
Yuri Yashkin
 

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

Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
Практика применения Enterprise Architect и T4-шаблонов для разработки систем...
 
Разработка автоматизированной системы компоновки проектной документации и обу...
Разработка автоматизированной системы компоновки проектной документации и обу...Разработка автоматизированной системы компоновки проектной документации и обу...
Разработка автоматизированной системы компоновки проектной документации и обу...
 
Software People 2010
Software People 2010Software People 2010
Software People 2010
 
ПО Vertex для всего цикла ЛСТК бизнеса
ПО Vertex для всего цикла ЛСТК бизнесаПО Vertex для всего цикла ЛСТК бизнеса
ПО Vertex для всего цикла ЛСТК бизнеса
 
Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010Клуб Архитекторов 22.04.2010
Клуб Архитекторов 22.04.2010
 
NEX Integrator - разработка качественного программного обеспечения
NEX Integrator - разработка качественного программного обеспеченияNEX Integrator - разработка качественного программного обеспечения
NEX Integrator - разработка качественного программного обеспечения
 
Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0Intalio+Alfresco=Офис 2.0
Intalio+Alfresco=Офис 2.0
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
петров антон Short cv2
петров антон Short  cv2петров антон Short  cv2
петров антон Short cv2
 
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
 
О.Савин -- Modelica в архитектурном моделировании
О.Савин -- Modelica в архитектурном моделированииО.Савин -- Modelica в архитектурном моделировании
О.Савин -- Modelica в архитектурном моделировании
 
DocTrix Platform 2010/2013
DocTrix Platform 2010/2013DocTrix Platform 2010/2013
DocTrix Platform 2010/2013
 
Учебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектамиУчебные программы SkillSoft по управлению проектами
Учебные программы SkillSoft по управлению проектами
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Технологии Microsoft для "Интернета Вещей"
Технологии Microsoft для "Интернета Вещей"Технологии Microsoft для "Интернета Вещей"
Технологии Microsoft для "Интернета Вещей"
 
Решения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТ
Решения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТРешения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТ
Решения HPE для Автоматизации каталога услуг и процессов эксплуатации ИТ
 

More from GoSharp

TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?
GoSharp
 
Живые приложения с Rx
Живые приложения с RxЖивые приложения с Rx
Живые приложения с Rx
GoSharp
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?
GoSharp
 
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
GoSharp
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?
GoSharp
 
UI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче БанкеUI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче Банке
GoSharp
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменить
GoSharp
 
MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)
GoSharp
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийGoSharp
 
Gosharp Intro
Gosharp IntroGosharp Intro
Gosharp Intro
GoSharp
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
GoSharp
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application Insights
GoSharp
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET Internals
GoSharp
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNext
GoSharp
 
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextВнедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
GoSharp
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NET
GoSharp
 
Коучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаКоучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлида
GoSharp
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработки
GoSharp
 
DevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовDevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектов
GoSharp
 

More from GoSharp (20)

TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?
 
Живые приложения с Rx
Живые приложения с RxЖивые приложения с Rx
Живые приложения с Rx
 
Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?Anemic Domain Model - антипаттерн или SOLID?
Anemic Domain Model - антипаттерн или SOLID?
 
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?
 
UI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче БанкеUI тестирование WPF приложений в Дойче Банке
UI тестирование WPF приложений в Дойче Банке
 
За что не любить EF и чем его заменить
За что не любить EF и чем его заменитьЗа что не любить EF и чем его заменить
За что не любить EF и чем его заменить
 
MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)MVVM в WinForms – DevExpress Way (теория и практика)
MVVM в WinForms – DevExpress Way (теория и практика)
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложений
 
Gosharp Intro
Gosharp IntroGosharp Intro
Gosharp Intro
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application Insights
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET Internals
 
Кросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNextКросплатформенная разработка на ASP.NET vNext
Кросплатформенная разработка на ASP.NET vNext
 
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextВнедрение зависимостей в ASP.NET MVС и ASP.NET vNext
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNext
 
Будущее ASP.NET
Будущее ASP.NETБудущее ASP.NET
Будущее ASP.NET
 
Коучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлидаКоучинг команд разработки и коучинговые инструменты в работе тимлида
Коучинг команд разработки и коучинговые инструменты в работе тимлида
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработки
 
DevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектовDevOPS инструменты для .NET проектов
DevOPS инструменты для .NET проектов
 

Практика применения 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
  • 12. §  Enterprise Architect как инструмент моделирования §  Множество нотаций и представлений §  Трансформация представлений §  Генерация DDL-скриптов §  Хранение моделей в системе контроля версий или в базе данных §  Возможность писать плагины 12/30
  • 13. Тюнинг Enterprise Architect Трансформация Физическая модель Magic Логическая модель 13/30
  • 14. Доработка трансформации §  Создание колонок для первичного и внешнего ключей, констрейнтов §  Создание фискальных и служебных колонок для всех таблиц §  Трансформация перечислений как особый вид трансформации 14/30
  • 15. Magic Magic Тюнинг Enterprise Architect – 2 Физическая модель 15/30
  • 16. Плагин для Enterprise Architect §  Генерация вспомогательных классов для поддержки IntelliSense в T4-шаблонах §  Генерация перечислений для перечислений 16/30
  • 17. Где я? §  Контекст реальной задачи §  Слагаемые успеха §  Enterprise Architect §  Шаблоны T4 §  Автотесты §  Continuous Integration + Delivery 17/30
  • 18. Шаблоны T4 §  T4 = Text Template Transformation Toolkit §  Файл с расширением *.tt или *.ttinclude §  Встроенный в Visual Studio (начиная с 2008) движок кодогенерации §  Позволяет писать логику шаблона на C# или VB.NET §  Позволяет генерировать любой код §  Шаблоны могут быть переиспользуемыми (наследование, включение) 18/30
  • 20. Пример с бизнес-правилами §  Выглядит как C#... §  …это и есть C# §  Отсутствуют инфраструктурные подробности §  Результат – сгенерированный фрагмент хранимой процедуры 20/30
  • 21. 21/30
  • 22. Перекладывание данных §  Полуавтоматический маппинг колонок §  Опять нет инфраструктурного кода §  Фокусировка только на бизнес-логике §  Результат – опять простыня SQL-кода 22/30
  • 23. 23/30
  • 25. Где я? §  Контекст реальной задачи §  Слагаемые успеха §  Enterprise Architect §  Шаблоны T4 §  Автотесты §  Continuous Integration + Delivery 25/30
  • 26. Автотесты §  Автотесты на C# §  Excel как источник эталонных данных §  Данные готовит аналитик §  Выполняются на сервере CI на каждый коммит §  Smoke-тесты для публичного интерфейса 26/30
  • 27. Где я? §  Контекст реальной задачи §  Слагаемые успеха §  Enterprise Architect §  Шаблоны T4 §  Автотесты §  Continuous Integration + Delivery 27/30
  • 28. Continuous Integration + Delivery §  TeamCity – сервер для процессов CI и CD §  Крупные коммиты (законченные блоки функционала) §  На каждый коммит прогоняется пакет автотестов §  После каждого удачного коммита система готова к выпуску очередной версии §  PowerShell-скрипты для развертывания версии 28/30
  • 29. Основные ресурсы §  Enterprise Architect: §  Описание на официальном сайте §  Шаблоны T4: §  Architecture of Text Templates §  Oleg Sych Blog §  Q&A at stackoverflow.com §  Google Search §  Семинар про T4 (Реальная кодогенерация): §  Видео на vimeo §  Исходники на github 29/30
  • 30. Спасибо за внимание! Павел Музыка pmuzyka@custis.ru 30/30