Creating robust programs
Categories: none
When you use a computer program, you expect it to work properly. You would not be happy if a spreadsheet added the numbers up incorrectly, or if the spell checker your editor missed some glaring errors.
If something goes wrong, you would expect a robust program to fail gracefully. For example, if you try to save your work and your disk is full, you wouldn't expect the program to just give up and throw away your file. You would expect it to give you a chance to delete some old files than try to save your work again.
When you are using a website or online app, you also expect the software to be secure. You wouldn't want someone else being able to log in to your account. If it is a social media, someone could post messages in your name, if it is a shopping site someone might spend your giftcard, and if it is a bank site a thief might take all your money. Of course, you must do your part by choosing a strong password and keeping it safe, but that doesn't help you if the website gets hacked.
Producing robust software
So we know what users want - software that works properly and doesn't have any faults like those listed above. We call this robust software. But how do you create robust software?
- Writing code - tips on how to go about writing a program.
- Malicious attacks - if you are writing web or cloud based software, it can be accessed by anyone, anywhere in the world. You need to take account of the possibility of malicious attacks, attempting to find weaknesses in your software, and use them to attack your site, either for gain or just to cause trouble.
- Testing - thorough testing of your software is essential, to help eliminate bugs and try to ensure that it works properly in both normal use and when errors occur.
- Maintainable code - if your software is any good, people will be using it for many years. It will probably need to be updated at some time, to add new features, fix bugs, or simply to keep up with a changing world. Writing maintainable code means that you (or someone else) will be able to update the code easily and with less risk of introducing new bugs.
This topic isn't yet complete. Join our mailing list to be updated when new sections are added.
See also
Sign up to the Creative Coding Newletter
Join my newsletter to receive occasional emails when new content is added, using the form below:
Popular tags
555 timer abstract data type abstraction addition algorithm and gate array ascii ascii85 base32 base64 battery binary binary encoding binary search bit block cipher block padding byte canvas colour coming soon computer music condition cryptographic attacks cryptography decomposition decryption deduplication dictionary attack encryption file server flash memory hard drive hashing hexadecimal hmac html image insertion sort ip address key derivation lamp linear search list mac mac address mesh network message authentication code music nand gate network storage none nor gate not gate op-amp or gate pixel private key python quantisation queue raid ram relational operator resources rgb rom search sort sound synthesis ssd star network supercollider svg switch symmetric encryption truth table turtle graphics yenc