Software engine

A software engine refers to a central part of a computer program. The concept has however taken on slightly different meanings depending on context.

Software Engine as Metaphor

The term Engine when used to describe a piece of software is frequently used by developers when speaking to a wider, layman audience, to describe what they would otherwise refer to as a library, SDK or object, to denote an encapsulated block of functionality.

The term often appears in marketing material that need to describe software internals, as well as in product names.[1][2][3]

This way of using the term is metaphorical, and marketing oriented.

Software Engine as used in Computer Science

The field of computer science uses the term Engine to provide a mental model of software components an order of magnitude more complex than ordinary modules of software (such as the libraries, SDKs or objects mentioned above). Software modules remain static until called upon by another module. In response to the call, the instruction pointer of the computer begins tracing its way through the code in the called upon module. A software module is a Turing machine, which changes its state based on the algorithms that it contains.

In contrast, the mental model a software engine is a mechanical engine, which one can start and stop, and which may run idle for periods of time. Examples of software engines include relational database engines, workflow engines, inference engines and search engines. A common characteristic of software engines is metadata that provides models of the real data that the engine processes. Software modules pass data to the engine, and the engine uses its metadata models to transform the data into a different state.

Another characteristic of software engines consistent with their mental model is the ability to tune software engines for optimal performance. In contrast, software modules can be "tuned" only by rewriting them.

API engines like Varnish engine is a high capability API system.

In Data science you could use data serving engines like streaming engines or data transformation engines which transform data which is a requirement of heavy duty applications.

Other examples of engines are Audio, Video, Image heavy processing engines and specialized proprietary rendering engines in Hollywood films which require lot of visual optimizations.

See also

References

  1. "What is Live? Learn more about Ableton's music making software". Ableton. Retrieved 2013-09-17.
  2. "alphaWorks Community". Alphaworks.ibm.com. 2009-10-20. Retrieved 2013-09-17.
  3. BALARAD, s.r.o. (2013-04-25). "Font Engine - lettering, monogram and clipart plug-in for Embird embroidery software". Embird.com. Retrieved 2013-09-17.


This article is issued from Wikipedia - version of the 10/13/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.