Software applications are based on business rules. Business rules are logical statements of processes.
That about covers it, right?
Yesterday, I had a intriguing conversation with a peer. A client was asking for a software customization. The customization was a result of exceptions to a business process. They were asking to alter the application for the exception. By making the exception, they would no longer be able to track (query and report) on all of a particular type of business transactions.
My response was, "if they do this, they will not be able to query and report all of these transactions (and lose the value of the application). The world as we know it will stop". So how do you solve this? You refine the business processes so that all of the transactions go through the same funnel. The key to a great software application is to identify the exceptions to the rule and then adapt the the business processes which then drives the application development.
"Yes, I understand your process flow but are there any exceptions to this? You NEVER violate this business rule? Does your supervisor bend this rule? Even when the Wind is from the North and you are three hours late?...."