The present invention relates generally to the field of software and data distribution and, more specifically to the distribution of data and an associated analyzer program that analyzes the data to provide evaluations and assessments, the analyzer program being limited to analysis of the specific data.
Pipelines are commonly used in the transportation of oil and gas. There are more than 300,000 miles of oil and gas pipelines in North America. Construction costs are now of the order of $1,000,000 per mile. The typical initial operating life of the pipelines are expected to be about 40 years, but 50% of the of the existing pipelines will be 40 years old at the year 2000.
Accurate monitoring of the pipelines is critical due to the potential risks to the environment when the pipelines rupture and due to the high costs of repair or replacement. Since oil and gas pipelines are normally buried, in-service inspection is performed by pumping a “smart electronic inspection pig” through the pipeline from one compressor station to the next.
Generally, the inspection tool detects and collects data indicating abnormalities (e.g., leakage, corrosion or metal loss) in the internal and external pipe surface or wall. The inspection tool may provide detailed signals about the condition of the pipelines. The signals are then converted to accurate estimates of defect size and geometry. This requires considerable expertise, as well as a detailed understanding of the effects of inspection conditions and the behavior of the type of pipeline steel used.
The information collected by the smart electronic inspection pig can be analyzed by an evaluation or analyzer software. The information can also be stored on a storage device such as, for example, a compact disc (CD) and can then be readily available for further analysis. The analyzer software typically reads large volumes of data generated during the inspection. The analyzer software may include a graphical user interface. Using the data collected during the inspection, the analyzer software may generally perform some data analysis and generates written and electronic reports or some form of graphical display.
Pipeline inspection activities or survey are generally performed by consulting firms such as pipeline assessment services performing both the data collection activity and the data analysis activity. An intelligent pigging survey is expensive and may cost some hundreds of thousand of dollars, with certain long distance, more complicated lines being charged well in excess of this.
It would be cost advantageous if the user of the pipeline inspection data, (e.g., an oil company) could be enabled to have control of both the pipeline inspection data and the analyzer program that analyze the pipeline inspection data. This way the inspection data can be analyzed as often as desired and at any time as desired. However, the cost of an analyzer program may be prohibitively expensive and economically unattractive.
According to one embodiment of the invention, there is provided a method of locking a specific data and an analyzer program that analyzes the specific data. A first key is generated and associated with the specific data and a specific copy of the analyzer program. A gatekeeper logic is generated. The gatekeeper logic utilizes at least the first key to prevent the specific copy of the analyzer program from analyzing any other data except for the specific data.
According to another embodiment of the invention, there is provided a method of locking a specific conduit data with a specific copy of an analyzer program that analyzes the specific conduit data. A first key is generated and associated with both the specific conduit data and the specific copy of the analyzer program. A gatekeeper logic is generated. The gatekeeper logic utilizes at least the first key to prevent the specific copy of the analyzer program from analyzing any other conduit data except for the specific conduit data.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
A method and logic for locking conduit data and an analyzer program that analyzes the conduit data are described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details.
For the purposes of the present invention, the term “conduit” shall refer to any opening or cavity enclosed or surrounded by a structure having features, conditions or characteristics of a pipeline or pipeline-like environment such as, for example, an oil or gas pipeline, a sewer or other utility pipeline, a well or a bore hole. The structure may be generally vertical or horizontal or may form any angles with the ground level. The structure may be above ground, under ground, in land, under water, or any combination of these. Further, the term “data” shall be taken to include, but not limited to geomechanical, geophysical, in situ stress, petrophysical, geotechnical, acoustic wave form, magnetic wave resonance, vibration data, digital data or any other data derived using a logging device within the structure. The logging device may be a device that collects data such as, for example, a pig inspection device.
For the purposes of the present specification, the term “analyzer program” shall be taken to refer to any program that analyzes data for the purpose of presenting, interpreting or modifying the data. Accordingly, the operations performed by an analyzer program include, but are not limited to, the extraction of data, the generating of data, the interpretation of data, the display of data, the filtering of data, and the enhancing of data.
The locking routine 14 also operates to identify a specific characteristic of each of the conduit data files 12, and to assign a characteristic value to a characteristic parameter indicative of the particular characteristic of each conduit data file 12. For example, the characteristic parameter may be the size of a conduit data file 12, and the characteristic value attributed to this parameter may be actual size of a conduit data file 12 expressed in bits, bytes or any other measure.
Further, the locking routine 14 generates a second key 22 for each of the conduit data files 12, which is associated with a respective conduit data file 12, utilizing the first key and the characteristic value for a respective file 12. For example, the logging routine 14 may simply exclusive OR (XOR), the first key and the characteristic parameter to generate the second key 22. The locking routine 14 then writes a respective second key 22 into a header portion of each of the files 12, as illustrated in
Further, the locking routine 14 generates a gatekeeper application 24, in the exemplary form of a Java™ applet, which implements an “unlocking” function with respect to the conduit data files 12 and a specific copy of an analyzer program. This is to permit the analyzer program to analyze the conduit data files. Further information regarding the gatekeeper application 24 is provided below.
A compiler 28 compiles the source code 26 of the analyzer program to generate a specific compiled copy of the analyzer application 30 that incorporates the first key 18 and the gatekeeper application 24. The source code 26 for the analyzer program can be provided by a software developer such as, for example, the GMI-Imager software developed by GeoMechanics International, Incorporated of Palo Alto, Calif.
The conduit data files 12 and the compiled analyzer application 30 may together comprise a single package 32 that is supplied to an end user. For example, the conduit data files 12 and the compiled copy of the analyzer application 30 may be written to a single compact disk (e.g., CD) that is supplied to the end user. Alternatively, the conduit data files 12 and the specific copy of the analyzer application 30 may be propagated to an end user from a source over a network.
In one embodiment, a single first key 18 may be utilized by the locking routine 14 to generate multiple distinct second keys 22 for each of the conduit data files 12. This may be achieved by performing an operation utilizing the first key 18 and a specific characteristic value for each distinct file of the conduit data files 12 to generate a distinct second key 22 for each such distinct conduit data file. Accordingly, the package 32 may comprise a single copy of the compiled analyzer application 30 that is able to analyze each of the multiple conduit data files 12, each having a different and unique second key 22.
The method commences at block 36, with the generation of the first key 18 by the random number generator 16. At block 38, the locking routine 14 generates the gatekeeper application 24 that is to be compiled with the analyzer application source code 26 (e.g., the analyzer program). At block 40, the locking routine 14 determines a characteristic value for a characteristic parameter of at least one conduit data file 12. As discussed above, the locking routine 14 may determine a respective characteristic value for a number of conduit data files 12. The characteristic value may be, for example, the size of a respective conduit data file.
At block 42, the locking routine 14 then generates a respective second key 22 for each conduit data file 12 utilizing the first key 18 and the respective characteristic value 19 for the respective conduit data file 12. For example, the second key 22 may be generated for the respective conduit data file 12 by performing an exclusive—or (XOR) operation between the first key 18 and the characteristic value 19 for each respective conduit data file 12.
At block 44, the locking routine 14 incorporates the second key 22 into the header of each respective conduit data file 12. As discussed above, in an alternative embodiment, a second key 22 for each respective conduit data file 12 may be distributed throughout the file 12 at predetermined and known locations. At block 46, the compiler 28 then compiles the analyzer application source code 26 together with the first key 18 and the gatekeeper application 24 and generates a specific compiled copy of the analyzer application 30. At block 48, the specific compiled copy of the analyzer application 30 and the conduit data files 12 that the analyzer application can access and analyze, are supplied to the end user as the package 32. The method 34 then ends at block 50.
The method 52 commences at block 54, with the initiation or launch by an end user of the specific compiled copy of the analyzer application 30 shown in
At block 64, the gatekeeper application 24 calculates a gate key for each of the conduit data files 12 utilizing the first key identified at block 58 and the respective characteristic value for characteristic parameter for each of the conduit data files 12. The calculation of the gate key is the same as the calculation of the second key 22 described in
At decision block 66, a determination is made as to whether the gate key generated for each of the conduit data files 12 corresponds to a respective second key 22 stored, for example, in the header portion of the respective conduit data file 12. Following a positive determination at decision box 66, for a specific conduit data file 12, the gatekeeper application 24 enables analysis of the specific conduit data file 12 by the specific copy of the analyzer application 30. On the other hand, following a negative determination for a specific conduit data file 12 at decision box 66, the gatekeeper application 24 disables the specific copy of the analyzer application 30 from analyzing the relevant data file 12. The negative determination occurs when the user attempt to use the specific copy of the analyzer application with a conduit data file other than the conduit data files 12. The method 52 then ends at block 72.
The method 74 corresponds substantially to the method 52 discussed above with respect to
In summary, the methods 52 and 74 differ in that, in the method 52, the first key 18 is utilized together with the characteristic parameter to determine the gate key which is then compared to the second key 22 stored within the conduit data file 12. In the method 74, the second key 22 is utilized to generate the gate key, that is then compared to the first key 18 embedded within the compiled and specific copy of the analyzer application 30.
Referring first to
Having received the conduit data 98 from the end user 100, the analyzer software supplier 102 will then proceed, utilizing the locking (or encryption) routine 14 to compile the analyzer application source code 26 to include the conduit data 98 and the locking (or encryption) routine 14 to thereby generate the package 32. As described above with reference to
Utilizing the compact disk 107, the end user 100 may then execute the analyzer application 30 to analyze only the conduit data 98. Except for the conduit data 98, the compiled analyzer application 30 will not work with any other conduit data.
The above-discussed method 90 of distribution of the locked compiled analyzer application 30 and conduit data 98 is advantageous to the analyzer software supplier 102. The analyzer software supplier 102 is able to incrementally recover the cost of the analyzer application by supplying multiple copies of an analyzer application 30 to the end user 100. Each analyzer application copy is locked to the specific conduit data 98. Each compiled and specific copy of the analyzer application 30 is supplied at a reduced price relative to the cost of supply of an unencumbered or “unlocked” analyzer program that is not limited to the specific conduit data 98, and that would be able to analyze any given conduit data. By supplying numerous copies of compiled specific analyzer applications 30 to the end user, the analyzer software supplier 102 will thus be able to generate a steady revenue flow from the end user 100 and recover a “full” price for the program over time.
From the point of view of the end user 100, the distribution method 90 discussed above with reference to
The method 94 illustrated in
The method 90 described above with reference to
At block 120, the end user 100 acquires the conduit data 98 from the conduit inspection service company 96. At block 112, the end user 100 requests an analyzer application source code 26, as well as the locking and purging routines 14 and 106, from the analyzer software supplier 102. At block 124, the analyzer software supplier 102 supplies the analyzer application source code 26, which is copy and read protected, to the end user 100. The supplier 102 also provides the locking routine 14 and purge routine 106. At block 126, the end user 100 then executes the locking routine 14 to lock the conduit data 98 to a specific and compiled copy of the analyzer application 30. This may involve generating the gatekeeper application 24, and performing a compile operation utilizing a compiler 28 as described with reference to
At block 128, the locking routine 14 calls the purge routine 106 to purge the locking routine and the analyzer application source code 26 from the computer system of the end-user 100. At block 130, the gatekeeper application 24 allows the end user 100 to execute the analyzer application 30 to analyze the conduit data 98, and no other conduit data, to which is locked. The method 94 then ends at block 132.
The disk drive unit 154 includes a machine-readable medium 160 on which is stored a set of instructions (i.e., software 162) embodying any one, or all, of the methodologies discussed above. The software 162 is also shown to reside, completely or at least partially, within the main memory 144 and/or within the processor 142. The software 162 may furthermore be transmitted or received via the network interface device 158.
For the purposes of this specification, the term “machine-readable medium” shall be taken to include any medium which is capable of storing or embodying a sequence of instructions for execution by the machine and that cause the machine to perform any one of the methodologies of the present invention. The term “machine-readable medium” shall accordingly be taken to included, but not be limited to, solid-state memories, optical and magnetic disks, and carrier wave signals.
Thus, a method and logic for locking conduit data and an analyzer data program that analyzes the conduit data have been described. Although the present invention has been described with reference to specific exemplary embodiments, the present invention can also be practiced with any analyzer program being locked with any respective data to provide the end users the same advantages discussed above. For example, a sales person can purchase marketing data for a specific region locked together with an analyzer program that provides analyses of the same marketing data.
It will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
This application is a continuation-in-part of application Ser. No. 09/340,216 filed on Jun. 25, 1999.
Number | Name | Date | Kind |
---|---|---|---|
4796466 | Farmer | Jan 1989 | A |
4945775 | Adams et al. | Aug 1990 | A |
4963742 | Abernathy | Oct 1990 | A |
4998208 | Buhrow et al. | Mar 1991 | A |
5078006 | Maresca, Jr. et al. | Jan 1992 | A |
5148110 | Helms | Sep 1992 | A |
5309360 | Monk et al. | May 1994 | A |
5359526 | Whittington et al. | Oct 1994 | A |
5412729 | Liu | May 1995 | A |
5415033 | Maresca, Jr. et al. | May 1995 | A |
5460046 | Maltby et al. | Oct 1995 | A |
5504331 | Lane et al. | Apr 1996 | A |
5675251 | MacLean et al. | Oct 1997 | A |
5728943 | Colter, Jr. et al. | Mar 1998 | A |
5764231 | Ray et al. | Jun 1998 | A |
5813798 | Whiffen | Sep 1998 | A |
5828751 | Walker et al. | Oct 1998 | A |
5832083 | Iwayama et al. | Nov 1998 | A |
5842148 | Prendergast et al. | Nov 1998 | A |
5991399 | Graunke et al. | Nov 1999 | A |
6014343 | Graf et al. | Jan 2000 | A |
6055213 | Rubbo et al. | Apr 2000 | A |
6101447 | Poe, Jr. | Aug 2000 | A |
6138076 | Graf et al. | Oct 2000 | A |
6167348 | Cannon | Dec 2000 | A |
6239593 | Burkhardt et al. | May 2001 | B1 |
6243483 | Petrou et al. | Jun 2001 | B1 |
6256603 | Celniker | Jul 2001 | B1 |
6257332 | Vidrine et al. | Jul 2001 | B1 |
6301661 | Shambroom | Oct 2001 | B1 |
6389535 | Thomlinson et al. | May 2002 | B1 |
6658567 | Barton et al. | Dec 2003 | B1 |
20010014185 | Chitradon et al. | Aug 2001 | A1 |
Number | Date | Country | |
---|---|---|---|
Parent | 09340216 | Jun 1999 | US |
Child | 09657759 | US |