Синдром «146%»: некомпетентність чи злий умисел? | Відкриті системи. СУБД | Видавництво «Відкриті системи»

  1. Синдром «146%»: некомпетентність чи злий умисел? Відомий мем істотно вплинув на велику кількість...
  2. Синдром «146%»: некомпетентність чи злий умисел?

Синдром «146%»: некомпетентність чи злий умисел?

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

При онлайн-моніторингу підрахунку голосів на виборах в Державну думу, які пройшли в грудні 2011 року, на каналі «Россия» був показаний результат моніторингу процентного співвідношення голосів виборців, відданих за різні партії, і в певний момент трансляції підрахунку проміжних результатів сума відсотків голосів, поданих за все партії по Ростовській області, виявилася рівною 146,47%. Спостерігачі одразу заговорили про «руку Москви», контролі та коригуванні вільного волевиявлення громадян і т. П. Як би там не було, так народився мем «146%», а відповідне зображення (рис. 1) до сих пір сприймається як факт навмисного спотворення результатів виборів. Загальнопоширений сенс мема полягає в тому, що вільне волевиявлення громадян марно, а демократичні свободи ілюзорні. Однак схоже, що причиною його народження є не зловмисне перекручування результатів виборів, а банальна некомпетентність програмістів.

Підрахунок голосів виборців на виборах 2011 року проводився за допомогою системи ГАС «Вибори». Це розподілена система, яка підтримує безліч процесів, що паралельно працюють із загальними даними і забезпечують збір та передачу в ЦВК відомостей від близько 100 тис. Дільничних виборчих комісій з 83 суб'єктів Федерації. Проблема онлайн-моніторингу проміжних результатів в такій системі процесів є класичною для паралельного програмування - це «проблема побудови миттєвого загального стану паралельно виконуються процесів (snapshot)». Давно відомо, що вона не може бути коректно вирішена ні наївним збором і обробкою розподілених даних, ні простий синхронізацією в реальному часі розподілених програм [1] .

Аналогічний інцидент стався на радіо «Ехо Москви» в передачі «Перехоплення», яку 24 вересня 2011 року вів Олексій Венедиктов. Під час передачі при обговоренні кандидатур Путіна і Медведєва було запущено телефонне голосування, під час якого ведучий проводив онлайн-моніторинг проміжних результатів. У якийсь момент система голосування видала 111% [ 2 ].

Сервіс підтримки телефонного голосування для «Ехо Москви» - це також паралельна програма, побудована з декількох паралельно функціонуючих процесів, що працюють з розділяються структурами даних (рис. 2). Один з процесів повинен стежити за дзвінками по першому телефонному номеру, збільшуючи число тих, хто проголосував за першу альтернативу, другий повинен робити те ж для іншого телефонного номера. Для онлайн-моніторингу результатів в найпростішому варіанті можна побудувати процеси, які виконують підрахунок загального числа тих, хто проголосував (процес Р3), а також підрахунок процентного співвідношення тих, хто проголосував за кожну альтернативу (процеси Р4 і Р5). Однак представлене наївне рішення проблеми некоректно - будь-який фахівець з паралельного програмування визначить, що в ході голосування тут можуть бути отримані будь-які проміжні значення. Очевидно, що використана на радіо «Ехо Москви» програма паралельна, а інцидент демонструє, що вона не функціонує належним чином. Результат «146%» свідчить про подібну ж помилку в програмі ГАС «Вибори».

Вельми сумнівно, що в цих системах використовувалися коректні алгоритми визначення миттєвого стану розподіленої системи і що обидві програми пройшли ретельну валідацію. Відомо, що помилки в паралельних програмах виявити звичайним тестуванням неможливо. Такі помилки не можуть виправити ні мільйонні витрати на покупку і установку на всіх виборчих дільницях країни веб-камер, ні моніторинг в реальному часі процедури підрахунку голосів, ні встановлюються на ділянках комплекси обробки виборчих бюлетенів і комплекси для електронного голосування.

Справжня ціна програмних помилок

Програмне забезпечення стало невід'ємною частиною існування суспільства - провал або успіх повсякденних справ кожного з нас залежить тепер від наявності помилок в ПЗ.

Майкл Жівіч, Роберт Каннінгем

Паралельні та розподілені програми отримують сьогодні все більшого поширення, однак саме в них найбільш вірогідна поява помилок [3, 4] - середній програміст не в змозі охопити і проконтролювати величезна кількість сполучень ситуацій, що виникають при роботі паралельних програм. Виявити такі помилки класичним тестуванням неможливо - помилки зазвичай виявляються при рідкісних поєднаннях швидкостей виконання операцій в паралельні процеси. Створення коректних програмних систем, що складаються з паралельно виконуваних процесів, є сьогодні найважливішою проблемою, і мінімізувати кількість помилок можна тільки дотримуючись спеціальної технології розробки паралельних програм.

В останні роки на цьому шляху досягнуто певних успіхів - в рамках технологічного циклу розробки програмних систем, що функціонують в реальному часі, в усіх провідних софтверних компаніях використовуються нові методи формального докази коректності паралельних і розподілених програм, засновані, зокрема, на перевірці моделі (model checking ). Однак серед цих компаній майже немає тих, які працюють на російських споживачів. Вивчення теорії паралельного програмування і методів формальної верифікації передбачено в навчальних програмах всіх провідних університетів світу, проте в Росії ці компетенції навіть не включені в стандарти підготовки магістрів за основними напрямками навчання в галузі інформатики.

Випадок з системою голосування на «Ехо Москви» - звичайне явище для подібних систем, проте інцидент з некоректним моніторингом підрахунку відсотків голосів на виборах в Думу має більш серйозні соціальні наслідки. Програмні збої при стикуванні космічної вантажівки з МКС, програмні помилки, що призвели до втрати супутників зв'язку ГЛОНАСС, і т. П можна, звичайно, списати на погану організацію праці в Роскосмосі, проте можливо, що все це відображення однієї і тієї ж системної проблеми - низької кваліфікації розробників ПЗ, незнання ними сучасних методів розробки і верифікації паралельних і розподілених програмних систем.

***

Інцидент «146%» зайвий раз свідчить: сьогодні від людей, які розробляють і експлуатують складні системи, потрібні професіоналізм і відповідальність, недоучки можуть завдати величезної шкоди суспільству. Низька кваліфікація стає причиною серйозних втрат, а помилки, допущені програмістами, вже не раз приводили до загибелі людей.

  1. K. Many Chandy, Leslie Lamport. Distributed Snapshot: Determing Global States of Distributed Systems // ACM Transactions on Computer Systems. Vol. 3, No 1, Febr. 1985, P. 63-75.
  2. URL: http://www.echo.msk.ru/programs/interception/814452-echo (дата звернення 18.05.2014).
  3. В'ячеслав Любченко. Багатоядерний тупик: вихід є // Відкриті сістеми.СУБД. - 2013. - № 8. - С. 52-54. URL: http://www.osp.ru/os/2013/08/13037860 (дата звернення: 11.06.2014).
  4. Борис Штейнберг. Відкрита распараллелівать система // Відкриті сістеми.СУБД. - 2007. - № 9. - С. 36-41. URL: http://www.osp.ru/os/2007/09/4567122 (дата звернення: 11.06.2014).

Юрій Карпов ( [email protected] ) - зав. кафедрою «Розподілені обчислення і комп'ютерні мережі», Санкт-Петербурзький політехнічний університет.

Синдром «146%»: некомпетентність чи злий умисел?

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

При онлайн-моніторингу підрахунку голосів на виборах в Державну думу, які пройшли в грудні 2011 року, на каналі «Россия» був показаний результат моніторингу процентного співвідношення голосів виборців, відданих за різні партії, і в певний момент трансляції підрахунку проміжних результатів сума відсотків голосів, поданих за все партії по Ростовській області, виявилася рівною 146,47%. Спостерігачі одразу заговорили про «руку Москви», контролі та коригуванні вільного волевиявлення громадян і т. П. Як би там не було, так народився мем «146%», а відповідне зображення (рис. 1) до сих пір сприймається як факт навмисного спотворення результатів виборів. Загальнопоширений сенс мема полягає в тому, що вільне волевиявлення громадян марно, а демократичні свободи ілюзорні. Однак схоже, що причиною його народження є не зловмисне перекручування результатів виборів, а банальна некомпетентність програмістів.

Підрахунок голосів виборців на виборах 2011 року проводився за допомогою системи ГАС «Вибори». Це розподілена система, яка підтримує безліч процесів, що паралельно працюють із загальними даними і забезпечують збір та передачу в ЦВК відомостей від близько 100 тис. Дільничних виборчих комісій з 83 суб'єктів Федерації. Проблема онлайн-моніторингу проміжних результатів в такій системі процесів є класичною для паралельного програмування - це «проблема побудови миттєвого загального стану паралельно виконуються процесів (snapshot)». Давно відомо, що вона не може бути коректно вирішена ні наївним збором і обробкою розподілених даних, ні простий синхронізацією в реальному часі розподілених програм [1] .

Аналогічний інцидент стався на радіо «Ехо Москви» в передачі «Перехоплення», яку 24 вересня 2011 року вів Олексій Венедиктов. Під час передачі при обговоренні кандидатур Путіна і Медведєва було запущено телефонне голосування, під час якого ведучий проводив онлайн-моніторинг проміжних результатів. У якийсь момент система голосування видала 111% [ 2 ].

Сервіс підтримки телефонного голосування для «Ехо Москви» - це також паралельна програма, побудована з декількох паралельно функціонуючих процесів, що працюють з розділяються структурами даних (рис. 2). Один з процесів повинен стежити за дзвінками по першому телефонному номеру, збільшуючи число тих, хто проголосував за першу альтернативу, другий повинен робити те ж для іншого телефонного номера. Для онлайн-моніторингу результатів в найпростішому варіанті можна побудувати процеси, які виконують підрахунок загального числа тих, хто проголосував (процес Р3), а також підрахунок процентного співвідношення тих, хто проголосував за кожну альтернативу (процеси Р4 і Р5). Однак представлене наївне рішення проблеми некоректно - будь-який фахівець з паралельного програмування визначить, що в ході голосування тут можуть бути отримані будь-які проміжні значення. Очевидно, що використана на радіо «Ехо Москви» програма паралельна, а інцидент демонструє, що вона не функціонує належним чином. Результат «146%» свідчить про подібну ж помилку в програмі ГАС «Вибори».

Вельми сумнівно, що в цих системах використовувалися коректні алгоритми визначення миттєвого стану розподіленої системи і що обидві програми пройшли ретельну валідацію. Відомо, що помилки в паралельних програмах виявити звичайним тестуванням неможливо. Такі помилки не можуть виправити ні мільйонні витрати на покупку і установку на всіх виборчих дільницях країни веб-камер, ні моніторинг в реальному часі процедури підрахунку голосів, ні встановлюються на ділянках комплекси обробки виборчих бюлетенів і комплекси для електронного голосування.

Справжня ціна програмних помилок

Програмне забезпечення стало невід'ємною частиною існування суспільства - провал або успіх повсякденних справ кожного з нас залежить тепер від наявності помилок в ПЗ.

Майкл Жівіч, Роберт Каннінгем

Паралельні та розподілені програми отримують сьогодні все більшого поширення, однак саме в них найбільш вірогідна поява помилок [3, 4] - середній програміст не в змозі охопити і проконтролювати величезна кількість сполучень ситуацій, що виникають при роботі паралельних програм. Виявити такі помилки класичним тестуванням неможливо - помилки зазвичай виявляються при рідкісних поєднаннях швидкостей виконання операцій в паралельні процеси. Створення коректних програмних систем, що складаються з паралельно виконуваних процесів, є сьогодні найважливішою проблемою, і мінімізувати кількість помилок можна тільки дотримуючись спеціальної технології розробки паралельних програм.

В останні роки на цьому шляху досягнуто певних успіхів - в рамках технологічного циклу розробки програмних систем, що функціонують в реальному часі, в усіх провідних софтверних компаніях використовуються нові методи формального докази коректності паралельних і розподілених програм, засновані, зокрема, на перевірці моделі (model checking ). Однак серед цих компаній майже немає тих, які працюють на російських споживачів. Вивчення теорії паралельного програмування і методів формальної верифікації передбачено в навчальних програмах всіх провідних університетів світу, проте в Росії ці компетенції навіть не включені в стандарти підготовки магістрів за основними напрямками навчання в галузі інформатики.

Випадок з системою голосування на «Ехо Москви» - звичайне явище для подібних систем, проте інцидент з некоректним моніторингом підрахунку відсотків голосів на виборах в Думу має більш серйозні соціальні наслідки. Програмні збої при стикуванні космічної вантажівки з МКС, програмні помилки, що призвели до втрати супутників зв'язку ГЛОНАСС, і т. П можна, звичайно, списати на погану організацію праці в Роскосмосі, проте можливо, що все це відображення однієї і тієї ж системної проблеми - низької кваліфікації розробників ПЗ, незнання ними сучасних методів розробки і верифікації паралельних і розподілених програмних систем.

***

Інцидент «146%» зайвий раз свідчить: сьогодні від людей, які розробляють і експлуатують складні системи, потрібні професіоналізм і відповідальність, недоучки можуть завдати величезної шкоди суспільству. Низька кваліфікація стає причиною серйозних втрат, а помилки, допущені програмістами, вже не раз приводили до загибелі людей.

  1. K. Many Chandy, Leslie Lamport. Distributed Snapshot: Determing Global States of Distributed Systems // ACM Transactions on Computer Systems. Vol. 3, No 1, Febr. 1985, P. 63-75.
  2. URL: http://www.echo.msk.ru/programs/interception/814452-echo (дата звернення 18.05.2014).
  3. В'ячеслав Любченко. Багатоядерний тупик: вихід є // Відкриті сістеми.СУБД. - 2013. - № 8. - С. 52-54. URL: http://www.osp.ru/os/2013/08/13037860 (дата звернення: 11.06.2014).
  4. Борис Штейнберг. Відкрита распараллелівать система // Відкриті сістеми.СУБД. - 2007. - № 9. - С. 36-41. URL: http://www.osp.ru/os/2007/09/4567122 (дата звернення: 11.06.2014).

Юрій Карпов ( [email protected] ) - зав. кафедрою «Розподілені обчислення і комп'ютерні мережі», Санкт-Петербурзький політехнічний університет.

Синдром «146%»: некомпетентність чи злий умисел?

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

При онлайн-моніторингу підрахунку голосів на виборах в Державну думу, які пройшли в грудні 2011 року, на каналі «Россия» був показаний результат моніторингу процентного співвідношення голосів виборців, відданих за різні партії, і в певний момент трансляції підрахунку проміжних результатів сума відсотків голосів, поданих за все партії по Ростовській області, виявилася рівною 146,47%. Спостерігачі одразу заговорили про «руку Москви», контролі та коригуванні вільного волевиявлення громадян і т. П. Як би там не було, так народився мем «146%», а відповідне зображення (рис. 1) до сих пір сприймається як факт навмисного спотворення результатів виборів. Загальнопоширений сенс мема полягає в тому, що вільне волевиявлення громадян марно, а демократичні свободи ілюзорні. Однак схоже, що причиною його народження є не зловмисне перекручування результатів виборів, а банальна некомпетентність програмістів.

Підрахунок голосів виборців на виборах 2011 року проводився за допомогою системи ГАС «Вибори». Це розподілена система, яка підтримує безліч процесів, що паралельно працюють із загальними даними і забезпечують збір та передачу в ЦВК відомостей від близько 100 тис. Дільничних виборчих комісій з 83 суб'єктів Федерації. Проблема онлайн-моніторингу проміжних результатів в такій системі процесів є класичною для паралельного програмування - це «проблема побудови миттєвого загального стану паралельно виконуються процесів (snapshot)». Давно відомо, що вона не може бути коректно вирішена ні наївним збором і обробкою розподілених даних, ні простий синхронізацією в реальному часі розподілених програм [1] .

Аналогічний інцидент стався на радіо «Ехо Москви» в передачі «Перехоплення», яку 24 вересня 2011 року вів Олексій Венедиктов. Під час передачі при обговоренні кандидатур Путіна і Медведєва було запущено телефонне голосування, під час якого ведучий проводив онлайн-моніторинг проміжних результатів. У якийсь момент система голосування видала 111% [ 2 ].

Сервіс підтримки телефонного голосування для «Ехо Москви» - це також паралельна програма, побудована з декількох паралельно функціонуючих процесів, що працюють з розділяються структурами даних (рис. 2). Один з процесів повинен стежити за дзвінками по першому телефонному номеру, збільшуючи число тих, хто проголосував за першу альтернативу, другий повинен робити те ж для іншого телефонного номера. Для онлайн-моніторингу результатів в найпростішому варіанті можна побудувати процеси, які виконують підрахунок загального числа тих, хто проголосував (процес Р3), а також підрахунок процентного співвідношення тих, хто проголосував за кожну альтернативу (процеси Р4 і Р5). Однак представлене наївне рішення проблеми некоректно - будь-який фахівець з паралельного програмування визначить, що в ході голосування тут можуть бути отримані будь-які проміжні значення. Очевидно, що використана на радіо «Ехо Москви» програма паралельна, а інцидент демонструє, що вона не функціонує належним чином. Результат «146%» свідчить про подібну ж помилку в програмі ГАС «Вибори».

Вельми сумнівно, що в цих системах використовувалися коректні алгоритми визначення миттєвого стану розподіленої системи і що обидві програми пройшли ретельну валідацію. Відомо, що помилки в паралельних програмах виявити звичайним тестуванням неможливо. Такі помилки не можуть виправити ні мільйонні витрати на покупку і установку на всіх виборчих дільницях країни веб-камер, ні моніторинг в реальному часі процедури підрахунку голосів, ні встановлюються на ділянках комплекси обробки виборчих бюлетенів і комплекси для електронного голосування.

Справжня ціна програмних помилок

Програмне забезпечення стало невід'ємною частиною існування суспільства - провал або успіх повсякденних справ кожного з нас залежить тепер від наявності помилок в ПЗ.

Майкл Жівіч, Роберт Каннінгем

Паралельні та розподілені програми отримують сьогодні все більшого поширення, однак саме в них найбільш вірогідна поява помилок [3, 4] - середній програміст не в змозі охопити і проконтролювати величезна кількість сполучень ситуацій, що виникають при роботі паралельних програм. Виявити такі помилки класичним тестуванням неможливо - помилки зазвичай виявляються при рідкісних поєднаннях швидкостей виконання операцій в паралельні процеси. Створення коректних програмних систем, що складаються з паралельно виконуваних процесів, є сьогодні найважливішою проблемою, і мінімізувати кількість помилок можна тільки дотримуючись спеціальної технології розробки паралельних програм.

В останні роки на цьому шляху досягнуто певних успіхів - в рамках технологічного циклу розробки програмних систем, що функціонують в реальному часі, в усіх провідних софтверних компаніях використовуються нові методи формального докази коректності паралельних і розподілених програм, засновані, зокрема, на перевірці моделі (model checking ). Однак серед цих компаній майже немає тих, які працюють на російських споживачів. Вивчення теорії паралельного програмування і методів формальної верифікації передбачено в навчальних програмах всіх провідних університетів світу, проте в Росії ці компетенції навіть не включені в стандарти підготовки магістрів за основними напрямками навчання в галузі інформатики.

Випадок з системою голосування на «Ехо Москви» - звичайне явище для подібних систем, проте інцидент з некоректним моніторингом підрахунку відсотків голосів на виборах в Думу має більш серйозні соціальні наслідки. Програмні збої при стикуванні космічної вантажівки з МКС, програмні помилки, що призвели до втрати супутників зв'язку ГЛОНАСС, і т. П можна, звичайно, списати на погану організацію праці в Роскосмосі, проте можливо, що все це відображення однієї і тієї ж системної проблеми - низької кваліфікації розробників ПЗ, незнання ними сучасних методів розробки і верифікації паралельних і розподілених програмних систем.

***

Інцидент «146%» зайвий раз свідчить: сьогодні від людей, які розробляють і експлуатують складні системи, потрібні професіоналізм і відповідальність, недоучки можуть завдати величезної шкоди суспільству. Низька кваліфікація стає причиною серйозних втрат, а помилки, допущені програмістами, вже не раз приводили до загибелі людей.

  1. K. Many Chandy, Leslie Lamport. Distributed Snapshot: Determing Global States of Distributed Systems // ACM Transactions on Computer Systems. Vol. 3, No 1, Febr. 1985, P. 63-75.
  2. URL: http://www.echo.msk.ru/programs/interception/814452-echo (дата звернення 18.05.2014).
  3. В'ячеслав Любченко. Багатоядерний тупик: вихід є // Відкриті сістеми.СУБД. - 2013. - № 8. - С. 52-54. URL: http://www.osp.ru/os/2013/08/13037860 (дата звернення: 11.06.2014).
  4. Борис Штейнберг. Відкрита распараллелівать система // Відкриті сістеми.СУБД. - 2007. - № 9. - С. 36-41. URL: http://www.osp.ru/os/2007/09/4567122 (дата звернення: 11.06.2014).

Юрій Карпов ( [email protected] ) - зав. кафедрою «Розподілені обчислення і комп'ютерні мережі», Санкт-Петербурзький політехнічний університет.

Синдром «146%»: некомпетентність чи злий умисел?
Синдром «146%»: некомпетентність чи злий умисел?
Синдром «146%»: некомпетентність чи злий умисел?
Синдром «146%»: некомпетентність чи злий умисел?
Синдром «146%»: некомпетентність чи злий умисел?