The present invention relates generally to computer analytics and more particularly to a system and method for analyzing computer system to compile relevant information from a plurality of disparate sources.
Current computer systems are very complicated and include a variety of programs all having different requirements and that may span over multiple different computer devices. By way of example, the complexity is particularly acute in the context of an enterprise system in which it is very difficult to understand which programs are running within the system, as well as the details and requirements of those programs, to facilitate changes to the programs or the related infrastructure. To further complicate matters, the services provided by infrastructure providers are complex and rapidly changing.
Routinely, changes to one or more aspects of a computer system are implemented. These changes may include changes to software, hardware, bandwidth elements, and/or changes to other aspects of the system. In various instances, these changes may be made in concert, where changes to one aspect may require changes to another aspect. For example, upgrading software may necessitate changes to hardware and/or bandwidth elements of the computer system. In another example, changes to the cost efficiency of a computer system may require changes to the other aspects of the computer system. In some instances, software and/or hardware elements of the system may be changed to take advantage of commercially-available services. These services may provide data storage, management and processing through the use of at least one remote server. In order to support upgrading or changing one or more elements of a computer system, it is helpful to have a robust understanding of the programs, information and capabilities of the computer system as well as how any changes or upgrades will affect the computer system.
One example of a commercially-available service is a cloud computing infrastructure. Cloud computing infrastructures may help reduce long-term infrastructure cost and reduce the complexity of managing a large local computer system. However, moving programs to a cloud computing infrastructure is complicated as there are various providers with different services and it is difficult to understand the requirements of the programs that are to be moved. As such developing an effective, efficient and/or workable plan for migration is a complex task that is prone to errors and sub-optimization. Current solutions include a manual review of the programs that are to be moved, the features of the computer system and the features of the various cloud services and providers. This is a complex and inexact process. As such there would be a significant benefit received from a system capable of automated gathering of information from a plurality of disparate sources and displaying that information in support of manual development a cloud transition plan. However, there are no current systems that are able to gather information from a plurality of disparate sources and display that information. Further, additional benefits would be received from a system capable of not only an automated gathering and displaying of information from a plurality of disparate sources, but also generating a cloud transition plan based on correlated information acquired from disparate information sources. However, there are no current systems that are able to generate a transition plan based on correlated information acquired from disparate information sources, namely, the programs, the computer systems and the external information sources.
Program information may be acquired from a computer system through the use an application program interface (API). However, current systems that support system evaluation or program/data migration are limited in that they are only capable of obtaining program information from the local computer or from computers in the same network. These systems do not attempt to identify information that is external to the computer system or that is from different resources within the same computer system. For example, the current systems do not identify information that it is generated by users stored within other files stored within a computer system. These systems are only concerned with obtaining information from processes related to the program and installed application information and are not able to acquire data from disparate sources. Since current systems are deficient in gathering information from disparate data sources, system operation in support of migration planning and/or activities must often be supplemented by manual review, which is time-consuming, complex, error-prone, and subject to sub-optimization.
An understanding of the following description will be facilitated by reference to the attached drawings, in which:
The following describes systems and methods for obtaining and combining program information from a target computer system as well as from external information sources to provide an improved understanding of programs and data on and the features of a computer system.
In various embodiments, the process of upgrading one or more programs may be improved with a better understanding of the programs to be upgraded. Upgrading a program may include changing some parts of the source code or another part of the program. For example, when upgrading a database, it is important to understand which programs use a database and how those programs interact with the database. In other embodiments, a change to a program may include making a change to the computational resources, enhancing performance, changing cost and increasing reliability.
In other embodiments, redesigning or managing programs may be improved with a better understanding of the programs. Redesigning one or more programs may include changing a substantial portion of one or more programs, and managing one or more programs may include detecting one or more problems within the program or related programs and correcting one or more of the issues identified.
In the examples above, the term “understanding” corresponds to gaining information related to one or more of the following: behaviors of the programs (e.g., functions the programs perform), interactions the program has with other programs, complexity of the program specifically related to the task objective, related components of the program such as DLL and shared libraries, programming frameworks (e.g., Microsoft's .NET), software platforms, operating system requirements such as the version of the operating system, computational requirements such as memory requirements, and communication requirements such as a requirement to have low latency or high bandwidth between one or more programs, or the lack of such requirements.
In one specific example, the objective comprises moving one or more programs to a cloud computing service, and the information about complexity includes information for determining difficulty in moving the programs to the cloud, which includes information about firewall settings, permissions (e.g., access control lists), network configurations (e.g., SDN configurations), estimated number of hours it would take or has taken to migrate the program, one or more problems faced when moving the program and work-arounds to those problems, the set of other entities that have skills and /or experience with the program, and information about whether and under what conditions the program should be moved as is, upgraded, or redesigned.
The following description describes a system and method for identifying and combining information from various disparate sources for one or more programs on a computer system. Previous systems use an API to communicate with an operating system, making operating system calls to analysis programs within a computer system. However, these systems are not able to identify information from other information sources within the computer system that are not accessible through an API, and thus are inadequate for addressing the technical problem rooted in computer technology that generally arises from the need to analyze programs and data, and/or to develop a migration plan, e.g., in support of migration of computing programs or other resources to a cloud-based computing infrastructure. Such information sources may include documents stored within the computer system, databases on the computer system and/or email clients. Further, these systems are not able to identify information on sources external to the computer system and combine the information from all the disparate systems into a concise format for review or into a proposed migration plan. The proposed system greatly reduces, and in some embodiments eliminates the need for manual review of programs and computer system that are to be upgraded or moved to a new infrastructure.
The programs comprise one or more active processes running on a device of the computer system. The programs may further comprise one or more software applications installed on a device of the computer system. The computer system may comprises one or more devices. For example, the computer system may comprise a single computer. In another example, the computer system may comprise one or more computers communicatively coupled to a server, e.g., via an Ethernet or other communications network. In yet another example, the computer system may comprise one or more mobile devices, one or more computers, and one or more servers.
As used herein, program analysis system 100 refers to one or more devices configured to interact with the target computer system 108. The program analysis system 100 may comprise any combination of hardware and software elements. In one embodiment, program analysis system 100 comprises conventional hardware and software typical of a general purpose computer, and further comprises special-purpose software in accordance with the present invention configuring the program analysis system 100 to communicate with a target system to obtain information related to one or more target programs within the target system, identify external information corresponding to the target program and combine that information to gain a better understanding of the target program. Program analysis system 100 is configured to analyze the target computer system to obtain first information for a target program, the first information characteristics corresponding to at least one of process information, application information and system information for a target program. Program analysis system 100 is further configured to review one or more data sources external to the target computer system to identify second information characteristics corresponding to the target program. Program analysis system 100 combines (or fuses) the first information characteristics and the second information characteristics. The combined (or fused) information may then be stored within a memory of the system and/or displayed by a display device. In one example, the fused information is displayed as a compilation within a graphical user interface (GUI) thereby providing the user with a greater understanding of the target program. The compilation includes information from disparate information sources, and as such provides a unitary compilation providing additional information previously unavailable via prior art systems. In one embodiment, program analysis system 100 is configured to generate an integrated display of fused information, e.g., within a single user interface window displayed in its entirety within a GUI window, without the need for scrolling, zooming of other adjustment of the view.
The program analysis system 100 may communicate with other computer systems, for example via a communication channel, network adapter 210. The program analysis system 100 may be associated with such other computer systems in a local area network (LAN) or a wide area network (WAN), and may operate as a server in a client/server arrangement with another computer, etc. Such configurations, as well as the appropriate communications hardware and software, are known in the art.
The program analysis system 100 software is specially-configured in accordance with the present invention. Accordingly, as shown in
Memory 212 may be configured to store data received from one or more of the components. For example, memory 212 may store first information characteristics identified by program analyzer component 102 and second information characteristics identified by information determiner component 104. Memory 212 may be further configured to store fused information generated by information fuser component 106. Information fuser component 106 may be configured to communicate with one or more external information sources via the communication channel to identify information characteristics that corresponds to the target program and store that information characteristics within memory 212. As such, Memory 212 is configured to store information from disparate sources. The information characteristics provided by program analyzer component 102 and information determiner component 104 may be stored such that are referenced to the target program and/or target system. The fused information may be stored such that it is associated with corresponding first and second information characteristics. Memory 212 may also store plans generated by recommendation engine 118 for the target program. The plan may include information corresponding to the type of project, cost information of the project and timeframe information of the project generated by project estimator component 110. Processor 202 may access the fused information and/or plan stored within memory 212 to be displayed on the display of display device 208 within a graphical user interface.
A computer program product stored on a tangible computer-readable medium for carrying out the methods identified above is provided also. The computer program product comprises computer readable instructions for carrying out the methods described herein. In one embodiment, an exemplary computer program product comprises a tangible computer-readable medium storing a software application comprising a first instruction set for causing a computing device to provide primary application functionality, and a second instruction for causing the computing device to provide access to a defined operational mode only after receipt of configuration settings from a back-end server, the configuration settings configuring the software application to enter the defined operational mode in response to receipt of predefined user input via an input device of the computing device.
The present invention may be understood with further reference to the exemplary simplified network environment 112 of
Program analyzer component 102 may be a software element running within a device of program analysis system 100 and may be communicatively coupled to the target computer system 108. In one embodiment, program analyzer component 102 comprises instructions stored in memory 212 which are executable on processor 202. Program analyzer component 102 may communicate with an API running on the target computer system 108 via a communication channel and use the API to identify first information characteristics regarding the target program and store those in memory 212. In other embodiments, program analyzer component 102 may comprise any combination of hardware and software used to interact with the target computer system 108. In one embodiment, program analyzer component 102 communicates with target computer system 108 via a communication channel to analyze the target computer system to identify information characteristics for the target program. The program analyzer component 108 may analyze at least one of process data, application data and system data within the target computer system 108 to identify first information for a target program. The target program corresponds to a program that is being evaluated for possible upgrading, redesigning, managing and/or further understanding. In one embodiment, the target program corresponds to one program of a set of programs that are being evaluated in concert. Program analyzer component 102 may communicate with the target computer system 108 via a communication channel to obtain a list of process information, application information and system information for a target program. Further, program analyzer component 102 may store information received from target computer system 108 within memory 212. Program analyzer component 102 may also communicate information to information determiner component 104 and/or information fuser component 106.
The first information may comprise any one of process data, application information and system information and may correspond to data on a single device of the target computer system or to multiple devices of the target computer system. In some embodiments, first information corresponds to information obtained from devices interacting with a program and devices which impact the program. Further, the first information may be acquired from devices running similar programs to the target program and other programs interacting with the target program. In one embodiment, program analyzer component 102 uses operating system functions to obtain additional information corresponding to said target program. The operating system functions can be called from a software agent running on the devices where the target program is running or by making operating system calls from another software agent that is not on the target computer system but has the ability to execute operating system function calls remotely and has access to a data repository that includes the results of operating system function calls. In other embodiments, information is gathered by executing programs that gather information about a process running within the target computer system. Examples of these programs include packet capture programs and other programs able monitor processes running on an operating system. Process information may include the name of the target program, any information embedded into the program, the DDL and shared libraries used by the program, performance information for the program, command lines used to execute the program, configuration files used by the program, network connection information, network bandwidth information, communication information and operating system calls made by the target program.
In various embodiments, information embedded in programs can be collected by calling functions provided by the operating system. This information may include a program description, program name, company name, service name, service display name and/or the location of the program on the corresponding file system. Function calls provided by the operating system may be used to collect the DLL and shared libraries used by the target program. The performance information may comprise memory, processor, network and/or storage resources which may be collected by calling operating system functions that provide performance metrics. In various embodiments, program analyzer component 102 is configured to use operating system calling functions to collect information corresponding to command lines used to execute the target program. Configuration files used by the target program may be acquired by first obtaining the command line arguments used to execute the program, detecting the configuration file in the command line arguments and then reading those files. Detecting configuration files can be achieved by testing each string in the command line arguments, or searching for typical file name formats, such as a string that ends with a period followed by a small number of characters.
Network connection information may include the server address, server port, client address, client port, transport protocol, duration, start time, and/or number of bytes sent by the server and the number of bytes sent by the client between the components of the target program and between this program and other programs. In one or more embodiments, program analyzer component 102 collects network connection information through the use of a program that can collect this data or through direct methods that can be found within the operating system. In various embodiments, program analyzer component 102 may be configured to collect network bandwidth information. The network bandwidth information may include short-term bandwidth and longer-term bandwidth, where these bandwidths may computed by tracking the number of bytes sent over different time periods. The network bandwidth information may be obtained by recording times when data packets are sent, or by communicating with an operating system on the target computer via the communication channel to call functions provided by the operating system to determine the amount of data being sent and received.
Details corresponding to communication with other programs may include programs that communicate with the target program, network connection information used for the communication between the programs, bandwidth used by the communication with other programs, latency of the responses which may be measured by timing the delay from when a message is sent to when a reply for the message is received and operating system function calls made by the target program. In one embodiment, latency of responses can be measured by observing when a request is made by the client process and observing the duration until the response arrives from the server. This can be measured by observing a message being sent from the client to the server, and then observing the response from the server. Operating system calls may be collected by using operating system tracing tools.
In various embodiments, program analyzer component 102 prompts the operating systems via the communication channel to provide a list of installed applications and corresponding information within the computer system. This list may correspond to applications that are installed on one or more devices of the computer system. The information for the installed applications may include a name of the vendor of the application, the location in the filesystem where the application is installed and/or the version of the application. As with information related to the processes, a list of installed applications may be acquired by using operating system functions that can be called from a software agent running on the target computer system devices where the target program is running. Additionally, operating system calls from another software agent that is not on the target computer system may be implemented. Such operating system calls have the ability to execute operating system function calls remotely and access a data repository that includes the results of operating system function calls.
Information determiner component 104 may be any combination of hardware and software elements. In one particular embodiment, information determiner component 104 comprises instructions stored in memory 212 which are executable on processor 202. Information determiner component 104 is configured to identify program information corresponding to the target program from various sources within the target computer system or external to the target computer system. These sources are described in greater detail below. Information determiner component 104 may be communicatively coupled to a plurality of external sources and the target computer system via a communication channel and acquire information characteristics from each of those sources and store the information characteristics within memory 212. In one embodiment, information determiner component 104 receives information characteristics pertaining to said target program to identify additional information stored within the target computer system and/or sources external from said target computer system.
In one or more embodiments, information determiner component 104 may receive first information characteristics from program analyzer component 102, the target computer system 106, memory 212 or another element within program analysis system 100. Information determiner component 104 may then use this the information characteristics to examine one or more information sources to identify additional information characteristics corresponding to the target program. Information determiner component 104 stores the additional information characteristics within memory 212. The one or more information sources may include the target computer system and/or sources external to the target computer system. In various embodiments, the external information sources include internet sources and other computer systems (e.g., website 114 and service provider 116). The other computer system may or may not be communicatively coupled to the target computer system. The information determiner component 104 may be configured to review documents, video files, image files and audio files through instructions executed on processor 202. These documents may be web pages, text, PDF, program source code, configuration files, or other formats. Further, the documents may include user's manuals for the target program, email messages or online forums about the target program, and web pages that discuss the target program. In one embodiment, the information includes video files that discuss the target program such as marketing material and tutorials. In other embodiments, this information includes information regarding programs related to the target program, that is, the subject matter of the information need not be directly about the target program. For example, the information can be about other programs that achieve a similar objective as the target program.
Information determiner 104 analyzes the information characteristics identified by program analyzer component 102 that are stored within memory 212 to augment the review performed by information analyzer 104. In various embodiments, information determiner component 104 receives the program information from program analyzer component 102 or memory 212 and generates one or more search parameters based on the program information. The search parameters may include any combination of process, application and system information. In one embodiment, information determiner component 104 generates a plurality of search parameters based on the program information. The searches may be tailored according to one or more information sources and/or type of information. For example, when examining emails stored within the target computer system, the information determiner component 104 may create a query string comprising the process and application information for the target program such that all emails the mention either the process and application information or obtained. Additionally, when reviewing external sources, the information determiner component 104 may look for additional information that not only references the process and application information but also system information to obtain documents that discuss any possible complications that other entities may have observed.
In some embodiments, information determiner component 104 receives information pertaining to the corresponding project for the target program. For example, information determiner component 104 may receive, from the target computer system or another source, a data instruction that the corresponding project pertains to upgrading the target program. As such, the information determiner component 104 may then communicate via the communication channel with the various sources to process and store within memory 212 information not only regarding the target program, but also regarding features of the upgraded program and store that information within memory 212. This information may include system parameters that meet the requirements of the upgraded program as well as any documentation of any difficulties others have faced when performing such an upgrade. This information may be used to ensure that the upgraded program will operate as expected within the computer system. In another embodiment, information determiner component 104 receives notification that the project corresponds to a change in the infrastructure of the target computer system. For such a project, the information determiner component 104 may search for information that not only discuss the target program, but also that discuss the target program with regard to the updated infrastructure. As can be seen the information analyzer is configured to perform more than a simple machine query. The information analyzer is configured to examine multiple information sources which may be external to the target computer system to obtain information based on the target program and, in some embodiments, also based on the corresponding project, and process and store that information within a memory.
In various embodiments, information identifier component 104 correlates information from various sources to provide access to information gathered by processing documents, video files, image files, and audio files. Information identifier component 104 acquires more than just basic information for a target program. Information identifier component 104 not only analyzes the target computer system, but also all other available information source to obtain information corresponding to the target program. In some instances, information identifier component 104 obtains information not only corresponding to the target program but also to a corresponding project. In one embodiment, information identifier 104 is configured to process the information such that is easier to comprehend, make conclusions and/or provide proposals regarding the overall project objective. Some examples of this type of information include summaries of text related to the program that have been derived from documents that include discussions about program being studied, short text strings of text or short segments of video and audio are extracted from documents and files that are relevant to user's objective, relevant terms extract from documents and links to documents, videos files, image files and audio files generated by a web search related to the program being studied. In one exemplary embodiment, the summaries are generated using well-known summary-generation techniques.
In one example, information identifier component 104 receives and processes a data control signal to determine that the object of the project corresponding to the target program is to migrate the target program to a different infrastructure. Such a project not only requires consideration of the target program parameters, but also the latency parameters of the target infrastructure. In this an example, information identifier component 104 communicates with the information sources via a network to identify documents and files that are searched for discussion on latency, and process and store within memory 212 the relevant segment of identified text, video files, and/or audio files. Information identifier component 104 may store summaries of one or more of the identified files within memory 212.
In one or more embodiments, the system includes a number of keywords. These keywords, if present, are extracted from the documents. Additionally, information identifier component 104 may communicate with the operating system of the information systems via a communication channel to instruct the operating system to use standard named entity recognition function calls to detect new terms. One or more links to documents, video files, image files and audio files may be generated by a web search related to the program being studied. These links are generated by performing web searches for one or more of vendor words, product words, process name, service name, service display names, etc.
In various embodiments, the information identifier component 104 communicates with the information sources via a communication network to identify, process and store user-generated information within memory 212. The user-generated information may be located within one or more of the devices of the target computer system or within an external information source. In one embodiment, user-generated information comprises information entered by users into the target computer system regarding the target program. This information may include information about the user, the time when the information was entered, and the source or some justification of the quality of the information entered by the user. In one example, the type of information that users may enter includes information gathered through other means (e.g., information collected directly from a device of target computer system and information collected by processing documents found on at an external source, such as a remotely-located server accessible via the Internet). In other embodiments, the information may include specific challenges faced with regard to the target program and corresponding project, methods to address these challenges and configuration settings for the target program, such as firewall settings, permissions (e.g., access control lists) and network configurations (e.g., SDN configurations). In various embodiments, the information may be related to the corresponding project. Such information would include estimated and/or actual number of hours it would take someone to complete a specific task of the project, pricing estimates of how much it cost to complete a specific task of the project, and the set of people or companies that have skills and/or experience regarding the target program and corresponding project. In various embodiments, the information comprises whether and under what conditions the target program should be moved as is, upgraded, or redesigned, as well as best practices related to the target program. In one or more embodiments, information regarding the best practices includes operating system requirements such as the required version of the operating system, computational requirements such as memory requirements, communication requirements such as a requirement to have low latency or high bandwidth between this program and other programs or users, or the lack of such requirements, storage requirements in terms of performance and reliability, security requirements such as firewall settings, whether the program should be in the DMZ, auditing requirements, and details about data confidentiality requirements.
Information fuser component 106 combines or fuses information characteristics obtained by program analyzer component 102 and information determiner 104. The fused information combines the information characteristics for a target program such that information characteristics from disparate sources is associated with each other and accessible from other components within program analysis system 100. Information fuser component 106 may be any combination of hardware and software elements. In one particular embodiment, information fuser 106 comprises a plurality of instructions executable on processor 202.
In various embodiments, as the information about a specific program comes from different sources, there are several challenges in fusing together this information. For example, when dealing with information from disparate sources there is a challenge to detect whether different pieces of information are related to a same program. If the information is related to the same target program, then that information should be presented as a single piece of information. Several methods are described below to detect whether information is from the same target program.
In various embodiments, information characteristics from various sources are fused such that it is associated within memory 212 and accessible by components of the program analysis system 100. For example, information obtained from the target computer system may be fused with information for one or more external sources described above. In another example, information from different external sources may be fused together and associated within memory 212. Fusing may be performed by accessing and processing information within memory 212 to identify documents, video files, image files, and audio files that contain the vendor words, vendor abbreviation, and product words derived from the process information and list of installed applications and creating an association between those documents and files with memory 212. In various embodiments, not all documents and files identified are necessarily fused. For example, documents are ranked and those documents that are determined to provide insufficient information beyond the what is already provided by other documents or files are excluded.
The fused information characteristics for a target program stored within memory 212 may include information collected from the target computer system and other computer systems where similar programs are running. In various embodiments, the fused information characteristics further comprises information characteristics submitted by a user of the target program on the target computer system, information characteristics submitted by users on other computer systems. This information characteristics may include document
In various embodiments, process information and application information of a program are fused by matching the name of the program and the vendor. The process information may be matched with information collected from other sources. The process information may comprise the filesystem path of where the target program is located, and the company name, the product, filesystem paths given within command line arguments of the target program, filesystem paths given within configuration files that are listed in the command line arguments and the above information for the parent process of this process. Information fuser component 106 may process information stored within memory 212 and identified by other components of the system to derive one or more of vendor words, vendor keywords, vendor abbreviations, and product words. In one embodiment, the vendor words comprise the company name and vendor words derived from filesystem paths. Filesystem paths may be in the form “*/vendor words/*” or “\vendor words\*”, where * represents some arbitrary text. In one embodiment, the vendor words are surrounded by slashes. In some embodiments, the filesystem path takes the form “*/vendor words*” or “*/vendor words*”, that is, where the vendor words are only proceeded by a slash. Vendor keywords may be words that are contained in the vendor name that do not appear frequently in the other vendor names. For example, keywords do not include words like “Inc.” and “Systems”. In other embodiments, vendor abbreviations are derived from vendor words by removing all but the first letter of each word or removing all but the first letter of each word and letters within the words that are capitalized. For example, vendor words “Software CompanyOne” has abbreviations SC and SCO. Similarly, IBM is abbreviated as IBM. In yet other embodiments, product words may comprise product name, and product words derived from filesystem paths. The Filesystem paths sometimes are in the form or “*/product words/*” or “\product words\*”, that is the product words are surrounded by slashes. In some cases, the filesystem path takes the form “*/product words*” or “*/product words*”, that is, where the product words are proceeded by a slash. In many embodiments, information fuser 106 matches a process (and the associated process information) with an installed application if a match of vendor keywords, vendor abbreviations, or product words is made.
Information fuser component 106 accesses memory 212 to processes the stored information characteristics from various devices and/or computer systems to identify and fuse information characteristics that are similar via processor 202. The fused information characteristics are then stored within memory 212. Information fuser component 106 stores the fused information characteristics within memory 212. The information characteristics may be from devices within the target computer system and/or from other computer systems, such as computer systems from other entities. Information fuser component 106 may process the information characteristics to identify similar information characteristics based on vendor keywords, vendor abbreviations, product words can be matched, allowing information collected from different devices and computer system to be fused. Specifically, information about a target program from a first device, computer system and/or customer can be fused with the information about the target program from a second device, system and/or another customer. In one example, information fuser component 106 receives information corresponding to the target program and information about other programs from memory 212 and processes the information to generate the fused information. As such, information from different users or entities regarding corresponding programs may be automatically fused.
In one exemplary embodiment, the display element may allow a user to navigate through a wide range of information in order to gain some specific knowledge and then record this knowledge. For example, the user can browse through the documents and videos related to network bandwidth required for the program being studied. A user may provide additional information, such as conclusions, comments and indications as to relative importance of the information, and display generation component 110 may update and refresh GUI window 602 based on the additional information.
In one embodiment, information characteristics provided by optional project estimator component 110 and/or optional recommendation engine 118 is fused with information characteristics within memory 212 by information fuser component 106 to generate updated fused information characteristics. Information fuser component 106 stores the updated fused information within memory 212, and display generation component 120 may process the updated fused information characteristics from memory 212 to generate an updated GUI window to be displayed on display device 208. In various embodiments, information fuser component 106 is able to fuse the information characteristics not only based on the available information but also based on the corresponding project for the target program. Information fuser component 106 may also process the fused data to detect possible problems and/or complexities for the target program, identify and rank entities having experience related to the target program and/or the corresponding project, and computation of costs and duration for the corresponding project. Further, information fuser component 106 may search the fused information to detect problems and complexities facing the target program, such as unexpected problems others have been faced when working with the target program. The indications may comprise at least one of whether others have added discussions of such problems in the user-added data, whether documents from external sources discuss problems faced when working with the program being studied, whether there is a lack of available guidance (such as documentation) about the program, and whether cost estimates of working with this program were small and whether these costs were significantly lower than the final cost. As is stated above, information fuser component 106 updates the fused information characteristics based on the additionally information characteristics and stores the updated fused information characteristics within memory device 212. Display generation component 120 may process the updated fused information characteristics from memory 212 and generate an updated GUI window to be displayed on display device 208.
Information fuser component 106 may identify and rank users having experience with the target program and the corresponding project from information stored within memory 212. Information fuser component 106 processes information within memory 212 to identify those that have worked with the target program as well as the user-added information added by others and corresponding company information. Further, information fuser component 106 detects which entities (i.e., other users and/or companies) have experience with the program at least partially based on the available information. The information may be ranked based on experience, cost estimates and user-added documentation about the program being studied.
Optional project estimator component 110 determines the cost and/or project duration estimates for a project that corresponds to the target program based on the information characteristics stored within memory 212. In various embodiments, project estimator component 110 is configured to determine estimates for at least one of the cost and/or project duration based on fused information characteristics stored within memory 212 . Project estimator component 110 uses costs estimates, actual costs, project duration estimates, and actual project duration obtained from different entities to estimate the project cost and duration. Project estimator component 110 provides the cost and/or proposed timeline data based on one or more of the cost and project duration estimate entered by the user, computing the average cost estimate and average project duration from all available information from other entities and computing the average cost estimate and average project duration based on that information. For example, cost information from other entities that have completed a similar project may be scaled based on the costs estimates and actuals reported by this entity.
Optional recommendation engine 118 automatedly develops and provides a migration or transition plan based on the fused information. For example, recommendation engine 118 receives and processes information from memory 212 to generate the migration or transition plan. The information may comprise information characteristics stored in memory 212 by either program analyzer component 102 and/or information determiner component 104. The information may alternatively or additionally comprise fused information characteristics stored by information fuser component 106. Recommendation engine 118 processes information characteristics for a target program stored within memory 212 to suggest a service provider and/or infrastructure. Recommendation engine 118 stores this suggestion within memory 212 and/or provides the suggestion to display generation component 120 to be displayed within GUI window 602. In one embodiment, project estimator component 110 process the suggestion provided by recommendation engine 118 to determine the estimated cost and/or project duration information. The estimated cost and/or project duration information may be stored to memory 212 where it may be accessed by display generation component 120 to be displayed as part of GUI window 602.
In one exemplary embodiment, recommendation engine 118 suggests a cloud computing provider and service based on information characteristics corresponding to the target program stored within memory 212. Recommendation engine 118 provides the suggested cloud computing provider and service to display generation component 120 (either directly or through memory 212) to be displayed within a GUI window 602 to a user. The displayed information may comprises one or more of the expected cost, project duration time frame and any possible issues that may be encountered. In such an embodiment, recommendation engine 118 processes the information characteristics corresponding to the target program to determine the requirements of each program that will be moved to a cloud platform and selects a corresponding platform based on those requirements. Recommendation engine 118 may access service provider information directly from a service provider system (service provider 116) via a communication channel or from information process and stored within memory 212. Recommendation engine 118 then analyzes information from one or more information sources via a communication channel or from memory 212 to determine if there are potential issues that may arise. Further, recommendation engine 118 may provide information that is determined to be possibly helpful during the migration to the new service such as documents or videos about the migration and/or information from other users regarding such a migration.
While certain embodiments according to the invention have been described, the invention is not limited to just the described embodiments. Various changes and/or modifications can be made to any of the described embodiments without departing from the spirit or scope of the invention. Also, various combination of elements, sets, features, and/or aspects of the described embodiments are possible contemplated even if such combinations are not expressly identified herein.
This application claims the benefit of priority of U.S. Provisional Patent Application No. 62/426,953, filed Nov. 28, 2016, the entire disclosure of which is hereby incorporated herein by reference.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US17/63454 | 11/28/2017 | WO | 00 |
Number | Date | Country | |
---|---|---|---|
62426953 | Nov 2016 | US |