Как бы вы начали совершенствоваться по действительно плохой системе?
Позвольте мне объяснить, что я имею в виду, прежде чем рекомендовать создание модульных тестов и рефакторинг. Я мог бы использовать эти методы, но в этом случае это было бы бессмысленно.
На самом деле система настолько разбита, что не делает того, что ей нужно делать.
Например, система должна подсчитывать, сколько сообщений она отправляет. Он работает в основном, но в некоторых случаях он "забывает" увеличить значение счетчика сообщений. Проблема в том, что так много других модулей с их обходными решениями основываются на этом счетчике, что, если я исправлю счетчик, система в целом станет хуже, чем сейчас. Решение может состоять в том, чтобы модифицировать все модули и удалить свои собственные исправления, но с более 150 модулями, для которых требуется такая координация, которую я не могу себе позволить.
Хуже того, есть некоторые проблемы, которые обходятся не в самой системе, а в голове людей. Например, система не может представлять более четырех связанных сообщений в одной группе сообщений. Для некоторых служб потребуется пять сообщений, сгруппированных вместе. Учетный отдел знает об этом ограничении, и каждый раз, когда они подсчитывают сообщения для этих служб, они подсчитывают группы сообщений и умножают их на 5/4, чтобы получить правильное количество сообщений. Существует абсолютно никакой документации об этих отклонениях, и никто не знает, сколько таких вещей присутствует в системе сейчас.
Итак, как бы вы начали работать над улучшением этой системы? Какую стратегию вы бы следовали?
Несколько дополнительных вещей: я - одномандатная армия, работающая над этим, поэтому это не приемлемый ответ, чтобы нанять достаточное количество людей и перепроектировать/реорганизовать систему. И через несколько недель или месяцев я действительно должен показать некоторую видимую прогрессию, поэтому не нужно делать рефакторинг самостоятельно через пару лет.
Некоторые технические детали: система написана на Java и PHP, но я не думаю, что это действительно важно. За ним стоят две базы данных: Oracle и PostgreSQL. Помимо недостатков, упомянутых выше, сам код также пахнет, он действительно плохо написан и задокументирован.
Дополнительная информация:
Проблема счетчика не является проблемой синхронизации. Операторы counter ++ добавляются в некоторые модули и не добавляются в некоторые другие модули. Быстрое и грязное исправление заключается в том, чтобы добавить их там, где они отсутствуют. Долгое решение - сделать его своего рода аспектом для модулей, которые в нем нуждаются, что делает невозможным его забыть позже. У меня нет проблем с исправлением таких вещей, но если я сделаю это изменение, я сломаю более 10 других модулей.
Update:
Я принял ответ Грега D. Даже если мне больше понравится Адам Беллаир, это не поможет мне узнать, что было бы идеально знать. Спасибо всем за ответы.