Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Статический ааннааллиизз 
ууппррааввллеенниияя ттррааннззааккцциияяммии 
вв ппррииллоожжеенниияяхх ддлляя 
ппллааттффооррм...
2 
Управление транзакциями на 
платформе Java EE (EJB-компоненты) 
• Декларативное 
> Транзакционный атрибут 
> Запрещено ...
3 
Сложности в понимании управления 
транзакциями → потенциальные ошибки в коде 
• Дисциплина «Распределенные программные ...
4 
Накладные расходы на 
управление транзакциями 
• Результаты бенчмарка: 
Сценарий Ø → Ø Ø → T1 T1 → T1 T1 → T2 T1 → Ø 
С...
5 
Цель 
• Улучшение качества программных систем (ПС) на базе 
платформы Java EE путем выявления ошибочного и 
неэффективн...
6 
Существующие исследования и 
решения 
• Статический анализ 
> Trofin 2007 
> Исключение избыточных обращений из EJB Vie...
7 
Результаты анализа управления 
транзакциями 
• Решения по методам компонентов: 
Decisions = {ERROR, WARNING, REDUNDANCY...
Анализ управления транзакциями (1) 
• Этап 1 - построение графа вызовов Java-кода 
> Ребра, исходящие из одной вершины-мет...
Анализ управления транзакциями (2) 
• Этап 3 - построение модели транзакционных 
9 
контекстов 
> Развернутый граф вызовов...
10 
Прототип анализатора
11 
Визуализация модели 
транзакционных контекстов
12 
Направления развития 
• Расширение поддерживаемых возможностей 
платформы Java EE 7 
• MDB как точки входа, обработка ...
13 
Спасибо! 
ivgratchev@rambler.ru
Анализ управления транзакциями (1) 
• Этап 1 - построение графа вызовов 
14 
– Исходные данные: 
• Абстрактное синтаксичес...
Анализ управления транзакциями (2) 
• Этап 2 - модификация графа вызовов 
15 
– В результирующем графе вызовов 
• Вызовы м...
16 
Анализ управления транзакциями 
(3)
17 
Анализ управления транзакциями 
(4) 
• Этап 3 - построение модели транзакционных 
контекстов 
> Развернутый граф вызов...
18 
Анализ управления транзакциями 
(5) 
• Этап 3 — построение модели транзакционных 
контекстов 
> Рекурсивный обход верш...
19 
Анализ управления транзакциями 
(6) 
• Этап 3 — обработка циклов в графе вызовов при 
построении модели транзакционных...
20 
Прототип анализатора 
• Область применения – Java EE 6, сессионные 
компоненты EJB 3.1 
• Подключаемый модуль для IDE ...
21 
Выбор средства статического 
анализа 
Средство анализа 
кода 
Байт-код Исходный код Аннотации 
Soot + + +/– 
(неполная...
22 
Результаты анализа 
(WARNING+REDUNDANCY)
23 
Результаты анализа (ERROR)
24 
Недостатки 
• Большой объем модели MoDisco 
• Неудобная визуализация полного исходного 
кода ПС 
> Решение: Вывод тран...
Upcoming SlideShare
Loading in …5
×

Static Analysis of Transactions Management in Applications for Java EE Platform

2,257 views

Published on

Ivan Grachev, Andrey Solovev, Vladimir State University, Vladimir

Published in: Science
  • Be the first to comment

  • Be the first to like this

Static Analysis of Transactions Management in Applications for Java EE Platform

  1. 1. Статический ааннааллиизз ууппррааввллеенниияя ттррааннззааккцциияяммии вв ппррииллоожжеенниияяхх ддлляя ппллааттффооррммыы JJaavvaa EEEE ИИ..ВВ.. ГГррааччеевв,, АА..АА.. ССооллооввььеевв ВВллааддииммииррссккиийй ггооссууддааррссттввеенннныыйй ууннииввееррссииттеетт ииммееннии ААллееккссааннддрраа ГГррииггооррььееввииччаа ии ННииккооллааяя ГГррииггооррььееввииччаа ССттооллееттооввыыхх,, ккааффееддрраа ИИССППИИ
  2. 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. 3 Сложности в понимании управления транзакциями → потенциальные ошибки в коде • Дисциплина «Распределенные программные системы» • Задание на анализ декларативного управления транзакциями > 1) В рамках каких транзакций будут выполняться бизнес-методы компонентов? > 2) Как и почему завершатся транзакции? • Распределенная транзакция в курсовом проекте
  4. 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. 5 Цель • Улучшение качества программных систем (ПС) на базе платформы Java EE путем выявления ошибочного и неэффективного управления транзакциями • Динамический анализ > Сбор данных с работающей системы > Инструментация, JMX, JVMPI/JVMTI, готовые решения > Сложно обнаружить все возможные варианты поведения • Статический анализ > Изучение исходного и байт-кода > Можно применять на ранних этапах разработки > Не требуется развертывание ПС
  6. 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. 7 Результаты анализа управления транзакциями • Решения по методам компонентов: Decisions = {ERROR, WARNING, REDUNDANCY}, – ERROR – фрагмент ведет к аварийному завершению – WARNING – требуется внимание разработчика – REDUNDANCY – избыточное управление транзакциями • Модель транзакционных контекстов – И ее визуализация
  8. 8. Анализ управления транзакциями (1) • Этап 1 - построение графа вызовов Java-кода > Ребра, исходящие из одной вершины-метода, упорядочены > Условные и циклические операторы не учитываются • Этап 2 - модификация графа вызовов 8 > Полиморфные вызовы → конкретные реализации > Вершины без входящих дуг являются точками входа
  9. 9. Анализ управления транзакциями (2) • Этап 3 - построение модели транзакционных 9 контекстов > Развернутый граф вызовов > Множество обнаруженных в нем транзакционных контекстов > Порядковый номер, тип управления (программное либо декларативное), флаги завершенности и неопределенного поведения, множество вершин- методов, множество решений по контексту > Множество решений по методам ПС > Рекурсивный обход вершин-методов графа вызовов, начиная с точек входа в ПС > Обработка исходящих дуг: симуляция действий сервера приложений Java EE по управлению транзакциями > Рекурсивные вызовы метода обрабатываются, пока не повторяется поведение по переключению транзакционного контекста → алгоритм является конечным
  10. 10. 10 Прототип анализатора
  11. 11. 11 Визуализация модели транзакционных контекстов
  12. 12. 12 Направления развития • Расширение поддерживаемых возможностей платформы Java EE 7 • MDB как точки входа, обработка сообщений в JMS, @Transactional для CDI-компонентов • Верификация свойств атомарности и согласованности транзакций ПС – Вывод утверждений о совместной либо раздельной обработке сущностей в транзакциях ПС – Сопоставление с заданными инвариантами • Например, запись в журнал — всегда в отдельной транзакции • Гарантия распределенной транзакции
  13. 13. 13 Спасибо! ivgratchev@rambler.ru
  14. 14. Анализ управления транзакциями (1) • Этап 1 - построение графа вызовов 14 – Исходные данные: • Абстрактное синтаксическое дерево Java-кода (формируется MoDisco) • Установочные XML-дескрипторы – С вершиной графа вызовов связаны: • сигнатура метода • тип данных, для которого определен данный метод • набор метаданных, связанных с методом (аннотации и настройки из XML-дескрипторов) – Ребра, исходящие из одной вершины-метода, упорядочены – Условные и циклические операторы не учитываются
  15. 15. Анализ управления транзакциями (2) • Этап 2 - модификация графа вызовов 15 – В результирующем графе вызовов • Вызовы методов, полиморфные в рамках анализируемой ПС, заменены на конкретные реализации – Определяются в результате анализа метаданных и исходного кода • Все вершины-методы без входящих дуг являются точками входа – Точка входа — метод, с которого Java EE- приложение по запросу клиента начинает выполняться в управляемом контейнером режиме
  16. 16. 16 Анализ управления транзакциями (3)
  17. 17. 17 Анализ управления транзакциями (4) • Этап 3 - построение модели транзакционных контекстов > Развернутый граф вызовов G G’ > Множество обнаруженных в нем транзакционных контекстов > Порядковый номер, тип управления (программное либо декларативное), флаги завершенности и неопределенного поведения, множество вершин-методов, множество решений по контексту > Множество решений по методам ПС
  18. 18. 18 Анализ управления транзакциями (5) • Этап 3 — построение модели транзакционных контекстов > Рекурсивный обход вершин-методов графа вызовов, начиная с точек входа в ПС > Обработка исходящих дуг (симуляция действий сервера приложений Java EE по управлению транзакциями): > Проверка запрета вызываемого метода; > Определение поведения по переключению транзакционного контекста – Распространение текущего контекста, создание нового контекста, приостановка текущего контекста, приостановка текущего контекста и создание нового, отсутствие каких-либо действий > Определение транзакционного контекста для вызываемого метода
  19. 19. 19 Анализ управления транзакциями (6) • Этап 3 — обработка циклов в графе вызовов при построении модели транзакционных контекстов > Рекурсивные вызовы метода обрабатываются до тех пор, пока не повторяется поведение по переключению транзакционного контекста > Ведется история вызовов > Количество анализируемых уровней рекурсии ограничено сверху количеством типов поведения по переключению транзакционного контекста (5) > Алгоритм является конечным > Для найденного цикла в развернутый граф вызовов добавляется фиктивная дуга
  20. 20. 20 Прототип анализатора • Область применения – Java EE 6, сессионные компоненты EJB 3.1 • Подключаемый модуль для IDE Eclipse • Описание графа модели транзакционных контекстов на языке Dot, визуализация с помощью GEF4 DOT
  21. 21. 21 Выбор средства статического анализа Средство анализа кода Байт-код Исходный код Аннотации Soot + + +/– (неполная поддержка) MoDisco + + + Java APIs − + + Apache BCEL + − −
  22. 22. 22 Результаты анализа (WARNING+REDUNDANCY)
  23. 23. 23 Результаты анализа (ERROR)
  24. 24. 24 Недостатки • Большой объем модели MoDisco • Неудобная визуализация полного исходного кода ПС > Решение: Вывод транзакционных контекстов для выбранного метода • Нет поддержки инкрементальных изменений • Отсутствие результатов по реальным приложениям

×