Software Engineering and Automation Internship: Static Analysis Tools to Refactor Enterprise Java Applications

Deze stage is niet meer vacant

Are you a Master student looking for a complex software engineering problem? Please check out this graduation project.


One of the legacy applications within ING, Vantage, was first built 20 years ago according to what were back then the best practices for IT Architecture. Over the years it has accumulated 2.8 million lines of code and now consists of 500+ different components, of which 81 are run across 16 different JVMs. In different places you’ll find different versions of both externally and internally developed code libraries and frameworks, such as Spring and Hibernate.

Typically, such applications are not documented accurately enough to understand how to best address technical debt and even how to plan for modernizing the architecture of such a large, old application.

Normally there are two types of software re-engineering techniques: static analysis and dynamic analysis. Static analysis extracts information of the system solely from source code, while dynamic analysis requires interaction with the system. In this project, we would like to use static analysis techniques to help us to decrease the complexity and re-engineer those legacy applications to today’s standards in order to meet our customer demands.

More specifically, Antoniadis et al. state that: “Essentially none of the published algorithms or successful research frameworks for program analysis achieve acceptable results for enterprise applications on the main quality axes of static analysis research: completeness, precision, and scalability.” [1] To address this issue, they introduced JackEE, a static analyser for enterprise Java web applications. Therefore, we also would like to evaluate JackEE together with other state-of-the-art static analysis tools for ING applications.

Goal of this project:To investigate on state-of-the-art static analysis techniques and evaluate whether they could provide insights to facilitate engineers to address technical debt, and plan for modernizing the architecture of a large J2EE legacy application.

Deliverables:We see two steps in this project (but not limited to):

1.To validate the effectiveness of JackEE as a tool for analyzing a large legacy J2EE application:In this first step, the applicability of JackEE on a large legacy application (Vantage, 20 years old, 2.8 million lines of code, 500+ components) will be analyzed.

Expected outcome: A clear understanding of whether JackEE is a feasible and accurate tool to assist in understanding and improving the internal structure of a large J2EE legacy application, to be able to effectively address potential quality and security issues

2.To understand in which context JackEE is applicable:Based on literature review, compare JackEE to other static code analysis tools to identify in which cases JackEE is the best choice.

Expected outcome: A clear decision framework for deciding when to use JackEE, and in which situations other tools are a better choice


  • • You are a Master graduation student in Computer Science with mathematical affinity or the other way around.

  • • You have knowledge of object oriented programming and software design in a technical environment.

  • • You are self-propelling, smart and inquisitive.


  • This is a graduation internship for minimum 4 days a week with a duration of a minimum 5 months.

  • Please note that we can only consider students who are enrolled at a school for the entire duration of the internship.

  • Students must live in the Metherlands to apply for this internship


[1] Static analysis of Java enterprise applications: frameworks and caches, the elephants in the room , Antoniadis et al., PLDI’20

Stage informatie

Organisatie: Organisatie: ING

Locatie: Amsterdam

Opleidingsniveau: $}


Type: Werkstage


Meer stages