But those are encoded by the DNA as well. That isn't how software works (which runs on hardware that exists independently of it) I suppose you could argue that it is similar to a FPGA, where entire CPUs can be created in software, but even there there is still underlying hardware that can't be modified by software.
DNA exists physically, and the way the software "runs" is not just dependent on the abstract genetic code, but also the particular way it gets folded in 3D space. In this sense, DNA is both software and hardware. Arguably a lot of things at the cellular level defy the distinction between code, data, hardware and runtime.