Foreword by Felix Frayman

Industrialization brought us the ability to efficiently produce the same products. However, some types of businesses are not well served by delivering the same product to all customers. Manufacturers try to address this problem by creating a fixed set of product variants that contain a pre-defined set of options in the hope that one of these variants might suit customer needs. Unfortunately, for highly variant products, this strategy does not provide a suitably close match to satisfy individual customer needs. To allow for individual customization, configuration systems first were applied to complex industrial products such as trucks and high end computer systems. International Harvester in the 60′s implemented in Assembly language one of the first computerized support systems for configuration of trucks. Digital Equipment Corporation (DEC) fielded first rule-based configuration expert system R1 in 1978 and XCON in 1980 for ordering and configuring VAX computers, saving DEC millions of dollars each year. These systems were used by experienced sales people who helped to place an order for a customer. Broad acceptance of the Internet created a tremendous push for configuration systems. It opened up direct consumer access to configuration systems, making them applicable for highly variant consumer products. PC manufacturers were one of the first to jump on this bandwagon, offering custom ordering capabilities for their PCs via the Internet. Now we live in the age of mass customization where companies find value in providing customers with the ability to custom tailor products while keeping the prices in line with the mass produced products. Configuration systems play a central role in the continuing trend of mass customization that affects an ever increasing number of products.

Bill Paseman – founder of Calico Commerce – an early pioneer startup in the configuration field, introduced me to what could be one of the best made cases for providing configuration systems – a diner scene from the movie “Five Easy Pieces”, where Jack Nicolson is trying to order a “customized” chicken-salad sandwich in a restaurant. You can easily find the scene on YouTube. It provides an entertaining example of a user experience without configuration capabilities.

Configuration spans a broad spectrum of tasks from simple product options selection for a custom athletic shoe to configuring an airplane. After all, an airplane is just one million parts flying in close formation. All of us encounter configuration problems in one way or another in our lives. If you bought a car, you probably dealt with it at some level already, knowingly or unknowingly. Companies that implement configuration systems well provide great experiences for their customers while at the same time solving daunting tasks on the back end where technical and business logistics capabilities are integrated. For more complex products configuration requires technical innovation and extensive re-engineering of a company’s internal business processes.

I discovered configuration problems in 1985, working at Xerox PARC, while still finishing research on my Ph.D. thesis in Stanford’s AI Lab. Xerox had just entered the PC business and was selling them via a sales force accustomed to selling copiers. All PC options and some compatibility rules were captured on pieces of paper that were provided to the sales people. Forty percent of the orders that were placed had some sort of error that precluded delivering a working PC to a customer. Most expert configuration systems built at that time were rule-based. Unfortunately, large rule-based systems were fairly difficult to maintain since all knowledge was represented using production rules. We started to research a “better”, more maintainable technology for delivering configuration systems that would help with the Xerox PC ordering problem. The result was the development of the Cossack system – one of the early model-based configurators providing a separation between domain knowledge, problem solving knowledge, and user requirements. Cossack provided pre-defined types of component relations such as part-of, compatibility, required, and connectivity that were mapped into a dynamic constraint processing engine. This work culminated in a paper I co-authored with Sanjay Mittal that provided one of the first formalizations of the configuration task. Since then I have continued to work on configuration problems at HP Laboratories, where we researched mechanisms for delivering fast exhaustive solutions space exploration and construction of user interfaces that proactively precluded users from selecting incompatible options by utilizing highly optimized constraint propagation algorithms. In 1999 I joined Calico Commerce where we created a new configuration environment geared towards simpler configuration tasks supporting a large number of simultaneous users over the internet. This system was based on stateless compiled processing architecture delivering over two orders of magnitude improvement in the speed of operation and the computing resources footprint.

Most configuration systems have a sizable compute intensive footprint and require maintaining state of computation throughout the configuration session. Such systems could not be scaled easily to support a large number of simultaneous internet users. We architected a new configuration environment that was targeting a class of simpler configuration problems by providing stateless bit-vector compiled constraints processing with more than two orders of magnitude improvement over the previous system in the speed of operation and similar reduction in the computing resources footprint. This system could not address more complex technical configuration tasks, but provided excellent performance on the target set of problems.

At first glance, some configuration solutions could be seductively easy to implement, but for more complex problems, implementations may end up to be fairly difficult to execute well. In the process of implementation of various configuration systems I have discovered some very difficult and thorny underlying problems related to tight interconnection between system maintainability, user interface design, and response time that must be overcome. This book will help you understand these problems and provide you with various approaches on how to address them. A well-constructed configuration system must provide capabilities to create a maintainable knowledge base, deliver refined user experience, and offer fast exploration of an exponentially large solutions space with an acceptable computer resource footprint for the targeted user load. In this book you will find how real-world configuration applications and configuration environments address these requirements.

This book is an excellent introduction and overview of the field of Configuration Systems. It covers the most important developments in the field. The book discusses implications of configuration on the overall company business processes in support of mass customization. It provides the reader with a working definition of configuration problems and defines a range of configuration tasks – from simple selection to technical configuration. It puts configuration in the context of other related tasks such as design, planning, product data management, etc. and lays out discussion and good comparisons of formal representations and reasoning mechanisms while addressing the issues related to the design of user interfaces. Advanced topics covered include personalization, automated test and debugging of configuration information, as well as discussion of open research issues. The book presents an in-depth review of configuration business cases in different application domains. It also provides a presentation of commercial and free configuration environments that could be used as a basis for implementing configuration systems for different application domains.

This book will serve multiple audiences. For industry people this book provides an introduction to the field, an in-depth review of the latest developments, describes experiences with real world applications, and provides insights into commercial benefits to enterprises. In addition, it gives references to open source tools, configuration environments, and resources that would be helpful in developing solutions for specific applications. The book is also well-suited for an advanced course on configuration in Computer Sciences. Researchers and Ph.D. students will find in the book a discussion of open issues for future research.

This book is written by four main authors Alexander Felfernig, Lothar Hotz, Claire Bagley, and Juha Tiihonen – all of them are well-respected researchers in the field of configuration systems. Claire Bagley also possesses extensive practical experience in this field. In addition, there are many other authors who provide significant contribution to individual chapters of this book.

The book serves as a definitive guide to the field of Configuration Systems. It offers a good historical perspective and provides an enlightening view of a fascinating field of endeavor that has a rich blend of academic research with a plethora of practical applications. The book is well-researched and thorough, providing a great value as an exhaustive compendium of field references.

I have been working on configuration problems in various applications several times in my career. Now I am back into it from a somewhat unexpected angle. You may find configuration problems everywhere, if you keep your eyes open. This book will take you on the enticing journey of problems and solutions, teaching you techniques that you may find useful multiple times in your professional careers.

Happy explorations.