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


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

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

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

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

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

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

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

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

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

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

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

    Дополнительные сведения см. в разделе Частое тестирование на ранних этапах разработки.

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

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

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

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

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

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

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

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

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