HOME

TheInfoList



OR:

A software engine is a core
component Circuit Component may refer to: •Are devices that perform functions when they are connected in a circuit.   In engineering, science, and technology Generic systems * System components, an entity with discrete structure, such as an assem ...
of a
complex Complex commonly refers to: * Complexity, the behaviour of a system whose components interact in multiple ways so possible interactions are difficult to describe ** Complex system, a system composed of many components which may interact with each ...
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 se ...
. Alternate phrases include "software core" and "software core engine", or just "core engine". The word "engine" is a metaphor of a
car A car or automobile is a motor vehicle with wheels. Most definitions of ''cars'' say that they run primarily on roads, seat one to eight people, have four wheels, and mainly transport people instead of goods. The year 1886 is regarded as ...
'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 gen ...
. Thus a software engine is a complex
subsystem A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purpose and expressed ...
. There is no formal guideline for what should be called an engine, but the term has become entrenched in the
software industry The software industry includes businesses for development, maintenance Maintenance may refer to: Biological science * Maintenance of an organism * Maintenance respiration Non-technical maintenance * Alimony, also called ''maintenance ...
. Notable examples are
database engine A database engine (or storage engine) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database. Most database management systems include their own application ...
, 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 software i ...
. 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 (#Name and scope, 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 in ...
and
JavaScript engine A JavaScript engine is a software component that executes JavaScript code. The first JavaScript engines were mere interpreters, but all relevant modern engines use just-in-time compilation for improved performance. JavaScript engines are typica ...
. 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
matplotlib
or 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
NuGet
for C#
Pipenv
for Python, an
Swift Package Manager
for 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 computer network, networked computers, which communicate and coordinate their actions by message passing, passing messages to one another from any system. Distributed com ...
system that can encompass many
data center A data center (American English) or data centre (British English)See spelling differences. is a building, a dedicated space within a building, or a group of buildings used to house computer systems and associated components, such as telecommunic ...
s 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 lightw ...
. 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 The C standard library or libc is the standard library for the C programming language, as specified in the ISO C standard.ISO/IEC (2018). '' ISO/IEC 9899:2018(E): Programming Languages - C §7'' Starting from the original ANSI C standard, it wa ...
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
Gensim
more 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 Vector space model or term vector model is an algebraic model for representing text documents (and any objects, in general) as vectors of identifiers (such as index terms). It is used in information filtering, information retrieval, indexing and ...
of information retrieval originally developed by
Gerard Salton Gerard A. "Gerry" Salton (8 March 1927 in Nuremberg – 28 August 1995) was a Professor of Computer Science at Cornell University. Salton was perhaps the leading computer scientist working in the field of information retrieval during his time, an ...
.


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