Before writing software, there are a number of questions that need to be considered: What threats is the software likely to face? Does the software need security features like usernames and passwords, ...