How companies working on large projects evaluate an impact of a single modification on an existing code?
Since my question is probably not very clear, here's an example:
Let's take a sample business application which deals with tasks. In the database, each task has a state, 0 being "Pending", ... 5 - "Finished".
A new requirement adds a new state, between 2nd and 3rd one.
It means that:
- A constraint on the values 1 - 5 in the database must be changed,
- Business layer and code contracts must be changed to add a new state,
- Data access layer must be changed to take in account that, for example the state
StateReadyis now 6 instead of 5, etc.
- The application must implement a new state visually, add new controls for it, new localized strings for tool-tips, etc.
When an application is written recently by one developer, it's more or less easy to predict every change to do. On the other hand, when an application was written for years by many people, no single person can anticipate every change immediately, without any investigation.
So since this situation (such changes in requirements) is very frequent, I imagine there are already some clever techniques and ways to predict the impact. Is there any? Do you know any books which deal about this subject?
Note: my question is not related to How do you deal with changing requirements? question. In fact, I'm not interested in evaluating the cost of a change, but rather the way to predict the parts of an application which will be concerned by the change. What will be those changes and how difficult they are really doesn't matter in my question.