IP Library Granted Patent US 8,074,208
Granted Patent B2
US 8,074,208 · App. 11/379,158 · Granted Dec 6, 2011

System and method for generating safe and efficient component relationships in wireless applications

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 8,074,208
App. No.
11/379,158
Granted
Dec 6, 2011
Kind
B2
Abstract

A method of detecting recursive instantiation loops in a wireless application. A data model digraph is constructed including a respective node for each data component in the wireless application, and a respective edge for each relationship between a pair of data components. The data model digraph is searched to identify any cycles. For each identified cycle, each data component that participates in the cycle is identified.

Claims (43)

1. A method of detecting recursive instantiation loops in a wireless application, the method comprising steps of:

constructing, in an analysis step separate from application execution, a digraph including a respective node for each data component in the wireless application, and a respective edge for each relationship between a pair of data components, wherein the wireless application comprises application logic written in one or more imperative programming languages and wherein each of said data components is at least one of a data structure or object implemented in at least one of said imperative programming languages;

searching the digraph to identify any cycles; and

for each identified cycle, identifying each data component that participates in the cycle,

wherein the step of searching the digraph comprises a step of recursively following a path of successive edges and, if an edge is found for which the destination node is a node that is already part of the path, asserting that a cycle has been found, and

wherein the step of recursively following a path of successive edges comprises:

maintaining a stack of nodes visited;

pushing a node on to the stack of nodes visited when said node is visited; and

popping said node from the stack of nodes visited when all outgoing edges from said node have been followed,

popping said node from the stack of nodes visited when all outgoing edges from said node have been followed,

wherein determining whether a destination node is already part of the path comprises checking if the stack of nodes visited contains said destination node.

2. A method as claimed in claim 1 , wherein the step of constructing a digraph comprising steps of:

populating a Node set N with information identifying each data component of the wireless application; and

populating an Edge set E with information identifying, for each data component in N, each field of the data component that has a field type that is itself a data component of the wireless application.

3. A method as claimed in claim 2 , wherein each field identified in the Edge set E is an edge having a source node corresponding to the data component and a destination node corresponding to the field type.

4. A method as claimed in claim 3 , wherein the step of recursively following a path of successive edges further comprises:

maintaining a stack of edges followed;

before the destination node of an edge is visited, pushing said edge on to the stack of edges followed; and

after the destination node of said edge has been visited, popping said edge from the stack of edges followed;

wherein the stack of edges followed is used to isolate the edges that participate in a cycle if a cycle is found.

5. A method of qualifying a wireless application for deployment in a network, the method comprising steps of:

constructing, in an analysis step separate from application execution, a digraph including a respective node for each data component in the wireless application, and a respective edge for each relationship between a pair of data components, wherein the wireless application comprises application logic written in one or more imperative programming languages and wherein each of said data components is at least one of a data structure or object implemented in at least one of said imperative programming languages;

searching the digraph to identify any cycles; and

if a cycle is found, disqualifying the wireless application for deployment, and otherwise qualifying the wireless application for deployment on the network,

wherein the step of searching the digraph comprises a step of recursively following a path of successive edges and, if an edge is found for which the destination node is a node that is already part of the path, asserting that a cycle has been found, and

wherein the step of recursively following a path of successive edges comprises:

maintaining a stack of nodes visited;

pushing a node on to the stack of nodes visited when said node is visited; and

popping said node from the stack of nodes visited when all outgoing edges from said node have been followed,

wherein determining whether a destination node is already part of the path comprises checking if the stack of nodes visited contains said destination node.

6. A method as claimed in claim 5 , wherein the step of constructing a digraph comprising steps of:

populating a Node set N with information identifying each data component of the wireless application; and

populating an Edge set E with information identifying, for each data component in N, each field of the data component that has a field type that is itself a data component of the wireless application.

7. A method as claimed in claim 6 , wherein each field identified in the Edge set E is an edge having a source node corresponding to the data component and a destination node corresponding to the field type.

8. A method as claimed in claim 5 , further comprising, if no cycles are found in the application, a step of generating a certificate indicating that the application does not comprise recursive instantiation loops.

9. A method as claimed in claim 8 , wherein the certificate includes information uniquely identifying the application.

10. A method as claimed in claim 9 , wherein the information is stored in the certificate in an encrypted or hashed form, wherein said encrypted or hashed form indicates in a cryptographically secure manner that the uniquely identified application does not comprise recursive instantiation loops.

11. A method as claimed in claim 8 , further comprising a step of forwarding the certificate to a network service provider of the network.

12. A method as claimed in claim 7 , wherein the step of recursively following a path of successive edges further comprises:

maintaining a stack of edges followed;

before the destination node of an edge is visited, pushing said edge on to the stack of edges followed; and

after the destination node of said edge has been visited, popping said edge from the stack of edges followed;

wherein the stack of edges followed is used to isolate the edges that participate in a cycle if a cycle is found.

Assignments (4)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
CHANGE OF NAME Recorded Nov 6, 2014
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 034179/0923 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2006
From: BATEMAN, CAMERON; SHENFIELD, MICHAEL; GORING, BRYAN R.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 017920/0618 →