В своем докладе автор расскажет о стандартах написания кода, созданных специально для высокоответственных встраиваемых систем, таких как MISRA C, MISRA C++ и AUTOSAR C++. Для тех, кто не слышал про эти стандарты, он проведет краткий экскурс: в чем их философия, каковы предпосылки их создания и где они используются. Также он расскажет, как сделать проект соответствующим этим стандартам.
Доклад будет полезен embedded-разработчикам, а также программистам, разрабатывающим критически важные программы.
Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
Слайды к вебинару, который прошел 18.11.2013.
В ходе вебинара вы:
- Узнаете о том, как из 7 простых принципов возникает стройная тестовая система
- Поймете почему тестирование никогда не станет полностью автоматизованым
- Узнаете как на практике применять каждый из основных принципов
Больше информации по ссылке: http://coach.ak-itconsulting.com/2013/11/7-principov-testirovaniya/
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
Дорогие начинающие коллеги-тестировщики! Уважаемые коллеги со „средним“ стажем! В данном докладе я постараюсь поменять ваше традиционно неполное, и местами неверное представление о том, зачем и для чего мы занимаемся тестированием, и может быть даже достучаться до сердец некоторых сеньоров нашего ремесла.
Курсы, ISTQB, Википедия, скороспелые статьи на коммерческих и бесплатных сайтах, и знаменитые „исторические причины“ - внесли неоценимый вклад в дело хаоса понятий и поверхностности „лучших практик“ в области тестирования.
В докладе я донесу свой взгляд на современное тестирование, который поддерживают некоторые из очень ведущих специалистов. Понимание целей поможет вам стать лучшими тестировщикам и не только. Давайте сдвигать парадигму вместе уже сегодня! Так победим.
TMPA-2015: Automated process of creating test scenarios for financial protoco...Iosif Itkin
Automated process of creating test scenarios for financial protocols and connectivity testing
Anna Toropova, Sergey Pavlov, Andrey Soloviev, Alexander Bormotin, Iosif Itkin, Exactpro Systems
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
Слайды к вебинару, который прошел 18.11.2013.
В ходе вебинара вы:
- Узнаете о том, как из 7 простых принципов возникает стройная тестовая система
- Поймете почему тестирование никогда не станет полностью автоматизованым
- Узнаете как на практике применять каждый из основных принципов
Больше информации по ссылке: http://coach.ak-itconsulting.com/2013/11/7-principov-testirovaniya/
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
Дорогие начинающие коллеги-тестировщики! Уважаемые коллеги со „средним“ стажем! В данном докладе я постараюсь поменять ваше традиционно неполное, и местами неверное представление о том, зачем и для чего мы занимаемся тестированием, и может быть даже достучаться до сердец некоторых сеньоров нашего ремесла.
Курсы, ISTQB, Википедия, скороспелые статьи на коммерческих и бесплатных сайтах, и знаменитые „исторические причины“ - внесли неоценимый вклад в дело хаоса понятий и поверхностности „лучших практик“ в области тестирования.
В докладе я донесу свой взгляд на современное тестирование, который поддерживают некоторые из очень ведущих специалистов. Понимание целей поможет вам стать лучшими тестировщикам и не только. Давайте сдвигать парадигму вместе уже сегодня! Так победим.
TMPA-2015: Automated process of creating test scenarios for financial protoco...Iosif Itkin
Automated process of creating test scenarios for financial protocols and connectivity testing
Anna Toropova, Sergey Pavlov, Andrey Soloviev, Alexander Bormotin, Iosif Itkin, Exactpro Systems
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
Применение статического анализа кода в преподавании и в разработке свободного ПОAndrey Karpov
В своём докладе я расскажу, как использование татического анализа может помочь преподавателям и студентам обучать и обучаться. Также я расскажу, как именно стоит наладить процесс анализа для использования в студенческих роектах разработки СПО, чтобы удовлетворить специфике работы в рамках учебного заведения.
Статический анализ кода для верификации 64-битных приложенийTatyanazaxarova
В результате появления на рынке персональных компьютеров 64-битных процессоров, перед разработчиками программ возникает задача переноса старых 32-битных приложений на новую платформу. После такого переноса кода приложение может вести себя некорректно. В статье рассматривается вопрос разработки и применения статического анализатора кода для проверки правильности таких приложений. Приводятся проблемы, возникающие в приложениях после перекомпиляции для 64-битных систем, а также правила, по которым выполняется проверка кода.
Glib Rybalko, GlobalLogic’s Test Lead, consultant and trainer was among 26 known Ukrainian and international experts who took a word on IT Weekend Ukraine 2013. Glib discussed features of automated software testing, benefits and feasibility of using this approach on various projects. During his speech, Glib pointed all necessary steps of automated testing implementation and gave homework for those who were interested in this field and wanted to implement it in their projects.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
SAST, CWE, SEI CERT и другие умные слова из мира информационной безопасностиAndrey Karpov
Поговорим о таких терминах, связанных с информационной безопасностью, как SAST, CWE, CVE, SEI CERT, DevSecOps и как они между собой связаны. Доклад ориентирован на разработчиков и знакомит их с некоторыми понятиями и стандартами кодирования, помогающими создавать надежные, безопасные приложения. Другими словами, как писать код с меньшим количеством потенциальных уязвимостей.
Видео: http://www.youtube.com/watch?v=vz0U3jQpHSM
Это обзор опыта применения лучших практик разработки программного обеспечения на разных проектах от госзаказов до видеоконференций в командах от 5 до 50 человек. В докладе будут описаны не только практики, но и то, как они применяются на реальных проектах и какие выгоды они действительно приносят.
PVS-Studio, решение для разработки современных ресурсоемких приложенийTatyanazaxarova
Инструмент PVS-Studio
набор правил Viva64 для анализа 64-битных приложений;
набор правил VivaMP для анализа параллельных приложений;
набор правил для анализа общего назначения.
Лицензионная и ценовая политика PVS-Studio
Информация о компании ООО «СиПроВер»
Восстание машин ближе, чем вы думаете. Миллионы строк кода встроенных систем содержат тысячи неизвестных ошибок.
Один из вариантов избежать судного дня – использовать инструменты и стандарты безопасной разработки: SAST, CWE, CVE, MISRA C/C++, SEI CERT.
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
Применение статического анализа кода в преподавании и в разработке свободного ПОAndrey Karpov
В своём докладе я расскажу, как использование татического анализа может помочь преподавателям и студентам обучать и обучаться. Также я расскажу, как именно стоит наладить процесс анализа для использования в студенческих роектах разработки СПО, чтобы удовлетворить специфике работы в рамках учебного заведения.
Статический анализ кода для верификации 64-битных приложенийTatyanazaxarova
В результате появления на рынке персональных компьютеров 64-битных процессоров, перед разработчиками программ возникает задача переноса старых 32-битных приложений на новую платформу. После такого переноса кода приложение может вести себя некорректно. В статье рассматривается вопрос разработки и применения статического анализатора кода для проверки правильности таких приложений. Приводятся проблемы, возникающие в приложениях после перекомпиляции для 64-битных систем, а также правила, по которым выполняется проверка кода.
Glib Rybalko, GlobalLogic’s Test Lead, consultant and trainer was among 26 known Ukrainian and international experts who took a word on IT Weekend Ukraine 2013. Glib discussed features of automated software testing, benefits and feasibility of using this approach on various projects. During his speech, Glib pointed all necessary steps of automated testing implementation and gave homework for those who were interested in this field and wanted to implement it in their projects.
Юрий Василевский «Автоматизация в XCode»
Yandex Mobile Camp в Санкт-Петербурге 2012
http://events.yandex.ru/events/yamobcamp/spb-may-2012/
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012
Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions
Тема: Автоматизация в XCode
Тезисы:
Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач.
Мы рассмотрим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.
SAST, CWE, SEI CERT и другие умные слова из мира информационной безопасностиAndrey Karpov
Поговорим о таких терминах, связанных с информационной безопасностью, как SAST, CWE, CVE, SEI CERT, DevSecOps и как они между собой связаны. Доклад ориентирован на разработчиков и знакомит их с некоторыми понятиями и стандартами кодирования, помогающими создавать надежные, безопасные приложения. Другими словами, как писать код с меньшим количеством потенциальных уязвимостей.
Видео: http://www.youtube.com/watch?v=vz0U3jQpHSM
Это обзор опыта применения лучших практик разработки программного обеспечения на разных проектах от госзаказов до видеоконференций в командах от 5 до 50 человек. В докладе будут описаны не только практики, но и то, как они применяются на реальных проектах и какие выгоды они действительно приносят.
PVS-Studio, решение для разработки современных ресурсоемких приложенийTatyanazaxarova
Инструмент PVS-Studio
набор правил Viva64 для анализа 64-битных приложений;
набор правил VivaMP для анализа параллельных приложений;
набор правил для анализа общего назначения.
Лицензионная и ценовая политика PVS-Studio
Информация о компании ООО «СиПроВер»
Восстание машин ближе, чем вы думаете. Миллионы строк кода встроенных систем содержат тысячи неизвестных ошибок.
Один из вариантов избежать судного дня – использовать инструменты и стандарты безопасной разработки: SAST, CWE, CVE, MISRA C/C++, SEI CERT.
Доклад на hotcode.org о инструментах и методиках которые помогают нам повышать и следить за качеством PHP кода.
Среди затронутых тем:
- Стандарты в коде
- Средства для статического анализа кода.
- Git хуки
- Непрерывная интеграция
- IDE
- Code review
Здесь вы найдёте 60 вредных советов для программистов и пояснение, почему они вредные. Всё будет одновременно в шутку и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.
In this article, you're going to find 60 terrible coding tips — and explanations of why they are terrible. It's a fun and serious piece at the same time. No matter how terrible these tips look, they aren't fiction, they are real: we saw them all in the real programming world.
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Andrey Karpov
Есть ошибки, которые легко прячутся от программистов на обзорах кода. Чаще всего они связаны с опечатками или недостаточным знанием тонких нюансах языка/библиотеки. Давайте посмотрим интересные примеры таких ошибок и как их можно выявить с помощью статического анализа. При этом анализаторы не конкурируют с обзорами кода или, например, юнит-тестами. Они отлично дополняют другие методологии борьбы с ошибками.
PVS-Studio analyzes source code and finds various errors and code quality issues across multiple languages and frameworks. The document highlights 20 examples of issues found, including uninitialized variables, unreachable code, incorrect operations, security flaws, and typos. PVS-Studio is able to find these issues using techniques such as data-flow analysis, method annotation analysis, symbolic execution, type inference, and pattern-based analysis to precisely evaluate the code and pinpoint potential bugs or code smells.
When should you start using PVS-Studio? What can PVS-Studio detect? Supported standards: MISRA, CWE, CERT, OWASP, AUTOSAR. What about analysis options? What about legacy code?
Двойное освобождение ресурсов. Недостижимый код. Некорректные операции сдвига. Неправильная работа с типами. Опечатки и copy-paste. Проблемы безопасности. Путаница с приоритетом операций.
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Andrey Karpov
George Gribkov presented on how to introduce static analysis to make programmers' and QA engineers' lives easier. Static analysis automatically checks code for bugs without executing it. While initial attempts to analyze Unreal Engine 4 failed, monitoring compiler calls directly succeeded in finding over 1800 warnings. Epic Games now uses continuous static analysis to receive early warnings. The best practices are to start analysis early and regularly in development and CI/CD pipelines, and to gradually fix old warnings using suppression files to ratchet down reported issues over time. Static and dynamic analysis complement each other to thoroughly check for errors.
Best Bugs from Games: Fellow Programmers' MistakesAndrey Karpov
George Gribkov will present on errors found in the code of popular games like System Shock, Doom 3, and osu!. He will discuss how his tool searches for code errors, provide examples of bugs detected, and conclude his presentation. The examples will showcase issues like unused variables, incorrect increment variables in for loops, null pointer dereferences, and misunderstandings of operators like ??. Corrections will be proposed to address the bugs.
Does static analysis need machine learning?Andrey Karpov
This document discusses whether static analysis needs machine learning. It begins with an introduction to static analysis and outlines existing static analysis solutions like DeepCode, Infer, SapFix, Embold, Source{d}, Clever-Commit, and CodeGuru. It then addresses problems with learning manually or from real large code bases, like outdated code and lack of documentation. Finally, it discusses promising approaches like analyzing code style, collecting additional metrics, and best practices for specific frameworks.
Typical errors in code on the example of C++, C#, and JavaAndrey Karpov
Objectives of this webinar
How we detected error patterns
Patterns themselves and how to avoid them:
3.1 Copy-paste and last line effect
3.2 if (A) {...} else if (A)
3.3 Errors in checks
3.4 Array index out of bounds
3.5 Operator precedence
3.6 Typos that are hard to spot
How to use static analysis properly
Conclusion
Q&A
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)Andrey Karpov
How to fight bugs in legacy code?
Should you do it at all?
What to do if there are hundreds or even thousands of errors?(that’s usually the case)
How to avoid spending a plethora of man-hours on this?
And still, how did you work with Unreal Engine?
C++ Code as Seen by a Hypercritical ReviewerAndrey Karpov
We all do code reviews. Who doesn't admit this – does it twice as often. C++ code reviewers look like a sapper. .. except that they can make a mistake more than once. But sometimes the consequences are painful . Brave code review world.
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareAndrey Karpov
The document discusses using static code analysis when teaching or developing open-source software. It outlines how static analysis can help instructors check student homework and projects more efficiently, and help students learn about error patterns. When using static analysis for open-source projects, it recommends integrating it into developers' workflows locally and via continuous integration systems. Regular use is key to maximizing its benefits for finding and fixing bugs.
Static Code Analysis for Projects, Built on Unreal EngineAndrey Karpov
Why Do You Need Static Analysis? Detect errors early in the program development process. Get recommendations on code formatting. Check your spelling. Calculate various software metrics.
Are С and C++ Alive? Even More, IBM RPG Is! C and C++ Are Not Just for Old Systems. Are С and C++ Alive? Summary for C, C++. Embedded: C and С++ Are on the Rise.
Zero, one, two, Freddy's coming for youAndrey Karpov
This post continues the series of articles, which can well be called "horrors for developers". This time it will also touch upon a typical pattern of typos related to the usage of numbers 0, 1, 2. The language you're writing in doesn't really matter: it can be C, C++, C#, or Java. If you're using constants 0, 1, 2 or variables' names contain these numbers, most likely, Freddy will come to visit you at night. Go on, read and don't say we didn't warn you.
2. Докладчик
Георгий Грибков
Программист C++, один из
разработчиков статического анализатора
кода PVS-Studio
Разрабатывает набор диагностических
правил, проверяющих код на
соответствие стандартам
MISRA C и MISRA C++
gribkov@viva64.com
2
7. Популярность языка C
ПОПУЛЯРНОСТЬ языка C
Популярность языка С++
Проблематика
7
8. Популярность языка C
ПОПУЛЯРНОСТЬ языка C
Популярность языка С++
Несовершенство этих языков
Проблематика
8
9. Доступность компиляторов
Стандартизированность
Переносимость
Длительный опыт использования
Эффективность
Поддержка средствами анализа
Чем вызвана такая популярность
9
10. Неполная спецификация стандартом
Undefined, unspecified, implementation-defined
behavior
Неправильное обращение с языком
if ( i = 0 ) или if ( i == 0 )?
Слабые места C и C++
10
13. 4 июня 1996 года европейская ракета-носитель Ariane 5
превратилась в конфетти на 37 секунде полета
Пример очень дорогой ошибки
13
14. Расследование показало, что причиной аварии
послужила программная ошибка (целочисленное
переполнение)
На борту ракеты были четыре спутника
Убытки составили 370 000 000 $
Пример очень дорогой ошибки
14
17. MISRA – это набор рекомендаций
Актуальные версии:
MISRA C:2012 – 143 правила
MISRA C++:2008 – 228 правил
MISRA: что это такое
17
18. MISRA – это «Motor Industry Software Reliability Association»:
MISRA: что это такое
18
Bentley Motor Cars
Ford Motor Company
Jaguar Land Rover
Delphi Diesel Systems
HORIBA MIRA
Protean Electric
Visteon Engineering Services
The University
of Leeds
Ricardo UK
ZF TRW
19. AUTOSAR – это AUTomotive Open System Architecture
Немного про AUTOSAR
19
20. AUTOSAR – это AUTomotive Open System Architecture
Немного про AUTOSAR
20
BMW Group
Bosch
Continental
Daimler AG
Ford
General Motors
PSA Peugeot Citroën
Toyota
Volkswagen
…и еще более 200
партнёров
21. AUTOSAR – это AUTomotive Open System Architecture
AUTOSAR – это методология разработки
AUTOSAR C++ – часть этой методологии
Актуальная версия:
AUTOSAR C++: 19-03 – более 350 правил
Немного про AUTOSAR
21
22. MISRA C++ и AUTOSAR C++
22
MISRA C++ AUTOSAR C++
C++03 ✓ ✓
C++11 ☓ ✓
C++14 ☓ ✓
24. 1.Mandatory – обязательные к следованию
2.Required – допустимы отклонения
3.Advisory – следование опционально
Категории правил:
24
25. Обязательные правила:
Не используйте значение неинициализированной
переменной
Не используйте указатель на FILE после закрытия потока
Не пишите недостижимый код
Счетчик цикла не должен иметь floating-point тип
…
Примеры правил
25
26. Необходимые правила:
Не используйте goto и longjmp
Каждый switch должен заканчиваться default
Тела операторов if, else, for, while, do, switch должны быть
завернуты в скобки
Не используйте вариативные функции
…
Примеры правил
26
27. …и все остальные:
Суффикс ‘L’ должен всегда быть заглавным (42L)
Не используйте адресную арифметику (кроме [] и ++)
Не используйте оператор «запятая»
Не изменяйте параметр функции внутри тела
…
Примеры правил
27
29. Еще есть много всего!
Классификация правил по разным признакам
Применимость к генерированному коду
Полный список undefined/unspecified/etc… поведений
Чек-листы по настройке анализаторов, процессу
проверки, и т.д
Матрица пересечений с другими стандартами
Примеры документации
А что есть помимо правил?
29
31. Проверять вручную? Кошмар!
Используйте статические
анализаторы кода
Статический анализ – это
автоматизированный процесс
code review
Проверка кода на соответствие
31
32. Начните использовать стандарт ДО начала проекта
Если уже есть код – подумайте несколько раз
Внедрение
32
33. Прячем старые ошибки – работаем в привычном темпе
С этого момента видим только новые предупреждения
Получаем пользу от анализатора СРАЗУ
Спрятанные ошибки не забываем! Возвращаемся и
потихоньку правим.
Используйте подавление сообщений!
33
38. Вам понадобятся:
Код, соответствующий уровням Mandatory и Required
План обеспечения соответствия (guide enforcement plan)
Документация по всем отклонениям
Документация по всем предупреждениям компиляторов
и статических анализаторов
Резюме о соответствии правилам (guideline compliance
summary)
Как доказать соответствие вашего проекта?
38
39. Пример guide enforcement plan:
План обеспечения соответствия
39
Правило Компилятор Анализатор Обзор кода
“A” “B” “A” “B”
…
5.1 No errors No errors --- --- Procedure x
5.2 No errors No errors Warning V2561 No messages
…
10.4 Warning 458 No errors No warnings No messages
…
41. Документация отклонения должна содержать:
Номер нарушенного правила
Локацию нарушения
Обоснованность
Доказательство безопасности
Потенциальные последствия
Тщательно документируйте отклонения
41
42. Пример guideline compliance summary
Резюме о соответствии правилам
42
Правило Категория MISRA Соответствие
…
5.1 Mandatory Соответствует
5.2 Required Есть отклонения
…
10.4 Advisory Не используется
…
43. Весь C/C++ код соответствует Mandatory и Required
План обеспечения соответствия полностью заполнен
Все отклонения задокументированы
Все предупреждения компиляторов и анализаторов
исправлены или размечены
Заполнено резюме о соответствии
Поздравляю! Вы достигли безопасности на максималках!!!
Итог:
43
45. 1. Долой сложные ветвления, goto и рекурсию
2. Все циклы должны быть ограничены
3. Динамические аллокации памяти – в топку
4. Всякая функция должна умещаться на листе
бумаги
5. Не больше двух runtime-ассертов на функцию
The Power of 10: золотые правила NASA
45
46. The Power of 10: золотые правила NASA
46
6. Данные должны объявляться в самом низком
scope
7. Функция что-то возвращает? Обязательно
проверить!
8. Не используйте препроцессинг
9. Никаких вложенных указателей
10. «Правило нуля предупреждений»
49. Иногда классических способов обеспечения
качества недостаточно
Внутри MISRA и AUTOSAR C++
Использование стандартов в ваших разработках
Подведем итоги
49