What do you think about the term & practice of "hardening software"?

I just received an e-mail from someone in the funding world who thinks a lot about software, and they were interested in any thoughts I might have on the term "software hardening", and its practice. To quote,

This is about making research software more robust, more easily usable and possibly scalable.

This language has been seen in the wild - e.g. see Extended Development, Hardening and Dissemination of Technologies in Biomedical Computing, Informatics and Big Data Science (R01) -- although it's not defined specifically. Taking language from the announcement, I think they mean some subset of this:

First, contemporary software must be easy to modify and extend, and must be fully documented. Users who experience problems with software should be able to correct the problem with minimal effort and a mechanism must exist for incorporating these corrections into the software. As the needs of a community of users change, the software that supports their research efforts must be adaptable as well. The ability of software to be repaired and to evolve is particularly important because the scientific discovery process is open-ended and ever-changing.

I have my own thoughts about hardening that I will share in a few days, but I thought I'd see what other people thought first! Pointers to other such language would also be welcome...


p.s. Wikipedia sez: "hardening is usually the process of securing a system by reducing its surface of vulnerability."

Comments !

(Please check out the comments policy before commenting.)