December 2024

AWS Blu Insights - One dependencies analysis for 28 languages!

Previously, when you wanted to run a dependencies analysis on AWS Blu Insights, you could choose between 9 types of analysis specialized in a language family and the generic one. Those days are over! From now on, you no longer have to choose the type of analysis, as we have successfully merged the 9 analysis into a single one.

image.png

The previous Blu Insights Dependencies launcher đź‘´

From class extension design to language contribution design

Let’s look behind the scene at how we did it. Previously, there was 1 dependencies engine per language family. Depending on what the user selected at the Blu Insights interface, the process instantiated the right implementation which comprises 4 principal components:

  • Inventory - source file index storage
  • Resolver - process request to the inventory establishing link between elements
  • Scoping - determination of file scope
  • Dependencies finders - process source file to determine dependencies

This architecture offered a high partitioning for each language and gave us flexibility for each application. But we have faced projects involving multiple languages at the same time. For example, some mainframe projects include C files. To detect such links, our in-between solution was to promote the Mainframe language engine as a multi-language engine and to include some parts of the C/C++ language engine in it.  

But this solution is not scalable and cannot apply to all language types. For example, the Mainframe engine could not integrate easily the Java language engine because of fundamental differences in the Scoping component implementation. 

image.png

The Mainframe dependencies analysis doesn’t detect “C1” java class dependencies

Working backwards, a new engine version seemed like the logical choice to make. We have designed a new architecture with 1 single dependencies engine and multiple language configurations. Each language configuration declares contributions process called by the engine to fit language specific characteristics. To make it possible, the new dependencies engine strengthens its link to the Blu Insights Classification by determining a source file language from its type.

This technical overhaul is even more valuable because it serves the customer experience in Blu Insights. Customers can now get their dependencies even if they have hybrid codebase projects. And it's all just 1 click away.

image.png

The new Blu Insights Dependencies launcher 🤩

Enjoy!