SlideShare a Scribd company logo
1 of 22
Закон иерархических
компенсаций Седова и
C++ Core Guidelines
Антон Семенченко
Обо мне
Антон Семенченко
автоматизированное тестирование,
низкоуровневая разработка,
управление, продажи
Основатель DPI.Solutions
Менеджер в EPAM Systems
Тренер по автоматизации и
управлению
Евгений Александрович Седов
Советский ученый, инженер-
практик, изобретатель,
педагог, популяризатор науки
Разработка и внедрение
систем в промышленности и
военке
Руководил отделом из 11
лабораторий в течение 10 лет
Седов: междисциплинарные
исследования
Более 200 публикаций: научных и научно-
художественных!
кибернетика, теория информации,
самоорганизация, стандартизация,
исскусственный интеллект
Ключевая тема: проблема разнообразия
Разнообразие и эволюция
Сокращается ли внутреннее разнообразие
систем в процессе эволюции?
Живая и неживая природа, язык, культура,
технологии
От хаоса к детерменированности
И К
Хаос, максимальная
энтропия
Жесткая детерминация
Путь от И к К - накопление структурной
информации
Оптимальное соотношение:
80% детерминации
20% хаоса
Согласно ученым, такой путь
прошло большинство развитых
человеческих языков
Магическое соотношение 80/20
80% детерминированности: языковая структура
20% хаоса: вариабельность, “мутации”, “новости”, ради которых
и пишется текст
При увеличении детерминированности теряется
адаптивность, и система разрушится при изменении внешних
условий
Единственный выход: разрушение, скачок от К к И и создание
новой системы
Развитие: новые уровни
иерархии
Новые уровни иерархии драматически увеличивают
число новых связей между элементами системы
Связи = энергия, и единственный способ сохранить
систему - это ограничить число элементов
Закон иерархических компенсаций
Разнообразие на верхних уровнях иерархии может
быть обеспечено только за счет ограничения
разнообразия на нижних уровнях
Сложные системы можно строить только из
ограниченного числа простых
Стандартизация неизбежна!
или
История С++
1983 - зарождение языка
1998 - стандарт С++ 98
2003 - стандарт С++ 03
2011 - С++ 11
2014 - С++ 14
2015 - C++ Core Guidelines
C++ Core Guidelines
Бьерн Страуструп
Герб Саттер
❖ Опубликованы в сентябре 2015
❖ Open source (github)
❖ MIT-style (contributor) лицензия
❖ Открыты для дополнения
❖ Сейчас: около 250 страниц А4
https://github.com/isocpp/CppCoreGuidelines
Core Guidelines: идеология
"Within C++ is a smaller, simpler, safer language
struggling to get out." - Bjarne Stroustrup
❖ Современный С++ 11/14/17 (прицел на будущее)
❖ Автоматизируемые правила, где возможно
❖ Безопасность и простота кода
❖ Фокус на высокоуровневых вещах:
➢ типы и интерфейсы
➢ управление ресурсами (в т.ч. памятью)
➢ потокобезопасность
Core Guidelines: цели
❖ Использование накопленных годами
знаний
❖ Унификация практик между организациями
❖ Получить качественный код:
➢ статически типо-безопасный
➢ без утечки ресурсов
➢ с ранней диагностикой ошибок в логике
❖ Помочь новичкам в изучении С++
1. Непосредственно правила
2. Guideline Support Library (GSL, header-only)
- функции и типы, рекомендуемые
Гайдланами https://github.com/Microsoft/GSL
3. Checker Tool (Visual Studio Add-in) -
автоматическая проверка правил
https://blogs.msdn.microsoft.com/vcblog/2015/12/03/c-
core-guidelines-checkers-available-for-vs-2015-update-1/
Core Guidelines: компоненты
Описание правила
❖ Само правило - к примеру, Use RAII to prevent leaks
❖ Номер правила - например, E.6: 6-е правило об исключениях
❖ Reasons - почему правило именно такое
❖ Examples - примеры, как позитивные так и негативные
❖ Alternatives - альтернативы правилам-запретам
❖ Exceptions - исключения из правил
❖ Enforcement - как автоматизировать проверку правила
Rule Enforcement
❖ code review
❖ static analysis
❖ compiler
❖ run-time checks
Guidelines Checker Tool
Humans are slow, inaccurate, and bore easily
Основные разделы
❖ P: Philosophy
❖ C: Classes and class hierarchies
❖ R: Resource management
❖ E: Error handling
❖ Con: Constants and immutability
❖ T: Templates and generic programming
❖ CP: Concurrency
❖ SL: The Standard library
❖ CPL: C-style programming
R.5: Don't heap-allocate unnecessarily
Reason
A scoped object is a local object, a global object, or a member. This implies that there is
no separate allocation and deallocation cost in excess of that already used for the
containing scope or object.
// Bad example
void some_function(int n)
{
auto p = new Gadget{n};
// ...
delete p;
}
// Good example
void some_function(int n)
{
Gadget g{n};
// ...
}
Enforcement
(Simple) Warn if a local unique_ptr or shared_ptr is not moved, copied, reassigned or
reset before its lifetime ends.
E.15: Catch exceptions from a hierarchy by
reference
Reason
To prevent slicing.
// Bad example
void f()
try {
// ...
}
catch (exception e) { // don't: may slice
// ...
}
// Good example
catch (exception& e) { /* ... */ }
Enforcement
Flag by-value exceptions if their types are part of a hierarchy (could require
whole-program analysis to be perfect).
Con.2: By default, make member functions
const
Reason
A member function should be marked const unless it changes the object's observable
state. This gives a more precise statement of design intent, better readability, more
errors caught by the compiler, and sometimes more optimization opportunities.
// Bad example.
class Point {
int x, y;
public:
int getx() { return x; } // BAD, should be const as it doesn't modify the object's
state
// ...
};
void f(const Point& pt) {
int x = pt.getx(); // ERROR, doesn't compile because getx was not marked const
}
Enforcement
Flag a member function that is not marked const, but that does not perform a non-const
operation on any member variable.
Как поучаствовать?
We need help! - Bjarne
Можно помочь с примерами, подкрепляющими правила
Спасибо! Вопросы?
Антон Семенченко
skype: dpi.semenchenko
semenchenko@dpi.solutions

More Related Content

Viewers also liked

Viviana Castaño Peña
Viviana Castaño Peña	Viviana Castaño Peña
Viviana Castaño Peña astrydquintero
 
ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...
ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...
ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...ENJ
 
company brochure_ 5
company brochure_ 5company brochure_ 5
company brochure_ 5Anda Baharav
 
Средства автоматизации тестирования десктопных приложений. Сравнительный анализ
Средства автоматизации тестирования десктопных приложений. Сравнительный анализСредства автоматизации тестирования десктопных приложений. Сравнительный анализ
Средства автоматизации тестирования десктопных приложений. Сравнительный анализCOMAQA.BY
 
Formulation of Mometasone Furoate Emulgel
Formulation of Mometasone Furoate EmulgelFormulation of Mometasone Furoate Emulgel
Formulation of Mometasone Furoate EmulgelAman Dube
 
Insight From Books - The Lean Startup
Insight From Books - The Lean StartupInsight From Books - The Lean Startup
Insight From Books - The Lean StartupArete Inc.
 

Viewers also liked (9)

Emh lec#3
Emh lec#3Emh lec#3
Emh lec#3
 
Viviana Castaño Peña
Viviana Castaño Peña	Viviana Castaño Peña
Viviana Castaño Peña
 
Cv
CvCv
Cv
 
ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...
ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...
ENJ-100 Módulo 3 - Curso Razonamiento, Argumentación y Estructuración de las ...
 
company brochure_ 5
company brochure_ 5company brochure_ 5
company brochure_ 5
 
Средства автоматизации тестирования десктопных приложений. Сравнительный анализ
Средства автоматизации тестирования десктопных приложений. Сравнительный анализСредства автоматизации тестирования десктопных приложений. Сравнительный анализ
Средства автоматизации тестирования десктопных приложений. Сравнительный анализ
 
Formulation of Mometasone Furoate Emulgel
Formulation of Mometasone Furoate EmulgelFormulation of Mometasone Furoate Emulgel
Formulation of Mometasone Furoate Emulgel
 
Insight From Books - The Lean Startup
Insight From Books - The Lean StartupInsight From Books - The Lean Startup
Insight From Books - The Lean Startup
 
new cv
new cvnew cv
new cv
 

Similar to закон иерархических компенсаций седова и C++ core guidelines

Современна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерияСовременна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерияMarcus Akoev
 
Олег Антонян
Олег АнтонянОлег Антонян
Олег АнтонянForkConf
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовDI GR
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноBubon Makabra
 
Чистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТЧистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТСбертех | SberTech
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
низкоуровневое программирование сегодня   новые стандарты с++, программирован...низкоуровневое программирование сегодня   новые стандарты с++, программирован...
низкоуровневое программирование сегодня новые стандарты с++, программирован...COMAQA.BY
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20DefconRussia
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияRuslan Shevchenko
 
Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...
Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...
Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...Positive Hack Days
 
нужны ли стенды асутп для иб (Phd 2013) 1305 22 final
нужны ли стенды асутп для иб (Phd 2013) 1305 22 finalнужны ли стенды асутп для иб (Phd 2013) 1305 22 final
нужны ли стенды асутп для иб (Phd 2013) 1305 22 finalPositive Hack Days
 
Lab Management magic, elves, and mushrooms
Lab Management magic, elves, and mushroomsLab Management magic, elves, and mushrooms
Lab Management magic, elves, and mushroomsAlena Begler
 
Информационная безопасность на базе open source: есть ли смысл?
Информационная безопасность на базе open source: есть ли смысл?Информационная безопасность на базе open source: есть ли смысл?
Информационная безопасность на базе open source: есть ли смысл?Aleksey Lukatskiy
 
Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...Alexey Neznanov
 
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...DevGAMM Conference
 
А.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортексаА.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортексаAnatoly Levenchuk
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняLuxoftTraining
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Andrii Gakhov
 

Similar to закон иерархических компенсаций седова и C++ core guidelines (20)

Современна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерияСовременна Программная инженерия. Системная инженерия
Современна Программная инженерия. Системная инженерия
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
OO Design with C++: 0. Intro
OO Design with C++: 0. IntroOO Design with C++: 0. Intro
OO Design with C++: 0. Intro
 
Олег Антонян
Олег АнтонянОлег Антонян
Олег Антонян
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодов
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важно
 
Чистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТЧистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТ
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
низкоуровневое программирование сегодня   новые стандарты с++, программирован...низкоуровневое программирование сегодня   новые стандарты с++, программирован...
низкоуровневое программирование сегодня новые стандарты с++, программирован...
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
 
Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...
Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...
Руслан Стефанов. Нужны ли модели АСУ ТП при обеспечении информационной безопа...
 
нужны ли стенды асутп для иб (Phd 2013) 1305 22 final
нужны ли стенды асутп для иб (Phd 2013) 1305 22 finalнужны ли стенды асутп для иб (Phd 2013) 1305 22 final
нужны ли стенды асутп для иб (Phd 2013) 1305 22 final
 
Lab Management magic, elves, and mushrooms
Lab Management magic, elves, and mushroomsLab Management magic, elves, and mushrooms
Lab Management magic, elves, and mushrooms
 
Информационная безопасность на базе open source: есть ли смысл?
Информационная безопасность на базе open source: есть ли смысл?Информационная безопасность на базе open source: есть ли смысл?
Информационная безопасность на базе open source: есть ли смысл?
 
Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...Современные коллаборативные технологии в учебном процессе: теория и практика ...
Современные коллаборативные технологии в учебном процессе: теория и практика ...
 
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
 
А.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортексаА.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортекса
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровня
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 

More from COMAQA.BY

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...COMAQA.BY
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...COMAQA.BY
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...COMAQA.BY
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьCOMAQA.BY
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...COMAQA.BY
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...COMAQA.BY
 
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...COMAQA.BY
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.COMAQA.BY
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.COMAQA.BY
 
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...COMAQA.BY
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликтеCOMAQA.BY
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковCOMAQA.BY
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смертьCOMAQA.BY
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиCOMAQA.BY
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьоромCOMAQA.BY
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSourceCOMAQA.BY
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingCOMAQA.BY
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, javaCOMAQA.BY
 

More from COMAQA.BY (20)

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
 
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
 
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликте
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиков
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смерть
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестов
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачами
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьором
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSource
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testing
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, java
 

закон иерархических компенсаций седова и C++ core guidelines

  • 1. Закон иерархических компенсаций Седова и C++ Core Guidelines Антон Семенченко
  • 2. Обо мне Антон Семенченко автоматизированное тестирование, низкоуровневая разработка, управление, продажи Основатель DPI.Solutions Менеджер в EPAM Systems Тренер по автоматизации и управлению
  • 3. Евгений Александрович Седов Советский ученый, инженер- практик, изобретатель, педагог, популяризатор науки Разработка и внедрение систем в промышленности и военке Руководил отделом из 11 лабораторий в течение 10 лет
  • 4. Седов: междисциплинарные исследования Более 200 публикаций: научных и научно- художественных! кибернетика, теория информации, самоорганизация, стандартизация, исскусственный интеллект Ключевая тема: проблема разнообразия
  • 5. Разнообразие и эволюция Сокращается ли внутреннее разнообразие систем в процессе эволюции? Живая и неживая природа, язык, культура, технологии
  • 6. От хаоса к детерменированности И К Хаос, максимальная энтропия Жесткая детерминация Путь от И к К - накопление структурной информации Оптимальное соотношение: 80% детерминации 20% хаоса Согласно ученым, такой путь прошло большинство развитых человеческих языков
  • 7. Магическое соотношение 80/20 80% детерминированности: языковая структура 20% хаоса: вариабельность, “мутации”, “новости”, ради которых и пишется текст При увеличении детерминированности теряется адаптивность, и система разрушится при изменении внешних условий Единственный выход: разрушение, скачок от К к И и создание новой системы
  • 8. Развитие: новые уровни иерархии Новые уровни иерархии драматически увеличивают число новых связей между элементами системы Связи = энергия, и единственный способ сохранить систему - это ограничить число элементов
  • 9. Закон иерархических компенсаций Разнообразие на верхних уровнях иерархии может быть обеспечено только за счет ограничения разнообразия на нижних уровнях Сложные системы можно строить только из ограниченного числа простых Стандартизация неизбежна! или
  • 10. История С++ 1983 - зарождение языка 1998 - стандарт С++ 98 2003 - стандарт С++ 03 2011 - С++ 11 2014 - С++ 14 2015 - C++ Core Guidelines
  • 11. C++ Core Guidelines Бьерн Страуструп Герб Саттер ❖ Опубликованы в сентябре 2015 ❖ Open source (github) ❖ MIT-style (contributor) лицензия ❖ Открыты для дополнения ❖ Сейчас: около 250 страниц А4 https://github.com/isocpp/CppCoreGuidelines
  • 12. Core Guidelines: идеология "Within C++ is a smaller, simpler, safer language struggling to get out." - Bjarne Stroustrup ❖ Современный С++ 11/14/17 (прицел на будущее) ❖ Автоматизируемые правила, где возможно ❖ Безопасность и простота кода ❖ Фокус на высокоуровневых вещах: ➢ типы и интерфейсы ➢ управление ресурсами (в т.ч. памятью) ➢ потокобезопасность
  • 13. Core Guidelines: цели ❖ Использование накопленных годами знаний ❖ Унификация практик между организациями ❖ Получить качественный код: ➢ статически типо-безопасный ➢ без утечки ресурсов ➢ с ранней диагностикой ошибок в логике ❖ Помочь новичкам в изучении С++
  • 14. 1. Непосредственно правила 2. Guideline Support Library (GSL, header-only) - функции и типы, рекомендуемые Гайдланами https://github.com/Microsoft/GSL 3. Checker Tool (Visual Studio Add-in) - автоматическая проверка правил https://blogs.msdn.microsoft.com/vcblog/2015/12/03/c- core-guidelines-checkers-available-for-vs-2015-update-1/ Core Guidelines: компоненты
  • 15. Описание правила ❖ Само правило - к примеру, Use RAII to prevent leaks ❖ Номер правила - например, E.6: 6-е правило об исключениях ❖ Reasons - почему правило именно такое ❖ Examples - примеры, как позитивные так и негативные ❖ Alternatives - альтернативы правилам-запретам ❖ Exceptions - исключения из правил ❖ Enforcement - как автоматизировать проверку правила
  • 16. Rule Enforcement ❖ code review ❖ static analysis ❖ compiler ❖ run-time checks Guidelines Checker Tool Humans are slow, inaccurate, and bore easily
  • 17. Основные разделы ❖ P: Philosophy ❖ C: Classes and class hierarchies ❖ R: Resource management ❖ E: Error handling ❖ Con: Constants and immutability ❖ T: Templates and generic programming ❖ CP: Concurrency ❖ SL: The Standard library ❖ CPL: C-style programming
  • 18. R.5: Don't heap-allocate unnecessarily Reason A scoped object is a local object, a global object, or a member. This implies that there is no separate allocation and deallocation cost in excess of that already used for the containing scope or object. // Bad example void some_function(int n) { auto p = new Gadget{n}; // ... delete p; } // Good example void some_function(int n) { Gadget g{n}; // ... } Enforcement (Simple) Warn if a local unique_ptr or shared_ptr is not moved, copied, reassigned or reset before its lifetime ends.
  • 19. E.15: Catch exceptions from a hierarchy by reference Reason To prevent slicing. // Bad example void f() try { // ... } catch (exception e) { // don't: may slice // ... } // Good example catch (exception& e) { /* ... */ } Enforcement Flag by-value exceptions if their types are part of a hierarchy (could require whole-program analysis to be perfect).
  • 20. Con.2: By default, make member functions const Reason A member function should be marked const unless it changes the object's observable state. This gives a more precise statement of design intent, better readability, more errors caught by the compiler, and sometimes more optimization opportunities. // Bad example. class Point { int x, y; public: int getx() { return x; } // BAD, should be const as it doesn't modify the object's state // ... }; void f(const Point& pt) { int x = pt.getx(); // ERROR, doesn't compile because getx was not marked const } Enforcement Flag a member function that is not marked const, but that does not perform a non-const operation on any member variable.
  • 21. Как поучаствовать? We need help! - Bjarne Можно помочь с примерами, подкрепляющими правила