Slightly related question: Why are voting machines soo complicated that there’s scope for any bugs in the first place? A vote counting software based on dedicated buttons- one for each option to vote on - should be something that is simple enough to be assigned as an CS undergraduate course project. We have built very sophisticated banking software that handles several orders of magnitude more computations and has be…
2. Electronic elections are a thorny mix of privacy and transparency requirements. Example: Electors need to be able to confirm their own vote was counted but not be able to prove who they voted for (this is to prevent vote-selling and voter intimidation).
3. Even if you get everything right in #2, you need to prove that the software running on the machines is in fact the software with the correct properties, and doesn't break privacy through a side-channel.
4. There are UI concerns that aren't immediately obvious. Example: the list of candidates should be randomised so that donkey votes don't skew the result to one candidate.
5. This is software that potentially every citizen needs to interact with, which means accessibility is important. You need to cater for blindness, people with limited motor control, i18n and l10n for all the languages in the voting cohort, etc.
6. Related to #3, you need to secure your voting machines and both the hardware and software supply chains between elections.