1. A method in a computer system for flexibly altering software component behavior, the method comprising: intercepting a service request made by a software component; evaluating the intercepted service request based on at least one dynamically alterable condition dependent rule, an original or modified data in the service request, and at least one of a present software system state and a past software system state, wherein the at least one dynamically alterable condition dependent rule is alterable while the requesting software component is running; dynamically selecting at least one desired behavior from among several behaviors for the software component based on the evaluation; dynamically controlling the software component such that the software component executes the selected desired behavior, wherein the selected desired behavior includes executing alternative code using a copy of requested data in order to virtualize execution of the intercepted service request on the requested data; altering operation of the intercepted service request based on a result of the virtualized execution of the intercepted service request; and executing alternative code to directly modify the at least one dynamically alterable condition dependent rule while the requesting software component is running.