You need to be careful extending hardware techniques to software. For one thing, hardware tends to be limited by the nature of physicality itself. Hardware devices are made of simple components that interface with each other in limited ways.
Further, changes made to the system, ala kaizen, work better within the limits imposed by hardware. A process change in hardware doesn't normally have knock on effects to other components. And hardware components tend to be standardized.
This, of course, is the ideal in software but alas software does not lend itself to this. Libraries, APIs, etc. are of course standardized but most mutate rapidly, new versions, deprecated features, etc. Plus, software tends to be one-off. Every new project requires very different components. A word processor is not a spreadsheet is not a database is not an ERP system...
Don't get me wrong. I love reuse. But software is subject to combinatorial explosions far more than hardware is.