In addition, CPU microcode doesn't fit this distinction, as the microcode is software (not hardware) that is hidden behind the ISA's interface.
Also, I can think of computers that only have hardware and data input (without any programs or instruction set). Basically number crunchers that run a fixed program (e.g. DSP's or non-general GPU's that perfom a specific function), with only the data input that can change.
You bring up a good point by acknowledging "The Interface". But I would reclassify into a different set of parts, something along the lines of: "Interface" - "Implementation". I/O can be programs and/or data that interface with the implementation which can be hardware and/or software, or another whole computer. (This is potentially recursive classification, so it can include virtual machines.)
I disagree.
Operation of computers cannot be classified simply into hardware and software. There are 3 important parts: - Hardware - Software - The interface (basically the instruction set)
Another way to view ISAs is like a "Contract" between hardware and software. Hardware promises that certain instructions will provide certain behavior. Software acknowledges this and uses these instructions to build software on top of it.