SlideShare a Scribd company logo
1 of 21
Download to read offline
Analyzing Program Dependencies
in Java EE Applications
Anas Shatnawi, Hafedh Mili, Ghizlane El Boussaidi, Anis Boubaker,
Yann-Gael Gueheneuc, Naouel Moha, Jean Privat and Manel Abdellatif
LATECE Laboratory, University of Quebec at Montreal
MSR 2017
Buenos Aires
Static Dependency Call Graph
• Highlighting different dependencies between the
program elements
• It supports:
• Software mining
• Maintenance
• Understandability
• Feature location
• Etc.
Dependencies
Elements
Difficulties in Analyzing JEE Applications
Java code implementation space
The PrevFormTag handlertaglib descriptor
Descriptor file space
A use of prevForm tag
JSP implementation space
describes
maps
Multilanguage code
and string literals
XMLJSP
Java
Our Goal
• Build a dependency call graph that includes all dependencies that exist
between program elements, despite the different languages, technologies,
and development environment mechanisms
The main idea
Limiting the analysis to Java program artifacts
leaves a disconnected program dependency graph
Data-driven control dependencies
Codification of container services
A codification of the other kinds of dependencies helps
us connect the different parts of the dependency graph
Underlying challenges to be solved
1. The various JEE technologies confirm to different meta-models
2. The container services' related dependencies are implicit
3. The use of multi-language code in single source files
4. The embedding of dependencies in string literals
5. The need to look in different files to interpret dependencies
Our Approach
• The OMG’s Knowledge Discovery Meta-model (KDM)
‒ A language-independent meta-model
‒ Use one common model that represents all program elements and their related
dependencies
‒ Abstract away differences between different JEE technologies
• We developed a number of tools
‒ Transform the multi-language code to KDM
‒ Codify container service dependencies
‒ Parse configuration files
‒ Parse string literals to identify dependencies
Codifying container services dependencies
• JEE servers offer a number of services to contain JEE components
• Some are out of the box (e.g., RMI, lifecycle management)
• Some are configurable (security, transaction, persistence)
• Configuration parameters found different places
• Deployment descriptors and code annotations
• Knowledge of these services helps connect some of the missing links
JEE Container
JSPs
Servlets
Tag
Handler
EJBs
JSFs
Managed
Beans
Life Cycle Management
• Knowledge of life cycle management helps connect some of the missing
links
Dependencies of Life Cycle Management
setAction(“cart”)
doEndTag()
doStartTag()
Tool implementation
• We developed DeJEE (Dependencies in JEE) tool as an Eclipse plug-in
• DeJEE supports the representation of multi-language code of JEE
technologies in one common KDM model
• Based on this common KDM model, we extract a dependency call graph.
Case studies
• Subject applications
‒ Java PetStore (8 HTMLs, 88 JSPs, 233 Java classes)
‒ JspBlog (1 HTML, 11 JSPs)
• Method:
1. The ability of DeJEE to codify problems underlying dependencies in JEE applications
2. How much DeJEE extends MoDisco (recall improvement)
‒ We have executed both MoDisco and DeJEE and noted the differences between each tool's
results
The Capability to Identify Dependencies
Java PetStore JSP Blog
Multilanguage files 45.4% of JSPs 54.5% of JSPs
Total no. of string literals 1541 204
No. of string literals having
dep.
720 65
No. of KDM entities 329 11
No. of KDM relationships 2673 61
Recall Improvement
Related work
• Many approaches were proposed to analyze program dependencies in JEE
applications with different purposes.
• Most of these approaches focus on a subset of JEE technologies that is
part of a tier. For examples,
‒ Naumovich and Centonze analyzed EJBs and JEE access policies
‒ Kirkegaard and Moller focused on the analysis of Java Servlets
‒ Zaidman supports the understanding of Ajax-based web applications
• While each one of these technologies present significant analysis
challenges, in their own right, none of the approaches attempt an
integrated view of the technologies.
Conclusion
• Static code analysis gets more complicated when dealing with multi-language
systems such as JEE applications
• We identified the major difficulties in analyzing dependencies across key JEE
technologies, and presented our strategies for addressing them
• We developed a tool called DeJEE that implements our solutions
• Results showed that DeJEE solves the challenges that we identified in the
static analysis of JEE applications and detects related dependencies
Future directions
• Generalization from JEE applications to multi-language applications
• The application of the resulting dependency call graph
‒ Migration to SOA
‒ Change impact analysis
• Scalability of DeJEE by experimenting with large number of case studies
• Accuracy of DeJEE by by comparing its call-graphs against call-graphs
obtained from runtime execution.
Thank you
anasshatnawi@gmail.com
Codifying container services dependencies
• JEE servers offer a number of services to contain JEE components (JSPs,
Servelets, EJBs, Tag Handlers, etc.)
‒ Some are out of the box
• E.g. RMI, lifecycle management
‒ Some are configurable
• Security, transaction, persistence
‒ Configuration parameters found different places
• Deployment descriptors
• Code annotations
• Knowledge of these services helps connect some of the missing links
Callback Methods
• Dependencies (calls) that are invisible in user code
JEE Container
JSPs
Servlets
Tag
Handler
EJBs
JSFs
Managed
Beans

More Related Content

Similar to Analyzing Program Dependencies in Java EE Apps

Ramarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_WebserviceRamarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_WebserviceRamarao Behara
 
Ramarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_WebserviceRamarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_WebserviceRamarao Behara
 
Building Enterprise Application with J2EE
Building Enterprise Application with J2EEBuilding Enterprise Application with J2EE
Building Enterprise Application with J2EECalance
 
Bala Sr Java Developer
Bala  Sr Java DeveloperBala  Sr Java Developer
Bala Sr Java DeveloperJava Dev
 
JAVAJ2EE DeveloperSummary · 7 years of versatile e.docx
JAVAJ2EE DeveloperSummary       · 7 years of versatile e.docxJAVAJ2EE DeveloperSummary       · 7 years of versatile e.docx
JAVAJ2EE DeveloperSummary · 7 years of versatile e.docxchristiandean12115
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application developmentClarence Ho
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year projectsuneel singh
 

Similar to Analyzing Program Dependencies in Java EE Apps (20)

Resume_Venugopal
Resume_VenugopalResume_Venugopal
Resume_Venugopal
 
Ramarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_WebserviceRamarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_Webservice
 
Ramarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_WebserviceRamarao_US_NewNumber_Promatrix_Webservice
Ramarao_US_NewNumber_Promatrix_Webservice
 
Building Enterprise Application with J2EE
Building Enterprise Application with J2EEBuilding Enterprise Application with J2EE
Building Enterprise Application with J2EE
 
Bala Sr Java Developer
Bala  Sr Java DeveloperBala  Sr Java Developer
Bala Sr Java Developer
 
Soundarya Reddy Resume
Soundarya Reddy ResumeSoundarya Reddy Resume
Soundarya Reddy Resume
 
Resume
ResumeResume
Resume
 
0764543857.excerpt.pdf
0764543857.excerpt.pdf0764543857.excerpt.pdf
0764543857.excerpt.pdf
 
Suman
SumanSuman
Suman
 
Devendra_SrJavaJ2eeDeveloper
Devendra_SrJavaJ2eeDeveloperDevendra_SrJavaJ2eeDeveloper
Devendra_SrJavaJ2eeDeveloper
 
J2EE day 1
J2EE day 1J2EE day 1
J2EE day 1
 
Resume
ResumeResume
Resume
 
Suresh Resume
Suresh ResumeSuresh Resume
Suresh Resume
 
Spring ppt
Spring pptSpring ppt
Spring ppt
 
JAVAJ2EE DeveloperSummary · 7 years of versatile e.docx
JAVAJ2EE DeveloperSummary       · 7 years of versatile e.docxJAVAJ2EE DeveloperSummary       · 7 years of versatile e.docx
JAVAJ2EE DeveloperSummary · 7 years of versatile e.docx
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application development
 
Ketan Resume
Ketan ResumeKetan Resume
Ketan Resume
 
oraclewls-jrebel
oraclewls-jrebeloraclewls-jrebel
oraclewls-jrebel
 
Resume amrit
Resume amritResume amrit
Resume amrit
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year project
 

More from Yann-Gaël Guéhéneuc

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

More from Yann-Gaël Guéhéneuc (20)

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 

Analyzing Program Dependencies in Java EE Apps

  • 1. Analyzing Program Dependencies in Java EE Applications Anas Shatnawi, Hafedh Mili, Ghizlane El Boussaidi, Anis Boubaker, Yann-Gael Gueheneuc, Naouel Moha, Jean Privat and Manel Abdellatif LATECE Laboratory, University of Quebec at Montreal MSR 2017 Buenos Aires
  • 2. Static Dependency Call Graph • Highlighting different dependencies between the program elements • It supports: • Software mining • Maintenance • Understandability • Feature location • Etc. Dependencies Elements
  • 3. Difficulties in Analyzing JEE Applications
  • 4. Java code implementation space The PrevFormTag handlertaglib descriptor Descriptor file space A use of prevForm tag JSP implementation space describes maps Multilanguage code and string literals XMLJSP Java
  • 5. Our Goal • Build a dependency call graph that includes all dependencies that exist between program elements, despite the different languages, technologies, and development environment mechanisms
  • 6. The main idea Limiting the analysis to Java program artifacts leaves a disconnected program dependency graph Data-driven control dependencies Codification of container services A codification of the other kinds of dependencies helps us connect the different parts of the dependency graph
  • 7. Underlying challenges to be solved 1. The various JEE technologies confirm to different meta-models 2. The container services' related dependencies are implicit 3. The use of multi-language code in single source files 4. The embedding of dependencies in string literals 5. The need to look in different files to interpret dependencies
  • 8. Our Approach • The OMG’s Knowledge Discovery Meta-model (KDM) ‒ A language-independent meta-model ‒ Use one common model that represents all program elements and their related dependencies ‒ Abstract away differences between different JEE technologies • We developed a number of tools ‒ Transform the multi-language code to KDM ‒ Codify container service dependencies ‒ Parse configuration files ‒ Parse string literals to identify dependencies
  • 9. Codifying container services dependencies • JEE servers offer a number of services to contain JEE components • Some are out of the box (e.g., RMI, lifecycle management) • Some are configurable (security, transaction, persistence) • Configuration parameters found different places • Deployment descriptors and code annotations • Knowledge of these services helps connect some of the missing links JEE Container JSPs Servlets Tag Handler EJBs JSFs Managed Beans
  • 10. Life Cycle Management • Knowledge of life cycle management helps connect some of the missing links
  • 11. Dependencies of Life Cycle Management setAction(“cart”) doEndTag() doStartTag()
  • 12. Tool implementation • We developed DeJEE (Dependencies in JEE) tool as an Eclipse plug-in • DeJEE supports the representation of multi-language code of JEE technologies in one common KDM model • Based on this common KDM model, we extract a dependency call graph.
  • 13. Case studies • Subject applications ‒ Java PetStore (8 HTMLs, 88 JSPs, 233 Java classes) ‒ JspBlog (1 HTML, 11 JSPs) • Method: 1. The ability of DeJEE to codify problems underlying dependencies in JEE applications 2. How much DeJEE extends MoDisco (recall improvement) ‒ We have executed both MoDisco and DeJEE and noted the differences between each tool's results
  • 14. The Capability to Identify Dependencies Java PetStore JSP Blog Multilanguage files 45.4% of JSPs 54.5% of JSPs Total no. of string literals 1541 204 No. of string literals having dep. 720 65 No. of KDM entities 329 11 No. of KDM relationships 2673 61
  • 16. Related work • Many approaches were proposed to analyze program dependencies in JEE applications with different purposes. • Most of these approaches focus on a subset of JEE technologies that is part of a tier. For examples, ‒ Naumovich and Centonze analyzed EJBs and JEE access policies ‒ Kirkegaard and Moller focused on the analysis of Java Servlets ‒ Zaidman supports the understanding of Ajax-based web applications • While each one of these technologies present significant analysis challenges, in their own right, none of the approaches attempt an integrated view of the technologies.
  • 17. Conclusion • Static code analysis gets more complicated when dealing with multi-language systems such as JEE applications • We identified the major difficulties in analyzing dependencies across key JEE technologies, and presented our strategies for addressing them • We developed a tool called DeJEE that implements our solutions • Results showed that DeJEE solves the challenges that we identified in the static analysis of JEE applications and detects related dependencies
  • 18. Future directions • Generalization from JEE applications to multi-language applications • The application of the resulting dependency call graph ‒ Migration to SOA ‒ Change impact analysis • Scalability of DeJEE by experimenting with large number of case studies • Accuracy of DeJEE by by comparing its call-graphs against call-graphs obtained from runtime execution.
  • 20. Codifying container services dependencies • JEE servers offer a number of services to contain JEE components (JSPs, Servelets, EJBs, Tag Handlers, etc.) ‒ Some are out of the box • E.g. RMI, lifecycle management ‒ Some are configurable • Security, transaction, persistence ‒ Configuration parameters found different places • Deployment descriptors • Code annotations • Knowledge of these services helps connect some of the missing links
  • 21. Callback Methods • Dependencies (calls) that are invisible in user code JEE Container JSPs Servlets Tag Handler EJBs JSFs Managed Beans