I've recently noticed an increasing level of discussion on CM communities discussing software configuration management (SCM) versus hardware configuration management (HCM). Sometimes the discussion is phrased as application lifecycle management (ALM) versus product lifecycle management (PLM), or sometimes as SCM versus CM or SCM versus HCM.
As the discussion goes on, some questions arise. Are the fundamentals the same? Should there be one CM department or one for both hardware and for software? Can we use the same tools for both types of configuration management? Is SCM the same as HCM?
These are not easy questions to answer, but if we want to delve into them in more detail, it’s necessary to understand some fundamental differences between software and hardware.
But first I’d like to make an observation. The fact that there is an increased level of discussion on this topic implies that software and hardware teams are having more interaction with one another. I believe this is due to more and more software creeping into traditional hardware solutions and the fact that people are understanding that you can’t treat software as simply as being “part” of hardware. Additionally, as hardware development becomes cheaper, software further impacts hardware requirements.
I’m sure there are other drivers too, but the key point is that software and hardware teams are synergizing more than they have in the past.
Remember that there are many similarities between hardware and software, but there are certain differences that significantly impact your ability to develop and manage.
For example, hardware is built to last while software is designed to change, although this does not imply that hardware cannot be designed to change. Also, software longevity is important, but you don’t go out and build a smartphone or tablet that will need hardware improvements after the customer buys it. On the other hand, customers might not buy that phone or tablet if they thought they weren’t going to get frequent software updates.
Additionally, hardware costs tend to be production-oriented, while software costs tend to be development oriented. Once the development is completed, the hardware is then moved over into the production phase, where parts and materials have to be purchased or mass produced, then assembled, and finally tested. An efficient process is needed both for inventory management and for production to ensure cost effectiveness of the end product.