Graphs have uses in unexpected places, like analyzing software apps in hours instead of weeks. Software development is a complex ever-evolving process. The longer any software exists in the market the more complex it is to maintain. Development frameworks like Oracle Forms have been in the market for over 40 years and used to build mission critical applications over the years by global enterprises. These companies still write code in the same application environment. So, there is need to analyze monolithic software and reduce complexity.
Stephan La Rocca from PITSS GMBH, an Oracle Partner, spoke about how they have been using graphs to find linked software modules, clustered modules, and similar patterns to help enterprises. This article is inspired by his presentation and talks about how Oracle Graph can help analyze legacy software and provide a solution to simplifying software development.
Fig1: Illustration of a monolithic vs modern application architecture
Bounded context is a process to breakdown monolithic applications into smaller deployable artifacts, like web services. This enables development and deployment of the various application functionalities to be independent of each other. For example, in the illustration below, software development and deployment of 'Order Management' context is completely different from that of 'Payment' context. Although, the user interface, business logic, and data model of these smaller deployable artifacts may not be separate.
The business logic of legacy applications can be hard to understand in detail without consulting domain experts. However, with large amounts of system data collected over 30-40 years by different applications, it becomes possible to identify the dependencies without domain or business knowledge.
Fig2: Illustration shows how bounded context is identified based on dependencies
Below is a system flow of a legacy application with different modules. The modules are clustered based on bounded context. Each cluster has its own bounded context that manages the cluster. As you can see in this scenario, the 'Customers' cluster consumes other cluster data, while it is consumed fewer times by other clusters.
Fig3: Illustration of a system flow showing clustering of modules based on bounded context
Traditionally, when building a complex architectural schema, domain knowledge provided by the industry/ LoB subject matter experts is essential. These experts provide a cluster-criteria to identify the functionality to a certain cluster. Along with known clusters, there can also be numerous unassigned objects adding to the complexity of an architectural schema.
Each cluster represents several modules, which could include a single screen of an application with multiple functions-validations, buttons, business logic, SQL statements etc., or multiple screens of an application with multiple functions. The sum of functions per screen gives the weighted attribute to a screen. So, the bigger the weighted attribute, the more complex the screen. Therefore, a cluster and its bounded context should follow these two principles -
Oracle Graph has over 60 pre-built algorithms that give cluster advice based on complexity of the application. This helps define the bounded context without domain knowledge and enables implementation of both custom algorithms and built-in algorithms. Oracle Graph helps you understand the reasons, sub-domains, and creating borders while forming bounded context for a cluster.
This is possible by using an algorithm that follows community detection, which considers the weight of the modules and creates cluster recommendations.
Fig4: Bounded context and clusters defined using Oracle Graph
As the complexity of the module increases the bubble size also increases, while the nodes and edges remain the same. The algorithms are compiled and assigned to Oracle Property Graph Server, which then creates a new attribute for the community ID and assigns a property weight.
When these algorithms are run, a new community ID is created, which helps to visualize the objects that the graph algorithm selects as related and clusters them. This makes it possible to see how these objects are interacting with each other, and what modules belong to this cluster - even without domain knowledge. In the figure above one such Graph selected cluster is highlighted in green, and we can create multiple granular clusters as needed.
Having all the cluster information in the repository could help run a test. Using graph technology, it becomes
Release changes in large applications often require the addition of a lot of new functionality. Automatic testing is hard in legacy applications, so it becomes imperative to guide the users to the functionalities that are changed. The click-path is easy to identify with Oracle Graph algorithms in the backend - algorithms that help to visualize with mock-up integration and provide the user with step-by-step instruction--for example “Press Next”--then the screen pops up and there you press “Submit the Claim” button.
When a function changes, the user knows the exact click-path from login screen to the end, by implementing the fastest-path algorithm in Oracle Graph.
Legacy applications do not have well-defined foreign key relationships, so data model analytics becomes necessary. We can change the data model and assign foreign keys between tables; helping to identify the user interface tables with a ‘where’ clause, or tables that join Data Manipulation Language (DML) statements. Therefore, we can now identify where the user interface creates a master detail declaration between two tables. Even without the foreign keys we can still understand relationship between tables and identify important tables in the data model to track for business process information.
This information can enhance the application and help track user behavior. Oracle Graph enables users to visualize and analyze these complex relationships created to identify business processes, user interactions, and how these run through the application.
Oracle Graph helps you analyze a monolithic application without domain knowledge, enabling easy solution exploration with a clear dependency analysis of various contexts. Graphs also improve user testing during new releases making it possible to guide the user directly to the changed flow for easy testing; and identify and visualize business processes.
Neelima Tadikonda is a Senior Product Marketing Manager with Oracle Cloud Business Group.