Etika u programskom inženjerstvu

Načela etike i profesionalnog rada
u programskog inženjerstvu

(verzija 5.2)

Prema preporuci IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices te zajednički usvojena od udruga ACM i IEEE-CS kao norma za podučavanje i stručni rad u programskom inženjerstvu.

Izvorni dokument: Software Engineering Code of Ethics and Professional Practice (Version 5.2)

Kratka verzija

PREDGOVOR

Kratka verzija načela ponašanja predstavlja sažetak vrlo uopćenih težnji, dok puna verzija daje primjere i pojedinosti načina na koji te težnje mijenjaju ponašanje nas kao profesionalnih programskih inženjera. Bez ovih težnji pojedinosti ostaju pravnički suhoparne i zamorne, bez pojedinosti težnje bivaju zvučne ali isprazne, zajedno, međutim, težnje i pojedinosti tvore povezana načela ponašanja.

Programski inženjeri obvezuju se da će analizu, specifikaciju, oblikovanje, razvoj, provjeru i održavanje programskih proizvoda učiniti korisnom i poštovanom strukom. U skladu sa svojom obvezom prema zdravlju, sigurnosti i dobrobiti javnosti, programski inženjeri se obvezuju pridržavati slijedećih osam načela:

  1. JAVNI INTERES – Programski inženjeri djeluju u skladu s javnim interesom.
  2. KLIJENT I POSLODAVAC – Programski inženjeri djeluju u skladu s interesima njihovog klijenta ili poslodavca, a koji nisu u suprotnosti s javnim interesom.
  3. PROIZVOD – Programski inženjeri obvezuju se osigurati da njihovi proizvodi i prateće izmjene zadovoljavaju najviše moguće standarde struke.
  4. PROSUDBA – Programski inženjeri održavaju integritet i neovisnost u svojim stručnim prosudbama
  5. UPRAVLJANJE – Menedžeri i voditelji programskog inženjeringa potiču i promiču etički pristup upravljanju programskim razvojem i održavanjem.
  6. STRUKA – Programski inženjeri unapređuju čestitost i ugled struke u skladu s javnim interesom.
  7. KOLEGIJALNOST – Programski inženjeri međusobno se podržavaju i ophode pošteno.
  8. ODNOS PREMA SEBI – Programski inženjeri se kontinuirano stručno unapređuju i promiču etički pristup radu u svojoj struci.


NAČELA ETIKE I PROFESIONALNOG RADA U PROGRAMSKOM INŽENJERSTVU

IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices

Puna verzija

PREDGOVOR

Računala imaju središnju i sve značajniju ulogu u trgovini, gospodarstvu, državnoj upravi, zdravstvu, obrazovanju, zabavi i društvu u cjelini. Programski inženjeri svojim izravnim sudjelovanjem ili poučavanjem pridonose analizi, specifikaciji, oblikovanju, razvoju, potvrđivanju, održavanju i provjeri programskih sustava. Obzirom na njihovu značajnu ulogu u razvoju programskih sustava, programski su inženjeri u prilici učiniti korist ili znatnu štetu, te omogućiti drugima ili ih poticati da čine korist ili štetu. Da bi što je više moguće osigurali, da će se njihov trud korisno rabiti, programski inženjeri se moraju obvezati da će svoju struku učiniti korisnom i uvaženom. U skladu s tom obvezom, programski inženjeri će se pridržavati slijedećih Načela etike i profesionalnog rada.

Načela sadrže osam temeljnih ideja vezanih uz ponašanje i odluke profesionalnih programskih inženjera, uključujući praktičare, nastavnike, rukovoditelje, voditelje i planere, kao i početnike i studente ove struke. Načela navode etički odgovorne odnose u kojima sudjeluju pojedinci, grupe i organizacije, te njihove osnovne obveze. Točke pojedinih Načela prikazuju neke od obveza uključenih u ove odnose. Te su obveze utemeljene u humanosti programskog inženjera, u posebnoj brizi za ljude na koje se odražava njegov rad, i u jedinstvenim elementima struke programskog inženjerstva. Načela ove principe propisuju kao obvezu ponašanja svakome tko tvrdi da je ili teži postati programski inženjer.

Pojedini dijelovi ovih Načela nisu namijenjeni zasebnoj upotrebi da bi opravdale greške propusta ili narudžbe. Popis načela i primjera nije sveobuhvatan. Primjeri ne nastoje strogo odvojiti prihvatljivo od neprihvatljivog profesionalnog ponašanja u svakoj prilici. Načela nisu jednostavan etički algoritam koji generira etičke odluke. U nekim prilikama standardi mogu biti u neskladu jedni s drugima ili sa standardima iz drugih izvora. Ovakve situacije zahtijevaju od programskog inženjera da se posluži svojim etičkim sudom, u danim okvirima, u duhu s Načelima etike i profesionalnog rada.

Etički nesklad najbolje se rješava pažljivim razmatranjem temeljnih načela, a ne strogim pridržavanjem pojedinosti pravila. Načela nastoje potaknuti programske inženjere da uzmu u obzir na koga se njihov posao odražava, ispitaju odnose li se oni sami ili njihovi kolege s poštovanjem prema drugim ljudskim bićima, promisle kako bi razumno dobro obaviještena javnost ocijenila njihove odluke, analiziraju kako će njihove odluke djelovati na najmanje povlaštene, i da procijene da li bi njihova djela bila smatrana dostojnima idealnog stručnjaka programskog inženjeringa. U svim ovim prosudbama osnovna je briga o zdravlju, sigurnosti i dobrobiti javnosti, a javni interes predstavlja temelj ovih Načela.

Promjenjivi i zahtjevni kontekst programskog inženjerstva zahtijeva prilagodljivost načela novim prilikama kako se javljaju. Međutim, čak i ovako poopćena, dokumentirajući etičku poziciju struke, Načela pružaju potporu programskim inženjerima i njihovim rukovoditeljima u prilikama kada u određenom slučaju moraju poduzeti konkretne korake. Načela pružaju etičke temelje na koje se mogu pozvati pojedinci u radnim timovima kao i timovi u cjelini. Načela pomažu odrediti djela koja je etički nedolično zahtijevati od programskog inženjera ili tima programskih inženjera.

Načela ne služe jednostavno procjenjivanju značajki upitnih djela, već imaju i značajnu odgojnu ulogu. Kako ova Načela predstavljaju jednoglasnu suglasnost struke o etičkim pitanjima, ona će upoznati javnost kao i budućeg profesionalca s etičkim obvezama programskog inženjera.

NAČELA

Načelo 1 – JAVNI INTERES

Programski inženjeri djeluju u skladu s javnim interesom. Posebno, u skladu s prilikama, programski inženjeri se obvezuju:

1.01. Preuzeti punu odgovornost za svoj rad.
1.02. Uskladiti interese programskog inženjera, poslodavca, klijenta i korisnika s javnim interesom.
1.03. Odobriti programski proizvod samo uz opravdano uvjerenje da je siguran, zadovoljava specifikacije, prolazi odgovarajuće testove i ne umanjuje kvalitetu života ili privatnost niti šteti okolišu. Krajnji učinak rada treba donijeti javnu dobrobit.
1.04. Otkriti nadležnim osobama ili institucijama svaku stvarnu ili moguću opasnost za korisnika, javnost ili okoliš, za koju vjeruju da je povezana s programskim proizvodom ili pratećom dokumentacijom.
1.05. Surađivati u nastojanjima da se razmotre pitanja koja zabrinjavaju javnost, a vezana su uz programski proizvod, njegovu uspostavu, održavanje, podršku ili dokumentaciju.
1.06. Ponašati se pošteno i izbjeći zavaravanje u svim izjavama, posebno u javnima, a koje se tiču programskih proizvoda ili prateće dokumentacije, postupaka i alata.
1.07. Uzeti u obzir probleme tjelesnih oštećenja, dodjele sredstava, ekonomske zapostavljenosti i druge faktore koji mogu umanjiti pristup prednostima programskih proizvoda.
1.08. Pokazati dobru volju da svoja stručna znanja bez naknade stave na raspolaganje u dobrotvorne svrhe i pridonose obrazovanju javnosti o svojoj struci.

Načelo 2 – KLIJENT I POSLODAVAC

Programski inženjeri djeluju u skladu s interesima njihovog klijenta ili poslodavca, a koji nisu u suprotnosti s javnim interesom. Posebno, u skladu s prilikama, programski inženjeri se obvezuju:

2.01. Pružati usluge u svojim područjima stručnosti, te pošteno i otvoreno priznati granice svojeg iskustva i obrazovanja.
2.02. Ne koristiti se svjesno programskim proizvodom koji je dobavljen ili zadržan na nelegalni ili neetički način.
2.03. Koristiti vlasništvo klijenta ili poslodavca samo na propisno odobreni način, te uz znanje i pristanak klijenta ili poslodavca.
2.04. Osigurati da je svaki dokument na koji se oslanjaju odobren, kada je to potrebno, od ovlaštene osobe.
2.05. Očuvati privatnost svih povjerljivih informacija dobivenih u njihovom profesionalnom radu, uz uvjet da je ta povjerljivost u skladu s javnim interesom i zakonom.
2.06. Ustanoviti, dokumentirati i pravovremeno obavijestiti klijenta ili poslodavca ukoliko je, prema vlastitom mišljenju, vjerojatno da projekt neće uspjeti, da će se pokazati preskupim, da krši zakon intelektualnog vlasništva, ili je na bilo koji drugi način upitan.
2.07. Identificirati, dokumentirati i obznaniti poslodavcu ili klijentu dvojbena socijalna pitanja kojih su svjesni u programskom proizvodu ili pratećoj dokumentaciji.
2.08. Ne prihvatiti nikakav vanjski posao na uštrb posla koji obavljaju za primarnog poslodavca.
2.09. Ne promicati interese koji mogu štetiti njihovom poslodavcu ili klijentu, osim ako se krše neka viša etička načela, u kojem slučaju će izvijestiti poslodavca ili drugu nadležnu instituciju o svojim etičkim dvojbama.

Načelo 3 – PROIZVOD

Programski inženjeri obvezuju se osigurati da njihovi proizvodi i prateće izmjene zadovoljavaju najviše moguće standarde struke. Posebno, u skladu s prilikama, programski inženjeri se obvezuju:

3.01. Stremiti visokoj kakvoći, prihvatljivoj cijeni i razumnom rasporedu, osiguravajući da su svi značajni kompromisi jasni i prihvaćeni od poslodavca i klijenta, te da su dani na razmatranje korisniku i javnosti.
3.02. Osigurati realni smisao i dohvatljive ciljeve svakog projekta na kojem rade ili ga predlažu.
3.03. Identificirati, dokumentirati i uzeti u obzir etička, ekonomska, kulturna, pravna i pitanja okoliša vezana uz projekte na kojima radi.
3.04. Osigurati da su kvalificirani, odgovarajućom kombinacijom školovanja, obrazovanja, i iskustva, za izvođenje svakog projekta na kojemu rade ili namjeravaju raditi.
3.05. Osigurati upotrebu odgovarajućih metoda rada na svakom projektu na kojem rade ili namjeravaju raditi.
3.06. U radu slijediti postojeće profesionalne standarde koji najbolje odgovaraju danom zadatku, odstupajući od njih samo kada je to etički ili tehnički opravdano.
3.07. Nastojati u potpunosti razumjeti specifikacije programskih proizvoda koje rabe.
3.08. Osigurati da su specifikacije programskih proizvoda na kojima rade dobro dokumentirane, da zadovoljavaju korisnikove potrebe i imaju potrebna uvjerenja.
3.09. Osigurati realne kvantitativne procjene troškova, rokova, suradnika, kvalitete i ishoda svakog projekta na kojemu rade ili namjeravaju raditi, te ocijeniti točnost procjene.
3.10. Osigurati odgovarajuće testiranje, otklanjanje pogrešaka i provjeru programskog proizvoda i prateće dokumentacije na kojima rade.
3.11. Osigurati odgovarajuću dokumentaciju za svaki projekt na kojem rade, uključujući i za otkrivene značajne probleme i usvojena rješenja.
3.12. Razvijati programske proizvode i prateću dokumentaciju poštujući privatnost onih na koje će taj programski proizvod djelovati.
3.13. Obratiti pažnju da se služe samo točnim podacima dobivenim etički i pravno nedvojbenim putem, rabeći ih isključivo na odobreni način.
3.14. Održati integritet podataka, obraćajući pažnju na zastarjele i netočne podatke.
3.15. Odnositi se prema svim oblicima programskog održavanja s istim profesionalizmom kao prema novom razvoju.

Načelo 4 – PROSUDBA

Programski inženjeri održavaju integritet i neovisnost u svojim stručnim prosudbama. Posebno, u skladu s prilikama, programski inženjeri se obvezuju:

4.01. Ograničiti sve tehničke procjene potrebom za podrškom i održavanjem ljudskih vrijednosti.
4.02. Ovjeriti samo dokumente s kojima se slažu, a pripremljeni su bilo pod njihovim nadzorom bilo unutar njihovog područja stručnosti.
4.03. Zadržati profesionalnu objektivnost prema svakom programskom proizvodu ili pratećoj dokumentaciji koje su zamoljeni ocijeniti.
4.04. Ne sudjelovati u financijskim prijevarama kao sto su mito, dvojno naplaćivanje, ili druge neprikladne financijske radnje.
4.05. Obavijestiti sve zainteresirane stranke o onim suprotstavljenim interesima koji se ne mogu izbjeći na razuman način.
4.06. Odbiti sudjelovati kao član ili savjetnik bilo u privatnom, državnom ili profesionalnom tijelu koje se bavi problematikom programskih proizvoda, ukoliko oni sami, njihovi poslodavci ili klijenti imaju prikrivene potencijalno konfliktne interese.

Načelo 5 – UPRAVLJANJE

Menedžeri i voditelji programskog inženjeringa potiču i promiču etički pristup upravljanju programskim razvojem i održavanjem.. Posebno, u skladu s prilikama, menedžeri i voditelji programskih inženjera se obvezuju:

5.01. Osigurati dobro vodstvo projekata na kojima rade, uključujući i učinkovite postupke za promicanje kvalitete i smanjenje rizika.
5.02. Osigurati da su programski inženjeri obaviješteni o standardima prije nego što ih trebaju primijeniti.
5.03. Osigurati da su programski inženjeri upoznati s poslodavčevom politikom i postupcima zaštite lozinki, datoteka i podataka povjerljivih bilo poslodavcu bilo drugima.
5.04. Podijeliti radne zadatke uzimajući u obzir potrebnu razinu obrazovanja i stečenog iskustva, kao i želju za daljnjim unapređivanjem obrazovanja i iskustva.
5.05. Osigurati realne kvantitativne procjene troška, rokova, suradnika, kvalitete i ishoda svakog projekta na kojemu rade ili namjeravaju raditi, te ocijeniti točnost ovih procjena.
5.06. Privući potencijalne programske inženjere isključivo potpunim i točnim podacima o uvjetima zapošljavanja.
5.07. Ponuditi poštenu i pravednu naknadu.
5.08. Ne spriječiti nikoga nepravedno da prihvati mjesto za koje je odgovarajuće kvalificiran.
5.09. Osigurati postojanje poštenog sporazuma o vlasništvu nad programskim proizvodom, radnim postupcima, istraživanjima, pisanim dokumentima ili drugim intelektualnim vlasništvom kojemu je programski inženjer pridonio.
5.10. Osigurati primjeren postupak saslušanja optužbi o kršenju bilo politike poslodavca bilo ovih Načela.
5.11. Ne tražiti od programskog inženjera da učini išta proturječno ovim Načelima.
5.12. Ne kazniti nikoga za izražavanje etičkih dvojbi o projektu.

Načelo 6 – STRUKA

Programski inženjeri unapređuju čestitost i ugled struke u skladu s javnim interesom. Posebno, u skladu s prilikama, programski inženjeri se obvezuju:

6.01. Pomoći uspostaviti etički poticajnu organizacijsku okolinu.
6.02. Promicati javno razumijevanje programskog inženjerstva.
6.03. Unaprijediti svoje stručno znanje s područja programskog inženjerstva sudjelovanjem u stručnim organizacijama, skupovima i publikacijama.
6.04. Podržati, kao stručnjaci, druge programske inženjere koji nastoje slijediti ova Načela.
6.05. Ne promicati vlastite interese na uštrb struke, klijenta ili poslodavca.
6.06. Pridržavati se svih zakona struke, osim ako, iznimno, to pridržavanje nije u suprotnosti s javnim interesom.
6.07. Točno navesti svojstva programskog proizvoda na kojemu rade, izbjegavajući ne samo lažne tvrdnje nego i tvrdnje koje se opravdano mogu smatrati upitnima, ispraznima, prevarantskima, varljivima, ili dvojbenima.
6.08. Preuzeti odgovornost za otkrivanje, ispravljanje i prijavljivanje grešaka u programskom proizvodu i pratećoj dokumentaciji na kojima rade.
6.09. Obavijestiti klijenta, poslodavca ili nadređenoga o svojem poštivanju ovih etičkih Načela, te o posljedicama takvoga poštivanja.
6.10. Izbjeći udruživanje s poduzećima i organizacijama koje se ne pridržavaju ovih Načela.
6.11. Biti svjesni da je kršenje ovih Načela nespojivo sa zvanjem profesionalnog programskog inženjera.
6.12. Izraziti svoje dvojbe uključenim nadležnim osobama u slučaju otkrivanja povreda ovih Načela, osim ako je to nemoguće, neučinkovito ili opasno.
6.13. Prijaviti ozbiljna kršenja ovih Načela nadležnim tijelima u slučajevima kada je jasno da bi razgovor s nadležnim osobama uključenim u ova ozbiljna kršenja bio nemoguć, neučinkovit ili opasan.

Načelo 7 – KOLEGIJALNOST

Programski inženjeri međusobno se podržavaju i ophode pošteno. Posebno, u skladu s prilikama, programski inženjeri se obvezuju:

7.01. Poticati kolege da se pridržavaju ovih Načela.
7.02. Pomoći kolegama u stručnom usavršavanju.
7.03. U potpunosti priznati autorstvo drugih i suzdržati se od potpisivanja tuđeg rada.
7.04. Ocijeniti rad drugih na objektivan, otvoreni i uredno dokumentirani način.
7.05. Nepristrano poslušati mišljenja, dvojbe ili pritužbe kolega.
7.06. Pomoći kolegama da budu potpuno svjesni trenutno važećih metoda rada, uključujući politiku i postupke zaštite lozinki, datoteka i drugih povjerljivih podataka, te općenito mjera sigurnosti.
7.07. Ne uplitati se na nepošten način u karijeru kolege; međutim briga za poslodavca, klijenta ili javni interes može prinuditi programskog inženjera da, u dobroj namjeri, ispita stručnost kolege.
7.08. U područjima koja nadilaze njihovu vlastitu stručnost, savjetovati se s drugim stručnjacima upućenim u to područje.

Načelo 8 – ODNOS PREMA SEBI

Programski inženjeri kontinuirano se stručno unapređuju i promiču etički pristup radu u svojoj struci. Posebno, programski inženjeri trajno nastoje:

8.01. Unaprijediti svoje znanje o razvoju na području analize, specifikacije, oblikovanja, razvoja, održavanja i ispitivanja programskih proizvoda i prateće dokumentacije, kao i o upravljanju razvojnim procesima.
8.02. Unaprijediti svoju sposobnost stvaranja sigurnih, pouzdanih i korisnih kvalitetnih programskih proizvoda po prihvatljivoj cijeni i u razumnim vremenskim okvirima.
8.03. Unaprijediti svoju sposobnost pisanja točne, sadržajne i dobro oblikovane dokumentacije.
8.04. Unaprijediti svoje razumijevanje programskih proizvoda i prateće dokumentacije kojima se služe, te okoline u kojoj će biti upotrijebljeni.
8.05. Unaprijediti svoje poznavanje relevantnih standarda i zakona koji upravljaju programskim proizvodom i pratećom dokumentacijom na kojima rade.
8.06. Unaprijediti poznavanje ovih Načela, njihovog tumačenja i primjene u dnevnom radu.
8.07. Ne odnositi se prema nikome nepošteno na osnovu beznačajnih predrasuda.
8.08. Ne poticati druge na ikakva djela koja bi kršila ova Načela.
8.09. Biti svjesni da je osobno kršenje ovih Načela nespojivo sa zvanjem profesionalnog programskog inženjera.

Ova Načela je razvio IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices (SEEPP):

Izvršni odbor: Donald Gotterbarn (predsjedavajući), Keith Miller i Simon Rogerson;
Članovi: 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.

1998 SEEPP Executive Committee
1999 ACM and IEEE Computer Society

Prijevod: Aleksandra Imogen Ivir