Я працюю в компанії програмного продукту. У нас є великі клієнтські підприємства, які реалізують наш продукт, і ми надаємо їм підтримку. Наприклад, якщо є дефект, ми надаємо виправлення тощо. Іншими словами, це досить типова настройка.
Нещодавно був виданий та призначений мені квиток щодо виключення, знайденого клієнтом у файлі журналу, який пов'язаний з одночасним доступом до бази даних в кластерній реалізації нашого продукту. Тож специфічна конфігурація цього замовника може бути критично важливою при появі цієї помилки. Все, що ми отримали від замовника, - це їхній журнальний файл.
Я запропонував моїй команді підхід - спробувати відтворити помилку в конфігураційній програмі, подібній до такої у клієнта, та отримати порівняний журнал. Однак вони не згодні з моїм підходом, кажучи, що мені не потрібно відтворювати помилку, оскільки це занадто багато часу і вимагатиме моделювання кластерного сервера на віртуальних машинах. Моя команда пропонує мені просто "дотримуватися коду", щоб побачити, де небезпечний код для потоків та / або транзакцій, і ввести зміну, яка працює простою локальною розробкою, яка не є кластерною реалізацією, як середовище, з якого відбувається клопа бере свій початок.
Мені розробка абстрактного плану (програмного коду), а не відчутного, видимого прояву (відтворення часу виконання) здається важким, тому я хотів задати загальне запитання:
Чи розумно наполягати на тому, щоб відтворити кожен дефект і налагодити його, перш ніж поставити діагноз та виправити його?
Або:
Якщо я є старшим розробником, чи повинен я мати можливість читати багатопотоковий код і створювати уявну картину того, що він робить у всіх сценаріях використання випадків, а не вимагати запуску програми, перевірки різних сценаріїв використання випадків і переходу через код за рядком? Або я поганий розробник, щоб вимагати такого робочого середовища?
Налагодження для Sissies?
На мою думку, будь-яке виправлення, подане у відповідь на інцидентний квиток, повинно бути перевірене в оточенні, змодельованому максимально наближеним до початкового середовища. Як ще можна знати, що це дійсно виправить це питання? Це як випускати нову модель транспортного засобу без краш-тестування її з манекеном, щоб продемонструвати, що подушки безпеки дійсно працюють.
Не в останню чергу, якщо ви згодні зі мною:
Як я повинен поговорити зі своєю командою, щоб переконати їх у тому, що мій підхід є розумним, консервативним та більш бронезахисним?
new
. І ці помилки не гарантовано надійно відтворюються відповідно до специфікації Java Memory Model