|
| |||
|
|
История одного проекта Олег, начальник отдела разработки ПО Московской железной дороги, грозно нависал над начальником отдела тестирования Сашей. - Ты чего же это, понимаешь, баг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 пофиксить - то же, что исправить. С той лишь разницей, что пофиксить программу удаётся почему-то не всегда... ;)) |
|||||||||||||