Software engine
A software engine is a core component of a complex software system.[1] Alternate phrases include "software core" and "software core engine", or just "core engine".
Definitions
The word "engine" is a metaphor of a car's engine. Thus, it is a software engine that is a complex subsystem.[2]
There is no formal guideline for what should be called an engine, but the term has become engraved in the software industry. Notable examples are;
- Database engines,
- Graphics engines,
- Physics engines,
- Search engines,
- Plotting engines,
- Game engines.
Moreover, a web browser has two components referred to as engines:
Classically, an engine is something packaged as a library, such as ".sa", ".so", or ".dll", that provides functionality to the software that loads or embeds it. Engines may produce graphics, such as the Python matplotlib or the Objective-C Core Plot. Engines do not in and of themselves generally have standalone user interfaces - they are not applications. A distinguishing characteristic of an engine is its presentation as an API.
Examples
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". 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 using a package manager such as NuGet for C#, Pipenv for Python, and Swift Package Manager for the Swift language.[3]
One seeming outlier is a search engine, such as Google Search, because it is a standalone service provided to end users. However, for the search provider, the engine is part of a distributed computing system that can encompass many data centres 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.[4] There is a difference between Google the end-user application and Google the search engine. As an end user, a 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 of Google APIs, which are more akin to the classic notion of an engine (where an engine module presents via an API, only). There is also an overlapping software evolution, a service/application style known as microservices.
History
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 as archival pages in the Internet Archive Wayback Machine.[5]
Applications
For a software developer, the most useful notion of "engine" is that of a module for programming, a module that provides significant functionality in a focused 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, Gensim more clearly classifies as an engine; it is a high level package offering a range of high level tools for topic modeling, largely based on derivations of the vector space model of information retrieval originally developed by Gerard Salton.
References
- "What Is a Software Engine? (with picture)". EasyTechJunkie. Retrieved 2022-08-07.
- "Engine". Techopedia. 2012-10-19. Retrieved 2023-06-29.
- "What is a Content Management System (CMS)?". Content Management. Retrieved 2023-06-06.
- Zhang, Shuai; Chen, Xuebin; Zhang, Shufen; Huo, Xiuzhen (October 2010). "The comparison between cloud computing and grid computing". 2010 International Conference on Computer Application and System Modeling (ICCASM 2010). Vol. 11. pp. V11–72–V11-75. doi:10.1109/ICCASM.2010.5623257. ISBN 978-1-4244-7235-2. S2CID 8645451.
- "CPL Data Sheet". 1998-01-13. Archived from the original on 1998-01-13.