IP Library Granted Patent US 9,753,791
Granted Patent B2
US 9,753,791 · App. 15/207,713 · Granted Sep 5, 2017

Analytics data collection with low integration cost for dynamic message passing systems

Inventors: Vishweshwar Ghanakota (Cardiff, CA); Fred McClain (Cardiff, CA); Stephen Mickelsen (Encinitas, CA)
Assignee: AppDynamics LLC
G06F9/546F16L23/036G06F9/4421G06F9/4425G06F11/30H04L67/10G06F9/45504
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,753,791
App. No.
15/207,713
Granted
Sep 5, 2017
Kind
B2
Abstract

A method, an apparatus, and a computer program product which capture and use analytics data relating to the internal activity of software programs executing in a message-passing runtime environment, such as that provided by Objective-C. The invention exploits the well documented interfaces of these environments together with their dynamic runtime capabilities to insert data collection and analysis code into an application without modification of the target application.

Claims (31)

1. A method of modifying behavior of a computing device, comprising:

maintaining byte code corresponding to an application in the computing device;

receiving at the computing device, a message transmitted by a server while the computing device is executing the application, wherein the computing device is exhibiting a first behavior while under control of the application;

responsive to the message, changing a first implementation pointer related to the application by replacing a first address stored in the implementation pointer with a second address, wherein the second address corresponds to a code block maintained in a library of modules on the computing device, and wherein changing the first implementation pointer modifies the first behavior; and

storing the first address in a second implementation pointer, wherein the first implementation pointer is identified in the byte code using a first function selector and the second implementation pointer is identified by a second function selector,

wherein an address is stored in the implementation pointer during loading of the application, and the first address corresponds to a target function that is linked to the application,

wherein invoking the first function selector after replacing the first address with the second address in the first implementation pointer causes the computing device to execute the code block,

wherein executing the code block includes invoking the second function selector such that the computing device is caused to execute the target function after each execution of the code block.

2. The method of claim 1 , wherein the computing device exhibits a second behavior different from the first behavior after replacing the first address with the second address in the first implementation pointer.

3. The method of claim 2 , wherein the first behavior and the second behavior relate to a user experience associated with the computing device.

4. The method of claim 1 , wherein the first behavior of the application relates to a menu operation of the computing device.

5. The method of claim 1 , wherein changing the first implementation pointer modifies a sequence of operation of the computing device.

6. The method of claim 1 , wherein changing the first implementation pointer modifies a menu layout.

7. The method of claim 1 , wherein changing the first implementation pointer modifies a set of operational preferences associated with the computing device.

8. A system for monitoring a business transaction, comprising:

a processor;

a memory; and

one or more sequences of instructions stored in memory and executable by a processor to perform operations including:

maintain byte code corresponding to an application in the computing device;

receiving at the computing device, a message transmitted by a server while the computing device is executing the application, wherein the computing device is exhibiting a first behavior while under control of the application;

responsive to the message, change a first implementation pointer related to the application by replacing a first address stored in the implementation pointer with a second address, wherein the second address corresponds to a code block maintained in a library of modules on the computing device, and wherein changing the first implementation pointer modifies the first behavior; and

store the first address in a second implementation pointer, wherein the first implementation pointer is identified in the byte code using a first function selector and the second implementation pointer is identified by a second function selector,

wherein an address is stored in the implementation pointer during loading of the application, and the first address corresponds to a target function that is linked to the application,

wherein invoking the first function selector after replacing the first address with the second address in the first implementation pointer causes the computing device to execute the code block,

wherein executing the code block includes invoking the second function selector such that the computing device is caused to execute the target function after each execution of the code block.

9. The system of claim 8 , wherein the computing device exhibits a second behavior different from the first behavior after replacing the first address with the second address in the first implementation pointer.

10. The system of claim 8 , wherein the first behavior and the second behavior relate to a user experience associated with the computing device.

11. The system of claim 8 , wherein the first behavior of the application relates to a menu operation of the computing device.

12. The system of claim 8 , wherein changing the first implementation pointer modifies a sequence of operation of the computing device.

13. The system of claim 8 , wherein changing the first implementation pointer modifies a menu layout.

14. The system of claim 8 , wherein changing the first implementation pointer modifies a set of operational preferences associated with the computing device.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: APPDYNAMICS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 044173/0050 →
CHANGE OF NAME Recorded Jun 23, 2017
From: APPDYNAMICS, INC.
To: APPDYNAMICS LLC
Reel/Frame 042964/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: INTROSPEX, INC.
To: APPDYNAMICS, INC.
Reel/Frame 041149/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 20, 2016
From: GHANAKOTA, VISHWESHWAR; MCCLAIN, FRED W.; MICKELSEN, STEPHEN
To: INTROSPEX, INC.
Reel/Frame 039803/0195 →
Continuity (5)
Continuation 14834431 · Aug 24, 2015
Continuation In Part 14531135 · Nov 3, 2014
Continuation 13707508 · Dec 6, 2012
Provisional Application 61567592 · Dec 6, 2011
Related Publication 20160321120A1 · Nov 3, 2016