Understanding the boundaries of a codebase is a key feature during the assessment phase to deeply understand the intricacies of each module and the links between them. It is also a key for successful proof of concepts and projects because it is the foundation of proper scoping, sprints definition, test cases capture by the customers, etc.
Part of this analysis relies on the concept of entrypoints. The entrypoints serve as the parent elements for the codebase's smallest self-sufficient subparts, enabling us to divide the codebase into smaller, easily testable application units.
Each entrypoint represents the beginning of a feature, module, application, batch, or screen scenario. As such, they are a central element in the modernization journey.
When the entrypoints have been detected, the following step is to consolidate the codebase’ subparts. In order to visualize these different subparts, we have created the concept of Application Features. These are a standalone set of assets defined by their respective entrypoints, computed from the list of dependencies of the entrypoint and its children. Each of these sets of assets are bounded by the other entrypoints of the codebase. To compute these sets, for each entrypoint, we explore the dependencies. When encountering another entrypoint, we stop the exploration, and all the dependencies that were encountered are consolidated in a set of assets, corresponding to the Application Feature.
By visualizing a codebase as a list of linked features, it becomes easier for customers to understand their assets and plan their modernization journey.
Application Entrypoints
Our goal was to improve the current algorithm for identifying entrypoints, which previously relied solely on the graph's definition: a node is considered an entrypoint if it has no parent and has at least one child. To move one step further and integrate the legacy context into the definition of an entrypoint, the previous menu in the Workpackages layer has been moved to the Dependencies layer, introducing the Application Entrypoints feature. While running this feature, a label is asked to the customer, and this label will be applied to each file / node detected as an application entrypoint through the analysis.
The new algorithm makes use of the file type to apply a set of precise rules and provides meaningful results. Handled elements are:
- JCL jobs
- CICS transactions
- DB2 stored procedures
- COBOL z/OS and PL1 programs
- COBOL 400 and RPG 400 / RPG-ILE programs (with a distinction between batch and online)
- CL programs
- MNUCMD files
With this improved feature, customers will better understand their codebase and move with more confidence to the scope definition steps of their modernization journey.
Application Features
We introduced the notion of Application Features to describe the subgraph of elements connected to a given entrypoint which don’t collide with another entrypoint. From an AWS Blu Insights point of view, it can easily be modeled as a standard workpackage which will be created and linked to this set of elements. To automate the computation of these Application Features based on a set of entrypoints, we have added a new menu entry to the Workpackages page.
When launching an Application Features process, a label must be provided by the customer. This label can result from the entrypoints detection, but can also be tailor made based on inputs from the customer. Each file or node flagged with this label is considered as an entrypoint for the Application Features process.
A workpackage must also be provided by the customer. This workpackage will be the parent workpackage of all the workpackages created by the Application Features process.
With this new feature, customers will be able to:
- quickly understand how their applications are structured
- have useful insights on the different features co-existing in their codebase
- visualize the frontiers between the different features
- use these insights in their modernization plan (sprints, test scenarios,...)
We will be happy to hear from you about those improvements.
Have a productive day!