Етичен кодекс и професионална практика в софтуерното инженерство

Етичен кодекс и професионалната практика в софтуерното инженерство (версия 5.2), както е препоръчан от обединена работна група на ACM/IEEE-CS по „Етика и професионални практики в софтуерното инженерство“ и съвместно одобрен от ACM и IEEE-CS като стандарт за обучение и практикуване на софтуерно инженерство.

* Кратка версия
* Пълна версия

Етичен кодекс и професионалната практика в софтуерното инженерство (кратка версия)

Предисловие

Кратката версия на кодексът обобщава възгледите погледнати отгоре; клаузите, които са включени в пълната версия дават примери и детайли как тези възгледи променят начина, по който ние действаме като професионални софтуерни инженери. Без тези възгледи, детайлите могат да станат сухи и досадни; без детайлите, възгледите могат да се превърнат във възвишено звучащи, но празни; заедно, възгледите и детайлите изграждат общ кодекс.

Софтуерните инженери трябва да се ангажират с превръщането на анализа, спецификациите, дизайна, разработката, тестването и поддръжката на софтуер в ползотворна и уважавана професия. В съгласие с техният ангажимент към здравето, безопасността и добруването на обществото, софтуерните инженери следва да се придържат към следните Осем принципа:

  1. ОБЩЕСТВО – Софтуерните инженери следва да действат съобразно общественият интерес.
  2. КЛИЕНТ И РАБОТОДАТЕЛ – Софтуерните инженери следва да действат така, че да обслужат интересите на техният клиент или работодател, по най-добрият начин съобразявайки се с общественият интерес.
  3. ПРОДУКТ – Софтуерните инженери следва да се убедят, че техният продукт или свързани с него модификации удовлетворяват възможно най-високи професионални стандарти.
  4. ПРЕЦЕНКА – Софтуерните инженери следва да бъдат честни и независими в професионалното си мнение.
  5. УПРАВЛЕНИЕ – Мениджърите и лидерите на софтуерните инженери следва да подкрепят и съдействат на етичният подход при управлението на разработката и поддръжката на софтуер.
  6. ПРОФЕСИЯ – Софтуерните инженери следва да допринасят за повишаване на неприкосновеността и репутацията на професията, съобразно с общественият интерес.
  7. КОЛЕГИ – Софтуерните инженери следва да бъдат безпристрастни и поддържащи своите колеги.
  8. ЛИЧНОСТ – Софтуерните инженери следва пожизнено да се обучават в практиките на своята професия и да съдействат за етичният подход към практиката и професията.

Етичен кодекс и професионалната практика в софтуерното инженерство (пълна версия)

Предисловие

Компютрите имат централна и нарастваща роля в търговията, индустрията, управлението, медицината, образованието, забавлението и обществото като цяло. Софтуерни инженери са тези които допринасят, чрез пряко участие или чрез преподаване, към анализа, спецификациите, дизайна, разработката, сертификацията, поддръжката и тестването на софтуерни системи. Поради тяхното участие в разработването на софтуерни системи, софтуерните инженери имат значителни възможности да правят добро или да причинят вреда, да позволят на други да правят добро или да причинят вреда, или да повлияят на други да извършат добро или да причинят вреда. За да се уверят, доколкото е възможно, че техните усилия ще бъдат използвани за добро, софтуерните инженери трябва да се отдадат на превръщането на софтуерното инженерство в ползотворна и уважавана професия. В съгласие с тази отдаденост, софтуерните инженери следва да се съобразяват с изложеният по-долу „Етичен кодекс на етиката и професионалната практика“.

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

Отделните части на кодексът не са предвидени да се използват поотделно за да се оправдаят грешки, пропуски или престъпления. Списъкът с Принципите и Клаузите не е изчерпателен. Клаузите не трябва да бъдат интерпретирани като разделящи приемливото от неприемливото в професионалното поведения във всички практически ситуации. Кодексът не е прост етичен алгоритъм, който определя етични решения. В някой ситуации стандартите могат да си противоречат едни с други или със стандарти от други източници. Тези ситуации изискват от софтуерният инженер да използва етичната си преценка, за да действа по начин, който в най-голяма степен е съобразен с духа на „Етичния кодекс и професионалната практика“ предвид конкретните обстоятелства.

Етичните противоречия могат да бъдат разрешени по най-добър начин чрез внимателно обмисляне на основни принципи, а не чрез сляпото следване на подробни предписания. Тези Принципи следва да помогнат на софтуерните инженери да имат по-обща преценка за това кой е повлиян от тяхната работа; да определят дали те и техните колеги се отнасят към другите човешки същества с необходимото уважение; да преценят как обществото, ако е добре информирано, ще възприеме техните решения; да анализират как тези с най-малко право на глас ще бъдат засегнати от техните решения; и да преценят дали техните действия ще бъдат определени като достойни за идеалния професионалист работещ като софтуерен инженер. При всички тези преценки грижата за здравето, безопасността и добруването на обществото е първична; т.е. „Обществения Интерес“ играе централна роля за този кодекс.

Динамичната и предизвикателна среда на софтуерното инженерство изисква кодекс, който може да се адаптира и да важи за нови ситуации докато те възникват. Все пак дори с тази си общоприложимост, кодексът дава подкрепа на софтуерните инженери и ръководителите на софтуерните инженери, които трябва да предприемат положителни действия в специфична ситуация, чрез документиране на етичната позиция на професията. Кодексът предоставя етична основа, на която участниците в един екип или екипът като цяло могат да се позовават. Кодексът дефинира тези действия, за които е етично неуместно, да бъдат изисквани от софтуерен инженер или екипи от софтуерни инженери.

Кодексът не е просто за осъждане на природата на съмнителни действия; той също има и важна образователна функция. Тъй като този кодекс отразява консенсусът на професионалистите за етичните проблеми, той е начин да се просветят, както обществото така и стремящите се да станат професионалисти, относно етичните задължения на всички софтуерни инженери.

ПРИНЦИПИ

Принцип 1: ОБЩЕСТВО

Софтуерните инженери трябва да действат съобразно общественият интерес. В частност, софтуерните инженери следва, когато е уместно, да:

1.01. Поемат пълна отговорност за работата си.

1.02. Балансират интересите на софтуерният инженер, работодателят, клиентът и потребителите с общественото добруване.

1.03. Одобряват софтуер само ако имат основание да смятат, че той е безопасен, изпълнява спецификациите, преминава подходящи тестове, и не намалява качеството на живота или личното пространство, или вреди на околната среда. Крайният ефект от тяхната работа трябва да допринася за общественото благо.

1.04. Информират подходящите хора или власти за всека потенциална опасност за потребителя, обществото или околната среда, за които те имат основание да смятат, че е свързана със софтуер или свързана с него документация.

1.05. Съдействат в усилията да се адресират проблеми от важен обществен интерес, причинени от софтуер, неговата инсталация, експлоатация, поддръжка или документация.

1.06. Бъдат честни и да избягват заблудата във всички изявления, особено публичните такива, относно софтуер или свързаните с него документи, методи и инструменти.

1.07. Обмислят въпроси свързани с физическата неспособност, разпределянето на ресурси, икономическите пречки и други фактори, които могат да намалят възможността за достъп до ползите от софтуера.

1.08. Насърчават предлагането на професионалните си умения на доброволни начала за добри каузи и да допринасят за общественото образование относно дисциплината.

Принцип 2: КЛИЕНТ И РАБОТОДАТЕЛ

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

2.01. Предоставят услуги в тяхната област на компетентност, бидейки честни и откровени за всякакви ограничения свързани с техният опит и образование.

2.02. Не използват софтуер, за който имат ясното съзнание че е придобит по нелегален или неетичен начин.

2.03. Използват собствеността на клиентът или работодателят, само по начини оторизирани от него и със съгласието и знанието на клиента или работодателя.

2.04. Убедят, че всеки документ на който разчитат е бил одобрен, когато това се изисква, от някой оторизиран да го направи.

2.05. Пазят в тайна всяка конфиденциална информацията придобита по време на професионалната им работа, в случаите когато такава тайна е съвместима с общественият интерес и законът.

2.06. Идентифицират, документират, събират доказателства и докладват на клиента или работодателя своевременно ако, по тяхно мнение, проекта има вероятност да се провали, да бъде твърде скъп, да наруши законите за интелектуалната собственост, или представлява проблем по някакъв друг начин.

2.07. Идентифицират, документират и докладват значими социални проблеми, за които им е известно, в софтуера или свързаните с него документи, на работодателят или клиентът.

2.08. Не приемат външна работа, пагубна за работата, която извършват за своя работодател.

2.09. Не съдействат на интереси противоречащи на техният работодател или клиент, освен ако по-важен етичен интерес е компрометиран; в такъв случай информират работодателят или други подходящи власти за този етичен проблем.

Принцип 3: ПРОДУКТ

Софтуерните инженери трябва да се убедят, че техните продукти и свързаните с тях промени, изпълняват възможно най-високите професионални стандарти. В частност, софтуерните инженери следва, когато е уместно, да:

3.01. Се стремят към висока качество, приемлива цена и разумен срок, осигурявайки се, че значимите компромиси са ясни и приети от работодателят и клиентът, и че са достъпни за разглеждане от потребителя и обществото.

3.02. Осигуряват правилни и постижими цели за всеки проект върху който работят или предлагат.

3.03. Идентифицират, дефинират и вземат предвид етични, икономически, културни, правни и свързани с околната среда въпроси отнасящи се към проекти в процес на изпълнение.

3.04. Се осигурят, че са квалифицирани за всеки проект, по който работят или предлагат да работят, чрез подходяща комбинация от образование и обучение и опит.

3.05. Се осигурят, че подходящ метод е използван за всеки проект, по който работят или предлагат да работят.

3.06. Работят за следването на професионалните стандарти, когато са налични, които са най-подходящи за текущата задача, отдалечавайки се от тях само когато е етично или технически оправдано.

3.07. Се стремят да разберат напълно спецификацията за софтуера, върху който работят.

3.08. Се осигурят, че спецификациите за софтуерът, върху който работят, са били добре документирани, задоволяват изискванията на потребителите и имат подходящите одобрения.

3.09. Осигурят реалистични количествени предвиждания на цена, срок, персонал, качество и резултати на всеки проект, по който работят или предлагат да работят и да предоставят оценка на несигурността на тези предвиждания.

3.10. Осигурят адекватно тестване, дебъгване, и преглед на софтуера и свързаните с него документи върху които те работят.

3.11. Осигурят адекватна документация, включително откритите значителни проблеми и приетите решения за всеки проект, по който работят.

3.12. Работят за направата на софтуер и свързани документи, които уважават личното пространство на тези които ще бъдат повлияни от софтуера.

3.13. Внимават да използват само точни данни, получени по етичен и законен начин и да ги използват само по одобрен начин.

3.14. Поддържат целостта на данните, бъдейки внимателни към остарели или повредени данни.

3.15. Третират всички форми на поддръжка на софтуера със същият професионализъм както новите разработки.

Принцип 4: ПРЕЦЕНКА

Софтуерните инженери трябва да поддържат честност и независимост в своята професионална преценка. В частност, софтуерните инженери следва, когато е уместно, да:

4.01. Съобразят всички технически решения с нуждата да се подкрепят и поддържат човешките ценности.

4.02. Одобряват само документи, изготвени под тяхно ръководство или в тяхната област на компетентност и с които те са в съгласие.

4.03. Поддържат професионална обективност по отношение на всеки софтуер или свързани с него документи, за които им е поискана оценка.

4.04. Не участват в заблуждаващи финансови практики като подкупи, двойно счетоводство или други неуместни финансови практики.

4.05. Разкриват на всички замесени страни тези конфликти на интереси, които не могат да бъдат избегнати по разумен начин.

4.06. Отказват да участват, като членове или съветници, в частни, правителствени или професионални органи занимаващи се с проблеми свързани със софтуер, за който техният работодатели или техните клиенти имат потенциални конфликти на интерес, дори и когато такива интереси не са обявени публично.

Принцип 5: УПРАВЛЕНИЕ

Мениджърите и лидерите на софтуерните инженери трябва да подкрепят и съдействат на етичният подход към управлението на разработката и поддръжката на софтуер. В частност, управляващите и водещите софтуерни инженери следва, когато е уместно, да:

5.01. Осигурят добро управление за всеки проект по който работят, включително ефективни процедури за повишаване на качеството и намаляване на риска.

5.02. Се убедят, че софтуерните инженери са информирани за стандартите преди да им бъде изискано спазването им.

5.03. Се убедят, че софтуерните инженери знаят политиките и процедурите на работодателят си относно пазенето на пароли, файлове и информация, която е поверителна за работодателят или поверителна за други.

5.04. Назначават работа само след като са взели предвид подходящия принос от образование и опит съчетани с желание за продължаване на това образование и опит.

5.05. Осигурят реалистични количествени оценки на цена, срок, персонал, качество и резултати от всеки проект, по който работят или предлагат да работят и да предоставят преценка на несигурността за тези оценки.

5.06. Привличат потенциални софтуерни инженери, само чрез пълно и точно описание на условията на наемането.

5.07. Предлагат честно и справедливо възнаграждение.

5.08. Не позволяват неправомерния отказ при заемането на позиция от някой, който е подходящ и квалифициран за нея.

5.09. Се убедят, че съществува честно споразумение относно притежанието на всеки софтуер, процес, изследване, писмен документ или друга интелектуална собственост към която софтуерен инженер е допринесъл.

5.10. Осигурява справедлив процес изслушвайки обвинения в нарушение на политиката на работодателя или на този кодекс.

5.11. Не изискват от софтуерен инженер да извърши нещо в противоречие с този кодекс.

5.12. Не наказват никого за изказването на етични притеснения относно даден проект.

Принцип 6. ПРОФЕСИЯ

Софтуерните инженери трябва да работят за повишаването на честността и репутацията на професията съобразно с общественият интерес. В частност, софтуерните инженери трябва, както е уместно, да:

6.01. Подпомагат създаването на организационна среда предразполагаща към етични действия.

6.02. Повишават общественото знание за софтуерното инженерство.

6.03. Разширяват знанията за софтуерното инженерство, чрез подходящо участие в професионални организации, срещи и публикации.

6.04. Подпомагат, като членове на професията, други софтуерни инженери стремящи се да следват този кодекс.

6.05. Не поставят своят интерес, за сметка на професията, клиента или работодателя.

6.06. Спазват всички закони управляващи работата им, освен ако, в изключителни случаи, това спазване е несъвместимо с общественият интерес.

6.07. Бъдат точни в излагането на характеристиките на софтуера върху който работят, избягвайки не само фалшиви твърдения, но също така твърдения за които може основателно да се приеме, че са спекулативни, безсъдържателни, измамни, заблуждаващи или съмнителни.

6.08. Поемат отговорност за откриването, поправянето и докладването на грешки в софтуера и свързаните с него документи, върху които работят.

6.09. Се осигурят, че клиенти, работодатели и ръководители знаят за обвързаността на софтуерният инженер с този етичен кодекс, и следващите от тази обвързаност последствия.

6.10. Избягват връзки с търговски дружества и организации, които са в противоречие с този кодекс.

6.11. Приемат, че нарушенията на този кодекс са несъвместими за да бъдат определени като професионален софтуерен инженер.

6.12. Изразяват загриженост към замесените личности, когато узнаят за значителни нарушения на този кодекс, освен ако това е невъзможно, непродуктивно, или опасно.

6.13. Докладват за значителни нарушения на този кодекс на подходящите власти, когато е ясно, че разговорът с хората замесени в тези значителни нарушения е невъзможен, непродуктивен или опасен.

Принцип 7: КОЛЕГИ

Софтуерните инженери трябва да са честни и подкрепящи своите колеги. В частност, софтуерните инженери следва, когато е уместно, да:

7.01. Окуражават колегите да следват този кодекс.

7.02. Подпомагат колегите в професионалното развитие.

7.03. Признават напълно работата на други и се въздържат от приемането на несправедливо признание.

7.04. Преглеждат работата на други по обективен, честен и подходящо документиран начин.

7.05. Изслушват без предубеждение мненията, притесненията или оплакванията на колеги.

7.06. Помагат на колегите си да знаят в цялост текущите стандартни работни практики, включително политики и процедури за пазене на пароли, файлове и друга тайна информация, и като цяло мерки за сигурност.

7.07. Не се наместват, несправедливо, в кариерата на колеги; все пак, притеснения за работодател, клиент или обществен интерес, могат да принудят софтуерният инженер, с добра воля, да постави под въпрос, компетентността на колега.

7.08. В ситуации извън сферата им на компетентност, да се основат на мненията на други професионалисти, които имат компетенция в тази сфера.

Принцип 8: ЛИЧНОСТ

Софтуерните инженери трябва да участват в обучение през целия живот относно практиката на професията си и трябва да работят за етичен подход в практиката на професията. В частност, софтуерните инженери следва непрекъснато да полагат усилия за:

8.01. Разширяване на своето познание за разработките в анализа, спецификациите, дизайнът, разработката, поддръжката и тестването на софтуера и свързаните с него документи, заедно с управлението на процеса на разработка.

8.02. Подобряват способностите си да създават безопасен, надежден и полезен, качествен софтуер на разумна цена и в разумни срокове.

8.03. Подобряват способностите си да произвеждат точна, информативна и добре написана документация.

8.04. Подобряват разбирането си за софтуера и свързаните с него документи, върху които те работят и на средата, в която те ще се използват.

8.05. Подобряват познанията си по съответните стандарти и законите управляващи софтуерът и свързаните с него документи, върху които работят.

8.06. Подобряват познанията си за този кодекс, неговата интерпретация и неговото приложение в тяхната работа.

8.07. Не третират нечестно никой поради неуместни предразсъдъци.

8.08. Не убеждават никой да предприеме каквито и да било действия, който да включват нарушения на този кодекс.

8.09. Възприемането на личните нарушения на този кодекс като несъвместими за да бъдат определени като професионален софтуерен инженер.

Този кодекс беше разработен от обединена работна група на ACM/IEEE-CS по „Етичен кодекс и професионална практика в софтуерното инженерство“ (SEEPP):

Изпълнителен комитет: Donald Gotterbarn (Председател), Keith Miller and Simon Rogerson;

Членове: Steve Barber, Peter Barnes, Ilene Burnstein, Michael Davis, Amr El-Kadi, N. Ben Fairweather, Milton Fulghum, N. Jayaram, Tom Jewett, Mark Kanko, Ernie Kallman, Duncan Langford, Joyce Currie Little, Ed Mechler, Manuel J. Norman, Douglas Phillips, Peter Ron Prinzivalli, Patrick Sullivan, John Weckert, Vivian Weil, S. Weisband and Laurie Honour Werth.

Този кодекс може да бъде публикуван без разрешение дотолкова доколкото не е променян по някакъв начин и носи съобщението за авторски права.

Copyright (c) 1999 by the Association for Computing Machinery, Inc. and the Institute for Electrical and Electronics Engineers, Inc.

 

Този етичен кодекс е превод от IEEE-CS/ACM Software Engineering Code of Ethics and Professional Practice.
Преводът е взаимстван от Калоян Димитров.