Как восстановить архитектуру устаревшей системы (PHP) - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь восстановить архитектуру унаследованной системы. Это что-то новое для меня. До сих пор я читал много исследовательских работ, в которых большинство исследователей предложили для этого фреймворки и автоматизированные инструменты. Но я понятия не имею, каквыбрать лучшее из этих структур или инструментов. У всех исследованных есть некоторый набор общих шагов, таких как реверс-инжиниринг и форвард-инжиниринг.Может ли кто-нибудь помочь в этом?На каком этапе начинается архитектура восстановления устаревшей системы?Каковы основные шаги?Есть ли какое-либо руководство?Спасибо

1 Ответ

0 голосов
/ 06 июня 2018

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

Ключом к переделке устаревшей системы является зависимостьместо впрыска и обслуживания.Первым шагом является установка контейнера внедрения зависимостей и добавление класса в контейнер (Logger всегда является хорошим первым сервисом).

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

Замена логгера - отличный пример того, как работает DI, так что покажите это команде.Убедитесь, что команда полностью понимает эти концепции!Остальная часть процесса в значительной степени зависит от DI и места обслуживания.

Контейнер DI разрушает жесткую связь в устаревших системах, поэтому вы можете разбить вещи на части.Начните искать швы, где вы можете разбить приложение на более мелкие части, что позволит вам ввести модульное тестирование.Это также заложит основу для миграции DDD, микросервисов, EDA или любой другой целевой архитектуры, которую вы запланировали.

...