as we all know, maintenance is one of the core gauges of the software quality . i think there are four reasons to cause software to hard to maintain with the frequently changes of requirements .they are rigidity , fragility ,immobility, viscosity,
1 rigidity: it is pretty difficulty to add a new functionality to the software,even a little change. this means develop new function usually need to create a new module.and involves modification of others modules which already exist.as a result,it is supported to few days to achieve it, it usually to spend a lot of time ,even months.because of this flaw,project managers are afraid of the crash of the system.they did not add new functionality
2 fragility:it is hard to modify codes when trying to figure out problems. it usually causes another irrelevant functions fail to work during modify some codes .as a consequence,after fixed one issue,there are some other issues posed.
3 immobility: in a system ,codes can not be reused and there are many redundancy everywhere.
4 viscosity:viscosity is bad ,when programmers try to maintain system.there are usually two ways to change codes.one is follow the prototype and original design ,above it,they change codes.the other way is breach pattern and create another module.if a system makes the way of breach pattern easier than following the original pattern .it is so called over viscosity