Just over a hundred years ago, Henry Ford transformed the car industry with the assembly line. Because of Ford’s innovative approach to car manufacturing, nearly all of us own a car.
Today we live in the Information Age, where software and digital connectivity drive the marketplace. This new era offers different challenges than the Industrial Age, as well as ripe opportunities for innovative solutions, akin to Ford’s assembly line. One such solution exists in the way we manufacture products in this digital landscape: through the software product line.
Software product lines use a collection of software-reliant systems that share a common set of features to manufacture products. Rather than use one set of software per item, engineers can reuse core assets of software product lines to create different products.
A simple way of explaining software product lines is through the lens of a famous fast-food chain. At McDonald’s, a McDouble and a Big Mac are different burgers, but they have a common set of assets: bun, burger, cheese. If an employee knows the proper ingredients and steps of making a McDouble, then she wouldn’t need to be retrained from scratch to make a Big Mac, since a Big Mac is simply a slight variation of a McDouble.
“You have core assets that allow you to manufacture or produce common components in such a way that you have a controlled variation,” says UC Associate Professor Nan Niu, PhD, who researches ways to more effectively build and use software product lines. “You can fine-tune the parameters to obtain these predefined common utilities to serve your specific needs.”
Scale this concept up to the level of a national car manufacturing plant, for instance, and you have Ford Motor Company creating variations of an engine that use the same core assets of an existing engine – its parts, designs, user documents and production processes. Instead of rewriting each of these components every time Ford unveils a new engine, Ford can reuse the assets and adapt minor changes to introduce the new engine to the product line.
“You’re basically shaping the way you conduct your business or engineering to establish and maintain a well-defined infrastructure,” says Niu. “Next time you design a new product, you can write fewer lines of code, because you have that infrastructure serving you.”