Automatically upgrading and finding components similar to legacy versions

Disclosed herein are system, method, and computer program product embodiments for automatically upgrading and finding components similar to legacy versions. In an embodiment, an automatic upgrading system may determine a first pattern for a first graphical component of a computing platform, identify a first attribute for the first pattern. A second graphical component may be searched by similar attribute as the first graphical component to replace the first graphical component for the computing platform.

BACKGROUND

A computing platform can have millions of components to provide various contents to its users and perform different functions. These components may include web pages, applications, or other underlying software, which may be created individually by developers with different visual appearance and functionality. The computing platform may be out of date after certain period of time and then it may need to be upgraded. While developers may be able to upgrade some components of the computing platform individually through manual work, upgrading millions of these components on the computing platform manually by developers may take too much time and effort to make it viable.

DETAILED DESCRIPTION

Provided herein are system, apparatus, device, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for automatically upgrading and finding similar components to legacy versions.

Different components can be created on a computing platform by developers to present varieties of contents and perform various functions, and historically, when the computing platform is out of date, developers may need to get in each component and update the code, or upgrade with a similar component and maintain its functionality. Individual component may be manually upgraded in this way. However, developers may not be able to manually upgrade millions of components on a computing platform, and they may not be able to continually upgrade these components to prevent them from ever going out of date. Embodiments of the present disclosure, among other things, describe an apparatus, device, method and/or computer program product to automatically determine a pattern for a component of a computing platform, identify an attribute of the pattern, search for a new similar component based on the attribute, and replace the component with the new similar component. Automatically upgrading and finding similar components to a legacy version of a component may save significant amount of time and effort to upgrade millions of components on a computing platform. And it may also mitigate duplication errors and/or variations in manually upgrading these components.

FIG. 1illustrates a hierarchical relationship of the elements on a computing platform, according to some embodiments. The following terms may be used to describe the elements in representative computing platforms:

Computing platform: an environment in which a piece of software is executed, such as a web browser and associated application programming interfaces (API), or a customer relationship management (CRM) system for managing company's relationships and interactions with customers and potential customers.

Graphical component: elements in a computing platform that has a visual appearance, for instance, different elements on a web page, like a piece of article, a message of comment, a dropdown menu.

Pattern: a representation of a graphical component, such as text, an icon, an image, a button, a link, or a label.

Attribute: a piece of information that determines the properties or contents of a pattern, including visual characteristic, data capacity, data type, context, etc.

In one example, a computing platform101may have a graphical component103, and graphical component103may be represented by a pattern105. Pattern105may have an attribute107to determine the property of pattern105.

According to an exemplary embodiment, computing platform101may be a web browser, and graphical component103may be a comment message on a website of the web browser. Graphical component103may be broken down into a collection of patterns, including pattern105such as a text box. Pattern105of a text box may have multiple attributes, for instance, attribute107of data type for what data can be shown, or another attribute of data capacity for the size of data that pattern105may allow.

In some embodiments, computing platform101, such as the web browser, may be out of date and need to be upgraded. And graphical component103, for example, a comment message on the website of the old version web browser, may also need to be replaced with a new version of the graphical component. The pattern of the comment massage may be classified as a text box, and text box pattern may have an attribute of data type, for example text data. According to the attribute of the pattern, the text box may only allow text data but no image data. In replacing of graphical component103, a new version of graphical component for comment message may be searched automatically in the new version of web browser based on the data type of the text box, e.g., text only and no image. As such, a new graphical component with an equivalent or similar pattern may be identified to replace graphical component103.

FIG. 2illustrates an example component200on a computing platform, according to some embodiments. Component200may have several elements, for example, SRC image201, account205, and text box207. The patterns for each element of component200may be classified and analyzed. And these patterns may have their own attribute. Elements of component200may be classified as a label, a link, text, an icon, an image, a button, and/or an input field. The attributes of the patterns may be identified, such as data capacity, data type, and visual characteristic. And the data type may be identified from the data shown up in component200. According to some embodiments, the location of each pattern in component200, the context of each pattern, and the nearest visual patterns adjacent to one pattern may be determined by out-of-the-box computer vision software.

In one exemplary embodiment, component200may be a message left on a website from one account. Three patterns of component200may be determined: SRC image201, which specifies the uniform resource locator (URL) of the image, account205, which has the account URL address for the person who leaves the message, and text box207displaying the text of the message. And the attributes of these patterns are identified for searching, for instance, the visual characteristic of SRC image201, or data type of text box207. The data type of text box207may be text data, and it may have data capacity of 1000 words. The visual characteristic of text box200may be flexible container-like box for text input, which could be adjusted based on the message content in it. And the flexible box layout may be determined based on a set of absolute positioned boxes nearby. With the upgrade of the platform, a new graphical component may be searched according to the attributes of the three determined patterns of component200: SRC image201, account205and text box207. The new graphical component would have similar attributes of the patterns for graphical component200, such as similar visual appearance for SRC image201, same data type and data capacity for text box207. The new component may replace component200on account of sharing similar patterns of SRC image, an account, and a text box.

According to some embodiments, image detection, classification of each pattern, and identification of nearest neighbors may be performed using a data structure, for example, k-dimensional tree (k-d tree) data structure. According to some embodiments, new component may be searched according to its visual similarity to the current version of the component. And identifying a visually similar component may be realized by neural network.

According to some embodiments, the data that represented by component200may also be represented by the new component. For instance, SRC image201in new component may specify the same URL as the URL in replaced component200, and the message in text box207in new component may have the same content as the message in replaced component200.

In some other embodiments, to replace every detail by a new version of component, all the elements of component200may be identified for the search of new component. For example, the icons of211,215, and219, buttons of213,217,221, and209, as well as text boxes203and223may be determined in addition to the three patterns of SRC image201, URL205, and text box207. The attribute of text box203may be identified as a string of text “5 days ago.”

FIG. 3illustrates an example300of multiple variations for a pattern, according to some embodiments. For example, component310may have several patterns: text307“Alan M. and 1 other voted for this review”, and clickable buttons309,311and313. Each button may also have a label, an icon and a number indicating the times that the button has been clicked. In one example, button309may have an icon306, a label “useful” and number “2”. The number “2” may indicate that button309has been clicked twice as useful review, corresponding to the message that “Alan M. and 1 other voted for this review”. Button311may have an icon308and a label “funny”. There may be no numbers on button311, indicating not clicked yet. Similarly, button313may have an icon312and a label “cool”.

According to some embodiments, a pattern320may be determined to represent component310. A container314may represent text307“Alan M. and 1 other voted for this review”, with highlight “Alan M. and 1 other” represented by a container309. These containers may be flexible box for text input, which could be adjusted based on the message content in it. For example, container309may become larger if longer text is highlighted. Another container311may represent button309, with icon306represented by container315, name of “useful” by container317, and number “2” by container319. Similarly, buttons311and313may also be represented by respective containers of pattern320. Therefore, pattern320may represent every patterns of component310. However, there may be small variations for component310, such as different length of bolded text, or different number of clicks on button309,311and313. For example, bolded text of text307may be just “Alan”, and there may be only 1 click on funny button311. This variation may be captured by pattern330. In another example, bolded text of text307may be “Alan M. and 5 other”, and there may be 3 clicks on useful button309, 1 click on funny button311and cool button313. This variation may be captured by pattern360. Patterns330,340,350,360,370, and380may represent different variations of component310. Instead of being determined as different patterns, these variations may be determined as a group of patterns similar to pattern320. According to some embodiments, the variations between patterns320,330,340,350,360,370, and380may be captured, same containers may be grouped and abstracted into one pattern for different states of component310. For example, the variations of patterns320,330,340,350,360,370, and380may be captured by a group pattern to represent different states of component310.

In some embodiments, similar patterns may be grouped into one pattern using similarity metrics, such as jaccard similarity, which measures the size of the intersection divided by the size of union of the sample sets, or similarity metric305, which is an abstract of the elements of a pattern. The group pattern may have a group ID and it may be a parent of the sub-patterns that are clustered by similarity metrics, for instance, jaccard similarity of these sub-patterns. According to some embodiments, patterns320,330,340,350,360,370, and380may be grouped into one group pattern with pattern ID209. As such, group pattern209may be a parent of patterns320,330,340,350,360,370, and380, and it may also have parents of group patterns205,211,214,216,218, and227. Automatically capturing different variations of patterns and grouping these patterns may mitigate the risk of duplication errors and/or variation in manually updating components in a computing platform.

FIG. 4illustrates examples of replacing different components of a computing platform400, according to some embodiments. In one example, computing platform400may have graphical components410and450. Graphical component410may be a tree structure report having different fields, such as Accounts & Contacts, Opportunities, and Activities. These fields may be expandable and have subfields. For instance, Accounts & Contacts filed may include subfields of account owner, account name, and account site. Opportunities filed may have opportunity name, account name, close data, stage, confidence, amount, and contact. In the same vein, these subfields may have their subfields. By clicking on one field, a preview of its content may be demonstrated in a table format. For example, after clicking on Accounts & Contacts field, preview of the account report content450may be shown next to tree structure report410.

According to some embodiments, the patterns of graphical components410and450may be determined for upgrading of platform400. Then these patterns may be analyzed to identify their attributes, such as visual characteristic, data capacity, context, etc. A new graphical component may be searched for based on these attributes to replace previous component. And the new graphical component could represent the same data that previous graphical component represents.

For example, graphical component410may be determined to have a tree structure pattern with expandable fields and subfields. New graphical component430may be chosen to replace previous graphical component410, based on what data is shown and how the data is shown in graphical component410. Graphical component430may have visual similarity of a tree structure as graphical component410, and it may have tree branches under the tree to replace the subfields of graphical component410. Therefore, new graphical component430would have visual similarity to old graphical component410, and would show the same data as old graphical component410. In the same manner, graphical component450may be determined to have a data table pattern. New graphical component470may be a data table with visual similarity. In some embodiments, graphical component470may not only be able to represent the data for old graphical component450, but also be able to represent the data for other fields of component410, for example, opportunities. Opportunities and accounts & contacts have different number of subfields. New graphical component470may be flexible and have the capability of showing the data table needed for different fields of old graphical component410.

In some embodiments, there may be several available patterns of new graphical component. These options could be presented for a user to choose. In some embodiments, new graphical component may not work well on a user's device that uses the new version computing platform. Previous graphical component may be automatically switched back to adapt to the user's device.

FIG. 5illustrates a method500demonstrating example operations to automatically find similar components and upgrade them. Method500may be performed by processing logic that can comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executing on a processing device), or a combination thereof. It is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously, or in a different order than shown inFIG. 5, as will be understood by a person of ordinary skill in the art(s).

In510, a first pattern for a first graphical component of a computing platform is determined. A pattern may be a label, link, text, icon, image, button, or input. Referring toFIG. 4, graphical component410may be analyzed and a pattern is determined, such as tree structure.

In520, an attribute may be identified for the first pattern. Referring toFIG. 4, graphical component410may have a tree structure pattern. The attribute of the tree structure pattern may be identified, including data capacity, and visual characteristic. Tree structure pattern of component410may have multiple levels of fields and subfields. These fields may be expandable or collapsible. All these attributes may be all identified for graphical component410.

In530, a new graphical component having a similar attribute may be searched. Referring toFIG. 4, new graphical component430may be found and determined based on a similar visual characteristic. Graphical component430may be a tree structure with multiple tree branches to expend or collapse. It may be able to present the same data that presented by graphical component410. According to some embodiments, a group of components with similar attribute may be provided to a user to choose for a new graphical component.

In540, the old graphical component may be replaced by the new graphical component, which may be searched and determined by an attribute of the patterns of the graphical components. Referring toFIG. 4, new graphical components430and470may replace previous graphical components410and450, respectively, based on their attributes, such as tree structure, data table. According to some embodiments, new graphical component may not work well on a user's device that uses the computing platform. Old graphical component may be automatically switched back to adapt to the user's device.

FIG. 6is an example computer system useful for implementing various embodiments. Various embodiments may be implemented, for example, using one or more well-known computer systems, such as computer system600shown inFIG. 6. One or more computer systems600may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.

Computer system600may include one or more processors (also called central processing units, or CPUs), such as a processor604. Processor604may be connected to a communication infrastructure or bus606.

Computer system600may also include user input/output device(s)602, such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructure or bus606through user input/output device(s)602.

Computer system600may also include a main or primary memory608, such as random access memory (RAM). Main memory608may include one or more levels of cache. Main memory608may have stored therein control logic (i.e., computer software) and/or data.

Computer system600may also include one or more secondary storage devices or memory610. Secondary memory610may include, for example, a hard disk drive612and/or a removable storage device or drive614. Removable storage drive614may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.

Removable storage drive614may interact with a removable storage unit618. Removable storage unit618may include a computer usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage unit618may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Removable storage drive614may read from and/or write to removable storage unit618.

Secondary memory610may include other means, devices, components, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system600. Such means, devices, components, instrumentalities or other approaches may include, for example, a removable storage unit622and an interface620. Examples of the removable storage unit622and the interface620may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface.

Computer system600may further include a communication or network interface624. Communication interface624may enable computer system600to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number628). For example, communication interface624may allow computer system600to communicate with external or remote devices628over communications path626, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system600via communication path626.

In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system600, main memory608, secondary memory610, and removable storage units618and622, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system600), may cause such data processing devices to operate as described herein.