Короткий ответ
#Система
Ledgerline принимает заказы примерно от сорока оптовых клиентов и передаёт их на склад. Её десять лет назад построило агентство, потом расширяли три фрилансера, и последний из них перестал отвечать на письма весной. Компания, которой она принадлежит, купила её вместе с бизнесом, и у нового владельца есть сервер, репозиторий и договор с хостингом. Больше ничего.
#Что устанавливает первый анализ
| Часть | Что записано | Откуда известно |
|---|---|---|
| Приложение заказов | Вход клиентов, ввод заказов, счета в PDF | Наблюдалось в коде |
| База данных | Заказы, клиенты, прайс-листы и набор таблиц, которые не читает никакой код из репозитория | Наблюдалось для используемых таблиц, выведено для остальных |
| Инструмент отчётности | Читает ту же базу напрямую, со своими учётными данными | Выведено из настройки подключения и тех самых непрочитанных таблиц |
| Импорт от партнёра | Каждую ночь забирает файл цен у партнёра по FTP и перезаписывает прайс-лист | Наблюдалось в скрипте по расписанию |
| Передача на склад | Отправляет подтверждённые заказы на склад письмом с вложением | Наблюдалось в коде подтверждения заказа |
Две строки здесь стоят больше остальных. Инструмент отчётности читает рабочую базу с учётными данными, которых нет в репозитории, поэтому изменение этой базы может без предупреждения сломать что-то у других. А прайс-лист каждую ночь перезаписывается из файла партнёра, поэтому ошибочный файл наутро переоценит каждый заказ.
#Что он не смотрел, по его собственным словам
- Проверено полностью. Приложение заказов и скрипты по расписанию, которые есть в репозитории.
- Проверено частично. База данных, структура которой известна, а непрочитанные таблицы не объяснены.
- Не проверялось. Всё на сервере, чего нет в репозитории, включая сам crontab и инструмент отчётности.
Именно эта часть держит картину честной. Анализ прочитал то, что есть в репозитории. Задача, которая выполняется на сервере, но никогда не попадала в репозиторий, в картину не вошла, и картина так и говорит, а не намекает, что список задач по расписанию полный.
#Вопросы по порядку
- Кто пользуется инструментом отчётности и что у них сломается, если база изменится?
- Что сервер выполняет по расписанию такого, чего нет в репозитории?
- Что станет с прайс-листом, если файл партнёра пустой или испорчен?
- Читает ли склад до сих пор заказы из писем или они приходят теперь куда-то ещё?
- Что это за непрочитанные таблицы и может ли кто-нибудь сказать, заполняются ли они до сих пор?
Первый и четвёртый вопросы адресованы людям, финансовому отделу и складу. На второй и пятый можно ответить, если дать следующему анализу конфигурацию сервера и посмотреть на таблицы. На третий можно ответить, внимательнее прочитав один скрипт, и именно об этом просят следующий анализ.
#Следующие два анализа
Второй анализ направлен на скрипт импорта и на конфигурацию сервера, которую владелец добавил в репозиторий. Он устанавливает, что пустой файл партнёра опустошает прайс-лист, и находит две задачи по расписанию, которые никогда не попадали в репозиторий. Устройство системы не изменилось вовсе. Всё в сравнении относится к новому знанию, и сравнение говорит именно это, а не выдаёт две задачи за только что добавленные. Третий анализ, после исправления импорта, показывает одно изменение в системе и больше ничего.
#Что с этим делает владелец
Владельцу унаследованной системы редко нужно сразу полное описание. Ему нужно знать, где система может без предупреждения ударить по бизнесу и кого спросить о частях, которые никто не может объяснить. Первый анализ даёт ему общую базу, ночную перезапись и пять вопросов по порядку. Следующие два превращают самые опасные из них в факты, и для этого не нужен никто из тех, кто строил систему.