you have to think about how software can make an assessment, it has to be given data, and the only data that can be obtained is temperature, rpm, disc state (partition validity) and read/write success.
lets consider which type of failures that info could provide a warning for:
logical corruption
corruption will occur suddenly at a certain time for no physical reason, it is impossible to predict when this will happen, even a second before it does. once it happens you lose the partition and the disc is unformatted as far as anything is concerned.
elec failure
usually controller board failure caused by a voltage spike. this is undetectable by software because there is nothing there before the failure and the failure happens suddently due to external factors that can also not be predicted, although they can be avoided.
mech failure
usually when your drive starts to tick, this can be predicted before data is lost if read/write errors begin to occur, often you find failure starts as an intermittent fault. if software was able to access a log of read/write failures then this would be possible, it currently isnt but in theory the mechanisms are there to do this. you could also have software to notify you in real time when a read/write error occurs, but windows does that for you already so why bother?
firmware failure
the firmware can be corrupted or lost, usually when this happens the drive spins but wont recognise, or it recognises then stalls. there is no way to predict this and you get no warning. data can be recovered when this happens so its no biggy, other than the inconveniece of recovering data and writing it to a new drive.
out of the typical hardware failures only one type could be predicted by software, and that is the easiest type to predict without software because you start to get read/write errors, you dont need some software to tell you that.
so in summary, common sense tells you a piece of software can neither predict nor diagnose the vast majority of hard disc failures. it is not possible unless you can predict the future.