tikser (tikser) wrote,
tikser
tikser

Category:

История одного проекта

Олег, начальник отдела разработки ПО Московской железной дороги, грозно нависал над начальником отдела тестирования Сашей.
- Ты чего же это, понимаешь, баг1 зарепортировал2? Нам через два дня отчитываться, а у вас тут баги?
- Это у вас тут баги!- парировал Саша,- у вас бета-версия3, а из неё эксепшены4 сыпятся!
- А ты не нажимай кнопки всякие!
- А вы делайте кнопки, от нажатия на которые ваша программа не валится!
- А это не к нам, это к дизайнеру, мы точно реализовали то, что он придумал! К реализации претензии есть?
- Она же жутко тормозная!
- Ничего не знаю, это стандартный компонент, утверждённый к использованию, мы его только вызываем.
- Так это вы полгода только и делали, что безуспешно пытались его вызвать?
- Ну теперь же он вызывается!
- Ага, и тут же падает!
- А в требованиях нет ни слова о том, что он не должен падать!

Перевели дух.
- Ну хорошо,- сказал Саша,- в требованиях нет, но есть же стандарты, есть распространённая практика, в конце концов, есть аналогичные программы, которые делают то же самое, работают в разы быстрее и почему-то не падают!
- Ну назови хоть одну!- цинично предложил Олег.
- Пожалуйста! Xxx5, Yyy, Zzz, Advanced Ttt, Sss Pro, Uuu Lite Edition - достаточно?
Олег скорчил презрительную мину:
- Xxx? Это ж бесплатная поделка, нам несолидно с ней конкурировать! Yyy падает даже без нажатия на кнопки, а остальных я и вовсе в глаза не видел! И вообще, у нас сроки горят, а вы тут палки в колёса ставите!
- Ну это же вы так запланировали - полгода на разработку и день на тестирование! Кстати, если даже в таких условиях мы успели заметить, что ваша программа падает, значит, она вообще никуда не годится!
- Что падает? Где падает?- включил дурака Олег,- у меня ничего не падает, это у вас с руками что-то!
- Это ты будешь юзеру6 объяснять, что у него с руками что-то, а моя задача - найти баг и доложить.
- То, что ты нашёл, это вообще не баг!
- Юзер выполняет предусмотренные программой действия, она падает - и это не баг?
- А с чего ты взял, что юзер будет выполнять эти действия? А если их не выполнять, то ничего и не падает! И пока нет статистики, подтверждающей, что юзеры нажимают эти кнопки, это твоё голословное утверждение!
- А если я тебе покажу, как оно падает?
- Ну покажи. А то я не понимаю, что ты там понаписал, ну подумаешь, упало... А почему? И что с того?
- Что с того? Ну смотри...
Саша запустил программу. Олег уставился в его монитор.
- Не сюда смотри, туда смотри!- Саша указал на окно.
За окном радовала индустриальным пейзажем Москва-Сортировочная. Три с лишним десятка путей, уставленных вагонами, хорошо просматривались с шестого этажа.
Маневровый тепловозик, пыхтя, тяжело втащил тестовый состав на горку и замер в ожидании отмашки. Работяга в оранжевом жилете загнал под колесо вагона башмак и застыл, приникнув ухом к рации. Только потухший бычок нервно подрагивал в уголке рта.
- Запускаемся,- сказал Саша и нажал кнопку "3 путь". Работяга вздрогнул, прислушался, что-то ответил в рацию и побежал к стрелке. Потом пулей вернулся, выбил башмак и отскочил в сторонку.
Тестовый состав покатился, медленно набирая скорость и погромыхивая на стрелках.
- Вот, смотри,- сказал Саша.
Олег перевёл взгляд на экран. "Unhandled exception error. Application will be closed now."
За окном тестовый состав вошёл в соприкосновение со стоявшим на пути товарняком. Тоскливый скрежет, от которого собаку Баскервиллей хватил бы инфаркт, волной прокатился по сцепкам и состав замер.
- Ну, всё нормально!- сказал Олег.
- Нормально?! - спросил Саша и включил переговорник.
Монолог стрелочника был в самом разгаре. Олег и Саша пару минут благоговейно внимали, наслаждаясь богатством лексикона, точностью и едкостью оборотов, а потом со вздохом выключили приёмник.
- Ну, ты понял?- нарушил тишину Саша,- мало того, что она упала, так ещё вместо третьего пути состав ушёл на седьмой!
- Н-да, что-то тут не так...
Олег погрузился в мысли, потом его осенило:
- А мы щас у Алексея спросим!
Пришёл Алексей - неторопливый, обстоятельный, выслушал описание проблемы и заявил:
- Ну так всё правильно! Если бы на седьмом пути не стоял товарняк, то тестовый состав ушёл бы на третий!
Начальники в обалдении уставились на него. Алексей продолжал:
- В этом стандартном компоненте семафоры так устроены, что пути проверяются в обратном порядке - от больших номеров к меньшим. Если надо на третий, а седьмой свободен, значит, едем.
- Э-э-э... А почему так странно? - удивился Саша.
- Кто ж их знает,- усмехнулся Алексей,- видимо, их дизайнеры так запроектировали.
- А их программисты точно так же реализовали то, что надизайнено?- догадался Саша.
- Ага!- радостно подтвердил Алексей.
- Так что же это получается - все пути перед проходом любой электрички должны быть свободны? Во избежание?
- Ну да.
- И в этом случае программа работает без сбоев?
- А куда она денется, я ж говорю - компонент так устроен...
- Значит, надо освободить пути - убрать все встречные и стоящие... Ладно, так начальству и доложим,- сказал Олег.
- Типа, так и надо?- спросил Саша.
- Ну да. В рамках оптимизации железнодорожного движения. И оформим это как обычно - "по просьбам трудящихся". Ты ведь трудящийся? - спросил Олег у Алексея.
- Ну дык! - подтвердил Алексей,- а в следущей версии авось пофиксим7, и они снова начнут ходить в обе стороны!


1 баг (bug) - это просто ошибка в программе.
2 зарепортировал - это от слова "report", то есть попросту доложил.
3 бета-версия - почти готовая программа, во всяком случае должна уже делать всё, что от неё требуется.
4 эксепшен (exception) - исключительная ситуация, которую программа переварить не может и потому рушится.
5 Xxx, Yyy, Zzz - совершенно отвлечённые названия программ. Подставлять по вкусу. ;)
6 юзер (user) - лопоухий пользователь любой супер-мега-офигительной программы. ;)
7 пофиксить - то же, что исправить. С той лишь разницей, что пофиксить программу удаётся почему-то не всегда... ;))
Tags: Жизнь, Сказки
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 8 comments