SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Статический ааннааллиизз 
ууппррааввллеенниияя ттррааннззааккцциияяммии 
вв ппррииллоожжеенниияяхх ддлляя 
ппллааттффооррммыы JJaavvaa EEEE 
ИИ..ВВ.. ГГррааччеевв,, АА..АА.. ССооллооввььеевв 
ВВллааддииммииррссккиийй ггооссууддааррссттввеенннныыйй ууннииввееррссииттеетт 
ииммееннии ААллееккссааннддрраа ГГррииггооррььееввииччаа ии 
ННииккооллааяя ГГррииггооррььееввииччаа ССттооллееттооввыыхх,, ккааффееддрраа ИИССППИИ
2 
Управление транзакциями на 
платформе Java EE (EJB-компоненты) 
• Декларативное 
> Транзакционный атрибут 
> Запрещено программное 
управление, в т.ч. на 
уровне менеджера 
ресурсов 
• Программное 
> javax.transaction. 
UserTransaction 
> Запрещено управление на 
уровне менеджера 
ресурсов 
Значение транзакционного 
атрибута 
Клиентская транзакция Транзакция, связанная с 
методом компонента 
NOT_SUPPORTED Нет нет 
Т1 нет 
REQUIRED Нет Т1 
Т1 Т1 
SUPPORTS Нет нет 
Т1 Т1 
REQUIRES_NEW Нет Т1 
Т1 Т2 
MANDATORY Нет ошибка 
Т1 Т1 
NEVER Нет нет 
Т1 ошибка 
№ 
п/п 
Транзакция клиента Транзакции, связанная с 
экземпляром компонента 
Транзакция, связанная с 
вызванным методом 
1 Нет Нет Нет 
2 Т1 Нет Нет 
3 Нет Т2 Т2 
4 Т1 Т2 Т2
3 
Сложности в понимании управления 
транзакциями → потенциальные ошибки в коде 
• Дисциплина «Распределенные программные системы» 
• Задание на анализ декларативного управления транзакциями 
> 1) В рамках каких транзакций 
будут выполняться 
бизнес-методы компонентов? 
> 2) Как и почему завершатся 
транзакции? 
• Распределенная транзакция в курсовом проекте
4 
Накладные расходы на 
управление транзакциями 
• Результаты бенчмарка: 
Сценарий Ø → Ø Ø → T1 T1 → T1 T1 → T2 T1 → Ø 
Среднее время 
прогона, с. 0,339 0,787 0,441 0,793 0,350 
Доверительный 
интервал, с. ±0,035 ±0,057 ±0,035 ±0,054 ±0,031 
> Ø → T1 медленнее Ø → Ø на 132% 
> T1 → T1 медленнее Ø → Ø на 23%
5 
Цель 
• Улучшение качества программных систем (ПС) на базе 
платформы Java EE путем выявления ошибочного и 
неэффективного управления транзакциями 
• Динамический анализ 
> Сбор данных с работающей системы 
> Инструментация, JMX, JVMPI/JVMTI, готовые решения 
> Сложно обнаружить все возможные варианты поведения 
• Статический анализ 
> Изучение исходного и байт-кода 
> Можно применять на ранних этапах разработки 
> Не требуется развертывание ПС
6 
Существующие исследования и 
решения 
• Статический анализ 
> Trofin 2007 
> Исключение избыточных обращений из EJB View к контейнеру 
> «Открытый мир» → вероятностные решения 
> Krebs 2012 
> Плагин VERA для Eclipse, выполняющий анализ Java Enterprise App 
• Динамический анализ 
> HP OpenView Transaction Analyzer, dynaTrace, … 
• Комбинированный подход 
> eoSense основан на методике Derived Model Analysis 
> Статический анализ формирует абстрактную модель компонентов ПС 
> В runtime в модель добавляются службы платформы J2EE и ресурсы 
> Триггеры на последовательности событий в модели
7 
Результаты анализа управления 
транзакциями 
• Решения по методам компонентов: 
Decisions = {ERROR, WARNING, REDUNDANCY}, 
– ERROR – фрагмент ведет к аварийному завершению 
– WARNING – требуется внимание разработчика 
– REDUNDANCY – избыточное управление транзакциями 
• Модель транзакционных контекстов 
– И ее визуализация
Анализ управления транзакциями (1) 
• Этап 1 - построение графа вызовов Java-кода 
> Ребра, исходящие из одной вершины-метода, упорядочены 
> Условные и циклические операторы не учитываются 
• Этап 2 - модификация графа вызовов 
8 
> Полиморфные вызовы 
→ конкретные 
реализации 
> Вершины без 
входящих дуг 
являются 
точками входа
Анализ управления транзакциями (2) 
• Этап 3 - построение модели транзакционных 
9 
контекстов 
> Развернутый граф вызовов 
> Множество обнаруженных в нем транзакционных контекстов 
> Порядковый номер, тип управления (программное либо декларативное), 
флаги завершенности и неопределенного поведения, множество вершин- 
методов, множество решений по контексту 
> Множество решений по методам ПС 
> Рекурсивный обход вершин-методов графа вызовов, 
начиная с точек входа в ПС 
> Обработка исходящих дуг: симуляция действий сервера 
приложений Java EE по управлению транзакциями 
> Рекурсивные вызовы метода обрабатываются, пока не 
повторяется поведение по переключению транзакционного 
контекста → алгоритм является конечным
10 
Прототип анализатора
11 
Визуализация модели 
транзакционных контекстов
12 
Направления развития 
• Расширение поддерживаемых возможностей 
платформы Java EE 7 
• MDB как точки входа, обработка сообщений в JMS, 
@Transactional для CDI-компонентов 
• Верификация свойств атомарности и 
согласованности транзакций ПС 
– Вывод утверждений о совместной либо раздельной 
обработке сущностей в транзакциях ПС 
– Сопоставление с заданными инвариантами 
• Например, запись в журнал — всегда в отдельной 
транзакции 
• Гарантия распределенной транзакции
13 
Спасибо! 
ivgratchev@rambler.ru
Анализ управления транзакциями (1) 
• Этап 1 - построение графа вызовов 
14 
– Исходные данные: 
• Абстрактное синтаксическое дерево Java-кода (формируется 
MoDisco) 
• Установочные XML-дескрипторы 
– С вершиной графа вызовов связаны: 
• сигнатура метода 
• тип данных, для которого определен данный метод 
• набор метаданных, связанных с методом (аннотации и 
настройки из XML-дескрипторов) 
– Ребра, исходящие из одной вершины-метода, 
упорядочены 
– Условные и циклические операторы не учитываются
Анализ управления транзакциями (2) 
• Этап 2 - модификация графа вызовов 
15 
– В результирующем графе вызовов 
• Вызовы методов, полиморфные в рамках анализируемой 
ПС, заменены на конкретные реализации 
– Определяются в результате анализа 
метаданных и исходного кода 
• Все вершины-методы без входящих дуг являются 
точками входа 
– Точка входа — метод, с которого Java EE- 
приложение по запросу клиента начинает 
выполняться в управляемом контейнером 
режиме
16 
Анализ управления транзакциями 
(3)
17 
Анализ управления транзакциями 
(4) 
• Этап 3 - построение модели транзакционных 
контекстов 
> Развернутый граф вызовов 
G 
G’ 
> Множество обнаруженных в нем транзакционных контекстов 
> Порядковый номер, тип управления (программное либо 
декларативное), флаги завершенности и неопределенного 
поведения, множество вершин-методов, множество решений по 
контексту 
> Множество решений по методам ПС
18 
Анализ управления транзакциями 
(5) 
• Этап 3 — построение модели транзакционных 
контекстов 
> Рекурсивный обход вершин-методов графа вызовов, 
начиная с точек входа в ПС 
> Обработка исходящих дуг (симуляция действий сервера 
приложений Java EE по управлению транзакциями): 
> Проверка запрета вызываемого метода; 
> Определение поведения по переключению транзакционного 
контекста 
– Распространение текущего контекста, создание 
нового контекста, приостановка текущего контекста, 
приостановка текущего контекста и создание 
нового, отсутствие каких-либо действий 
> Определение транзакционного контекста для вызываемого 
метода
19 
Анализ управления транзакциями 
(6) 
• Этап 3 — обработка циклов в графе вызовов при 
построении модели транзакционных контекстов 
> Рекурсивные вызовы метода обрабатываются до тех 
пор, пока не повторяется поведение по переключению 
транзакционного контекста 
> Ведется история вызовов 
> Количество анализируемых уровней рекурсии 
ограничено сверху количеством типов поведения по 
переключению транзакционного контекста (5) 
> Алгоритм является конечным 
> Для найденного цикла в развернутый граф вызовов 
добавляется фиктивная дуга
20 
Прототип анализатора 
• Область применения – Java EE 6, сессионные 
компоненты EJB 3.1 
• Подключаемый модуль для IDE Eclipse 
• Описание графа модели транзакционных 
контекстов на языке Dot, визуализация с 
помощью GEF4 DOT
21 
Выбор средства статического 
анализа 
Средство анализа 
кода 
Байт-код Исходный код Аннотации 
Soot + + +/– 
(неполная 
поддержка) 
MoDisco + + + 
Java APIs − + + 
Apache BCEL + − −
22 
Результаты анализа 
(WARNING+REDUNDANCY)
23 
Результаты анализа (ERROR)
24 
Недостатки 
• Большой объем модели MoDisco 
• Неудобная визуализация полного исходного 
кода ПС 
> Решение: Вывод транзакционных контекстов для 
выбранного метода 
• Нет поддержки инкрементальных изменений 
• Отсутствие результатов по реальным 
приложениям

Más contenido relacionado

La actualidad más candente

TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...Iosif Itkin
 
TMPA-2013 Buyanova Bulda: Ticker Plant Testing
TMPA-2013 Buyanova Bulda: Ticker Plant TestingTMPA-2013 Buyanova Bulda: Ticker Plant Testing
TMPA-2013 Buyanova Bulda: Ticker Plant TestingIosif Itkin
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 SmirnovIosif Itkin
 
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...Iosif Itkin
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...Iosif Itkin
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisIosif Itkin
 
TMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid SystemsTMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid SystemsIosif Itkin
 
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияIosif Itkin
 
The Analysis of Test Scenario Coverage for a UCM-Model
The Analysis of Test Scenario Coverage for a UCM-ModelThe Analysis of Test Scenario Coverage for a UCM-Model
The Analysis of Test Scenario Coverage for a UCM-ModelIosif Itkin
 
TMPA-2013 Sharov: Client Certification
TMPA-2013 Sharov: Client CertificationTMPA-2013 Sharov: Client Certification
TMPA-2013 Sharov: Client CertificationIosif Itkin
 
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...Iosif Itkin
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Iosif Itkin
 
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressionsTMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressionsIosif Itkin
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06Computer Science Club
 
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsTMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsIosif Itkin
 
Тест-дизайн в тестировании ПО. Задача "Треугольник"
Тест-дизайн в тестировании ПО. Задача "Треугольник"Тест-дизайн в тестировании ПО. Задача "Треугольник"
Тест-дизайн в тестировании ПО. Задача "Треугольник"OdessaQA
 
Detecting logged in user's abnormal activity
Detecting logged in user's abnormal activityDetecting logged in user's abnormal activity
Detecting logged in user's abnormal activityArvids Godjuks
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...Iosif Itkin
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Yauheni Akhotnikau
 

La actualidad más candente (20)

TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
 
TMPA-2013 Buyanova Bulda: Ticker Plant Testing
TMPA-2013 Buyanova Bulda: Ticker Plant TestingTMPA-2013 Buyanova Bulda: Ticker Plant Testing
TMPA-2013 Buyanova Bulda: Ticker Plant Testing
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 Smirnov
 
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program Analysis
 
TMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid SystemsTMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid Systems
 
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
 
The Analysis of Test Scenario Coverage for a UCM-Model
The Analysis of Test Scenario Coverage for a UCM-ModelThe Analysis of Test Scenario Coverage for a UCM-Model
The Analysis of Test Scenario Coverage for a UCM-Model
 
TMPA-2013 Sharov: Client Certification
TMPA-2013 Sharov: Client CertificationTMPA-2013 Sharov: Client Certification
TMPA-2013 Sharov: Client Certification
 
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
TMPA-2013 Senov: Applying OLAP and MapReduce Technologies for Performance Tes...
 
Lab5
Lab5Lab5
Lab5
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
 
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressionsTMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressions
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
 
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsTMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in Robotics
 
Тест-дизайн в тестировании ПО. Задача "Треугольник"
Тест-дизайн в тестировании ПО. Задача "Треугольник"Тест-дизайн в тестировании ПО. Задача "Треугольник"
Тест-дизайн в тестировании ПО. Задача "Треугольник"
 
Detecting logged in user's abnormal activity
Detecting logged in user's abnormal activityDetecting logged in user's abnormal activity
Detecting logged in user's abnormal activity
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++
 

Similar a Static Analysis of Transactions Management in Applications for Java EE Platform

Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Александр Александров, Количественное управление процессом тестирования
Александр Александров, Количественное управление процессом тестированияАлександр Александров, Количественное управление процессом тестирования
Александр Александров, Количественное управление процессом тестированияSQADays_2009_Piter
 
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Ontico
 
Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Grigoriy Orlov
 
Денис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требованийДенис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требованийDenis Beskov
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive ExtensionsGetDev.NET
 
Александр Александров
Александр АлександровАлександр Александров
Александр АлександровSQALab
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыd_olex
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARESQALab
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения Iosif Itkin
 
Количественное управление процессом тестирования
Количественное управление процессом тестированияКоличественное управление процессом тестирования
Количественное управление процессом тестированияSQALab
 
Техники пентеста для активной защиты - Николай Овчарук
Техники пентеста для активной защиты - Николай ОвчарукТехники пентеста для активной защиты - Николай Овчарук
Техники пентеста для активной защиты - Николай ОвчарукHackIT Ukraine
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User Group
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
Gnevshev мониторинг
Gnevshev   мониторингGnevshev   мониторинг
Gnevshev мониторингkuchinskaya
 

Similar a Static Analysis of Transactions Management in Applications for Java EE Platform (20)

Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Александр Александров, Количественное управление процессом тестирования
Александр Александров, Количественное управление процессом тестированияАлександр Александров, Количественное управление процессом тестирования
Александр Александров, Количественное управление процессом тестирования
 
Async
AsyncAsync
Async
 
Luxoft async.net
Luxoft async.netLuxoft async.net
Luxoft async.net
 
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
 
Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"
 
Денис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требованийДенис Бесков. Как обеспечивать полноту требований
Денис Бесков. Как обеспечивать полноту требований
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive Extensions
 
Александр Александров
Александр АлександровАлександр Александров
Александр Александров
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
 
Количественное управление процессом тестирования
Количественное управление процессом тестированияКоличественное управление процессом тестирования
Количественное управление процессом тестирования
 
лекция 10
лекция 10лекция 10
лекция 10
 
Техники пентеста для активной защиты - Николай Овчарук
Техники пентеста для активной защиты - Николай ОвчарукТехники пентеста для активной защиты - Николай Овчарук
Техники пентеста для активной защиты - Николай Овчарук
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
Gnevshev мониторинг
Gnevshev   мониторингGnevshev   мониторинг
Gnevshev мониторинг
 

Más de Iosif Itkin

Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Iosif Itkin
 
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...Iosif Itkin
 
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test OraclesExactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test OraclesIosif Itkin
 
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX ProtocolExactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX ProtocolIosif Itkin
 
Operational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market InfrastructuresOperational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market InfrastructuresIosif Itkin
 
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday SeasonIosif Itkin
 
Testing the Intelligence of your AI
Testing the Intelligence of your AITesting the Intelligence of your AI
Testing the Intelligence of your AIIosif Itkin
 
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresEXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresIosif Itkin
 
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...Iosif Itkin
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiIosif Itkin
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenIosif Itkin
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...Iosif Itkin
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...Iosif Itkin
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)Iosif Itkin
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop TestingIosif Itkin
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileIosif Itkin
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in ReviewIosif Itkin
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyIosif Itkin
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesIosif Itkin
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)Iosif Itkin
 

Más de Iosif Itkin (20)

Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4
 
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
 
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test OraclesExactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test Oracles
 
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX ProtocolExactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
 
Operational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market InfrastructuresOperational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market Infrastructures
 
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
 
Testing the Intelligence of your AI
Testing the Intelligence of your AITesting the Intelligence of your AI
Testing the Intelligence of your AI
 
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresEXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
 
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop Testing
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in Review
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and Strategy
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
 

Static Analysis of Transactions Management in Applications for Java EE Platform

  • 1. Статический ааннааллиизз ууппррааввллеенниияя ттррааннззааккцциияяммии вв ппррииллоожжеенниияяхх ддлляя ппллааттффооррммыы JJaavvaa EEEE ИИ..ВВ.. ГГррааччеевв,, АА..АА.. ССооллооввььеевв ВВллааддииммииррссккиийй ггооссууддааррссттввеенннныыйй ууннииввееррссииттеетт ииммееннии ААллееккссааннддрраа ГГррииггооррььееввииччаа ии ННииккооллааяя ГГррииггооррььееввииччаа ССттооллееттооввыыхх,, ккааффееддрраа ИИССППИИ
  • 2. 2 Управление транзакциями на платформе Java EE (EJB-компоненты) • Декларативное > Транзакционный атрибут > Запрещено программное управление, в т.ч. на уровне менеджера ресурсов • Программное > javax.transaction. UserTransaction > Запрещено управление на уровне менеджера ресурсов Значение транзакционного атрибута Клиентская транзакция Транзакция, связанная с методом компонента NOT_SUPPORTED Нет нет Т1 нет REQUIRED Нет Т1 Т1 Т1 SUPPORTS Нет нет Т1 Т1 REQUIRES_NEW Нет Т1 Т1 Т2 MANDATORY Нет ошибка Т1 Т1 NEVER Нет нет Т1 ошибка № п/п Транзакция клиента Транзакции, связанная с экземпляром компонента Транзакция, связанная с вызванным методом 1 Нет Нет Нет 2 Т1 Нет Нет 3 Нет Т2 Т2 4 Т1 Т2 Т2
  • 3. 3 Сложности в понимании управления транзакциями → потенциальные ошибки в коде • Дисциплина «Распределенные программные системы» • Задание на анализ декларативного управления транзакциями > 1) В рамках каких транзакций будут выполняться бизнес-методы компонентов? > 2) Как и почему завершатся транзакции? • Распределенная транзакция в курсовом проекте
  • 4. 4 Накладные расходы на управление транзакциями • Результаты бенчмарка: Сценарий Ø → Ø Ø → T1 T1 → T1 T1 → T2 T1 → Ø Среднее время прогона, с. 0,339 0,787 0,441 0,793 0,350 Доверительный интервал, с. ±0,035 ±0,057 ±0,035 ±0,054 ±0,031 > Ø → T1 медленнее Ø → Ø на 132% > T1 → T1 медленнее Ø → Ø на 23%
  • 5. 5 Цель • Улучшение качества программных систем (ПС) на базе платформы Java EE путем выявления ошибочного и неэффективного управления транзакциями • Динамический анализ > Сбор данных с работающей системы > Инструментация, JMX, JVMPI/JVMTI, готовые решения > Сложно обнаружить все возможные варианты поведения • Статический анализ > Изучение исходного и байт-кода > Можно применять на ранних этапах разработки > Не требуется развертывание ПС
  • 6. 6 Существующие исследования и решения • Статический анализ > Trofin 2007 > Исключение избыточных обращений из EJB View к контейнеру > «Открытый мир» → вероятностные решения > Krebs 2012 > Плагин VERA для Eclipse, выполняющий анализ Java Enterprise App • Динамический анализ > HP OpenView Transaction Analyzer, dynaTrace, … • Комбинированный подход > eoSense основан на методике Derived Model Analysis > Статический анализ формирует абстрактную модель компонентов ПС > В runtime в модель добавляются службы платформы J2EE и ресурсы > Триггеры на последовательности событий в модели
  • 7. 7 Результаты анализа управления транзакциями • Решения по методам компонентов: Decisions = {ERROR, WARNING, REDUNDANCY}, – ERROR – фрагмент ведет к аварийному завершению – WARNING – требуется внимание разработчика – REDUNDANCY – избыточное управление транзакциями • Модель транзакционных контекстов – И ее визуализация
  • 8. Анализ управления транзакциями (1) • Этап 1 - построение графа вызовов Java-кода > Ребра, исходящие из одной вершины-метода, упорядочены > Условные и циклические операторы не учитываются • Этап 2 - модификация графа вызовов 8 > Полиморфные вызовы → конкретные реализации > Вершины без входящих дуг являются точками входа
  • 9. Анализ управления транзакциями (2) • Этап 3 - построение модели транзакционных 9 контекстов > Развернутый граф вызовов > Множество обнаруженных в нем транзакционных контекстов > Порядковый номер, тип управления (программное либо декларативное), флаги завершенности и неопределенного поведения, множество вершин- методов, множество решений по контексту > Множество решений по методам ПС > Рекурсивный обход вершин-методов графа вызовов, начиная с точек входа в ПС > Обработка исходящих дуг: симуляция действий сервера приложений Java EE по управлению транзакциями > Рекурсивные вызовы метода обрабатываются, пока не повторяется поведение по переключению транзакционного контекста → алгоритм является конечным
  • 11. 11 Визуализация модели транзакционных контекстов
  • 12. 12 Направления развития • Расширение поддерживаемых возможностей платформы Java EE 7 • MDB как точки входа, обработка сообщений в JMS, @Transactional для CDI-компонентов • Верификация свойств атомарности и согласованности транзакций ПС – Вывод утверждений о совместной либо раздельной обработке сущностей в транзакциях ПС – Сопоставление с заданными инвариантами • Например, запись в журнал — всегда в отдельной транзакции • Гарантия распределенной транзакции
  • 14. Анализ управления транзакциями (1) • Этап 1 - построение графа вызовов 14 – Исходные данные: • Абстрактное синтаксическое дерево Java-кода (формируется MoDisco) • Установочные XML-дескрипторы – С вершиной графа вызовов связаны: • сигнатура метода • тип данных, для которого определен данный метод • набор метаданных, связанных с методом (аннотации и настройки из XML-дескрипторов) – Ребра, исходящие из одной вершины-метода, упорядочены – Условные и циклические операторы не учитываются
  • 15. Анализ управления транзакциями (2) • Этап 2 - модификация графа вызовов 15 – В результирующем графе вызовов • Вызовы методов, полиморфные в рамках анализируемой ПС, заменены на конкретные реализации – Определяются в результате анализа метаданных и исходного кода • Все вершины-методы без входящих дуг являются точками входа – Точка входа — метод, с которого Java EE- приложение по запросу клиента начинает выполняться в управляемом контейнером режиме
  • 16. 16 Анализ управления транзакциями (3)
  • 17. 17 Анализ управления транзакциями (4) • Этап 3 - построение модели транзакционных контекстов > Развернутый граф вызовов G G’ > Множество обнаруженных в нем транзакционных контекстов > Порядковый номер, тип управления (программное либо декларативное), флаги завершенности и неопределенного поведения, множество вершин-методов, множество решений по контексту > Множество решений по методам ПС
  • 18. 18 Анализ управления транзакциями (5) • Этап 3 — построение модели транзакционных контекстов > Рекурсивный обход вершин-методов графа вызовов, начиная с точек входа в ПС > Обработка исходящих дуг (симуляция действий сервера приложений Java EE по управлению транзакциями): > Проверка запрета вызываемого метода; > Определение поведения по переключению транзакционного контекста – Распространение текущего контекста, создание нового контекста, приостановка текущего контекста, приостановка текущего контекста и создание нового, отсутствие каких-либо действий > Определение транзакционного контекста для вызываемого метода
  • 19. 19 Анализ управления транзакциями (6) • Этап 3 — обработка циклов в графе вызовов при построении модели транзакционных контекстов > Рекурсивные вызовы метода обрабатываются до тех пор, пока не повторяется поведение по переключению транзакционного контекста > Ведется история вызовов > Количество анализируемых уровней рекурсии ограничено сверху количеством типов поведения по переключению транзакционного контекста (5) > Алгоритм является конечным > Для найденного цикла в развернутый граф вызовов добавляется фиктивная дуга
  • 20. 20 Прототип анализатора • Область применения – Java EE 6, сессионные компоненты EJB 3.1 • Подключаемый модуль для IDE Eclipse • Описание графа модели транзакционных контекстов на языке Dot, визуализация с помощью GEF4 DOT
  • 21. 21 Выбор средства статического анализа Средство анализа кода Байт-код Исходный код Аннотации Soot + + +/– (неполная поддержка) MoDisco + + + Java APIs − + + Apache BCEL + − −
  • 24. 24 Недостатки • Большой объем модели MoDisco • Неудобная визуализация полного исходного кода ПС > Решение: Вывод транзакционных контекстов для выбранного метода • Нет поддержки инкрементальных изменений • Отсутствие результатов по реальным приложениям