Method and system for dynamically synthesizing a computer...

Data processing: artificial intelligence – Having particular user interface

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C706S047000, C706S050000, C707S793000, C345S960000

Reexamination Certificate

active

06188999

ABSTRACT:

BACKGROUND
Technical Field
The invention relates generally to the field of providing computer programs, and, more specifically, to the field of dynamically synthesizing computer programs based on user context data.
BACKGROUND OF THE INVENTION
Computer users utilize a variety of application programs for many different purposes, which include producing documents, art, and music; communicating; learning and researching; transacting business; and pursuing recreation. Such application programs are carefully designed to be useful to and usable for what their designers anticipate to be the application programs' typical users. The broad, multidimensional diversity of modern computer users, however, makes it increasingly difficult to identify and design application programs for typical users. The diversity of modern users further ensures that many users will diverge significantly from any users identified as typical. As a result, many conventional applications are ill-suited to many of their users, not to mention their potential users.
Some conventional application programs may be tailored, in certain limited senses, to a particular user. First, some conventional application programs utilize different data resources depending on the value of a variable which may be said to be associated with a user. For instance, some programs display a text string in different languages based on the value of a current language variable. As another example, some programs display different times based on the value of a current time zone variable. This approach to tailoring application programs to a user does not affect how a program functions, but rather just which data it presents in a given situation.
Second, some conventional application programs permit a user to set run-time options that specify whether the application program provides certain optional features. For example, some application programs for drawing permit their users to select whether the application program should provide the feature of displaying a grid of lines intended to help the user to align portions of a drawing. This approach to tailoring application programs relies on an explicit command from the user to provide the feature or not provide the feature, which can make tailoring the performance of an application in this way time consuming and frustrating for users, often involving significant trial and error.
Given the limits of conventional approaches to tailoring application programs to particular users, a flexible and extensible system for dynamically generating computer programs and portions thereof, including various types of data artifacts, based upon relevant user information would have significant utility.
SUMMARY OF THE INVENTION
The present invention provides a software facility for dynamically synthesizing an application that is customized for the user of the application based on characteristics, or “attributes,” of the user in response to a request to execute the application. As an example, the context data for each user may be the user's age group and occupation. When a particular user requests to execute the application, the facility uses the requesting user's characteristics to determine which behaviors the application should exhibit for the requesting user. An example of such an application is a drawing program that allows the user to rearrange the contents of a drawing in various ways. For a user whose age group is “child,” the facility preferably determines that the drawing application should exhibit a fun dragging behavior in which an object dragged from one location in the drawing to another is drawn with feet while it is being dragged. On the other hand, for a user whose occupation is “engineer,” the facility preferably determines that the drawing application should exhibit a precise dragging behavior in which the dragged object may only be dragged to certain discrete points in the drawing. Behaviors may be defined by the designer of the application at any level of granularity that is appropriate for the application. When the facility determines which behaviors the application should exhibit based on the user's characteristics, it inserts code for performing these behaviors into the application. The facility then executes the application for the requesting user, which performs the behaviors determined to be appropriate for the requesting user.
The facility uses an “atom server” to synthesize an application based on the user's characteristics. The atom server is a computer program that receives an identification of an atom and selects an implementation of that atom that is appropriate to the user's characteristics. An atom can be any programming concept (e.g., an application, a bitmap, etc.) that can have various different implementations. Selecting an implementation of an atom is referred to as “resolving” the atom and the implementations are referred to as “resolutions” of the atom. A single atom may have resolutions of different types. For example, an atom representing an application may have resolutions that are interpreted versions of the application and other resolutions that are compiled versions of the application. Atoms may also resolve to a data artifact, such as a string of text, an image, or an audio clip instead of an application. A developer of an atom that can be synthesized by the atom server provides the various implementations to the atom server along with a description of the user characteristics for which the atom is to be resolved to each different implementation.
An atom client is a computer program that passes to the atom server an atom identifier that identifies an atom to be resolved and a context identifier that identifies context data (“context”) to use to resolve the atom. In a preferred embodiment, each context corresponds to a user of the atom client, which enables the atom server to return different resolutions of the same atom for different users. A user context is preferably made up of several subcontexts, including an individual subcontext containing information specific for the user, group subcontexts containing information specific to members of particular groups of users, and a general subcontext containing information pertaining to all users. The atom server processes an atom resolution request by first selecting resolutions of the requested atom stored in an atom table. The atom table contains an entry for each resolution of each atom. Each atom table entry contains an atom identifier, an indication of the resolution of the identified atom having the atom identifier, and one or more conditions specifying contexts for which the resolution is appropriate. The atom server initially identifies each resolution as the requested atom. The atom server then discards resolutions whose conditions are not completely satisfied. The atom server then applies selection rules to select one of the appropriate resolutions that best suits the identified context. The selected resolution may contain embedded references to other atoms. If so, the atom server resolves these “embedded atoms” in the same manner as the requested atom using the context specified in the request. After it has resolved any embedded atoms, the atom server returns the selected resolution of the requested atom to the atom client as the resolved atom. The atom client then preferably presents the resolved atom to the user. If the resolved atom is a program, the atom client preferably executes it. If the resolved atom is a data artifact, the atom client preferably displays or plays it, as appropriate.


REFERENCES:
patent: 5115501 (1992-05-01), Kerr
patent: 5159669 (1992-10-01), Trigg et al.
patent: 5287514 (1994-02-01), Gram
patent: 5446653 (1995-08-01), Miller et al.
patent: 5485544 (1996-01-01), Nonaka et al.
patent: 5487135 (1996-01-01), Freeman
patent: 5499335 (1996-03-01), Silver et al.
patent: 5535323 (1996-07-01), Miller et al.
patent: 5598511 (1997-01-01), Petrinjak et al.
patent: 5603034 (1997-02-01), Swanson
patent: 5625783 (1997-04-01), Ezekiel et al.
patent: 5680617 (1997-10-01),

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and system for dynamically synthesizing a computer... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and system for dynamically synthesizing a computer..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and system for dynamically synthesizing a computer... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2568799

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.