About SW Manufacturing

As a senior software development practitioner, you have no doubt seen patterns in the components that you produce. In many respects, systems that have similar purposes also share a similar structure. In industry, this similarity in structure is often referred to as an archetype.

Setting up the manufacturing line

In applying software manufacturing, we take the approach that is often taken in manufacturing any kind of work product. First, we create some sample components by hand that are representative of the components that we want to create using automated means.

Secondly, we make those components as perfect as we can. These will be the components that are used to form our patterns. It even makes sense to get a small system running using those components. That way, we can be sure that the patterns we create actually work when we integrate them.

Finally, we use the code from our sample components to create patterns that can be expanded automatically by a tool capable of reading metadata that describes a component, and use that information to create the component’s details. This results in a template. When our templates are perfect, everything created with them will be perfect also.

Once we have a template for a component type, we now have the ability to create any number of components that follow that pattern. The differences from one component to another are given in the metadata that describes each instance.

Design for manufacturability

When creating and architecture for your product it pays to keep in mind how you might imagine automating the production of the components that participate in its architecture. In this manner you can enable automation and keep hand programming to a minimum.

The most powerful technique that can be applied in designing for manufacturability is to use frameworks. A framework is a semi complete subsystem or application, that accepts components in a predetermined manner. When the components are added, the framework is completed and ready to perform its function in the context of the components that have been supplied to it. For example, our product called FastTracks uses the Ruby on Rails framework for constructing database-centric web applications. The Rails framework has a prescribed way that components are added to it to create web applications. Rails web applications have a defined regular structure. Because of this regular structure, this framework is well suited for applying the software manufacturing model.


Concisely, metadata is information about data elements or system elements. We use metadata in the software manufacturing process to give the generated components a formal, machine readable definition and meaning. XML is often used to express meta data, and many modeling tools for UML are able to export XML in a format called XMI. When selecting a tool for use in software manufacturing, make sure it is able to read a wide variety of metadata formats.


As software development process grows to pay more attention to the science and engineering aspects of producing software, software manufacturing will take a more prevalent role in the production of many types of software systems.

The productivity and quality gains that one acquires by using software manufacturing, make this technology too compelling to ignore.

Fred Wild
Advantage Software Technologies