Современные информационные технологии / 3.Программное обеспечение

 

К. т. н. Радельчук Г. І.

Хмельницький національний університет

Етичні аспекти професійної діяльності розробника програмного забезпечення

 

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

Ясно, що програмісти, як і фахівці інших професій, мають бути чесними і порядними людьми. Але разом з тим, програмісти не можуть керуватися лише моральними нормами або юридичними обмеженнями, оскільки вони зазвичай бувають зв'язані тоншими професійними зобов'язаннями, до яких відносяться: конфіденційність; компетентність; захист прав інтелектуальної власності; (не)зловживання комп'ютером.

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

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

Американський этик Дебора Джонсон у своїй монографії “Комп'ютерна етика” [1] наводить гіпотетичний випадок. Досвідчений системотехнік працює у фірмі, що виробляє комп'ютери, більше трьох років. Компанія створює і продає ПЗ і апаратне комп'ютерне забезпечення. Майже два роки системотехнік працював над створенням ПЗ, яке розроблялося для звичайного ринку збуту. Але потім його перевели працювати над проектом за контрактом з Міністерством оборони, згідно якого фірма зобов'язалася розробити автоматизовану систему, яка могла б виводити на орбіту ядерні ракети, приймаючи сигнали від радарів. Коли робота над проектом вже наближалася до завершення, системотехнік став сумніватися в адекватності розробленої ним системи, в її здатності розрізняти об'єкти (наприклад, відрізняти ракету від невеликого літака), а також в безпеці механізму, що випускає ракети на орбіту. Системотехнік відчуває свою моральну відповідальність, але не знає, як йому поступити. Чи повинен він перейти на роботу в інший менш відповідальний проект? Чи повинен повідомити про свої сумніви Міністерство оборони? Чи повинен він звернутися до представників засобів масової інформації? А в будь-якому з перерахованих вище випадків системотехніку загрожує втрата роботи. Чи може він, нарешті, промовчати?

Ця гіпотетична ситуація зачіпає цілу низку проблем професійної етики. Адже в даному прикладі говориться не лише про сумніви і про вчинок одного індивіда, тут залучено дві організації і умовно може йти мова взагалі про виживання людства. Д. Джонсон вважає, що одного лише знання і уміння для комп'ютерного професіонала недостатньо, він неодмінно повинен керуватися законами і вимогами професійної етики.

У розробці таких етичних зобов'язань провідну роль грають професійні співтовариства.

В кінці 90-х років XX століття спільний комітет організацій АСМ (Association for Computing Machinery – Асоціація з обчислювальної техніки), комп'ютерного співтовариства IEEE (Institute of Electrical and Electronics Engineers – Інститут інженерів з електротехніки і електроніки) та CS (British Computer Society – Британське комп’ютерне співтовариство) опублікували кодекс професійної поведінки інженера з розробки ПЗ, або етичний кодекс – IEEE-CS/ACM Software Engineering Code of Ethics and Professional Practices (Кодекс етики і професійної практики програмної інженерії) [2]. Члени цих організацій прийняли на себе зобов'язання слідувати даному кодексу. Окрім того, нові члени в момент вступу до організації також беруть зобов'язання слідувати цьому кодексу.

Правила поведінки з цього кодексу засновані на загальнолюдських етичних нормах. На сьогодні цей кодекс є керівництвом з етики і професійної поведінки для інженерів ПЗ.

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

Принципи визначають етику стосунків між окремими інженерами, групами і організаціями, а також пов'язані з цим зобов'язання. У кожен Принцип включені ілюстрації деяких зобов'язань, що накладаються цими стосунками. Ці зобов'язання грунтуються на гуманності професії програмного інженера, особливій увазі по відношенню до людей, на яких робить вплив діяльність програмних інженерів, і унікальності цієї діяльності. Кодекс проголошує ці зобов'язання для всіх, хто відносить себе до програмних інженерів або збирається ним стати.

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

Принципи кодексу спонукають програмних інженерів усвідомити, на кого робить вплив виконувана ними робота; розібратися, чи відносяться вони і їх колеги до оточуючих з належною пошаною; взяти до уваги, як суспільство, будучи інформованим належним чином, віднеслося б до їх рішень; нарешті, оцінити, чи відповідають їх професійні дії ідеалам програмної інженерії. У всіх цих оцінках турбота про благополуччя, безпеку і процвітання суспільства є первинною, тобто, «інтереси суспільства» є центральними в даному Кодексі.

У преамбулі кодексу сформульовані його цілі, а далі у восьми пунктах викладені принципи.

Перша основоположна мета – “інженери ПЗ повинні служити тому, щоб аналіз, специфікація, проектування, розробка, тестування і обслуговування ПЗ стали вигідною і поважаною професією”. Іншими словами, одне із завдань кодексу – сприяти розвитку самої професії інженера ПЗ. Формулювання цієї мети неявно передбачає, що інженерія ПЗ ще не стала вигідною і поважаною професією. У міру її становлення як зрілої професії формулювання може змінитися, і замість “стали” з'явиться, наприклад, “щоб аналіз, специфікація,… були символом вигідної і поважаної професії”.

Друга основоположна мета полягає в тому, що інженери ПЗ мають бути вірними цілям здоров'я, безпеки і блага суспільства. Це цілком відповідає уявленню про те, що інженери несуть швидше відповідальність перед суспільством в цілому, ніж перед окремими його представниками. Кодекси поведінки інших інженерів аналогічним чином підкреслюють важливість захисту добробуту суспільства (наприклад, “Кодекс етики інженерів” Національного Співтовариства Професійних Інженерів на сайті www.nspe.org, URL: http://www.nspe.org/Ethics/CodeofEthics/index.html).

Ці дві цілі є основними, а вісім принципів направлені на їх реалізацію.

Кодекси етики часто використовуються для регулювання поведінки професіоналів у відповідних областях діяльності, а в “Кодексі етики і професійної практики програмної інженерії”, окрім того, підкреслюється важливість саморегулювання, пропонуються практичні поради, фундаментальні принципи і методи використання рекомендацій, що містяться в ньому, в складних ситуаціях.

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

Проекти, які ведуть у безвихідь. Не маючи етичного кодексу, інженери ПЗ, які вважають, що терміни реалізації проекту є нереальними, мають сумніви – повідомляти про це замовникові або своєму керівникові чи ні. Спираючись на кодекс, в подібній ситуації інженери зобов'язані зібрати докази і документально підтвердити свої побоювання. Кодекс свідчить, що професійним обов'язком є негайне повідомлення керівництва або замовника про свої побоювання.

Заниження вартості розробки з метою отримання контракту будь-якою ціною. У галузі розробки ПЗ досить поширеною є практика комерційних пропозицій замовникам з нереалістично низькими розцінками. Розробникам ПЗ, можливо, не дуже подобається така поведінка, але багато хто не готовий піти наперекір своїм босам і відмовитися занизити вартість розробки в заявці. Згідно кодексу інженери ПЗ повинні забезпечити реалістичність кошторисів витрат і схвалювати документи, тільки якщо вони з ними згодні. Кодекс також закликає інженерів ПЗ зробити свою професію гідної пошани, наприклад, не брати участі в операціях із заниженою вартістю. Інженер ПЗ, який дотримується етичних принципів, повинен відмовитися затверджувати такі комерційні пропозиції.

Розробка ПЗ за принципом “напишемо та виправимо. Недостатньо інформовані замовники і керівники часто наполягають на застосуванні розробниками підходу напишемо і виправимо. Останні усвідомлюють неефективність цього підходу, але після суперечок із замовниками і керівництвом багато хто капітулює: “Хай ця контора пожне те, на що заслужила”. Проте слідування даному принципу суперечить етичному обов’язку інженера ПЗ створювати високоякісні продукти за прийнятними цінами і в розумні терміни. Тривале використання названого методу також компрометує інженерію ПЗ як професію, тому розробники ПЗ, які слідують етичним принципам, повинні відмовитися від нього.

Застій знань. Для того, щоб залишатися в курсі всього нового в розробці ПЗ, потрібно багато часу, і багато розробників навіть не намагаються робити це. Один з видавців стверджував, що середній розробник ПЗ читає в рік менше однієї книги по своїй професії і не виписує жодного професійного журналу. Можливо, проблема не пов'язана з етикою, але вже напевно пов'язана з професійною поведінкою. Неможливо працювати на рівні професіонала, не цікавлячись останніми досягненнями у своїй галузі. Не займаючись безперервною самоосвітою, можна продовжувати працювати в галузі ПЗ на деякому рівні, проте, згідно кодексу етики і професійної поведінки, не можна при цьому бути фахівцем ПЗ.

Поза дією кодексу інженерам ПЗ доводиться покладатися на власні думки і оцінки, стикаючись з етичними дилемами. Інженери, що дотримуються кодексу, знатимуть, що їм не доведеться поодинці відстоювати свої позиції. В багатьох випадках ситуація не є такою однозначною, як в наведених вище прикладах (інтереси клієнта/замовника суперечитимуть інтересам суспільного блага або інтереси працедавця можуть суперечити інтересам колег по цеху розробників ПЗ). Кодекс не може передбачити всі етичні дилеми, але закликає інженерів ПЗ ухвалювати рішення, виходячи з вищих етичних критеріїв, дотримуючи при цьому духу кодексу.

Зрозуміло, що існування Кодексу має сенс, тільки якщо працедавці і замовники зможуть розраховувати на дотримання кодексу професіоналами інженерії ПЗ. У кожній професії потрібно мати дисциплінарні засоби, щоб призвати до порядку працівників, що не дотримуються професійних стандартів. Не маючи подібних засобів, можна підірвати довіру до професії в результаті поступового її руйнування працівниками, що не дотримуються професійних принципів. Сьогодні ні комп'ютерне співтовариство IEEE, ні АСМ, ні будь-яка інша організація не мають повного авторитету, щоб примусити своїх працівників слідувати кодексу – його дотримання є добровільним. Проте, у довгостроковому плані інженерія ПЗ послідує по тому ж шляху, що й інші професії: повноцінний професійний статус і дотримання кодексу стануть її невід'ємними частинами. Кодекс буде обов'язковим для виконання, і це буде вигідно і фахівцям ПЗ, і їх працедавцям і замовникам, і суспільству в цілому.

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

 

Література

1. Johnson D. G. Computer ethics. – Englewood Cliffs (N.J.), 1985. XI, 110 p.

2. Software Engineering Code of Ethics and Professional Practice [Electronic resource] // Portal “ACM”. – URL: http://www.acm.org/about/se-code