A Software Pattern Engine (SPE) is a software development tool designed to make it easier to build software components and software systems. Conceptually, the SPE allows a software developer to define components in an XML file that adheres to a schema. The schema for a particular component type contains parameters that fully describes the functionality of the component within that particular pattern, and the engine processes the XML for that component to generate the code that implements the component. In theory, an entire application can be generated in this manner from a series of XML files.
The SPE also defines concepts that allow component patterns to expose APIs to one another, and to define the pieces of the software system that are dependencies and objects that are shared between various components in the system. These are often data objects, the attributes thereof, and services that are made available to perform logic. SPE concepts make it easy for component patterns to reveal data and APIs for use by other components in the system and enforces a naming convention for these shared pieces of the system.
One thing of note is that, in defining components in the SPE which will become software source files, there is no concept of a source file (for final code... not including XML). A particular XML-defined component may wind up contributing to one, none or many source files. Likewise, a particular source file may originate from one or many component definitions in the software definition. The SPE should also allow the component developer flexibility such that components defined in XML can be defined in any number of files and in any order, with reasonable limitations and rules.
Another thing of note is that, while the focus is on generating application code that fits component patterns, there will most likely be patterns that incorporate hand-written code (especially entire source files) into the final application code. Though these files and the components they represent are hand-written, it may still be advantageous for the SPE to be aware of them so that other generated software patterns can be aware of them as necessary.
For more, read about the five Core Concepts of the SPE.