Customizing a software application based on a user's familiarity with the software application

A software program is executed, the software program requiring one or more physical interactions with a user through an input/output (I/O) device, wherein each of the one or more physical interactions includes respective predefined dimensions indicating a proficiency in performing one of the one or more physical interactions. The one or more physical interactions are tracked. A familiarity profile for each of the one or more physical interactions is generated based on the respective predefined dimensions for each of the one or more physical interactions. The software program is customized based on the familiarity profile for each of the one or more physical interactions.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of tailoring content that is presented to a user of a computer system, and more particularly presenting customizing a software program for the user based on a metrics indicating the user's proficiency or familiarity with the computer system, the software program, as well as other software programs that are similar to the software program.

SUMMARY

Embodiments of the present invention provide systems, methods, and computer program products for customizing a software application based on a user's familiarity with the software program. A software program is executed, the software program requiring one or more physical interactions with a user through an input/output (I/O) device, wherein each of the one or more physical interactions includes respective predefined dimensions indicating a proficiency in performing one of the one or more physical interactions. The one or more physical interactions are tracked. A familiarity profile for each of the one or more physical interactions is generated based on the respective predefined dimensions for each of the one or more physical interactions. The software program is customized based on the familiarity profile for each of the one or more physical interactions.

DETAILED DESCRIPTION

A computer system, such as mobile device, can include a number of software programs (e.g., an operating system, a text messaging service, web browser, a picture sharing application, etc.) and can receive interactions. A user of a computer system can perform tasks by interacting with software programs of the computer system. A plurality of interactions can be performed by a user with a software program, such that the software program processes the interactions to accomplish a task.

Interactions performed by a user with a software program may indicate a user's familiarity with the software program. For example, when interacting with an e-mail application, a first user may send an e-mail by navigating a user interface (UI) of the e-mail application, providing content (e.g., a typed message, file attachments, picture attachments, etc.) for the e-mail, and designating at least one recipient for the e-mail. Whereas, a second user may first reference a help menu of the e-mail application, navigate the UI of the e-mail application for a longer time duration, provide content for the e-mail, and designate the recipient for the e-mail, but only provides a local portion of an e-mail address without the domain portion of the e-mail address. Accordingly, the first user's interactions indicate that the first user is familiar with the e-mail application, compared to the second user's interactions which indicate that the second user is not familiar with the e-mail application. The first user may find that tutorials and prompted help tooltips hinder on the first user's experience and usability when interacting with the e-mail application. Whereas, the second user may require additional tutorials and prompted help tooltips to improve on the second user's experience and usability when interacting with the e-mail application.

Familiarity profiles may be generated for users based on user integrations with an application. Familiarity profiles that are generated for the first user may indicate that the first user is familiar with the e-mail application, and familiarity profiles that are generated for the second user may indicate that the user is not familiar with the e-mail application. It may be advantageous to provide a software program to a user of a computer system that is customized based on a user's familiarity profile for a software program. Developers of software programs can use familiarity profiles as a feedback metric to improve future releases the software programs.

Embodiments of the present invention provide methods, systems, and computer program products for generating user familiarity profiles for each program software of a computer system. Embodiments of the present invention provide the user with program software that have been customized to improve a user's experience with the program software, based on the user's familiarity profiles.

FIG. 1is a functional block diagram of customization system100, in accordance with an embodiment of the present invention. Customization system100includes client computer system110and computer system130, interconnected via network120. Client computer system110and computer system130can be desktop computers, laptop computers, specialized computer servers, or any other computer systems known in the art. In certain embodiments, client computer system110and computer system130represent computer systems utilizing clustered computers and components to act as a single pool of seamless resources when accessed through network120. In certain embodiments, client computer system110and computer system130represent virtual machines. In general, client computer system110and computer system130are representative of any electronic devices, or combination of electronic devices, capable of executing machine-readable program instructions, as described in greater detail with regard toFIG. 5. Customization system100can include a greater or lesser number of computer systems similar to that of client computer system110and computer system130that are connected via network120. In other embodiments, client computer system110and computer system130may be implemented in a cloud computing environment, as described in greater detail with regard toFIGS. 6 and 7.

Network120can be, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination of the two, and include wired, wireless, or fiber optic connections. In general, network120can be any combination of connections and protocols that will support communications between client computer system110and computer system130, in accordance with a desired embodiment of the invention.

Client computer system110represents a platform that processes interactions performed by a user, such that the user can interact with software programs112to accomplish desired tasks. An “interaction,” or a physical interaction, as used herein, refers to a category of action performed by a user on client computer system110and components therein. For example, interactions can include: user input, help usage, error recovery, task completion, and tutorial completion, as described in greater detail below.

Client computer system110can be configured with a display device, such as a touch screen display, that displays a user interface (UI) of one of software programs112. Client computer system110can be equipped with other peripheral devices, such as a keyboard, microphones, headphones and speakers, accelerometers and tilt-sensors, cameras, game controllers, image scanners, projectors, printers, digitizing functionality, and other input and output peripheral devices.

Software programs112represent computer programs configured to perform a group of coordinated functions, tasks, or activities for a user. Classifications of software programs112can include: operating systems that manage hardware resources of client computer system110and provide services to other software programs112, business software (e.g., word processors, spreadsheets, etc.), enterprise software (e.g., resource planning systems, supply chain management software, etc.), content access software (e.g., social media applications, web browsers, file sharing applications, etc.), educational software, simulation software, media development software, and entertainment software (e.g., video games, media players, etc.).

Two software programs112may be considered related, if both software programs112are in the same category and have similar primary functions. In one example, two software programs112, such as two different media players, may be considered related because the two software programs112are in the same category (i.e., entertainment software), and share similar primary functions (e.g., play recorded media). In another example, two software programs112, such as a media player and a video game, may not be considered related, even though both software programs112are entertainment software, because they do not share similar primary functions. In one embodiment, two software programs112may be considered related if each of software programs112have the same or closely related developers. For example, a holding company may develop a first software program112, such as a word processor, and a subsidiary company of the holding company may develop a second software program112such as a file sharing application. In this example, the word processor and the file sharing application may be considered related because the developers of the first and second software programs112are closely related (i.e., part of a conglomerate), even though both software programs112are under different categories.

Computer system130represents a platform that retrieves and processes information from client computer system110. In this embodiment, computer system130includes monitoring module132, familiarity module134and customization module136. In another embodiment, components of computer system130can be included in client computer system110. In yet another embodiment, components of computer system130can be a part of more than one computer system130, such that each computer system130is configured to exchange information through network120.

Monitoring module132represents program functionality for receiving and tracking interactions performed by a user on each of software programs112. Monitoring module132monitors interaction dimensions for each interaction performed by a user on a particular software program112. An “interaction dimension,” or a predefined dimension as used herein refers to an attribute of an interaction, indicating a user's proficiency in performing the interaction.

For example, monitoring module132can monitor interaction dimensions for an interaction, such as user input, where the interaction dimensions may include: a user's typing speed, a user's typing accuracy, and a user's typing method (e.g., predictive text input, gestures, etc.). Monitoring module132can monitor interaction dimensions for an interaction, such as help usage, where the interaction dimensions may include: a frequency of referencing a help menu, time spent referencing the help menu, complexity of topics referenced in help menu. Monitoring module132can monitor interaction dimensions for an interaction, such as error recovery, where the interaction dimensions may include: a method used for error recovery, frequency of contacting technical support. Monitoring module132can monitor interaction dimensions for an interaction, such as task completion, where the interaction dimensions may include: a number of tasks completed, a number of functions utilized by a user, a time duration to complete each a pre-defined task. For example, a time duration may include a start time where one of software program112becomes a focus window of an operating system, and an end time where a pre-defined task is completed. Monitoring module132can monitor interaction dimensions for an interaction, such as tutorial completion, where the interaction dimensions may include: a time duration to complete a tutorial, a user's accuracy while completing a tutorial, a number of times a tutorial was referenced after an initial completion. In this embodiment, monitoring module132stores interaction dimension information in a storage repository of computer system130.

Familiarity module134represents program functionality for generating a familiarity profile for each interaction performed by a user on each of software programs112. A “familiarity profile,” as used herein, indicates a user's familiarity for an interaction with one of software programs112. In this embodiment, familiarity module134processes the stored interaction dimension information to generate a familiarity profile for each interaction performed by a user. For example, interaction dimension information for an interaction, such as user input, can indicate a user's typing speed is 45 words/minute, a user's typing accuracy is 78% (based on a number of times a typo was corrected either through autocorrect, or manually by the user), and a user's typing method involves one advanced function (e.g., predictive text input). Accordingly, familiarity module134processes stored interaction dimension information for each interaction to generate one familiarity profile.

Once familiarity module134generates a user's familiarity profile, familiarity module134generates an overall familiarity metric of the user for software program112. An “overall familiarity metric,” as used herein, refers to a value generated by familiarity module134that indicates a user's overall familiarity with one of software programs112. For example, a user's overall familiarity metric for a first software program112may be greater than the user's second overall familiarity metric for a second software program112, indicating that the user is more familiar with the first software program112compared to the second software program112. In this embodiment, familiarity module134generates a user's familiarity metric for each software program112that the user interacts with, based on the user's familiarity profiles, as described in greater detail below. Familiarity module134can store generated familiarity profiles and generated overall familiarity metrics in a storage repository of computer system130.

In one example, for a user interacting with a particular software program112, familiarity module134may generate five familiarity profiles and an overall familiarity metric. A first of the five familiarity profiles may indicate the user's familiarity with user input, a second may indicate the user's familiarity with help usage, a third of may indicate the user's familiarity with error recovery, a fourth may indicate the user's familiarity with task completion, and a fifth may indicate a familiarity with tutorial completion. Familiarity module134can generate the user's overall familiarity metric by using the five familiarity profiles.

Customization module136represents program functionality for customizing software programs112. A “customization,” as used herein, refers to a modification to a UI graphical element of a particular software program112, a modification to instructional content of the particular software program112, and/or another modification applied to the particular software program112, based on a user's familiarity profile for the particular software program112.

Customization module136can reference a user's overall familiarity metric for a particular software program112in a storage repository of computer system130to determine an extent to customize the particular software program112. For example, customization module136may reference a user's first and second overall familiarity metric for a first software program112and second software program112, respectively. In this example, the user's first overall familiarity metric may be greater than the user's second overall familiarity metric, whereby customization module136determines that the second software program112may require more customization compared to the first software program112.

In this embodiment, customization module136identifies one or more customizations to apply to a particular software program112for a user of client computer system110, based on the user's familiarity profiles for the particular software program112. For example, customization module136can provide additional instructional content via tooltips, tutorials, additional menus or other additional UI graphical elements in a particular software program112for users having low familiarity with the particular software program112. Alternatively, customization module136can remove instructional content from the particular software program112for users having high familiarity with the particular software program112.

In one example, customization module136may determine that a user has low familiarity with user input interactions on a particular software program112, based on a user's familiarity profile for user input interactions. Customization module136can provide additional instructional content describing faster methods of user input for the particular software program112, such as user input shortcuts. In another example, customization module136may determine that a user has high familiarity with user input interactions on a particular software program112, based on a user's familiarity profile for user input interactions. Customization module136can remove additional instructional content, such that the user with high familiarity with user input interactions is not presented with instructional content that is already known by the user.

In one example, customization module136may determine that a user has low familiarity with help usage interactions on a particular software program112, based on a user's familiarity profile for help usage interactions. Customization module136can provide additional instructional content describing how to properly navigate help menus for the particular software program112. In another example, customization module136may determine that a user has high familiarity with help usage interactions on a particular software program112, based on a user's familiarity profile for help usage interactions. Customization module136can remove additional instructional content, such that the user with high familiarity with help usage interactions is not presented with instructional content that is already known by the user, or can provide additional instructional content describing more advanced help usage functions.

In one example, customization module136may determine that a user has low familiarity with error recovery interactions on a particular software program112, based on a user's familiarity profile for error recovery interactions. Customization module136can provide additional instructional content describing how to properly perform error recovery in the particular software program112. In another example, customization module136may determine that a user has high familiarity with error recovery interactions on a particular software program112, based on a user's familiarity profile for help usage interactions. Customization module136can remove additional instructional content, such that the user with high familiarity with error recovery interactions is not presented with instructional content that is already known by the user, or can provide additional instructional content describing more advanced error recovery functions.

In one example, customization module136may determine that a user has low familiarity with task completion interactions on a particular software program112, based on a user's familiarity profile for task completion interactions. Customization module136can provide additional instructional content describing how to properly perform more advanced tasks and/or faster methods for performing basic tasks in the particular software program112. In another example, customization module136may determine that a user has high familiarity with task completion interactions on a particular software program112, based on a user's familiarity profile for task completion interactions. Customization module136can remove additional instructional content, such that the user with high familiarity with task completion interactions is not presented with instructional content that is already known by the user.

In one example, customization module136may determine that a user has low familiarity with tutorial completion interactions on a particular software program112, based on a user's familiarity profile for tutorial completion interactions. Customization module136can provide additional instructional content describing how to properly complete a tutorial in the particular software program112, an option to recomplete the tutorial, or provide a modified tutorial that focuses on the user's deficiencies. In another example, customization module136may determine that a user has high familiarity with tutorial completion interactions on a particular software program112, based on a user's familiarity profile for tutorial completion interactions. Customization module136can remove an option to participate in a tutorial for the user having high familiarity with tutorial completion interactions.

In another embodiment, customization module136may transmit a user's overall familiarity metric and a user's familiarity profiles for a particular software program112, to developers of the particular software program112. The developers may use the received overall familiarity metric and familiarity profiles as feedback to address potential issues with the particular software program112. Accordingly, customization module136may receive customizations from a developer of a particular software program112, whereby customization module136applies the received customizations to the particular software program112.

In yet another embodiment, customization module136may customize a particular software program112, based on a user's familiarity profile for another software program112that is related to the particular software program112. For example, customization module136may customize a picture sharing application for a user, based on the user's familiarity profiles for the picture sharing. In this example, if the user downloads a related software program112(e.g., another picture sharing application), customization module136can automatically customize the newly downloaded related software program112, based on the user's previously generated familiarity profiles for first picture sharing application.

FIG. 2is a flowchart illustrating operational steps for generating an overall familiarity metric for a particular software program112, in accordance with an embodiment of the present invention. Monitoring module132monitors interaction dimensions for each category of interaction performed by a user on the particular software program112(step202). Monitoring module132can store the interaction dimension information for subsequent processing. Familiarity module134uses the stored interaction dimension information to generate a familiarity profile for each type of interaction (step204). For example, familiarity module134can generate one familiarity profile for each of five categories of interaction (e.g., user input, help usage, error recovery, task completion, and tutorial completion). Familiarity module134uses the user's familiarity profiles to generate a user's overall familiarity metric for the particular software program112(step206).

FIG. 3is a flowchart illustrating operational steps for monitoring interaction dimensions for a category of interactions performed by a user on a particular software program112, in accordance with another embodiment of the present invention. Monitoring module132monitors a typing accuracy of the user (step302). For example, a monitored typing accuracy for the user may be 71%. Monitoring module132monitors a typing speed of the user (step304). For example, a monitored typing speed for the user may be 80 words per minute. Monitoring interval monitors a user's method of typing (step306). For example, the user may use conventional user input instead of taking advantage of predictive text. Monitoring module132stores the interaction dimension information for subsequent analysis in a storage repository of computer system130(step308).

FIG. 4is a block diagram for generating overall familiarity metric450, in accordance with another embodiment of the present invention. In this embodiment, familiarity profiles410include user input412, help usage414, error recovery416, task completion418, and tutorial completion420. Familiarity module134applies weighting parameters430to each of familiarity profiles410, such that weighting432is applied to user input412, weighting434is applied to help usage414, weighting436is applied to error recovery416, weighting438is applied to task completion418, and weighting440is applied to tutorial completion420. For example, each of familiarity profiles410may be equally weighted. Accordingly, each of weighting parameters430applies a weight of 0.2 to each of familiarity profiles410. Once each of familiarity profiles410is weighted with the respective weighting parameters430, familiarity module134sums the weighted familiarity profiles410, to generate overall familiarity metric450.

FIG. 5is a block diagram of internal and external components of the computer systems ofFIG. 1, in accordance with an embodiment of the present invention. It should be appreciated thatFIG. 5provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. In general, the components illustrated inFIG. 5are representative of any electronic device capable of executing machine-readable program instructions. Examples of computer systems, environments, and/or configurations that may be represented by the components illustrated inFIG. 5include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, laptop computer systems, tablet computer systems, cellular telephones (e.g., smart phones), multiprocessor systems, microprocessor-based systems, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices.

Computer system500includes communications fabric502, which provides for communications between one or more processors504, memory506, persistent storage508, communications unit512, and one or more input/output (I/O) interfaces514. Communications fabric502can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric502can be implemented with one or more buses.

Memory506and persistent storage508are computer-readable storage media. In this embodiment, memory506includes random access memory (RAM)516and cache memory518. In general, memory506can include any suitable volatile or non-volatile computer-readable storage media. Software is stored in persistent storage508for execution and/or access by one or more of the respective processors504via one or more memories of memory506.

Persistent storage508may include, for example, a plurality of magnetic hard disk drives. Alternatively, or in addition to magnetic hard disk drives, persistent storage508can include one or more solid state hard drives, semiconductor storage devices, read-only memories (ROM), erasable programmable read-only memories (EPROM), flash memories, or any other computer-readable storage media that is capable of storing program instructions or digital information.

The media used by persistent storage508can also be removable. For example, a removable hard drive can be used for persistent storage508. Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer-readable storage medium that is also part of persistent storage508.

Communications unit512provides for communications with other computer systems or devices via a network (e.g., network120). In this exemplary embodiment, communications unit512includes network adapters or interfaces such as a TCP/IP adapter cards, wireless Wi-Fi interface cards, or 3G or 4G wireless interface cards or other wired or wireless communication links. The network can comprise, for example, copper wires, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. Software and data used to practice embodiments of the present invention can be downloaded through communications unit512(e.g., via the Internet, a local area network or other wide area network). From communications unit512, the software and data can be loaded onto persistent storage508.

One or more I/O interfaces514allow for input and output of data with other devices that may be connected to computer system500. For example, I/O interface514can provide a connection to one or more external devices520, such as a keyboard, computer mouse, touch screen, virtual keyboard, touch pad, pointing device, or other human interface devices. External devices520can also include portable computer-readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. I/O interface514also connects to display522.

Display522provides a mechanism to display data to a user and can be, for example, a computer monitor. Display522can also be an incorporated display and may function as a touch screen, such as a built-in display of a tablet computer.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Hybrid cloud: the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds). A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.