Обновление существующих приложений
Если команда работает над обновлением существующего приложения, одной из первых задач является изучение кода. Чтобы оценить объем требуемой работы, необходимо определить, в каких частях кода требуются изменения, и как далеко распространятся их последствия.
Чтобы исключить возможность негативных последствий изменений, команда может создать и выполнить модульные и системные тесты. Если эти тесты не разработаны ранее, команде необходимо создать их. Впрочем, создавать исчерпывающий набор модульных и системных тестов для существующего приложения не требуется. Изучив существующую структуру кода и предполагаемые изменения, команда может сосредоточиться на создании тестов, позволяющих удостовериться, что изменения не будут иметь негативных последствий для приложения.
При обновлении существующего кода рекомендуется выполнить следующие действия и воспользоваться следующими инструментами.
Изучите существующую структуру. С помощью обозревателя архитектуры, направленных графов и созданных схем последовательностей найдите основные компоненты и их зависимости. Для получения дополнительной информации см. Визуализация кода.
Изучите существующее поведение и требуемые изменения. Приступая к подробному обсуждению новых пользовательских описаний функциональности, команда должна быть знакома с существующим поведением. Пометьте существующие описания функциональности как "as-is" (существующие), а новые — как "to-be" (реализуемые). Используйте эти пометки в именах файлов, папок и моделей.
Пользовательские описания функциональности можно проиллюстрировать с помощью моделей. Для получения дополнительной информации см. Моделирование пользовательских историй.
Стабилизируйте поведение с помощью тестов. Добавьте автоматические или ручные тесты для достижения следующих целей:
Лучше изучить существующее поведение продукта.
Выделить аспекты поведения продукта, которые предстоит изменить.
Удостовериться в том, что изменения не препятствуют работе существующих функций.
Стабилизируйте архитектуру с помощью схем слоев. Создайте схемы слоев для достижения следующих целей:
Лучше изучить структуру существующего кода.
Выделить области существующего кода, где предстоит внести изменения.
Удостовериться в том, что изменения не нарушат существующую архитектуру в результате непреднамеренного добавления зависимостей или помещения функций в неправильные расположения.
Для получения дополнительной информации см. Стабилизация структуры приложения с помощью схем слоев.
Сформулируйте требуемые изменения в виде пользовательских описаний функциональности, оцените стоимость их реализации и организуйте их в виде списка невыполненных работ по продукту. При оценке стоимости необходимо учитывать факт, что выполняется обновление существующего кода. В каждой оценке необходимо учитывать время, которое потребуется для изучения существующего кода и написания автоматических тестов.
Для получения дополнительной информации см. Создание списка невыполненной работы.
Дополнительные сведения
Working Effectively with Legacy Code, Michael Feathers; Prentice Hall, 2004.