Поделиться через


Обновление существующих приложений

Если команда работает над обновлением существующего приложения, одной из первых задач является изучение кода. Чтобы оценить объем требуемой работы, необходимо определить, в каких частях кода требуются изменения, и как далеко распространятся их последствия.

Чтобы исключить возможность негативных последствий изменений, команда может создать и выполнить модульные и системные тесты. Если эти тесты не разработаны ранее, команде необходимо создать их. Впрочем, создавать исчерпывающий набор модульных и системных тестов для существующего приложения не требуется. Изучив существующую структуру кода и предполагаемые изменения, команда может сосредоточиться на создании тестов, позволяющих удостовериться, что изменения не будут иметь негативных последствий для приложения.

При обновлении существующего кода рекомендуется выполнить следующие действия и воспользоваться следующими инструментами.

  • Изучите существующую структуру. С помощью обозревателя архитектуры, направленных графов и созданных схем последовательностей найдите основные компоненты и их зависимости. Для получения дополнительной информации см. Визуализация кода.

  • Изучите существующее поведение и требуемые изменения. Приступая к подробному обсуждению новых пользовательских описаний функциональности, команда должна быть знакома с существующим поведением. Пометьте существующие описания функциональности как "as-is" (существующие), а новые — как "to-be" (реализуемые). Используйте эти пометки в именах файлов, папок и моделей.

    Пользовательские описания функциональности можно проиллюстрировать с помощью моделей. Для получения дополнительной информации см. Моделирование пользовательских историй.

  • Стабилизируйте поведение с помощью тестов. Добавьте автоматические или ручные тесты для достижения следующих целей:

    • Лучше изучить существующее поведение продукта.

    • Выделить аспекты поведения продукта, которые предстоит изменить.

    • Удостовериться в том, что изменения не препятствуют работе существующих функций.

  • Стабилизируйте архитектуру с помощью схем слоев. Создайте схемы слоев для достижения следующих целей:

    • Лучше изучить структуру существующего кода.

    • Выделить области существующего кода, где предстоит внести изменения.

    • Удостовериться в том, что изменения не нарушат существующую архитектуру в результате непреднамеренного добавления зависимостей или помещения функций в неправильные расположения.

    Для получения дополнительной информации см. Стабилизация структуры приложения с помощью схем слоев.

  • Сформулируйте требуемые изменения в виде пользовательских описаний функциональности, оцените стоимость их реализации и организуйте их в виде списка невыполненных работ по продукту. При оценке стоимости необходимо учитывать факт, что выполняется обновление существующего кода. В каждой оценке необходимо учитывать время, которое потребуется для изучения существующего кода и написания автоматических тестов.

    Для получения дополнительной информации см. Создание списка невыполненной работы.

Дополнительные сведения

Working Effectively with Legacy Code, Michael Feathers; Prentice Hall, 2004.