Идеально повторное использование и модификация может быть произведена на нескольких уровнях: уровень исходного кода, физический дизайн, логический дизайн, требования, - и до различной степени: в рамках системы, в рамках проекта, в рамках компании.
Процесс модификации программной системы включает три главных фазы: реструктуризация (создание логически эквивалентной системы); обратный инжиниринг (reverse engineering, анализ системы с целью выделения системных компонент, их функций и взаимосвязей, включая спецификации верхнего уровня системы) и прямой инжиниринг (forward engineering, разработка системы от спецификаций до кодирования и внедрения).
В настоящее время выполняется большое количество проектов, связанных с переводом использующихся унаследованных систем в объектно-ориентированные системы для увеличения их срока жизни и функционального развития. Критичным в таких проектах является контроль качества, на который ложится задача гарантировать обеспечение роста или неуменьшения уровня потребительских характеристик программных систем [32].
В процессе инжиниринга программных систем в дополнение к классическим метрикам должны быть включены в число наиболее важных такие метрики качества объектно-ориентированного дизайна как: надежность (reliability), сложность (complexity) и возможность повторного использования (reusabiblity).
Измерение качества проектирования является принципиально важной частью процесса разработки, поскольку, как показывает статистика стоимость ошибки проектирования в среднем на два порядка выше стоимости ошибки кодирования [32].
При измерении факторов качества широко используется модель: фактор а критерий а измерение (factor а criteria а measurement). Установка связи фактор а критерий требует анализа составляющих факторов качества. Например:
Надежность – фактор, отражающий возможность установления явных соответствий между требованиями к системе и ее реализацией. Данное соответствие устанавливается через дизайн системы. Игнорирование этого обстоятельства является частой причиной выпуска ненадежных систем.
Сложность – фактор, отражающий трудность понимания, реализации и модификации. Сложные проектные решения трудно реализовывать, при этом они чреваты большими ошибками при реализации.
Возможность повторного использования – фактор, отражающий степень применимости проектных решений в различных контекстах. Наличие таких решений значительно уменьшают размер проекта, повышают выветренность решений и более высокую степень соответствия проблемной области.
В соответствии с анализом, каждому фактору ставятся в соответствие критерии и, далее, метрики для измерения критериев ( [32]).