О чём пользователи не напишут вам в feedback
Последовательность поиска ошибки в программе ПЛК
Введение
Достаточно часто в литературе мне попадались описания ошибок и даже классификации их по типам.
Хотя, признаться, у меня не получается толком вспомнить ни одного случая, когда мне бы помогло знание того, к какому именно типу относится конкретная ошибка. Разве что уже после выяснения причин, для обьяснения их окружающим.
А вот как люди вычисляли место и докапывались до сути ошибки — мне всегда было интересно.
Сведения о системе и ошибке
С компьютера на ПЛК подаются уставки (времена, флаги режимов) и команды на устройство.
Из ПЛК на компьютер выдаются сигналы статуса устройства и времени до конца команды на это устройство. Сигналы пакуются в слова, для минимизации объемов приема и передачи.
Из ПЛК на устройство выдаются команды.
Устройство выдает на ПЛК свои статусы.

Изначально все работало, но через какое-то время при подаче команд, статусы на компьютере в SCADA начали моргать не по делу и вообще вести себя крайне недружелюбно. Причем только в одном месте, на одном объекте.
Но «танцы с саблями» появлялись стабильно, при каждой команде, что очень порадовало.
Интуиция как инструмент разработчика

Мой код не работает :-(
Если ничего из предложенного не работает, убедитесь, что вы редактируете тот же файл, который компилируете.

Картинка кликабельна
Переведено с любовью к коду компанией-локализатором Alconost.
Как обнаружить переполнение 32-битных переменной в длинных циклах в 64-битной программе
Программе Android Security Rewards исполнился 1 год

Это было достойное начало — и вот результаты первого года работы программы:
- Вы прислали более 250 отчетов об ошибках, отвечающих нашим требованиям.
- 82 исследователя получили более 550 000 долларов США в качестве вознаграждений. В среднем на одно вознаграждение пришлось 2200 долларов, а на человека — 6700 долларов.
- Наш лучший исследователь, Питер Пи (@heisecode) из Trend Micro, получил $75 750 долларов США за 26 отчетов.
- Пятнадцати исследователям мы заплатили не менее чем по $10 000.
- Никому не удалось описать удаленную атаку, состоящую из цепочки уязвимостей, которая компрометирует Android TrustZone или Verified Boot. Так что главный приз остался невостребованным.
Спасибо всем, кто в принял участие в программе, прислал качественные отчеты об ошибках и помог нам улушчить Android. Теперь защита системы стала надёжней, так что с 1 июня 2016 года мы поднимаем ставки!
Геймеры доказали свою пользу для верификации ПО

Могут ли весёлые игры в онлайне решить сложные проблемы с верификацией программного обеспечения, которыми обычно занимаются профессиональные эксперты в программировании? Другими словами, будет ли армия необразованных геймеров лучше, чем профессиональный процесс? Исследователи из Агентства по перспективным оборонным научно-исследовательским разработкам США (DARPA) уверены, что так и есть.
PVS-Studio и Bug Bounties on Free and Open Source Software

Безопасная разработка: SAST, DAST, IAST и RASP
По статистике 90% инцидентов безопасности возникают в результате использования злоумышленниками известных программных ошибок. Естественно, что устранение уязвимостей на этапе разработки ПО значительно снижает риски информационной безопасности.
Для этого в помощь разработчикам был создан целый ряд технологий, позволяющих выявлять недостатки безопасности на ранних этапах, избавляясь от них до релиза продукта. К таким технологиям можно отнести:
- SAST
- DAST
- IAST
- RASP
SAST и DAST
SAST (Static Application Security Testing) — тестирование «белого ящика», существует уже более десяти лет. Позволяет разработчикам находить уязвимости безопасности в исходном коде приложения на ранних этапах жизненного цикла разработки ПО. SAST также обеспечивает соответствие руководствам и стандартам кодирования без фактического выполнения базового кода.
DAST (Dynamic Application Security Testing) — тестирование «черного ящика», может обнаруживать уязвимости и слабые места в работающем приложении, обычно веб-приложениях. Это достигается за счет использования методов внедрения ошибок в приложении, таких как передача вредоносных данных в программное обеспечение, для выявления распространенных уязвимостей безопасности, например, SQL-инъекций и межсайтовых сценариев.
DAST также может пролить свет на проблемы времени выполнения, такие как:
- проблемы аутентификации и конфигурации сервера
- недостатки, видимые только при входе известного пользователя
Обнаружить это с помощью статистического анализа нельзя.
О том, как мы с сочувствием смотрим на вопрос на StackOverflow, но молчим
Иногда на сайте stackoverflow.com мы видим очередной вопрос, как искать баги определённого типа. И знаем, что решением проблемы может стать использование PVS-Studio. К сожалению, мы вынуждены молчать, иначе ответ будет интерпретирован как неприкрытая реклама. Это статья про наши душевные муки, где рассмотрен конкретный пример такой ситуации.
Дебаг и поиск ошибок

Для опытных разработчиков информация статьи может быть очевидной и если вы себя таковым считаете, то лучше добавьте в комментариях полезных советов.
По опыту работы с начинающими разработчиками, я сталкиваюсь с тем, что поиск ошибок порой занимает слишком много времени. Не из-за того, что они глупее более опытных товарищей или не разбираются в процессах, а из-за отсутствия понимания с чего начать и на чём акцентировать внимание. В статье я собрал общие советы о том где обитают ошибки и как найти причину их возникновения. Примеры в статье даны на JavaScript и .NET, но они актуальны и для других платформ с поправкой на специфику.
Разбор ошибок в игровом движке Stride

Stride – это мощный, бесплатный и активно развивающийся игровой движок, реализованный на C#. Он вполне может стать альтернативой Unity, но насколько качественный исходный код Stride? Узнаем это с помощью статического анализатора PVS-Studio.