Software Product Lines A New Paradigm for the New Century

Imagine turning out a 1.5 million-line Ada command and control system for a Navy frigate warship. The system is hard real-time, faulttolerant, and highly distributed, running on 70 separate processors on 30 different local area network nodes scattered all over the ship. It must interface with radars and other sensors, missile and torpedo launchers, and other complicated devices. The human-computer interface is complex and highly demanding. In this application, quality is everything: The system must be robust, reliable, and avoid a host of performance, distribution, communication, and other errors. Now suppose that you have not one of these systems to build but several. Your marketing department has succeeded beyond your wildest dreams. Navies from all over the world have ordered your command and control system. Now, your software must run on almost a dozen different ship classes including a submarine, systems that are drastically separate: The end users speak different languages (therefore, the human-computer interface requirements are extremely different), the ships are laid out differently, have different numbers of processors and nodes, and different fault tolerance requirements, different weapons systems and sensors, and different computers and operating systems. But quality remains crucial in all of them. Suppose you are the manager for this megaproject. Do you panic? Do you resign? Run to a third-world country? What if you could produce each one of the systems for a fraction of the cost and in a fraction of the time that one would normally expect? And what if you could do it so that quality was improved and reliability and customer satisfaction increased with each new system? What if creating a new ship system was merely a matter of combining large, easily tailorable components under the auspices of a software architecture that was generic across the entire domain (in this case, of shipboard command and control systems)? Is this a fantasy? No, it is not. It is the story of CelsiusTech Systems AB, a long-time European defense contractor. In the 1980s, CelsiusTech was confronted with the dilemma outlined above: They had to build two large command and control systems, each larger than anything they had attempted before, and they had barely enough resources to build one. Because necessity stimulates invention (and determination implements it), CelsiusTech realized that their only hope was to build both systems at once using the same assets and resources. And in a visionary stroke, CelsiusTech knew that their future lay in exploiting these assets for not only the first two systems but also for a whole family of products they hoped and expected would follow.