fixik_papus: (Default)
[personal profile] fixik_papus
В первой части мы посмотрели сатирический киножурнал.
Это, конечно, кино; но похожие события происходят и в реальной жизни.
Сравните с парочкой из "фитиля"...

Из заключения экспертной подкомиссии.

В 22.47 легли на курс 36о в точке - 44о 32,5 сев. широты, 37о 48,9 вост. долготы. По радиотелефону связались с ПРДС порта Новороссийск и получили информацию о п/х "Адмирал Нахимов", который прошел буи Пенайской банки, его курсе 160о и о просьбе пропустить его.
В это время на мостик поднялся капитан, которому была доложена обстановка и просьба. Капитан согласился и дал подтверждение п/х "Адмирал Нахимов".
Капитан Ткаченко В.И. встал к САРП (система автоматической радиолокационной прокладки курса) у и начал работу с ним с целью оценки ситуации расхождения с п/х "Адмирал Нахимов". В это время дистанция между судами составляла 7,2 мили.
Сосредоточив свое внимание на работе с САРПом, капитан Ткаченко полностью отключился от визуального контроля развивающейся обстановки, не предпринимал никаких мер, чтобы уступить дорогу п/х "Адмирал Нахимов" заблаговременно.
Вахтенный помощник Зубюк П.А. производил определение места судна и визуальное наблюдение за обстановкой, вел радиотелефонные переговоры с п/х "Адмирал Нахимов" и несколько раз напоминал капитану о режиме работы главного двигателя, готового к маневрам, давая понять, что можно уменьшить скорость движения, чтобы п/х "Адмирал Нахимов" прошел впереди по курсу на безопасном расстоянии.
Однако, продолжая работать только с САРПом, капитан не обращал внимания на информацию вахтенного помощника, не менял скорости и курса. Судно следовало курсом 36о полным ходом со скоростью 11,5 узлов на опасное сближение с п/х "Адмирал Нахимов".

Ну, и результат.


Материал отсюда. За наводку спасибо mik25.

А теперь вернемся на линию формовки конфет с начинкой.

После прошлого инцидента и проведенных мероприятий - все успокоились и расслабились.
И весьма напрасно.

Операторы были полностью уверены, что уж теперь-то все замечательно и можно не переживать.
Про всякие там новые наладочные режимы они были и вовсе не в курсе.
Потому что операторам их включать не положено. Отчет с дополненным мануалом был разослан всем заинтересованным лицам по списку, но операторов в списке том не было.

Тем не менее, у них возникли некоторые сомнения.
Но вот незадача: программист (не я, но рядом, посему тэг "накосячил") поленился и закрыл доступ в сервисное меню целиком. Потому что это ж на целых 15 минут быстрее - запаролить одну кнопочку, вместо кучи настроек.

Однажды после плановых работ - наладчики забыли отключить в настройках вновь сделанный "автономный режим работы" разливочной машины начинки.
При этом - отключается проверка не то что форм без шоколада, а вообще наличия форм :)
И никому об этом не сказали.

Прошло достаточно много времени. И вот как-то из-за очередной моргушки темперирующая машина шоколада вышла из режима. А входит она обратно в режим минут 20.
(почему вылететь из режима достаточно несколько десятков секунд, а обратно - десятки минут - это вопрос хороший и интересный, но другой).
Разливать нетемперированный шоколад можно, но бесполезно (все уедет в брак). Разливочная машина шоколада остановилась.

Описывать еще раз результат удара теми же граблями по тому же лбу смысла нет.
Зато есть смысл сделать выводы.

Первый и главный, и вообще универсальный. Делать нужно "как хорошо", а не "как быстро", "как дешево" или "как просто".
Вся эта экономия перекроется много раз первой же аварийной ситуацией.

Второй: не нужно считать всех операторов идиотами, а себя гением. Это не соответствует истине и не подтверждается практикой :)
Следствие: операторы должны всегда быть в курсе внесенных в оборудование доработок.

Третий: настройки должны быть доступны для просмотра всем, не только наладчикам. Кроме секретных, но таких очень немного.
Больше того: это на благо самим же наладчикам.
Потому что процент проблем, которые можно разрулить удаленно - возрастает. Добежать в цех через санпропускник - это минимум 5-7 минут.
Стало быть, коэффициент готовности растет (вместе с премией, ага).

Четвертый: отключение любой защиты, даже плановое - это само по себе потенциально аварийная ситуация. Об этом должно быть отдельное предупреждение, с квитированием. И желтый фонарь на сигнальной колонне. Вот сирена - это лишнее; я же сам ее и отключу, чтобы над ухом не верещала постоянно.

В данном-конкретном случае придумали и еще одну простую, но надежную блокировку: автономный режим можно включить только на остановленной линии; а запустить линию можно только при выключенной "автономке", как мы говорим.

Я весьма рад, что в комментариях собрался толковый народ, совершенно правильно предположивший место и способ размещения граблей :)
Виртуальную шоколадную медаль получает eddie-blackarch.

Будем надеятся, что теперь грабли если и не убраны, то по крайней мере, лежат зубьями вниз.
Хотя...
Хотя "ошибки в программах неисчерпаемы, как вселенная" (с).
Date: 24 Jul 2016 20:42 (UTC)

From: [identity profile] lazy-flyer.livejournal.com
В битве автомата с человеком побеждает человек.
Ибо автомат не обрудован глупостью.
Date: 24 Jul 2016 21:56 (UTC)

From: [identity profile] general-drozd.livejournal.com
... Чтоб его устранить, но сначала найти:
С идиотом порою не сладить матчасти.
Date: 25 Jul 2016 00:17 (UTC)

From: [identity profile] nepeanois.livejournal.com
я вот читаю и думаю... а что, про такую фигню как релиз сайкл, тестирование, вообще весь QA процесс там у вас даже и не слыхали?
Date: 25 Jul 2016 00:28 (UTC)

From: [identity profile] fixik-papus.livejournal.com
А здесь IT-практики не особенно-то помогут.
Совершенно другая область.
Date: 25 Jul 2016 00:39 (UTC)

From: [identity profile] nepeanois.livejournal.com
здрааасьте! во всех остальных отраслях помогают, а в разливе шоколада - бессильны?
Date: 25 Jul 2016 02:30 (UTC)

From: [identity profile] tr1gger.livejournal.com
Интересно узнать, в каких ещё отраслях это применяется?
Date: 25 Jul 2016 02:46 (UTC)

From: [identity profile] nepeanois.livejournal.com
методологии разработки п.о.??? ну, например, во всех?
Date: 25 Jul 2016 04:47 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Разработка ПО в промышленной автоматике - это маленький и простой кусочек работы.
Date: 4 Aug 2016 12:44 (UTC)

From: [identity profile] yushkin.livejournal.com
На тему Agile (и вообще разработке ПО) есть очень хороший пост (http://ebanoe.it/2016/07/20/shitcoders/)
Date: 4 Aug 2016 12:49 (UTC)

From: [identity profile] nepeanois.livejournal.com
вот прям хороший?

а мне показалось это как раз образцовый случай кг/ам...
Date: 4 Aug 2016 13:38 (UTC)

From: [identity profile] yushkin.livejournal.com
Разбрызгало конечно хорошо - но по сути правильно в 90% случаев.
Date: 4 Aug 2016 13:43 (UTC)

From: [identity profile] nepeanois.livejournal.com
правильно работать в говноконторах с говно-проджектменеджерами?
Date: 4 Aug 2016 14:53 (UTC)

From: [identity profile] yushkin.livejournal.com
Правильно описано.
Date: 4 Aug 2016 15:02 (UTC)

From: [identity profile] nepeanois.livejournal.com
ну да, правильно описана работа аутсорсинговой говноконторы, от которых надо держаться на приличном расстоянии
Date: 25 Jul 2016 04:47 (UTC)

From: [identity profile] fixik-papus.livejournal.com
На эту тему мы частенько спорим с айтишниками. Обсуждая, кто где и как накосячил, и как с этим бороться.

Вот в чем разница. Саму по себе программу контроллера протестировать можно и несложно. Тем более что программы очень простые и короткие (скажем, 7000 строк - это по меркам IT вообще мизер)

Но основная часть проблем возникает не из-за косяков в программе (хотя это тоже бывает, конечно).
А из-за ошибок в понимании технологии, физических процессов, происходящих в оборудовании, и так далее
К ним же стандартное (для IT) QA не прикрутишь вообще никак.

Как результат, основная задача программиста промышленной автоматики - вовсе не программировать (это маленькая и простая часть работы).
А разобраться, с помощью технолога, литературы и прочая - в том, как оборудование устроено, что в нем происходит, как оно может сломаться...
А "классического" (IT) программиста это вообще не волнует. Он может даже и не знать, а где, собственно, физически выполняется его программа.
Edited Date: 25 Jul 2016 04:47 (UTC)
Date: 25 Jul 2016 05:05 (UTC)

From: [identity profile] nepeanois.livejournal.com
ой нет, вот только не надо. иначе мы договоримся до того, что и автомобильные или самолетные контроллеры невозможно тестировать и все мы на волосок от гибели каждый божий день.

в реальности же эти байки сочиняют лентяи программеры, которым "повезло" с начальниками неучами.

то, что программер не озаботился изучением девайса, для которого пишет код, это и есть самый страшный баг. второй самый страшный баг - отсутствие квалифицированного тестера, способного написать соответствуюлие тест-кейсы
Date: 25 Jul 2016 05:37 (UTC)

From: [identity profile] fixik-papus.livejournal.com
"все мы на волосок от гибели каждый божий день. "
Зная изнутри, что творится в ЖКХ - я не стану серьезно спорить с этим утверждением.

Классический (IT) программер вообще не изучает девайс, для которого пишет код.
Больше того, он может вообще не знать, где этот девайс находится и как выглядит.

Программирование системное, прикладное, embedded и промышленной автоматики - это совершенно разные области.

Тест-кейсы на алгоритмы и логику - ОК
Но кто и как сумеет написать тест-кейсы на тему ошибок персонала?

Date: 25 Jul 2016 06:16 (UTC)

From: [identity profile] snowman-sailor.livejournal.com
>Но кто и как сумеет написать тест-кейсы на тему ошибок персонала?

Любой тестировщик, это типовая задача. На ошибки персонала "чистые" IT систему тестируют постоянно. Конкретно в этом случае. Конкретно в этом случае кейсы формируются по сценарию "отказ датчика": наличие форм контроллируется датчиком. Что произойдет если датчик выдаст false positive или false negative сигнал? Грамотная декомпозиция на черные и белые ящики позволяет легко обрабатывать такие кейсы. Более того, для того чтобы их проверять, достаточно ревью алгоритма работы, даже запускать оборудование не обязательно.

Сложность промавтоматики только в неочевидных связях между оборудованием: отказала машина А и этот отказ неочевидным образом повлиял на машину Б. Например, случилась вибрация насоса, а датчика вибрации нет, гироскоп на соседнем оборудовании начал показывать лажу и в результате установка начала гнать брак. Если вибрация случается раз в сутки, в каком-нибудь переходном режиме, такую проблему не то что тестировать, ее ловить замаешься.
Date: 25 Jul 2016 08:15 (UTC)

From: [identity profile] fixik-papus.livejournal.com
"в неочевидных связях между оборудованием"
Это и есть КЛЮЧЕВОЕ отличие от IT
Второе отличие - "ревью алгоритма работы" ага, если он есть и правильный.
Реально на оборудовании, существующем в одном экземпляре, доведение алгоритма работы до правильного это постоянный и вечный процесс.

Для любого алгоритмического тестирования нужно корректное тех.задание и корректные наборы данных.
А если их нет?
Date: 25 Jul 2016 10:58 (UTC)

From: [identity profile] snowman-sailor.livejournal.com
Српведливости ради, в "чистом" программировании неочевидных связей тоже хватает. По крайней мере я могу рассказать кучу историй, вплоть до совершенно детективных (http://mina.naguib.ca/blog/2012/10/22/the-little-ssh-that-sometimes-couldnt.html).

Алгоритм по определению есть, как-то же вы настраиваете логику работы своих контроллеров. Как раз нормальный тестировщик тут бы помог извлечь алгоритм, в том числе и из голов инженеров, и придумать для него тест кейсы.

>Для любого алгоритмического тестирования нужно корректное тех.задание и корректные наборы данных. А если их нет?

Существуют техники тестирования, позволяющие обходиться без ТЗ: белый ящик, свободный поиск, fuzz testing и т.п. Наборы данных тестировщики умеют составлять самостоятельно.

Не нужно думать что в IT все здорово и правильно. Зачастую тестировщики приходят в проект с десятилетним легаси, когда уже все забыли что, как и почему должно работать, и тем не менее как-то умудряются проверять корректность изменений.
Date: 25 Jul 2016 14:03 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Так в том-то и вся проблема - создать правильный алгоритм для данного конкретного оборудования (часто в процессе и оборудование рихтуется для этой цели)

Если алгоритм есть - дальше все легко, просто и надежно.
А если нет - никакие методики тестирования не помогут.
Да, программа работает замечательно... а вот оборудование с ней работает - плохо.
Date: 25 Jul 2016 16:00 (UTC)

From: [identity profile] nepeanois.livejournal.com
я вот этот момент вообще не понял, если честно. какой там в жопу "классический программер"? откуда он взялся? у вас там контора нанимает непойми кого писать код для этого оборудования?

если нет техзадания, тот, кто руководит всем проектом явно просит пинка под зад.
Date: 25 Jul 2016 16:08 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Так ниоткуда и не взялся. Просто не его профиль и не его специальность.
Программист системный, прикладной, эмбеддед и пром.автоматики - это 4 разных человека, никак не взаимозаменяемые. (хотя с последними двумя еще могут быть варианты)

В промышленном оборудовании - основная работа автоматчика и состоит в том, чтобы это ТЗ с алгоритмами, аварийными ситуациями и прочая правильно составить. Делается это в тесном взаимодействии с механиками, технологами и так далее.

Если это есть - собственно программирование дело недолгое и несложное. Программы реально простые; сотни, максимум - тысячи строк на контроллер обычно.

Такая вот специфика работы.


Date: 26 Jul 2016 01:22 (UTC)

From: [identity profile] Виталий (from livejournal.com)
Программист системный, прикладной, эмбеддед и пром.автоматики - это 4 разных человека
+++ Хех, мне приходиться все это совмещать :)) в той или иной степени.
Так вот соглашусь с Вами(поработав и там и там), в пром автоматике возможности тестов сильно ограничены, как достоверно сэмулировать поведение железа особенно некорректное?. А "классические" программисты в пром автоматику(ну или схожие задачи) иногда такое предлагают, что диву даешься. Например уже проехавшие машины как транзакцию "откатывать". У меня только один вопрос, а это как, бульдозером?
Date: 25 Jul 2016 05:54 (UTC)

From: [identity profile] snowman-sailor.livejournal.com
Вообще говоря, конфигурационное управление в IT не самозародилось, а было заимствовано из инженерии обслуживания, конкретно из американских ВВС. Там была схожая проблема: на авиабазе А техники ставят на самолет залируху, а самолет неожиденно передислоцируется на авиабазу Б где техники о ней ни слухом ни духом. До тех пор пока на самолетах летали прикрепленные бортинженеры, все сходило с рук, а как только от бортинженеров начали отказываться самолеты начали падать. Пришлось придумывать как управлять изменениями так, чтобы знания автоматически выгружались из головы техника не бумагу.
Date: 25 Jul 2016 08:11 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Так это как раз не IT-практика. Точнее, вовсе не только IT практика
Date: 25 Jul 2016 06:57 (UTC)

From: [identity profile] reedcat1965.livejournal.com
В промышленной автоматизации просто написать "правильную" программу и даже оттестировать ее на симуляторе недостаточно. Зачастую вылазят такие проблемы, связанные с особенностями (и косяками) разработки и реализации самого оборудования, что диву даешься. И решать их надо в темпе и у заказчика, т.к. у него производство стоит. Или выясняются "мелкие" особенности техпроцесса, которые проект-менеджер по какой-то причине забыл зафиксировать, и которые выливаются в пару месяцев сидения в солнечном Баотоу или Нижнем Тагиле. И тот же мудак-ПМ каждый день названивает, т.к. лишний человеко-день сверх проданного это минус из прибыли и его бонуса.
Date: 25 Jul 2016 08:15 (UTC)

From: [identity profile] fixik-papus.livejournal.com
"мелкие" особенности техпроцесса, которые проект-менеджер по какой-то причине забыл зафиксировать

Или он их и не знал никогда.
И вообще никто не знал.

Edited Date: 25 Jul 2016 08:15 (UTC)
Date: 25 Jul 2016 16:03 (UTC)

From: [identity profile] nepeanois.livejournal.com
судя по вышенаписанному, в конторе постоянный штат своих программеров.
Date: 25 Jul 2016 16:11 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Конечно. Только они не "чистые" программеры, и даже не числятся программерами. Собственно "программирование" - это только небольшая часть работы.
Date: 25 Jul 2016 16:32 (UTC)

From: [identity profile] nepeanois.livejournal.com
ну так "степень чистоты" программеров не отменяет методологий разработки и сопровождения по! они же не для того "чтобы заебать" существуют, они созданы именно для минимизации таких вот ошибок.
Date: 25 Jul 2016 09:55 (UTC)

From: [identity profile] optimist-80-l.livejournal.com
Спасибо и за пост, и за комментарии. Просто приятно почитать умных людей. Сейчас это большая редкость.
Date: 25 Jul 2016 10:45 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Да, я сам приятно удивлен.

При том, что я вообще никого не баню. Максимум - вежливо прошу выяснять проблемы, скажем, российско-украинских отношений, в более подходящем для того месте
Date: 25 Jul 2016 10:01 (UTC)

From: [identity profile] eednew.livejournal.com
"Нахимов" - это, конечно, исключительный факап, уровня "Титаника". Всё - самым неудачным образом.
Date: 25 Jul 2016 10:44 (UTC)

From: [identity profile] fixik-papus.livejournal.com
А так оно обычно и бывает.

Я просто обожаю распутывать цепочки событий, приведшие к аварии. И очень часто диву даюсь "ну надо же вообще как это могло сложиться вместе и одновременно!"
И наоборот, продумывать "а что будет, если навернется вот это, а потом еще вот то, и вдобавок нажму не ту кнопочку?".
Date: 25 Jul 2016 11:07 (UTC)

From: [identity profile] eednew.livejournal.com
С другой стороны, если обошлось, хотя бы более-менее, то и не на слуху.
Date: 25 Jul 2016 11:00 (UTC)

From: [identity profile] ed-jan-lt.livejournal.com
"ошибки в программах неисчерпаемы, как вселенная" (с).
Боюсь, этот миф стремительно устаревает. Один из этапов создания программы - тестрование во всех возможных ситуациях. Если раньше это делали руками, то сейчас нанимают кодеров и те пишут автоматические тесты, проверяющие программу на все возможные и невозможные комбинации. Список ошибок отправляется разработчикам программ и у тех нет шансов выпустить программу с ошибкой.
Date: 25 Jul 2016 13:28 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Это в IT
А с железом все не так просто.
Вылезает какая-нибудь физическая бяка - и все тут
Date: 25 Jul 2016 15:28 (UTC)

From: [identity profile] ed-jan-lt.livejournal.com
Я почему-то был уверен, что в сфере железа испытания придуманы на пару сотен лет раньше и уж там то точно - богатые традиции, высокая дисциплина и никакой самодеятельности - все программы протестированы на 100%. Тем более что вариантов, которые надо перебрать - на несколько порядков меньше, чем в IT сфере.
Date: 25 Jul 2016 15:34 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Нет, все далеко не так просто.
Page generated 14 Jun 2025 02:07
Powered by Dreamwidth Studios