Wednesday, February 6, 2008

Accounting for Software

I think fate wants to delay my explanation as today I have yet another different topic to talk about. I had to help my mother today by making a spreadsheet and copies of cheques in order to prove that she is fully paid up for something I will not go into here. The person had a viewpoint that harks back to when businesses first started using computers but one which I haven't seen that often since PCs became normal place. The old "my computer says it therefore it must be true" syndrome resurfaced. I am use to people blaming the computer for their mistakes, so it was actually kind of refreshing even though it meant extra unpaid work for me.

While there are bugs that can cause errors, most mistakes that appear on a computer have a different source. The input. There is an old saying among software developers, "The output of a program is only as good as it's input." In other words, if there is data missing or incorrect data is put into your software, the output that software produces will be incorrect. Even accounting programs are subject to this law. While it is true that good software will try and validate inputs, that validation only goes so far as to make sure that the input is reasonable. What is worse is that the accounting software that I have used is designed to simplify input and will often fill in fields that are suppose to be used for checks and balances so it is even easier to make a mistake. That is why a paper trail is nice to have.

When you get right down to it, the problem with computers is that they only do what their software tells them to. Software, even today, generally takes some type of input, processes it, and returns some type of output. In fact, many of the bugs that hackers try to exploit aren't bugs in how the program works but are bugs in how a program validates input and as a result cleverly corrupted input can be used to attack an un-patched computer. Of course, crashing software is the result of a programmer making some type of mistake in their program. Programmers are, for the most part, human and do make mistakes.

No comments: