Patent US6011918A successfully refreshed from Google Patents.
← Back to Patent Explorer
US6011918A Expired / Lapsed US ⏱️ 0.0 years remaining

Methods, systems and computer program products for generating client/server applications

Assignee: Civis Analytics Inc
•
Filing: 1998-04-22
•
Granted: 2000-01-04
•
Expires: 2018-04-22
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Methods, systems and computer program products are provided for automatically generating client/server applications from an application written to execute on a single processing system. The application has program classes and programmed methods associated with the objects. Each program class in the application is identified and the relationships between programmed methods in the classes is determined. The relationships between the programmed methods in the identified classes are then weighted based on the activity of the relationship. Similarly, each identified class in the application is also weighted based on the computing resources required by the identified class. The identified classes are then partitioned into client classes and server classes based on the weighted relationships between the programmed methods in the classes, the weight associated with each class and a computing topology associated with a target client processing system. The resulting client and server partition may then be used for code generation and distribution based on the capabilities of a requesting computer system.

Inventors

  • 👤 Geoffrey Alexander Cohen
  • 👤 James P. Gray
  • 👤 David Louis Kaminsky
  • 👤 Manoj V. S. Kasichainula
  • 👤 Richard Adam King
  • 👤 Zhiyong Li
  • 👤 Phillip Allan Stone

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-31 16:51
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/30; G06F9/00; G06F9/06; G06F9/46; G06F9/465

Claims Analysis

Total Claims: 27
Claim 1
Independent Claim 134 words
A method of automatically generating client/server applications from an application written to execute on a single processing system and having program classes and programmed methods associated with the objects, the method comprising the steps of: identifying each program class in the application; determining the relationships between programmed methods in the identified classes; weighting the relationships between the programmed methods in the identified classes based on the interaction between the programmed methods in the identified classes; weighting each identified class in the application based on the computing resources required by the identified class; and partitioning the identified classes into client classes and server classes based on the weighted relationships between the programmed methods in the program classes, the weight associated with each program class and a computing topology associated with a target client processing system.
Claim 2
Independent Claim 134 words
A method of automatically generating client/server applications from an application written to execute on a single processing system and having program classes and programmed methods associated with the objects, the method comprising the steps of: identifying each program class in the application; determining the relationships between programmed methods in the identified classes; weighting the relationships between the programmed methods in the identified classes based on the interaction between the programmed methods in the identified classes; weighting each identified class in the application based on the computing resources required by the identified class; and partitioning the identified classes into client classes and server classes based on the weighted relationships between the programmed methods in the program classes, the weight associated with each program class and a computing topology associated with a target client processing system.
Claim 3
Dependent Claim 44 words
A method according to claim 1, wherein said step of weighting the relationships between the programmed methods comprises the step of weighting the relationships between the programmed methods based on a textual analysis of the application written to execute on a single processing system.
Claim 4
Dependent Claim 47 words
A method according to claim 1, wherein said step of weighting the relationships between the programmed methods comprises the step of weighting the relationships between the programmed methods based on a result of a profiling analysis of the application written to execute on a single processing system.
Claim 5
Dependent Claim 116 words
A method according to claim 1, wherein said step of weighting the relationships between the programmed methods comprises the steps of: determining for each calling programmed method, where the called programmed method is associated with a different program class than the calling programmed method, the number of times the called programmed method associated with the different program class is called by the calling programmed method; and assigning, for each calling programmed method and called programmed method, a weight associated with the program class of the calling programmed method and the program class of the called programmed method, wherein the weight is based on the number of times the calling programmed method calls the called programmed method.
Claim 6
Dependent Claim 26 words
A method according to claim 4, further comprising the step of adjusting the weights of the relationships between the programmed methods by a predefined adjustment factor.
Claim 7
Dependent Claim 58 words
A method according to claim 1, wherein said step of weighting each identified classes comprises the steps of: instantiating each program object of a class; determining the marginal resources utilized to instantiate each program object; and assigning a weight to each program class based on the determined marginal resources utilized to instantiate the program objects of the class.
Claim 8
Dependent Claim 23 words
A method according to claim 6, further comprising the step of adjusting the weights of each identified class by a predefined adjustment factor.
Claim 9
Dependent Claim 116 words
A method according to claim 6, wherein said step of weighting the relationships between the programmed methods comprises the steps of: determining for each calling programmed method, where the called programmed method is associated with a different program class than the calling programmed method, the number of times the called programmed method associated with the different program class is called by the calling programmed method; and assigning, for each calling programmed method and called programmed method, a weight associated with the program class of the calling programmed method and the program class of the called programmed method, wherein the weight is based on the number of times the calling programmed method calls the called programmed method.
Claim 10
Dependent Claim 91 words
A method according to claim 8, wherein said step of partitioning the identified objects comprises the steps of: selecting a subset of program classes based on the sum of the weights of the program classes and a target client system threshold value; and selecting the subset of program classes as client classes and the remainder of the program classes as server classes based on the sum of the weights associated with programmed methods of the program classes of the subset of program classes and a target client cut weight threshold value.
Claim 11
Dependent Claim 49 words
A method according to claim 9, wherein the selected subset of program classes is the subset of program classes which satisfies the target client system threshold value and has the lowest sum of the weights associated with programmed methods of the program classes of the subset of program classes.
Claim 12
Dependent Claim 43 words
A method according to claim 1, wherein said partitioning step is carried out for a plurality of computing topologies associated with a plurality of target client processing systems so as to provide a plurality of sets of client classes and corresponding server classes.
Claim 13
Dependent Claim 39 words
A method according to claim 1, further comprising the step of: generating a client application based on the objects of classes partitioned as client classes and a server application based on the objects of classes partitioned as server classes.
Claim 14
Dependent Claim 30 words
A method according to claim 12, further comprising the step of: distributing client objects to a client computer system in response to a request for execution of the client application.
Claim 15
Dependent Claim 51 words
A method according to claim 13, wherein said distributing step comprises the steps of: receiving a request for the client application and a client capability set; selecting a client application based on the received client capability set; and providing to the client the client application corresponding to the client capability set.
Claim 16
Dependent Claim 72 words
A method according to claim 1, wherein said identifying step and said determining step comprise the step of generating a call graph of the classes and methods of the application wherein nodes of the call graph correspond to classes of the application, subnodes of the call graph correspond to methods of a class and directed arcs between the nodes or subnodes of the graph correspond to calls from one method to another.
Claim 17
Dependent Claim 104 words
A method according to claim 15, wherein said step of weighting the relationships between the programmed methods in the identified classes based on the activity of the relationship comprises the step of assigning a weight to each directed arc of the call graph based on the expected number of traversals of the directed arc during execution of the application; and wherein said step of weighting each identified class in the application based on the computing resources required by the identified class comprises the step of assigning to each node of the call graph a weight based on the expected resources required by each node.
Claim 18
Independent Claim 139 words
A system for automatically generating client/server applications from an application written to execute on a single processing system and having program classes and programmed methods associated with the objects, comprising: means for identifying each program class in the application; means for determining the relationships between programmed methods in the identified classes; means for weighting the relationships between the programmed methods in the identified classes based on the interaction between the programmed methods in the identified classes; means for weighting each identified class in the application based on the computing resources required by the identified class; and means for partitioning the identified classes into client classes and server classes based on the weighted relationships between the programmed methods in the program classes, the weight associated with each program class and a computing topology associated with a target client processing system.
Claim 19
Independent Claim 139 words
A system for automatically generating client/server applications from an application written to execute on a single processing system and having program classes and programmed methods associated with the objects, comprising: means for identifying each program class in the application; means for determining the relationships between programmed methods in the identified classes; means for weighting the relationships between the programmed methods in the identified classes based on the interaction between the programmed methods in the identified classes; means for weighting each identified class in the application based on the computing resources required by the identified class; and means for partitioning the identified classes into client classes and server classes based on the weighted relationships between the programmed methods in the program classes, the weight associated with each program class and a computing topology associated with a target client processing system.
Claim 20
Dependent Claim 43 words
A system according to claim 17, wherein said means for weighting the relationships between the programmed methods comprises means for weighting the relationships between the programmed methods based on a textual analysis of the application written to execute on a single processing system.
Claim 21
Dependent Claim 117 words
A system according to claim 17, wherein said means for weighting the relationships between the programmed methods comprises: means for determining for each calling programmed method, where the called programmed method is associated with a different program class than the calling programmed method, the number of times the called programmed method associated with the different program class is called by the calling programmed method; and means for assigning, for each calling programmed method and called programmed method, a weight associated with the program class of the calling programmed method and the program class of the called programmed method, wherein the weight is based on the number of times the calling programmed method calls the called programmed method.
Claim 22
Dependent Claim 61 words
A system according to claim 17, wherein said means for weighting each identified classes comprises: means for instantiating each program object of a class; means for determining the marginal resources utilized to instantiate each program object; and means for assigning a weight to each program class based on the determined marginal resources utilized to instantiate the program objects of the class.
Claim 23
Dependent Claim 180 words
A computer program product for automatically generating client/server applications from an application written to execute on a single processing system and having program classes and programmed methods associated with the objects, the computer program product comprising: a computer readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising: computer-readable program code means for identifying each program class in the application; computer-readable program code means for determining the relationships between programmed methods in the identified classes; computer-readable program code means for weighting the relationships between the programmed methods in the identified classes based on the interaction between the programmed methods in the identified classes; computer-readable program code means for weighting each identified class in the application based on the computing resources required by the identified class; and computer-readable program code means for partitioning the identified classes into client classes and server classes based on the weighted relationships between the programmed methods in the program classes, the weight associated with each program class and a computing topology associated with a target client processing system.
Claim 24
Dependent Claim 180 words
A computer program product for automatically generating client/server applications from an application written to execute on a single processing system and having program classes and programmed methods associated with the objects, the computer program product comprising: a computer readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising: computer-readable program code means for identifying each program class in the application; computer-readable program code means for determining the relationships between programmed methods in the identified classes; computer-readable program code means for weighting the relationships between the programmed methods in the identified classes based on the interaction between the programmed methods in the identified classes; computer-readable program code means for weighting each identified class in the application based on the computing resources required by the identified class; and computer-readable program code means for partitioning the identified classes into client classes and server classes based on the weighted relationships between the programmed methods in the program classes, the weight associated with each program class and a computing topology associated with a target client processing system.
Claim 25
Dependent Claim 51 words
A computer program product according to claim 21, wherein said computer-readable program code means for weighting the relationships between the programmed methods comprises computer-readable program code means for weighting the relationships between the programmed methods based on a textual analysis of the application written to execute on a single processing system.
Claim 26
Dependent Claim 128 words
A computer program product according to claim 21, wherein said computer-readable program code means for weighting the relationships between the programmed methods comprises: computer-readable program code means for determining for each calling programmed method, where the called programmed method is associated with a different program class than the calling programmed method, the number of times the called programmed method associated with the different program class is called by the calling programmed method; and computer-readable program code means for assigning, for each calling programmed method and called programmed method, a weight associated with the program class of the calling programmed method and the program class of the called programmed method, wherein the weight is based on the number of times the calling programmed method calls the called programmed method.
Claim 27
Dependent Claim 75 words
A computer program product according to claim 21, wherein said computer-readable program code means for weighting each identified classes comprises: computer-readable program code means for instantiating each program object of a class; computer-readable program code means for determining the marginal resources utilized to instantiate each program object; and computer-readable program code means for assigning a weight to each program class based on the determined marginal resources utilized to instantiate the program objects of the class.

References Cited (Backward Citations)

US5581758A Cited
US5485616A Cited
US5535394A Cited
US5892917A Cited
US5920725A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-01-03 2003-07-05 2004-01-04 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-01-03 2007-07-05 2008-01-04 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-01-03 2011-07-05 2012-01-04 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag