Application modifier based on operating environment parameters

A system and/or method that modifies and/or configures an application based at least upon a parameter of an operating environment. An interrogation component interrogates an operating environment receiving defining parameters. A modification component modifies an application based at least upon the defining parameters of the operating environment.

TECHNICAL FIELD

The present invention relates to modifying applications according to operating environment parameters. More particularly, the invention relates to a computer-implemented software application which determines operating environment parameters to modify and/or configure applications.

BACKGROUND OF THE INVENTION

Industrial control systems have enabled modern factories to become partially or completely automated in many circumstances. These systems generally include a plurality of Input and Output (I/O) modules that interface at a device level to switches, contactors, relays and solenoids along with analog control to provide more complex functions such as Proportional, Integral and Derivative (PID) control. Communications have also been integrated within the systems, whereby many industrial controllers can communicate via network technologies such as Ethernet, Control Net, Device Net or other network protocols and also communicate to higher level computing systems. Generally, industrial controllers utilize the aforementioned technologies along with other technology to control, cooperate and communicate across multiple and diverse applications.

Microsoft .NET is an operating environment used within industrial control systems which enable manufacturers to integrate disparate legacy systems with current Internet technologies, allowing applications, services, and devices to work together in a digital environment, inside and outside the company. Microsoft .NET allows integration of industrial control systems and processes across multiple enterprises. A Human Machine Interface (HMI) application may be utilized within the operating environment Microsoft .NET.

The Human Machine Interface (HMI) is an application used within industrial control systems which enables users to create and use custom screens for displaying information and controlling the industrial environment. The capabilities of HMIs include: controls and displays on a touch screen, graphics symbols or object libraries, real time trending, data logging, and alarming. The display functions within an HMI are designed to serve as operator assistance, aiding and guiding personnel to carry out daily operations plus providing assistance for rare emergencies requiring quick action. HMIs incorporate a friendly user-interface facilitating display and control functions within the industrial environment. For example, a HMI can display a pump graphic correlating to a pump within the industrial environment, which allows the operator to control the pump (e.g., rate, on/off, etc.). A downside of HMI is the cost issues arising with specific programming and the need for custom scripts.

The automation industry has evolved so much that many operating environments within the manufacturers are not compatible with new or existing applications. Reprogramming and/or editing applications to adapt to pre-existing operating environments can be costly and inefficient. In addition, application programming can be a simple and repetitive process when an application is running within operating environments associated with the same parameters. However, the application programming is a difficult and tedious process when the application is programmed for each specific operating environment associated with different parameters. There are many cost and efficiency issues involved with the programming of applications within different operating environments.

When an application is programmed for one operating environment, the application must be revised or updated in order to be used within a different operating environment. The programmer focuses on compatibility rather than functionality because of the need to revise or update an application for every operating environment it is intended to run. However, functionality should be the primary focus of a programmer.

After an application has been written and implemented within an operating environment, the application may not operate correctly with new components or a new operating environment introduced to the system. The application must be coded specifically or tailored to each new component and/or operating environment. Rather than the application being executed from the original code, the code must be revised or updated in order for new components and/or new operating environment introduced.

Operating environments and applications are frequently created and/or updated. Given the plethora of operating environments and component architectures available, agreeing on one solution across multiple enterprises is problem within the automation industry. With the rapid pace of technology, the compatibility between operating environments and applications extends beyond the threshold of programmable efficiency. In order for applications to run appropriately within a specified operating environment, programmers often tailor applications specifically for the associated operating environment parameters. However, these applications should focus upon the functionality of the code rather than the compatibility with the operating environment and the associated parameters. In view of the above, there is a strong need for computer implemented software that provides for specifically tailoring or updating applications to the various operating environments within the industrial setting.

SUMMARY OF THE INVENTION

The present invention generally relates to modifying and/or configuring an application based at least upon a parameter of an operating environment. In accordance with an aspect of the invention, an application modifier system determines the defining parameters of an operating environment. The application modifier system modifies and/or configures an application based at least upon the determined parameters. The application modifier system provides for modifying and/or configuring an application based at least upon one defining parameter of the operating environment. The application modifier system provides for determining a plurality of parameters for a plurality of operating environments.

In one aspect of the invention, the application modifier system comprises of an application modifier architecture consisting of an interrogation component and a modification component. The interrogation component provides for interrogating an operating environment containing parameters. The modification component provides for modifying and/or configuring an application.

In another aspect of the invention, the interrogation and modification component utilize artificial intelligent techniques (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation) to facilitate determining operating environment parameters and application modifications and/or configurations.

Additionally, the application modifier system can further include an application and parameter data store. The application and parameter data store stores applications and parameter interrogation questions. Furthermore, the application and parameter data store can utilize artificial intelligent techniques (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation) to facilitate storage of applications and parameter interrogation questions.

In yet another embodiment, the application modifier system can further include a history component. The history component provides for keeping records of activity within the present invention. For example, the history component provides a list of applications modified, the operating environments in which they were employed, the parameters used to modify the applications, the number of applications employed, the user or authority who employed the applications, the size of the application, the application locations, the amount an application has been employed, the operating environments targeted, the location of operating environments, dates and times of application employment, user activity, and/or order of applications employed.

Additionally, the application modifier system can further include a display component which mitigates the management of data for users. The display component can visually present information, for example, via a computer monitor, a television screen, a personal digital assistant (PDA) and/or a touch screen. The display component can allow a user to view information from, for example, the history component, and the application and parameter data store. For example, the display component can visually present a list of applications that have been modified by which parameters for what operating environment.

Another aspect in accordance of the present invention is the application modifier system further including a virtual code component. Virtual code component allows a user to design a generic application and/or managed code in which it can be deployed across a variety of operating environments regardless of the underlying platform. For example, the invention allows for a scalable architecture wherein a user can develop a generic application independent of the end-user display (e.g., monitor, touch-screen) or type of unit (e.g., CE hand-held, server, PC).

Additionally, the virtual code component further includes a code analyzer and a code generator. The code analyzer determines the managed code of a generic or user-end specific application. The code generator utilizes .NET virtual machine code-ability mechanisms. .NET provides managed code to be converted into native computer assembly at runtime. Furthermore, the code generator can utilize .NET to morph application code into underlying platforms at runtime.

DETAILED DESCRIPTION OF THE INVENTION

Referring toFIG. 1, application modifier system100is depicted with the schematic drawings. The application modifier architecture102is shown containing an interrogation component104and a modification component106. The application architecture102mitigates the need for a developer to have a prior knowledge of an operating environment. The present invention learns an operating environment through a discovery process, in which the application is modified and/or configured accordingly. Interrogation component104determines the operating environment108in which the present invention is being applied. Parameters110are associated with the operating environment108. The parameters facilitate determining the operating environment in which the present invention is applied. For example, operating environment108could be a desktop personal computer, with defining parameters such as, but not limited to, the operating system, amount and type of RAM, type of video card, type of sound card, input/output devices, hard drive space, etc. Interrogation component104determines the parameters of an operating environment in which modification component106utilizes. Modification component106modifies and/or configures an application based at least in part upon the determined parameters110from the operating environment108. Modification component106tailors the application to the specific needs of the operating environment108. The application will then function as desired within the operating environment108based upon defining parameters110.

Now referring toFIG. 1, application modifier architecture102interacting with an operating environment108is shown. It is noted that application modifier architecture102is not limited to interaction between one operating environment. The present invention has the ability to interact with a plurality of operating environments. As an example, consider a network hosting computers, portable hand-held devices, and servers, in which each are considered an individual operating environment. An application would need to be specifically tailored or programmed to function correctly within the computer, portable hand-held device, cell phone, and server. Each of the operating environments would contain specific defining parameters. The defining parameters allow for an application to function correctly. For example, the parameters for the portable hand-held can be at least in part, the type of the hand-held, the operating system, the hard-disk space, RAM, input/output devices, processor speed, graphic capabilities, etc. The interrogation component104determines the necessary parameters in order for the modification component106to modify and/or configure an application to the operating environment. In the same example, a calendar application must be configured to each operating environment108(e.g., computer, portable hand-held device, cell phone, and server) to function correctly. Without the present invention, each application is manually programmed to be configured to the specific operating environment.

The application modifier architecture102can be stored on computer readable media including, but not limited to, an ASIC (application specific integrated circuit), CD (compact disc), DVD (digital video disk), ROM (read only memory), floppy disk, hard disk, EEPROM (electrically erasable programmable read only memory) and memory stick in accordance with the present invention.

Application modifier architecture102has the ability to keep record of applications modified. By keeping a record of the applications modified, the user is informed of all operating environments installed applications. A programmer can be aware of which applications have been configured to which operating environments.

Another aspect of the invention is the application modifier system100can be displayed to the user to facilitate functionality of the present invention.

The application modifier architecture102can communicate to the operating environment108via, for example, a parallel electrical connection, a serial electrical connection, a computer network connection (e.g., utilizing the Internet), a Digital Subscriber Line (“DSL”), a telephone line, a cable modem, a wireless data communications link and/or integrated services digital network (“ISDN”).

The application modifier architecture102can utilize artificial intelligence (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation) to facilitate the interrogation and modification process. The modifier application system100can employ various inference schemes and/or techniques in connection with filtering desirable configurations upon an application. As used herein, the term “inference” refers generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the subject invention.

FIG. 2depicts application modifier system200wherein application modifier architecture102utilizes artificial intelligence in accordance with an aspect of the present invention. Application modifier architecture102contains a modifier component106and an interrogation component104. Interrogation component104determines the parameters110of a targeted operating environment108for an application to reside. After the parameters110of the operating environment are determined, the modification component106configures and/or modifies the application based at least part of the determined parameters110. Thus, interrogation component104and modifier component106determine the parameters110of the operating environment108and configure the application based at least in part of the determined parameters110.

Both the interrogation component104and the modification component106can take advantage of artificial intelligence techniques (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation). The interrogation component104and modifier component106can employ various inference schemes and/or techniques in connection with filtering desirable interrogations upon an operating environment and modifications upon an application. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the subject invention.

The interrogation component104consists of an interrogator202and an artificial intelligence component204. The interrogator202can determine the parameters110of an operating environment108by utilizing artificial intelligence component204. The artificial intelligence facilitates determining the parameters of an operating environment by inferring the appropriate interrogation route (e.g., line of questioning) to maximize efficiency. For example, while determining the parameters of an operating environment, the interrogator202can find a Windows 98 environment. The artificial intelligence component can then limit the type of processor to the type of processors that provides for running a Windows 98 operating system.

The modifier component106consists of a modifier206and an artificial intelligence component208. The modifier206can configure and/or modify an application based upon the parameters110of the operating environment108by utilizing artificial intelligence component208. For example, the artificial intelligence component208can infer the typical modifications and configurations to applications from past modifications. For example, if an operating environment consistently contains the same parameters, the artificial intelligence component208can infer which modifications to apply to the present application.

In another example, the artificial intelligence component208has the capability of up-keeping the applications within the operating environments. For example, when application A is modified to operating environment B, the artificial intelligence component208can infer whether A is an updated or new application. If application A is an update, the artificial intelligence component208can infer whether to update other operating environments similar to B. However, the artificial intelligence component208can also infer if other applications should have the update application A employed in an operating environment.

In yet another example, the artificial intelligence component208provides for configuring the application based upon the specific user preference. For example, each user can specify a profile in which the artificial intelligence component208incorporates modifications made to applications within an operating environment. If programmer A is consistently dealing with application B within operating environment C, the artificial intelligence component208can infer that when programmer A (based at least upon the user profile created) modifies an application, the modification is within operating environment C. Using the same example, the artificial intelligence component208can infer that when programmer A (based at least upon the user profile created) interrogates operating environment C, the modification is upon application B.

Turning toFIG. 3, the application modifier system300consists of application modifier architecture302, an operating environment308, and an application and parameter data store312. The application modifier architecture302consists of an interrogation component304and a modification component306. The interrogation component304determines the parameters310of the operating environment308. The modification component306modifies and/or configures the application based at least upon the determined parameters310.

The application modifier architecture302can communicate to the application and parameter data store312via, for example, a parallel electrical connection, a serial electrical connection, a computer network connection (e.g., utilizing the Internet), a Digital Subscriber Line (“DSL”), a telephone line, a cable modem, a wireless data communications link and/or integrated services digital network (“ISDN”).

The application and parameter data store312can utilize artificial intelligence (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation).

The application and parameter data store302can employ various inference schemes and/or techniques in connection with filtering desirable application and parameter questions. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the subject invention.

For example, the artificial intelligence technique(s) within the application and parameter data store312can facilitate the user choice of whether an application is within the data store or not. In one example, the artificial intelligence infers the importance of having an application within the data store. In another example, the artificial intelligence technique(s) facilitates the parameter determination process with maximizing the efficiency of the line of interrogation questioning of the operating environment.

FIG. 4is an application modifier system400consisting of an application modifier architecture402, operating environment408, application and parameter data store412, and history component414. The application modifier architecture402consists of an interrogation component404and a modification component406. The interrogation component404determines the parameters410of the operating environment408. The modification component406modifies and/or configures the application based at least upon the determined parameters410. The application and parameter data store412facilitates storage of applications and parameter interrogation questions.

History component414mitigates the accessibility of application and operating environment information to the user. For example, the history component414can keep records of the application modifications and/or the operating environments in which the applications reside. This informs the user of application modifications and the location of the installed applications which increases efficiency. In another example, the history component414can record the parameters410for each operating environment408. The user can view the parameters of the operating environment increasing efficiency.

In another example, the history component414can provide, but is not limited to providing, the applications modified, the operating environments in which they were employed, the parameters used to modify the applications, the number of applications employed, the user or authority who employed the applications, the size of the application, the application locations, the amount an application has been employed, the operating environments targeted, the location of operating environments, dates and times of application employment, user activity, and/or order of applications employed. The history component414also provides for manipulating and/or sorting such information.

The application modifier architecture402can communicate to the history component414via, for example, a parallel electrical connection, a serial electrical connection, a computer network connection (e.g., utilizing the Internet), a Digital Subscriber Line (“DSL”), a telephone line, a cable modem, a wireless data communications link and/or integrated services digital network (“ISDN”).

Referring toFIG. 5, application modifier system500consists of application modifier architecture502, operating environment508, application and parameter data store512, history component514, and display component516. The application modifier architecture502consists of an interrogation component504and a modification component506. The interrogation component504determines the parameters510of the operating environment508. The modification component506modifies and/or configures the application based at least upon the determined parameters510. The application and parameter data store512facilitates storage of applications and parameter interrogation questions. History component514mitigates the accessibility of application and operating environment information to the user. The display component516displays information to the user.

The display component516mitigates the management of data for users. Display component516can visually present information, for example, via a computer monitor, a television screen, a personal digital assistant (PDA) and/or a touch screen. The display component516can allow a user to view information from, for example, the history component514, and the application and parameter data store512. For example, the display component516can visually present a list of applications that have been modified by which parameters for what operating environment.

The application modifier architecture502can communicate to the display component516via, for example, a parallel electrical connection, a serial electrical connection, a computer network connection (e.g., utilizing the Internet), a Digital Subscriber Line (“DSL”), a telephone line, a cable modem, a wireless data communications link and/or integrated services digital network (“ISDN”).

FIG. 6is an application modification system600in accordance with an aspect of the present invention. The application modifier architecture602contains an interrogation component604and a modification component606. For the present example, assume all operating environments are the Microsoft .NET platform. Within a .NET platform, there can be industrial automation terminals that utilize HMI applications. Each terminal contains defining parameters. In the present example, the invention allows a user to modify and/or configure an HMI application based upon the parameters defined within the .NET platform and the terminal. The operating environment608is depicted inFIG. 6having four terminals,2201,2202,2203and2204; however, it is to be appreciated that the operating environment608can include any suitable quantity of terminals. It may also be appreciated that there may be more than one operating environment in which application modifier architecture602is interrogating. The present example is an operating environment of Microsoft .NET, with terminals having at least one operating environment defining parameter associated.

By allowing the application to be modified and/or configured by the present invention, programmers may be more efficient by not having to specifically tailor each application according to the parameters within the operating environment. For example, the present invention modifies applications with parameters such as, but not limited to, scalability issues, graphics, processing capabilities of user device, memory constraints, screen real-estate, tertiary applications, operating system, and user environment. This allows the HMI application to function correctly within the operating environment. In another example, the present invention can utilize the Microsoft .NET platform, to facilitate the programming of applications toward various terminals with different defining parameters. The terminals can have different parameters, in which the present invention can utilize to modify the applications accordingly.

The HMI can be a fixed HMI, for example, such as a graphical interface on a stationary monitor used in conjunction with a personal and/or industrial computer. According to another example, the HMI can be a tethered portable HMI, such as the Machine Terminal MT750 or the Guard Terminal G750, both manufactured by Allen-Bradley. A tethered portable HMI offers several advantages over the fixed HMI, the most important being increased mobility to manually inspect the plant floor with the HMI in hand, increasing productivity. For example, an operator using a tethered portable HMI can respond to alarms and/or adjust machine settings with the HMI in hand. Increased mobility further enables greater troubleshooting capability and reduced set up time.

According to yet another example, the HMI can be a wireless HMI, such as the Allen-Bradley MobileView Tablet T750. A wireless HMI offers even greater mobility than the tethered portable wireless, and its range can be extended by distributing additional base stations throughout a large plant. In this manner, an operator can access information regarding a given machine and control the machine from any point in the plant. Furthermore, MobileView operates on a thin client platform, which permits facilitated integration to new or extant control architectures. By utilizing this technology, the wireless MobileView can act as a thin client to computer applications such as, for example, the Rockwell Software RSView family of software. Because communication with the server occurs via an Ethernet link, this aspect of the present invention advantageously reduces hardware and software costs.

Turning toFIG. 7, an application modifier system700is depicted consisting of application modifier architecture702, an operating environment708, and a virtual code component712. The application modifier architecture702consists of an interrogation component704and a modification component706. The interrogation component704determines the parameters710of the operating environment708. The modification component706modifies and/or configures the application based at least upon the determined parameters710.

Virtual code component712provides a user to design an application and/or managed code in which it can be deployed across a variety of operating environments regardless of the underlying platform. For example, the invention allows for a scalable architecture wherein a user can develop a generic application independent of the end-user display (e.g., monitor, touch-screen) or type of unit (e.g., CE hand-held, server, PC). Thus, the time a user needs to tailor the application to specific uses is diminished. The virtual code component712provides for acting as a translator for the various types of industrial automation code used. Virtual code component712takes a generic application, without specific tailored-aspects, and configures the application to a desired platform. For example, a user could develop an application utilizing the .NET virtual machine. The virtual code component712utilizes .NET virtual machine and the code-ability mechanism. By utilizing .NET, the virtual code component712provides managed code to be converted into native computer assembly at runtime. Moreover, .NET can morph application code to an underlying platform at runtime. For example, a user working at computer A within a computer environment can access an application. The virtual code component utilizes the .NET virtual machine to provide the managed code to be converted to the computer A when the application is accessed. Thus, the .NET morphs the application code according to the computer A at runtime. In addition, the present invention allows a user to compile the managed code a single time, in which the resultant code will properly execute across a variety of platforms.

In another embodiment, a generic code application can be deployed across a platform with the virtual code component712configuring the generic code to the necessary code language. Furthermore, the application modifier system700provides for interrogating and modifying the generic application according to the defining parameters of the operating environment708. For example, the virtual code component712provides for morphing a generic application code to an underlying platform at runtime utilizing .NET. The application modifier architecture702provides for modifying and/or configuring the generic application according to the defining parameters710of operating environment708. The present invention mitigates the specific tailoring of applications to various defining parameters of an operating environment.

The application modifier architecture702can communicate to the virtual code component712via, for example, a parallel electrical connection, a serial electrical connection, a computer network connection (e.g., utilizing the Internet), a Digital Subscriber Line (“DSL”), a telephone line, a cable modem, a wireless data communications link and/or integrated services digital network (“ISDN”).

Referring toFIG. 8, an application modifier system800is shown. The application modifier system800contains application modifier architecture802, an operating environment808, and a virtual code component812. The application modifier architecture802consists of an interrogation component804and a modification component806. The interrogation component804determines the parameters810of the operating environment808. The modification component806modifies and/or configures the application based at least upon the determined parameters810. Virtual code component812utilizes .NET virtual machine and the associated code-ability mechanism providing managed code to be converted into native computer assembly at runtime. Thus, a user can utilized the virtual code component to deploy managed code across a variety of operating environments regardless of underlying platforms and defining parameters.

The virtual code component812may contain a code analyzer814and a code generator816. The code analyzer814receives the generic code applications and determines the managed code. The generic code applications can be, but are not limited to, basic templates in a programming language containing basic functionality. The code generator816can utilize the .NET virtual machine's code-ability mechanism to morph application code to native computer assembly at runtime based at least upon the underlying platform. The code analyzer814determines managed code. The code generator816morphs the managed code utilizing .NET and converts the managed code into native computer assembly at runtime and/or access. In other words, .NET provides a user to run a managed code regardless of the underlying platform. The application modifier architecture802provides for modifying and/or configuring the generic application according to the defining parameters810of operating environment808. Thus, a managed breaker code can be implemented across an operating environment808containing the defining parameters810.

FIG. 9contains an application modifier system900consisting of application modifier architecture902, an operating environment908, a virtual code component912, and data store918. The application modifier architecture902consists of an interrogation component904and a modification component906. The interrogation component904determines the parameters910of the operating environment908. The modification component906modifies and/or configures the application based at least upon the determined parameters910. Virtual code component912contains a code analyzer914and a code generator916. The code analyzer914receives the generic code templates and determines the native coding language. The code generator916utilizes .NET virtual machine and the code-ability mechanism associated. Thus, .NET provides managed code to be converted into native computer assembly at runtime. Moreover, .NET can morph application code to an underlying platform at runtime.

The generic application data store918facilitates storage of generic applications. For example, the generic application data store918can be computer readable media including, but not limited to, an ASIC (application specific integrated circuit), CD (compact disc), DVD (digital video disk), ROM (read only memory), floppy disk, hard disk, EEPROM (electrically erasable programmable read only memory) and memory stick in accordance with the present invention. In one example, the generic application data store918can contain generic applications and/or managed code received by code analyzer914. In another example, the generic application data store918can contain generic applications translated by code generator916. The generic application data store918facilitates application incorporation within operating environment908. The generic application data store918can optimize efficiency within accessibility of applications to parameters910within an operating environment908.

The virtual code component912can communicate to the generic application data store918via, for example, a parallel electrical connection, a serial electrical connection, a computer network connection (e.g., utilizing the Internet), a Digital Subscriber Line (“DSL”), a telephone line, a cable modem, a wireless data communications link and/or integrated services digital network (“ISDN”).

The generic application data store918can utilize artificial intelligence (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation).

The generic application data store918can employ various inference schemes and/or techniques in connection with filtering desirable generic applications. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the subject invention.

The artificial intelligence within in the generic application data store918can facilitate the user choice of whether a generic application is within the data store or not. For example, the artificial intelligence facilitates the determination how an application can be morphed to an underlying platform at runtime. In one example, the artificial intelligence can infer, based at least upon the defining parameters910of operating environment908, how a managed code can be converted into computer assembly at runtime.

FIG. 10is a methodology1000for configuring and/or modifying an application based at least upon a parameter of an operating environment in accordance with an aspect of the present invention. At1002, a target operating environment is determined. The determination can be, but not limited to, user selected, inferred by artificial intelligence, associated with a periodic timer for updates, and/or a function of an application and parameter data store. Next,1004, the subject application is determined. The subject application can be, but not limited to, a generic application and/or a code specific application (e.g., user-end specific). The application can be determined, but not limited to, artificial intelligence, associated with a periodic timer for updates, and/or a function of an application and parameter data store. At1006, the parameters of the targeted operating environment are determined. The parameters of the operating environment can be determined based upon, but not limited to, user selection, artificial intelligence, and/or an application and parameter data store. At1008, the application is modified and/or configured based at least upon the defining parameters of the targeted operating environment. For example, a user can define the application A to be employed to an operating environment B. The parameters of the operating environment B are used to modify and/or configure application A.

Turning toFIG. 11, a methodology1100for modifying an application based at least upon defining parameters of an operating environment in accordance with an aspect of the present invention is illustrated. At1102, the user is prompted and which application and which operating environment to target is determined. For example, the user could provide the targeted application and operating environment. At1104, the appropriate line of interrogation is determined based upon the targeted application and operating environment. In one example, if application A is chosen with operating environment B, the appropriate and most effective line of interrogation can be C. However, if application D is chosen with operating environment B, application appropriate and efficient line of interrogation can be E. The method of determining the appropriate line of interrogation can be, but not limited to, hard-coded (e.g., application and parameter data store), artificial intelligence techniques (e.g., Bayesian learning methods that perform analysis over alternative dependent structures and apply a score, Bayesian classifiers and other statistical classifiers, including decision tree learning methods, support vector machines, linear and non-linear regression and/or neural network representation), and/or user selected. At1106, the target operating environment is interrogated using the determined line of interrogation. The interrogation questions can determine the necessary parameters to modify and/or configure the application. At1108, the interrogation continues until at least one defining parameters of the operating environment are determined. For example, the interrogation line of questioning can continue until the necessary parameters are defined for the modification and/or configuration of an application. Next at1110, the application is modified according to the defined parameters of the operating environment. For example, a word processing application can be modified to function within a PC. The PC can have such defining parameters as, but not limited to, the hard-disk space, RAM, input/output devices, processor speed, graphic capabilities. At1112, the history component is updated. The history component provides a description of activity regarding the present invention. For example, the history component can provide, but is not limited to providing, the applications modified, the operating environments in which they were employed, the parameters used to modify the applications, the number of applications employed, the user or authority who employed the applications, and/or order of applications employed. The history component also provides for manipulating and/or sorting such information.

Referring toFIG. 12, an exemplary application modification display component1200in accordance with an aspect of the present invention is illustrated. The application modification display component1200can visually present information, for example, via a computer monitor, a television screen, a personal digital assistant (PDA) and/or a touch screen.

Application modification display component1200consists of an application browser1202, an operating environment browser1204, an interrogate and modify action1206, and a history component1208. The application browser1202provides for access to an application. For example, the application browser1202allows a user to specify application A from CD-ROM drive B, within folder C. The operating environment browser1204provides for targeting an operating environment with an application. For example, the operating environment browser allows a user to target operating environment A by specifying network B, within computer terminal C. Once an application and target environment are determined the interrogate and modify action1206can be used. The interrogate and modify action1206starts the interrogation of the operating environment in order to determine the defining parameters. With at least one defining parameter, the application is modified and/or configured accordingly. The history component1208provides for a description of all activity regarding the present invention. For example, the history component1208can provide, but is not limited to providing, the applications modified, the size of the application, the application locations, the amount an application has been employed, the operating environments targeted, the location of operating environments, dates and times of application employment, and/or user activity. The history component1208can also provide for sorting and manipulation of such information. In another example, the application modification display component1200can employ a user component log in and password component to facilitate management and security.

Turning toFIG. 13, an exemplary virtual code display component1300in accordance with an aspect of the present invention is illustrated. The virtual code display component1300can visually present information, for example, via a computer monitor, a television screen, a personal digital assistant (PDA) and/or a touch screen.

Virtual code display component1300facilitates the management of the generic applications and/or managed code. The virtual code display component1300consists of an application load component1302, an application remove component1304, and an application viewer1306. The application load component1302provides for generic applications to be accessible for conversion into native computer assembly at runtime utilizing .NET virtual machine. The application load component1302provides for, but is not limited to providing for, detail of the generic application, the location of the generic application, and/or the location where the generic application is to be contained. The application remove component1304provides for generic applications and/or managed code to be removed from the present invention. For example, the application remove component1304can allow a user and/or authority to remove a generic word processing application based on, for example, the generic application being obsolete. The application remove component1304facilitates the management of the various generic applications within the present invention. The application viewer1306includes a listing of generic applications within the present invention. The application viewer1306provides for a listing of applications and/or a view of a generic application's code. For example, the application viewer1306can display a listing of generic applications such as a generic word processing application, a generic valve control application, and a generic breaker control application. Furthermore, the application viewer1306can display the individual code of the generic word processing application, and/or the generic valve control application, and/or the generic breaker control application. In another example, the virtual code display component1300can employ a user log in and password component to facilitate management and security.

In order to provide a context for the various aspects of the invention,FIGS. 14 and 15as well as the following discussion are intended to provide a brief, general description of a suitable computing environment in which the various aspects of the present invention can be implemented. While the invention has been described above in the general context of computer-executable instructions of a computer program that runs on a computer and/or computers, those skilled in the art will recognize that the invention also can be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks and/or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the inventive methods may be practiced with other computer system configurations, including single-processor or multiprocessor computer systems, mini-computing devices, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like. The illustrated aspects of the invention may also be practiced in distributed computing environments where task are performed by remote processing devices that are linked through a communications network. However, some, if not all aspects of the invention can be practiced on stand-alone computers. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

With reference toFIG. 14, an exemplary environment1410for implementing various aspects of the invention includes a computer1412. The computer1412includes a processing unit1414, a system memory1416, and a system bus1418. The system bus1418couples system components including, but not limited to, the system memory1416to the processing unit1414. The processing unit1414can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit1414.

The system memory1416includes volatile memory1420and nonvolatile memory1422. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer1412, such as during start-up, is stored in nonvolatile memory1422. By way of illustration, and not limitation, nonvolatile memory1422can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory1420includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).

It is to be appreciated thatFIG. 14describes software that acts as an intermediary between users and the basic computer resources described in suitable operating environment1410. Such software includes an operating system1428. Operating system1428, which can be stored on disk storage1424, acts to control and allocate resources of the computer system1412. System applications1430take advantage of the management of resources by operating system1428through program modules1432and program data1434stored either in system memory1416or on disk storage1424. It is to be appreciated that the present invention can be implemented with various operating systems or combinations of operating systems.

A user enters commands or information into the computer1412through input device(s)1436. Input devices1436include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit1414through the system bus1418via interface port(s)1438. Interface port(s)1438include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s)1440use some of the same type of ports as input device(s)1436. Thus, for example, a USB port may be used to provide input to computer1412, and to output information from computer1412to an output device1440. Output adapter1442is provided to illustrate that there are some output devices1440like monitors, speakers, and printers, among other output devices1440, which require special adapters. The output adapters1442include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device1440and the system bus1418. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s)1444.

Computer1412can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s)1444. The remote computer(s)1444can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer1412. For purposes of brevity, only a memory storage device1446is illustrated with remote computer(s)1444. Remote computer(s)1444is logically connected to computer1412through a network interface1448and then physically connected via communication connection1450. Network interface1448encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 1102.3, Token Ring/IEEE 1102.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).

Communication connection(s)1450refers to the hardware/software employed to connect the network interface1448to the bus1418. While communication connection1450is shown for illustrative clarity inside computer1412, it can also be external to computer1412. The hardware/software necessary for connection to the network interface1448includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.

FIG. 15is a schematic block diagram of a sample-computing environment1500with which the present invention can interact. The system1500includes one or more client(s)1510. The client(s)1510can be hardware and/or software (e.g., threads, processes, computing devices). The system1500also includes one or more server(s)1530. The server(s)1530can also be hardware and/or software (e.g., threads, processes, computing devices). The servers1530can house threads to perform transformations by employing the present invention, for example. One possible communication between a client1510and a server1530may be in the form of a data packet adapted to be transmitted between two or more computer processes. The system1500includes a communication framework1550that can be employed to facilitate communications between the client(s)1510and the server(s)1530. The client(s)1510are operably connected to one or more client data store(s)1560that can be employed to store information local to the client(s)1510. Similarly, the server(s)1530are operably connected to one or more server data store(s)1540that can be employed to store information local to the servers1530.