Complex systems usually contain a lot of errors right from their development stages. This is usually due to the complexity and nature of the system and the functions meant to carry out. Then, when these systems operate, they produce errors and bugs, thus, since such errors must be fixed, the need in changes arises.
Examples of software process activities that help predict changes and make the software being developed more resilient to change are traceability of changes, code refactoring, keeping the history of requirement changes to understand why some changes were made.