Keeping track of the business rules
briandoll: Attempting to keep track of business rules in a system other than your code base will cause more problems than it will solve, and it will _always_ be out of date.Every business of a certain age has more business rules than any one person can keep in their head at one time.  These rules manifest themselves in your code. They are the business rules.  Everyone has their own opinion on what the rules are, but the developers know the answers are in the code, not in our foggy memory.Now that we know what business rules are and where we keep them, we need to think about how we organize them.  Instead of a business problem, we have a technical problem.  Organizing 'business rules' becomes organizing software.  This is a well-worn field, so you'll find lots of good advice on domain-driven design and the organization of software (object-oriented or otherwise).A related software principal here is 'tell, don't ask' (http://pragprog.com/articles/tell-dont-ask).  This is especially important in environments with lots of conditional rules, which must be considered at various times.