Creating a bill of materials: Why tracking application file and network dependencies is so important

I was recently asked whether it was possible to work out which resources will be used by an application before it runs. In theory, it is not possible to do that without solving the halting problem, but in real life applications often do the same thing over and over again. This makes it possible to know roughly what an application will do most of the time.

This is how we help our customers create and maintain a bill of materials so that they are ready with the info when it is really needed.

Migrating applications

When migrating applications to the cloud or containerizing workloads, you need to know which files, programs, libraries and network locations are going to be accessed. You can find this information by trial and error or by reading the source code, but executing the application or workflow in real life is much quicker than doing it in your head.

Breeze can trace your application and give you a list of everything you use. For one of our customers this cut down the migration time from three weeks down to a day for complex workloads!

Application correctness and performance

Checking application dependencies before you release new software is also an easy way to sanity-check for application correctness. Including the wrong files or libraries in a build or release process can harm the correctness and performance of an application and, in some cases, affect the licence too. The good news is that it is really each to check and fix.

One of our customers started to run dependency checks before shipping a new release to a customer. Breeze lists the dependencies of your application so you can quickly see which paths have been accessed.

Developer Support Engineer, Jenson Ho, checked file dependencies using Breeze, including the symlinks and their designations. He was able to identify some hard-coded paths that would otherwise have been released with the product. This would have prevented the tool from working on their customer’s site.

“The hard-coded paths issue also caused a massive grid slowdown where jobs were taking two or three times as long to run. Using Breeze, we were able to not only quickly confirm the suspicion of a hard-coded path, but also later check to confirm that the problem was actually handled.

“The initial fix reduced the grid load, but did not fully fix the hard-coded path. We were then able to use Ellexus Breeze to continue to audit and check until the hard-coded path was fully removed.”

Jenson Ho, Developer Support Engineer at Mentor Graphics

How to use Breeze to determine application file and network dependencies

The easiest way to check for application dependencies is to trace an application with Breeze then use the commandline API to export the list of files it has used from the trace. Breeze can condense this to mount points if that is the granularity you need, but most of the time the list of files is more useful.

<Breeze install>/trace-program.sh -f /tmp/traceDir ./myapplication <args>
<Breeze install>/breezeAP.sh /tmp/traceDir -y dependencies -f txt -o ~/outDir

By regularly running a bill of materials on workflows as part of a regression test or a workflow qualification framework, you can make it easier to track the use of slow libraries, open source code and the use of shared file systems. This is a first step to ensuring applications are fast, agile and cloud-ready.