A software engine is a core
component of a
complex software system
A software system is a system of intercommunicating components based on software forming part of a computer system (a combination of hardware and software). It "consists of a number of separate programs, configuration files, which are used to s ...
.
Alternate phrases include "software core" and "software core engine", or just "core engine".
The word "engine" is a metaphor of a
car's
engine
An engine or motor is a machine designed to convert one or more forms of energy into mechanical energy.
Available energy sources include potential energy (e.g. energy of the Earth's gravitational field as exploited in hydroelectric power ...
. Thus a software engine is a complex
subsystem.
There is no formal guideline for what should be called an engine, but the term has become entrenched in the
software industry. Notable examples are
database engine, graphics engine, physics engine, search engine, plotting engine, and
game engine
A game engine is a software framework primarily designed for the development of video games and generally includes relevant libraries and support programs. The "engine" terminology is similar to the term " software engine" used in the softwar ...
. Moreover, a
web browser
A web browser is application software for accessing websites. When a user requests a web page from a particular website, the browser retrieves its files from a web server and then displays the page on the user's screen. Browsers are used on ...
actually has two components referred to as engines: the
browser engine
A browser engine (also known as a layout engine or rendering engine) is a core software component of every major web browser. The primary job of a browser engine is to transform HTML documents and other resources of a web page into an interactiv ...
and
JavaScript engine.
Classically an engine is something packaged as a library, such as a ".sa", ".so", ".dll", that provides functionality to the software that loads or embeds it. Engines may produce graphics, such as the Pytho
matplotlibor the Objective-
Core Plot But engines do not in and of themselves generally have standalone user interfaces or "main", they are not applications. Thus, a distinguishing characteristic of an engine is its presentation as an API.
Engines may be used to produce higher level services that are applications, and the application developers or the management may choose to call the service an "engine". As in all definitions, context is critical. In the context of the packaging of software components, "engine" means one thing. In the context of advertising an online service, "engine" may mean something entirely different. In the arena of "core software development", an engine is a software module that might be included in other software by means of a package manager such a
NuGetfor C#
Pipenvfor Python, an
Swift Package Managerfor the Swift language.
One seeming outlier is a
search engine
A search engine is a software system designed to carry out web searches. They search the World Wide Web in a systematic way for particular information specified in a textual web search query. The search results are generally presented in a ...
, such as
Google Search
Google Search (also known simply as Google) is a search engine provided by Google. Handling more than 3.5 billion searches per day, it has a 92% share of the global search engine market. It is also the most-visited website in the world.
The ...
, because it is a stand-alone service provided to
end user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ultimately use a product. The end user stands in contrast to users who support or maintain the product, such as sysops, system administrat ...
s. However, for the search provider, the engine is part of a
distributed computing
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
system that can encompass many
data centers throughout the world. The word "engine" is evolving along with the evolution of computing as it expands into the arena of services offered via the Internet. There is a difference between Google the end-user application and Google the search engine. As an end user, search is done via a user interface, generally a browser, which talks to the "engine". This is but one way of interacting with the engine. Others include a wide range o
Google APIs which are more akin to the classic notion of engine (where an engine module presents via an API, only). There is also an overlapping software evolution, a service/application style known as
microservices
A microservice architecture – a variant of the service-oriented architecture structural style – is an architectural pattern that arranges an application as a collection of loosely-coupled, fine-grained services, communicating through ligh ...
.
Prior to the Google online search service, there had been multiple search engines that were indeed packaged as software modules. Long before Google, there were online dialup services that used third party search engines, such as Congressional Quarterly's Washington Alert II service. Before that there were many desktop products that included third party search engines, especially CD-ROM based encyclopedias from Grollier, Comptons, Bertelsmann, and many others. Mac OS 9 for a long time used a third party search library (Personal Library Software's CPL). Most of the early search engine companies, such as Personal Library Software and their CPL product, are long gone. One of the earliest Web search services, perhaps the first, was WebCrawler. It was based on the CPL search engine library from Personal Library Software. The CPL engine is long gone, as it was withdrawn from the market when AOL acquired Personal Library Software, and apparently only exists a
archival pages in the Internet Archive Wayback Machine
For a software developer, probably the most useful notion of "engine" is that of a module you can use in your own code, a module that provides significant functionality in a focussed domain. One might call the
C standard library an "engine", but it does not really have a focus other than to provide a broad range of low level services. Still, it might be called a "foundational services" engine. On the other hand
Gensimmore clearly classifies as an engine; it is a high level package offering a range of high level tools for
topic model
In statistics and natural language processing, a topic model is a type of statistical model for discovering the abstract "topics" that occur in a collection of documents. Topic modeling is a frequently used text-mining tool for discovery of hidden ...
ing, largely based on derivations of the
vector space model of information retrieval originally developed by
Gerard Salton.
See also
*
Integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
*
Software framework
In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
References
Software engineering
{{software-stub