IP Library Granted Patent US 8,250,535
Granted Patent B2
US 8,250,535 · App. 12/207,244 · Granted Aug 21, 2012

Maintaining vitality of data in safety-critical systems

Assignee: Lockheed Martin Corporation
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,250,535
App. No.
12/207,244
Granted
Aug 21, 2012
Kind
B2
Abstract

A mechanism for maintaining configuration or other vital data outside of source code is disclosed. In accordance with the illustrative embodiment of the present invention, a data manager software component serves as an interface between an external configuration data store and one or more applications, processes, and threads. In contrast with techniques of the prior art, the illustrative embodiment does not suffer from the risk of undetected corruption of vital data, and therefore is especially advantageous in safety-critical systems.

Claims (47)

1. A software component, stored in a computer-readable memory, for maintaining one or more configuration data across one or more processes, threads, and applications, said software component comprising:

a static initialization block that is executed when the software component is loaded;

code for obtaining one or more values of said configuration data from a data store that is outside said software component, wherein said code is invoked by said static initialization block, thereby initializing said software component with said one or more obtained values of said configuration data;

one or more public methods for accessing values of said configuration data; and

a method that returns a singleton instance of said software component;

wherein said code is inaccessible from outside of said software component; and

wherein said code is the only way that said software component obtains a value of said configuration data; and

wherein said software component has no public method for updating a value of said configuration data; and

wherein said software component has no public constructor; and

wherein said data store is outside the source code for said software component.

2. The software component of claim 1 wherein said configuration data is stored in an eXtensible Markup Language file that is in said data store.

3. The software component of claim 1 wherein said software component does not require recompilation when there is a change in a value of said configuration data.

4. The software component of claim 1 wherein said processes, said threads, and said applications do not require recompilation when there is a change in a value of said configuration data.

5. The software component of claim 1 wherein said software component periodically checks that the values of said configuration data have not been altered.

6. The software component of claim 1 wherein said software component consists solely of standard constructs of an object-oriented programming language.

7. The software component of claim 5 wherein said object-oriented programming language is C++, and wherein said software component is a C++ class.

8. A method of executing a computer program that is stored in a computer-readable medium, the method comprising:

invoking, when a class is loaded, by a static initialization block therein, a private method that obtains one or more values of vital data from a data store that is outside said class, thereby initializing said class with said one or more obtained values of said vital data;

invoking a first public method of said class that returns a singleton instance of said class; and

invoking a second public method of said singleton instance that returns a value of said one or more obtained values of said vital data;

wherein said private method is inaccessible from outside of said class; and

wherein said private method is the only way that said class obtains a value of said vital data from said outside data store; and

wherein said class has no public method for updating said one or more obtained values of said vital data; and

wherein said class has no public constructor; and

wherein said data store is outside the source code of the computer program.

9. The method of claim 8 wherein said vital data is stored in an eXtensible Markup Language file in said data store.

10. The method of claim 8 wherein said class does not require recompilation when there is a change in a value of said vital data.

11. The method of claim 8 wherein said first public method and said second public method are invoked in the computer program, and wherein said computer program does not require recompilation when there is a change in a value of said vital data.

12. The method of claim 8 wherein said class consists solely of standard constructs of an object-oriented programming language.

13. The method of claim 12 wherein said object-oriented programming language is C++.

14. A method of accessing vital data by one or more software processes that are stored in a computer-readable medium, the method comprising:

invoking, when a class is loaded, by a static initialization block therein, a private method that obtains one or more values of said vital data from a data store that is outside said class, thereby initializing said class with said one or more obtained values of said vital data;

invoking in a first process a first public method of said class that returns a singleton instance of said class;

invoking in said first process a second public method of said singleton instance that returns a value of said one or more obtained values of said vital data;

invoking in a second process said first public method of said class; and

invoking in said second process said second public method of said singleton instance;

wherein said private method is inaccessible from outside of said class; and

wherein said private method is the only way that said class obtains a value of said vital data from said outside data store; and

wherein said class has no public method for updating said one or more obtained values of said vital data; and

wherein said class has no public constructor; and

wherein said data store of vital data is outside the source code of said software processes.

15. The method of claim 14 wherein said vital data is stored in an eXtensible Markup Language file in said data store.

16. The method of claim 14 wherein said class does not require recompilation when there is a change in a value of said vital data.

17. The method of claim 14 wherein the code for said first process and for said second process does not require recompilation when there is a change in a value of said vital data.

18. The method of claim 14 wherein said first process and said second process execute in a safety-critical system.

19. The method of claim 14 wherein said class consists solely of standard constructs of an object-oriented programming language.

20. The method of claim 19 wherein said object-oriented programming language is C++.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2023
From: LOCKHEED MARTIN CORPORATION
To: AUSTRALIAN RAIL TRACK CORPORATION LIMITED
Reel/Frame 062841/0282 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2009
From: GROVES, ROBERT B., JR.; ALLSHOUSE, RICHARD A.; LAMANA, MICHAEL
To: LOCKHEED MARTIN CORPORATION
Reel/Frame 022328/0241 →
Continuity (1)
Related Publication 20100064294A1 · Mar 11, 2010