У нас есть довольно большое монолитное программное обеспечение, которое мы хотели бы реорганизовать в большем масштабе. Первым шагом будет получение нескольких артефактов, которые можно скомпилировать независимо друг от друга. Учитывая размер приложения, мы хотели бы максимально автоматизировать его.
Пример:
+ package1
| |
| + Service1
|
+ package2
| |
| + Service2
|
+ interfacepackage
Предполагая, что Service1
используется только внутри package1
, его не следует трогать. Предполагая, что Service2
используется из Service1
, я хотел бы автоматически сгенерировать минимальный интерфейс для Service2
, поместить этот интерфейс в пакет interfacepackage
и изменить зависимость внутри Service1
на интерфейс.
Сделать это вручную не составит труда. И Idea, и Eclipse обеспечивают полуавтоматический рефакторинг, но мы хотели бы сформулировать их в виде метаправил. У меня были надежды, что либо eclipse, либо intellij имеют программный интерфейс для определения таких правил, но я пока не смог их найти.
Я даже нашел сценарии рефакторинга eclipse, но они, похоже, ограничены рефакторингом именованных классов, поэтому, если бы я знал все сервисы, которые следует реорганизовать, сценарии рефакторинга eclipse помогли бы, но не в том случае, если я хочу определить условия для классов, подлежащих рефакторингу.
Где мне искать решение?
Пояснение: Комментарий: Так в чем проблема?
У нас есть высокое трехзначное количество услуг, которые составляют этот монолит. Это в ок. 20 различных пакетов. Все программное обеспечение приближается к 1 миллиону строк кода. Моя проблема просто в размере. Выполнение рефакторинга вручную может занять месяцы, мы можем что-то упустить, делая это вручную. Кроме того, распутывание сервисов — это только первый шаг. Так что мы ожидаем много подобных рефакторингов, применяемых в будущем.