It was human error for the fact that they were too stupid to figure out it was a passenger airliner. Comments have been stated that they "thought" it was an incoming missile. A huge difference in a missile and a passenger aircraft which is registered through the gov as well as flight scheduling. Also, there should have been better communications and all flights grounded during this hostile time frame.
They meant to shoot it down, so not an accident. Why in the world was it not confirmed to be a missile? They know the difference...
Aircraft file flight plans. Aircraft use transponders to transmit aircraft identification information. ATC have this information. It's obvious the military went roque and never confirmed friend or foe.
Iran could have easily shut down airspace. They didn't. They're culpable by that inaction alone.
I'd like to believe this was indeed unintentional (i.e. not something ordered).
What they didn't count on was someone capturing the missile launch and impact on a cell phone video, and then posting it to the internet.... (that person was later arrested, BTW).