SOFTWARE APPLICATION  MODERNIZATION ANALYSIS

A software application may be analyzed to determine how the software application has performed across numerous dimensions using historical data regarding the software application. This analysis may be for a specific organization. The performance of the software application may be compared to a plurality of modernization options. A modernization option that is determined to perform better than the software application in at least one of the numerous dimensions is identified. A total cost for the organization to realizing the modernization option is calculated. The calculation includes a simulation of personnel of the organization providing services of the organization while integrating the modernization option among a suite of software applications.

BACKGROUND

Software solutions have to undergo modernization on a regular schedule. For example, modernization may include replacing a current software application with an updated version of that same software application, or with a different software application, or requesting/programming a patch to the software application, or the like. Once you determine that a new modernization option is desired, it may be a cumbersome exercise to get that modernization option realized. For example, realizing a modernization option may include devoting programmers to develop patches, devoting integration engineers to integrate a patch into a current solution, determining when applications may be brought offline to patch them (e.g., where the applications are software-as-a-service (SaaS) applications), devoting support staff to assist clients as they learn about a new edition of the applications, or the like. Each of these considerations may be nebulous to identify and quantify.

SUMMARY

Aspects of the present disclosure relate to a method, system, and computer program product relating to analyzing modernization options of software applications. For example, the method includes analyzing how a software application has performed across numerous dimensions using historical data regarding the software application for an organization. The method further includes comparing the performance of the software application to a plurality of modernization options. The method further includes identifying a modernization option that is determined to perform better than the software application in at least one of the numerous dimensions. The method further includes calculating a total cost to the organization for realizing the modernization option by a simulation of personnel of the organization providing services of the organization while integrating the modernization option among a suite of software applications. A system and computer program configured to execute the method described above are also described herein.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to software application modernization analysis, while more particular aspects of the present disclosure relate to using artificial intelligence (AI) to comprehensively analyze how a software application may be modernized and simulating what it would take to realize that modernization in order to analyze and decide how to manage a set of software applications, potentially automating some/many/all of these steps (including automating the step of modernizing the software application). While the present disclosure is not necessarily limited to such applications, various aspects of the disclosure may be appreciated through a discussion of various examples using this context.

Modern organizations typically utilize a great number of software applications to conduct their enterprise. These software applications may include back-end applications to support the enterprise, front-end applications that are sold in some form to the clients, support applications that enable the organization to interface with their clients as the organization provides/sells other services/products, or the like. Once applications are deployed, then the organization typically needs a maintenance and support team while the application is running. In some instances, this support/maintenance team may include members of the organization, though in other instances an organization may outsource this support/maintenance.

As such, while each application is in use there is a cost associated with this application. This cost includes items such as maintenance and support costs, cloud computing support costs, business impacts from the application not operating as expected, or the like. Different applications have different level of priority, and for different contextual scenarios different applications might be assigned different levels of importance by the organization. For example, an application that is used to manage an organization-wide vacation schedule may receive moderate priority, while an application that does the accounting for the organization may receive the highest priority. As such, it may be difficult (if not impossible) for some conventional software support tools to determine when and how to modernize an application as necessary while correctly factoring for all of these costs, priorities, personnel abilities, or the like.

Aspects of this disclosure solve or address these concerns. For example, aspects of this disclosure may relate to an AI-enabled system that is configured to selectively identify candidate applications (or modules of the applications) that warrant modernization, and to further analyze whether and how to modernize based on these considerations. One or more computing devices that include one or more processing units executing instructions stored on one or more memories may provide the functionality that addresses these problems, where said computing device(s) are herein referred to as a controller (though this functionality may be spread into numerous devices in different instances).

Specifically, the controller may consider and weigh numerous data points in evaluating a software modernization. For example, the controller may gather and/or determine the historical usage pattern of various applications, the business importance of the applications, a technology gap between available recent technology and the current technology of the application, an availability of technical personnel to support the applications, a health of the applications (e.g., a number of bugs, a difficulty in fixing these bugs, a number of employees that have the expertise to fix these bugs, other performance metrics of the application), a potential business impact if the applications are not able to provide data/services on time, or the like. The controller may identify the applications or modules of the applications that are “due” for modernization and balance this against which modernizations are easier/cheaper/relatively more required/etc. so that applications can be modernized in a way that intelligently accounts for the “cost” of modernization in a comprehensive manner.

The controller may predict a technology lifecycle, including predicting possible future release timelines of relevant upcoming technology that correspond to the software applications, and accordingly identify when the modernization of any application should be scheduled (and/or schedule when this new application functionality may likewise be due for replacement). Based on the analysis of the controller, the controller may also further be configured to automate some or all of the process of realizing this modernization (e.g., buying the new software, scheduling personnel to train and support it, etc.).

The controller may gather data from numerous sources to conduct this analysis. For example, the controller may consider functionalities of the current application, various meetings on this functionality (e.g., whether from sensors that capture real-time natural language content of this meeting that the controller may analyze, or whether from stored documents that record relevant content of the meetings), email communication related to the application such as requirements of the applications, or the like. With this gathered information, the controller may identify functional and non-functional requirements so that during modernization of the application, the updated software solution can accommodate the newly identified requirements.

Beyond this, the controller may simulate how some or all of these factors may play out over time for the organization, where this simulation accounts for application usage patterns, importance of the assorted applications, current health of the applications, and the like. Based on this simulation, the controller may identify a preferred modernization plan, where this modernization plan includes a sequence of modernization(s) for the entire application suite of the organization so that aggregated cost of ownership can be optimized (e.g., where an optimized cost includes the monetary price being low, the disruption to the organization being minimized, organization employees having reasonable workloads, and the like). Further, as discussed herein, in some instances the controller may autonomously execute some or all of the steps of the modernization plan (e.g., autonomously purchasing, downloading, or installing some software functionality, and/or scheduling some human resources to support this software functionality accordingly).

The controller may select a modernization plan to go with based on application usage patterns (or application module usage patterns, where only a single portion/module of an application is to be modernized), detected changes in business process, and/or predicted changes in business process. In some instances, the controller may determine that some or all applications and/or application modules do not currently need any modernization (whether because they are performing acceptably or whether because there is no modernization which is available for an acceptable cost). In some examples, the controller may determine that both the performance of an application is poor and also modernization is not currently practicable (e.g., as a result of current modernization costing too much), in response to which controller may recommend and/or autonomously act to disable this application.

In this way, the controller may propose application modernization techniques based on real-time communication, network needs, scalability, and the like. Further, the controller may do so in a way that provides an outline of the overall modernization needs of the suite of applications of the organization. The controller may identify the needed technical and non-technical dependencies of this modernization plan based on any detected/predicted changes of business processes and/or governance.

For example,FIG.1depicts environment100in which controller110may analyze modernization options for organization120. Controller110may include a processor coupled to a memory (as depicted inFIG.3) that stores instructions that cause controller110to execute the operations discussed herein. Though controller110is depicted as being structurally distinct from computing devices122and historical databases130, in some embodiments controller110may share some computing components with computing devices122and/or historical databases130.

Controller110may use neural network112or the like to analyze applications124A,124B (collectively or generically referred to herein as “applications124”), whether these applications124are used/hosted/accessed on computing device122of organization120or on remote client devices140(e.g., where remote client devices140are computers similar to what is depicted inFIG.3that are used by people that are clients of organization120). Controller110may gather the data described herein using agents126, and/or controller110may access data from one or more databases130that store data related to applications124and/or modernization options as discussed herein.

Controller110may interact with computing devices122, client devices140, and/or historical databases130using network150. Network150may include a computing network over which computing messages may be sent and/or received. For example, network150may include the Internet, a local area network (LAN), a wide area network (WAN), a wireless network such as a wireless LAN (WLAN), or the like. Network150may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device (e.g., computing devices that host/include computing device122, client device140, and/or historical databases130) may receive messages and/or instructions from and/or through network150and forward the messages and/or instructions for storage or execution or the like to a respective memory or processor of the respective computing/processing device. Though network150is depicted as a single entity inFIG.1for purposes of illustration, in other examples network150may include a plurality of private and/or public networks.

Controller110may manage software application modernization according to flowchart200depicted inFIG.2. Flowchart200ofFIG.2is discussed with relation toFIG.1for purposes of illustration, though it is to be understood that other environments with other components may be used to execute flowchart200ofFIG.2in other examples. Further, in some examples controller110may execute a different method than flowchart200ofFIG.2, or controller110may execute a similar method with more or less steps in a different order, or the like.

Controller110analyzes how one or more software applications124have performed for organization120(202). In some examples, controller110may analyze applications124A that are used/accessed primarily on computing devices122of organization, but in certain examples controller110may alternatively or additionally gather data regarding a performance of applications124B that are used/access primarily on client devices (e.g., where software application124B is paid for by a user of client device and organization120provides/supports this software application124B).

Controller110may analyze software application124performance across numerous dimensions. For example, controller110may gather data from agents126on computing devices122of organization120. Specifically, agents126may be configured to gather computer resource utilization data regarding software applications124, such as how much memory is being used, how much processing power is being used, how much disk capacity is being used, or how much network bandwidth is being used by software applications124. Agents126may also gather data directly from software applications124themselves, such as a gathering data regarding a responsiveness of software applications124(e.g., how long it takes for software applications124to process a request or load a new screen as requested by a user), an amount of errant clicks within software applications (e.g., an amount of times where a user clicks into a menu only to immediately exit out that menu), or the like.

In some examples, controller110may gather historical data from databases130to evaluate how software applications124have performed. Databases130may include data from agents126. Databases130may further include information such as help desk tickets regarding software applications124, complaints received regarding software applications124, or the like. In some examples, controller110may have access to (and/or databases130may store) organization120communication stored on one or more platforms accessible to organization120(e.g., an email server, or a instant-messaging platform used by employees of organization120), and controller110may query communication sent across organization120to analyze a performance of a software application124. For example, controller110may use sentiment analysis to determine whether or not users are enjoying using software applications124, and/or whether or not users have certain specific complaints that indicate a drop in performance of software applications124.

In some examples, controller110may analyze software applications124in response to a prompt from a user. In other examples, controller110may analyze software applications124on a predetermined schedule (e.g., once a week, or once a month, or once a quarter). In some examples, controller110may determine and/or change such a predetermined schedule. For example, controller110may detect that an identified software application124is performing very well and/or that a cost of modernization is prohibitively high, in response to which controller110may schedule a next analysis of this identified software application124to be at some time in the relatively distant future (e.g., a period of time in which it is expected that either this identified software application124will begin to perform worse, and/or it is expected that the cost of modernization will drop to an acceptable amount). For some situations the distant future may be weeks off, whereas in other instances the distant future may be months or even years off. Alternatively, where a software application124is performing relatively poorly and/or the cost of modernization is relatively inexpensive, controller110may schedule another analysis relatively soon (if software application is not scheduled for modernization as a result of the analysis of controller), and/or controller110may schedule this software application124to be decommissioned. For example, if controller110detects that a software application124has a performance issue of a security flaw that opens up organization120to a security breach, and further controller110detects that no modernization exists that is below a cost threshold, controller110may autonomously decommission this software application124, or recommend that software application124be decommissioned as soon as possible.

Controller110compares the performance of the software application124to a plurality of modernization options (204). Modernization options includes ways in which code of at least one portion of software applications124may be replaced with at least some new code. For example, a modernization option may include upgrading one module of software applications124. This may include a situation where there is standalone functionality that may be added or replaced/upgraded while maintaining other portions of software applications124in a relatively unchanged state. In other examples, the modernization option may include upgrading the entire software application124with a new version of the same (or a different) software application.

In some examples, software applications124may be provided by an external party, such that upgrading some or all of the software application may include purchasing the same or a different software application. In other examples, software applications124may be created, maintained, customized, or the like by organization120, such that programmers of organization120are responsible for providing the functionality of software application124. Where software application124is provided by an external party, controller110may identify capabilities of other modernization options by crawling online repositories or the like in order to compare the performance of software applications124to the modernization options. Alternatively, where software applications are programmed/customized/maintained by organization120, controller110may extrapolate new/improved capabilities of software applications124that may be possible, and compare the current performance of software applications124against these extrapolated capabilities.

Controller110identifies a modernization option that is determined to perform better than one of software applications124(206). Controller110may determine that this modernization option will perform better than software applications124across one or more dimensions that software application124performance was analyzed on (at202). For example, controller110may determine if the modernization option will use less processing power, be more responsive, cause less crashes, and/or will result in less complaints/tickets from users.

Controller110calculates a total cost to the organization for realizing the modernization option (208). This total cost may include both a monetary amount and also a number of human-hours predicted/required to realize this modernization option, as well as potentially included other elements of cost if desired by a user (e.g., an amount of “goodwill” that may be required to change software applications124, as sometimes people are resistant to even good change). Controller110may calculate the total cost by simulating the act of implementing the modernization option using a neural network112. Specifically, controller110may cause neural network112to simulate personnel of organization120providing goods and services while integrating the modernization option among a suite of software applications124. Controller110may gather real time information from computing agents126to simulate how organization120would provide their services.

Neural network112may simulate the entirety of the causal chain of realizing the modernization option in order to calculate the total cost of the modernization option. For example, controller110may cause neural network112to simulate how many people will be required to work to set up the modernization option, train people on the modernization option, answer questions on the modernization option, or the like. Neural network112may simulate some people leaving organization120as a result of getting the modernization option, some people now wanting to join organization120as a result of organization120being modernized, and/or some clients no longer patronizing organization120as a result of modernization option. In addition to simulating actual literal cost of purchasing the modernization options, neural network112will also simulate secondary costs such as the person-hours being spent integrating the modernization options, an amount of downtime caused to other software applications of the suite of software applications, or the like.

In some examples, controller110may cause neural network112to simulate how realizing the modernization option will be scheduled into the future in order to calculate the total cost. For example, controller110may simulate a plurality of simulations in which personnel of organization120provide services of the organization while integrating the modernization option among the suite of software applications at a plurality of dates in the future. Controller110may analyze how this results in different costs in different ways, where in some cases there may be more direct cash spent, whereas in other cases there may be less cash but more person-hours, etc. Controller110may then identify the total cost of one identified simulation as being below a cost threshold (where other simulations of the plurality of simulations had a cost above the cost threshold), in response to which controller110may identify that simulation as the option to pursue. In some examples, controller110may schedule the execution of another modernization option of another software application of the suite of software applications at a date prior to the identified date, in order to keep costs at desired levels across a period of time (e.g., spreading out costs across numerous quarters of a fiscal year, rather than bunching them into a single quarter).

As described above, controller110may include or be part of a computing device that includes a processor configured to execute instructions stored on a memory to execute the techniques described herein. For example,FIG.3is a conceptual box diagram of a computer101that can host controller110. While controller110is depicted as a single entity (e.g., within a single housing) for the purposes of illustration, in other examples, controller110may include two or more discrete physical systems (e.g., within two or more discrete housings). Controller110may include interface210, processor220, and memory230. Controller110may include any number or amount of interface(s)210, processor(s)220, and/or memory(s)230.

Computing environment300contains an example of an environment for the execution of at least some of the computer code involved in performing the inventive methods, such as software application modernization analysis techniques399. In addition to software application modernization analysis techniques399, computing environment300includes, for example, computer301, wide area network (WAN)302, end user device (EUD)303, remote server304, public cloud305, and private cloud306. In this embodiment, computer301includes processor set310(including processing circuitry320and cache321), communication fabric311, volatile memory312, persistent storage313(including operating system322and software application modernization analysis techniques399, as identified above), peripheral device set314(including user interface (UI) device set323, storage324, and Internet of Things (IOT) sensor set325), and network module315. Remote server104includes remote database330. Public cloud305includes gateway340, cloud orchestration module341, host physical machine set342, virtual machine set343, and container set344.

Processor set310includes one, or more, computer processors of any type now known or to be developed in the future. Processing circuitry320may be distributed over multiple packages, for example, multiple, coordinated integrated circuit chips. Processing circuitry320may implement multiple processor threads and/or multiple processor cores. Cache321is memory that is located in the processor chip package(s) and is typically used for data or code that should be available for rapid access by the threads or cores running on processor set310. Cache memories are typically organized into multiple levels depending upon relative proximity to the processing circuitry. Alternatively, some, or all, of the cache for the processor set may be located “off chip.” In some computing environments, processor set310may be designed for working with qubits and performing quantum computing.

Computer readable program instructions are typically loaded onto computer301to cause a series of operational steps to be performed by processor set310of computer301and thereby effect a computer-implemented method, such that the instructions thus executed will instantiate the methods specified in flowcharts and/or narrative descriptions of computer-implemented methods included in this document (collectively referred to as “the inventive methods”). These computer readable program instructions are stored in various types of computer readable storage media, such as cache321and the other storage media discussed below. The program instructions, and associated data, are accessed by processor set310to control and direct performance of the inventive methods. In computing environment300, at least some of the instructions for performing the inventive methods may be stored in software application modernization analysis techniques399in persistent storage313.

Volatile memory312is any type of volatile memory now known or to be developed in the future. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, volatile memory312is characterized by random access, but this is not required unless affirmatively indicated. In computer301, the volatile memory312is located in a single package and is internal to computer301, but, alternatively or additionally, the volatile memory may be distributed over multiple packages and/or located externally with respect to computer301.

Peripheral device set314includes the set of peripheral devices of computer301. Data communication connections between the peripheral devices and the other components of computer301may be implemented in various ways, such as Bluetooth connections, Near-Field Communication (NFC) connections, connections made by cables (such as universal serial bus (USB) type cables), insertion-type connections (for example, secure digital (SD) card), connections made through local area communication networks and even connections made through wide area networks such as the internet. In various embodiments, UI device set323may include components such as a display screen, speaker, microphone, wearable devices (such as goggles and smart watches), keyboard, mouse, printer, touchpad, game controllers, and haptic devices. Storage324is external storage, such as an external hard drive, or insertable storage, such as an SD card. Storage324may be persistent and/or volatile. In some embodiments, storage324may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer301is required to have a large amount of storage (for example, where computer301locally stores and manages a large database) then this storage may be provided by peripheral storage devices designed for storing very large amounts of data, such as a storage area network (SAN) that is shared by multiple, geographically distributed computers. IoT sensor set325is made up of sensors that can be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.

End user device (EUD)303is any computer system that is used and controlled by an end user (for example, a customer of an enterprise that operates computer301), and may take any of the forms discussed above in connection with computer301. EUD303typically receives helpful and useful data from the operations of computer301. For example, in a hypothetical case where computer301is designed to provide a recommendation to an end user, this recommendation would typically be communicated from network module315of computer301through WAN302to EUD303. In this way, EUD303can display, or otherwise present, the recommendation to an end user. In some embodiments, EUD303may be a client device, such as thin client, heavy client, mainframe computer, desktop computer and so on.

Remote server304is any computer system that serves at least some data and/or functionality to computer301. Remote server304may be controlled and used by the same entity that operates computer301. Remote server304represents the machine(s) that collect and store helpful and useful data for use by other computers, such as computer301. For example, in a hypothetical case where computer301is designed and programmed to provide a recommendation based on historical data, then this historical data may be provided to computer301from remote database330of remote server304.

Public cloud305is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and/or other computer capabilities, especially data storage (cloud storage) and computing power, without direct active management by the user. Cloud computing typically leverages sharing of resources to achieve coherence and economies of scale. The direct and active management of the computing resources of public cloud305is performed by the computer hardware and/or software of cloud orchestration module341. The computing resources provided by public cloud305are typically implemented by virtual computing environments that run on various computers making up the computers of host physical machine set342, which is the universe of physical computers in and/or available to public cloud305. The virtual computing environments (VCEs) typically take the form of virtual machines from virtual machine set343and/or containers from container set344. It is understood that these VCEs may be stored as images and may be transferred among and between the various physical machine hosts, either as images or after instantiation of the VCE. Cloud orchestration module341manages the transfer and storage of images, deploys new instantiations of VCEs and manages active instantiations of VCE deployments. Gateway340is the collection of computer software, hardware, and firmware that allows public cloud305to communicate through WAN302.

Private cloud306is similar to public cloud305, except that the computing resources are only available for use by a single enterprise. While private cloud306is depicted as being in communication with WAN302, in other embodiments a private cloud may be disconnected from the internet entirely and only accessible through a local/private network. A hybrid cloud is a composition of multiple clouds of different types (for example, private, community or public cloud types), often respectively implemented by different vendors. Each of the multiple clouds remains a separate and discrete entity, but the larger hybrid cloud architecture is bound together by standardized or proprietary technology that enables orchestration, management, and/or data/application portability between the multiple constituent clouds. In this embodiment, public cloud305and private cloud306are both part of a larger hybrid cloud.

In addition to software application modernization analysis techniques399, in some examples gathered or predetermined data or techniques or the like as used by processor set310to manage software application modernization analysis is stored on computer301. For example, persistent storage313may include information described above that is gathered from environment100. Specifically, memory313may include some or all data gathered from agents126, and/or persistent storage may include some or all data of databases130.

Further, persistent storage313may include threshold and preference data. Threshold and preference data may include thresholds that define a manner in which controller110is to manage the analysis of software application modernization. For example, the threshold and preference data may include thresholds at which controller110executes various tasks as described above, such as user-provided thresholds. This might include where controller110is configured to only recommend specific modernization options in response to a calculated cost being below a user-defined cost threshold. Alternatively, or additionally, in some examples controller110may be configured to autonomously realize a modernization option where certain thresholds are met. For example, where controller110determines that a cost of a modernization option is below a threshold and also that a performance improvement of the modernization option is above a threshold, controller may autonomously realize that modernization option. This may include controller110automatically buying new software functionality, scheduling the update for a certain time, reserving some people to integrate/maintain the new software functionality, alerting relevant parties, or the like.

Persistent storage313may further include machine learning techniques that controller110may use to improve a process of analyzing and/or realizing software modernity options as described herein over time. Machine learning techniques can comprise algorithms or models that are generated by performing supervised, unsupervised, or semi-supervised training on a dataset, and subsequently applying the generated algorithm or model to manage software modernization analysis. Using these machine learning techniques, controller110may improve an ability to detect software functionality that could use modernization, identify when a modernization option would improve performance of the software functionality, calculate a true total cost of realizing this modernization option, and/or automatically realizing this modernization option when certain thresholds are met.