Companies that make nonphysical or intangible products, such as software and computer-based information services, can use the concepts of product families, product platforms, and derivative products. Our purpose here is to show how to apply these concepts for more effective development of software products, whether for commercial sale or for systems developed by MIS staffs.
Our first hypothesis: that well-designed platform architectures for software products, like platform architectures for physical products such as a car or office furniture, can provide substantial R&D productivity benefits for development organizations. We define a product platform as a set of subsystems and interfaces that form a common structure from which a stream of derivative products can be efficiently developed and produced.1 That efficiency is measurable in terms of the cost and time required to generate products from underlying platforms.2
Platforms as an engineering concept are not new. A chapter in Modern Man by Henry Ford contains a careful delineation of subsystems inside an automobile and examines new component technologies both inside and outside the company to improve comfort, ease of use, and durability.3 And, during the development of the DC3 in the 1930s, a small team of dedicated engineers that wanted to make commercial passenger traffic profitable for the fledgling airlines designed the DC1 platform as a series of innovations to major aircraft subsystems. The new platform subsystems included new designs for a welded frame, new engines from suppliers, new navigation systems, stronger landing gear, and a passenger friendly interior, all designed during several weeks. Better versions emerged, leading to the DC3, and from it, a passenger version, a cargo version, a troop-carrying version, and so on, all derivative products based on the same product platform.4 Platforms are the common sense of yesteryear being rediscovered today by management in various industries.
This definition — the platform composed of subsystems and interfaces between subsystems and the external environment — serves well for software. Indeed, at a conceptual level, the architecture of a software platform differs little from that of a chair. The chair’s subsystems include the pedestal, stem, seat, armrest, backrest; the subsystem interfaces include various fasteners, coasters, and user interfaces, such as the height adjustment lever and seat cushions.