Kódex etiky a profesionálnej praxe softvérového inžinierainžinierstva

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

Preambula

Počítače majú ústrednú a stále sa zväčšujúcu úlohu v obchode, priemysle, vláde, zdravotníctve, zábave a spoločnosti. Softvéroví inžinieri sú tými, ktorí prispievajú priamou účasťou alebo vyučovaním k analýze, špecifikácii, návrhu, vývoju, certifikácii, údržbe a testovaniu softvérových systémov. V dôsledku svojich funkcií pri vývoji softvérových systémov majú softvéroví inžinieri významné možnosti konať dobro alebo spôsobiť škodu, umožniť iným konať dobro alebo spôsobiť škodu, alebo ovplyvniť iných, aby konali dobro alebo spôsobili škodu. Aby sa v maximálnej možnej miere zaistilo, že ich úsilie bude použité za dobrým účelom, musia sa softvéroví inžinieri zaviazať, že budú konať tak, aby pozdvihli softvérové inžinierstvo na prospešnú a váženú profesiu. V súlade s týmto záväzkom by softvéroví inžinieri mali dodržiavať nasledovný Kódex etiky a profesionálnej praxe softvérového inžinierstva.

Kódex obsahuje osem Princípov súvisiacich so správaním sa a rozhodnutiami vykonávanými profesionálnymi softvérovými inžiniermi, zahŕňajúc vykonávateľov praxe, pedagógov, manažérov, vedúcich pracovníkov a tvorcov koncepcií, ako aj praktikantov a študentov profesie. Princípy identifikujú eticky zodpovedné vzťahy, ktorých sa zúčastňujú jednotlivci, skupiny a organizácie, a najhlavnejšie záväzky v rámci týchto vzťahov. Odstavce každého Princípu sú ilustráciou niektorých záväzkov zahrnutých v týchto vzťahoch. Tieto záväzky majú základ v humanite softvérového inžiniera, v mimoriadnom ohľade, ktorý je povinný vo vzťahu k ľuďom ovplyvneným prácou softvérových inžinierov, a špecifickými prvkami praxe softvérového inžinierstva. Kódex ich predpisuje ako záväzky každého, kto sa prehlasuje byť alebo sa snaží byť softvérovým inžinierom.

Nie je zámerom, aby boli jednotlivé časti Kódexu použité izolovane na ospravedlnenie nedostatkov alebo výšky odmeny. Zoznam Princípov a Odstavcov nie je vyčerpávajúci. Odstavce by sa nemali chápať ako oddelenie akceptovateľného od neakceptovateľného v profesionálnom správaní sa vo všetkých praktických situáciách. Kódex nie je jednoduchým etickým algoritmom generujúcim etické rozhodnutia. V niektorých situáciách môžu byť štandardy v rozpore so sebou navzájom alebo so štandardami z iných zdrojov. Tieto situácie vyžadujú od softvérového inžiniera použitie etického úsudku, aby za daných okolností jednal spôsobom najviac zhodným s duchom Kódexu etiky a profesionálnej praxe.

Etické rozpory je možné najlepšie riešiť pozorným uvážením základných princípov namiesto slepého spoliehania sa na detailné predpisy. Tieto Princípy by mali ovplyvniť softvérových inžinierov, aby celkovo zvážili, kto ovplyvnený ich prácou, preverili, či oni a ich kolegovia jednajú s inými ľudskými bytosťami s príslušným rešpektom, zvážili, ako by na ich rozhodnutia pozerala dostatočne dobre informovaná verejnosť, analyzovali, ako budú tí najmenej splnomocnení zasiahnutí ich rozhodnutiami, a zvážili, či by ich skutky boli posudzované ako hodné dokonalého profesionála pracujúceho ako softvérový inžinier. Pri všetkých týchto rozhodnutiach je primárnym záujem zdravia, bezpečnosti a prospechu verejnosti, t. j. “Verejný záujem” je hlavným pre tento Kódex.

Dynamický a náročný kontext softvérového inžinierstva vyžaduje kódex, ktorý je prispôsobivý a platný vzhľadom na vyskytnuvšie sa nové situácie. Avšak aj napriek tejto všeobecnosti Kódex poskytuje podporu softvérovým inžinierom a manažérom softvérových inžinierov, ktorí potrebujú v konkrétnom prípade konať pozitívne, dokumentovaním etického stanoviska profesie. Kódex poskytuje etický základ, na ktorý sa môžu jednotlivci v tíme ako aj celé tímy odvolávať. Kódex pomáha definovať skutky, ktoré je eticky nesprávne vyžadovať od softvérového inžiniera alebo tímu softvérových inžinierov.

Kódex nie je len na posudzovanie povahy pochybných činov, má taktiež dôležitú vzdelávaciu funkciu. Tým, že tento Kódex vyjadruje konsenzus profesie v otázkach etiky, je prostriedkom k vzdelaniu verejnosti ako aj ašpirujúcich profesionálov v oblasti etických záväzkov celého softvérového inžinierstva.

Princípy

Princíp 1: Verejnosť

Softvéroví inžinieri by mali konať v zhode so všeobecnými verejnými záujmami. Obzvlášť by softvéroví inžinieri mali: 

1.01 Prijať plnú zodpovednosť za vlastnú prácu.

1.02 Usmerňovať záujmy a požiadavky softvérového inžiniera, zamestnávateľa, klienta a používateľov, aby boli v zhode s verejným prospechom.

1.03 Schváliť softvérový produkt iba v prípade, ak sú odôvodnene presvedčený o tom, že produkt je bezpečný, spĺňa špecifikačné požiadavky, neznižuje kvalitu života, neohrozuje súkromie a životné prostredie a úspešne vyhovel príslušným testom. Hlavným výsledkom práce by malo byť všeobecné blaho.

1.04 Prezentovať vhodnej osobe alebo autorite každé existujúce alebo potenciálne ohrozenie používateľa, verejnosti alebo životného prostredia, o ktorom je odôvodnene presvedčený, že je spôsobené alebo spojené so softvérom alebo príslušnými dokumentmi.

1.05 Podporovať úsilie, ktoré sa zaoberá záležitosťami s vážnym spoločenským dopadom, spôsobenými softvérom, jeho inštaláciou, údržbou, podporou a dokumentáciou.

1.06 Byť úprimný a vyhýbať sa klamu pri všetkých svojich vyhláseniach, obzvlášť na verejnosti, ktoré sa týkajú softvéru alebo príslušných dokumentov, metód a nástrojov.

1.07 Zvažovať otázky spojené s fyzickými obmedzeniami, prideľovaním prostriedkov, ekonomickými nevýhodami a inými faktormi, ktoré by mohli obmedziť využívanie výhod poskytovaných softvérom.

1.08 Byť povzbudení dobrovoľne poskytovať svoje profesionálne znalosti na dobré ciele a prispievať k zvyšovaniu úrovne znalostí verejnosti v oblasti softvérového inžinierstva.

Princíp 2: Zákazník a zamestnávateľ

Softvéroví inžinieri by mali jednať v najlepších záujmoch svojho zákazníka a zamestnávateľa, v zhode s verejným záujmom. Obzvlášť by softvéroví inžinieri mali: 

2.01 Poskytovať služby v oblastiach svojej pôsobnosti, čestne a otvorene informovať o obmedzeniach súvisiacich s ich skúsenosťami a vzdelaním.

2.02 Vedome nepoužívať softvér, ktorý je získaný alebo prechovávaný nelegálne alebo neeticky.

2.03 Používať majetok zákazníka alebo zamestnávateľa len spôsobmi riadne oprávnenými a s vedomím a so súhlasom zákazníka a zamestnávateľa.

2.04 Zabezpečiť, že ktorýkoľvek dokument, na ktorý sa zákazník alebo zamestnávateľ spolieha, bol schválený osobou na to poverenou.

2.05 Udržiavať v tajnosti dôverné informácie získané počas svojej odbornej pôsobnosti, kde dôvernosť je v zhode s verejným záujmom a v zhode so zákonom.

2.06 Identifikovať, dokumentovať, zhromažďovať údaje a oznámiť ich zákazníkom alebo zamestnávateľom okamžite, keď by podľa ich názoru mohol byť projekt neúspešný, preukázateľne drahý, mohol by porušovať zákon duševného vlastníctva, alebo byť ináč problematický.

2.07 Identifikovať, dokumentovať a oznámiť zamestnávateľovi alebo zákazníkovi dôležité problémy spoločenského rozsahu, ktoré si uvedomujú, vzhľadom k softvéru alebo v súvisiacim dokumentom.

2.08 Neakceptovať žiadnu vedľajšiu prácu, ktorá by mala škodlivý vplyv na prácu, ktorú uskutočňujú pre svojho hlavného zamestnávateľa.

2.09 Nepodporovať žiadne záujmy zamerané proti svojmu zamestnávateľovi alebo zákazníkovi, iba ak je to v zhode s vyšším etickým záujmom. V takom prípade by o ňom mali informovať zamestnávateľa alebo inú vhodnú autoritu.

Princíp 3: Výrobok

Softvéroví inžinieri by mali zaistiť, aby ich produkty a súvisiace modifikácie spĺňali najvyšší možný profesionálny štandard. Obzvlášť by softvéroví inžinieri mali: 

3.01 Usilovať o vysokú kvalitu, akceptovateľné náklady a zmysluplný plán, zabezpečiac, aby významné kompromisy boli jasné a akceptované zamestnávateľom aj klientom a prístupné stanovisku používateľa aj verejnosti.

3.02 Zabezpečiť stanovenie náležitých a dosiahnuteľných cieľov a zámerov v každom projekte, na ktorom pracujú alebo sa inak spolupodieľajú.

3.03 Identifikovať, definovať a venovať sa etickým, ekonomickým, kultúrnym, právnym a enviromentálnym dôsledkom zviazaným s rozpracovanými projektmi.

3.04 Zabezpečiť svoju kvalifikáciu na každom projekte, na ktorom pracujú alebo sa spolupodieľajú, primeranou kombináciou vzdelania, školení a skúseností.

3.05 Zabezpečiť použitie primeranej metódy pre každý projekt, na ktorom pracujú alebo zamýšľajú pracovať.

3.06 Dodržiavať pri aktuálnej práci primerané profesionálne štandardy vždy, keď je to možné, odchyľujúc sa od nich iba v eticky a technicky oprávnených prípadoch.

3.07 Usilovať o úplné porozumenie špecifikácie softvéru, na ktorom pracujú.

3.08 Zabezpečiť, aby špecifikácia softvéru, na ktorom pracujú, bola dobre zdokumentovaná, spĺňala užívateľove požiadavky a bola náležite schválená.

3.09 Zabezpečiť realistické kvantitatívne odhady nákladov, plánu, osôb, kvality a výstupov na každom projekte, na ktorom pracujú alebo zamýšľajú pracovať a poskytnúť pravdepodobné hodnotenie týchto odhadov.

3.10 Zabezpečiť adekvátne testovanie a kontrolu softvéru a prislúchajúcich dokumentov, na ktorých pracujú.

3.11 Zabezpečiť adekvátnu dokumentáciu, obsahujúcu objavené dôležité problémy a použité riešenia pre každý projekt, na ktorom pracujú.

3.12 Prácou vytvárať softvér a prislúchajúcu dokumentáciu, ktorá rešpektuje súkromie tých, ktorí budú ovplyvnení daným softvérom.

3.13 Byť opatrní a používať iba správne údaje získané zákonnou a etickou cestou a použiť ich iba autorizovanými spôsobmi.

3.14 Udržovať integritu dát, sledujúc najmä zastaralé a poškodené prípady.

3.15 Pristupovať ku všetkým formám softvérovej údržby s rovnakou profesionalitou ako k novému vývoju.

Princíp 4: Posudzovanie

Softvérový inžinieri by mali zachovávať integritu a nezávislosť vo svojom profesionálnom posudzovaní. Obzvlášť by softvéroví inžinieri mali: 

4.01 Zmierniť všetky technické posudky potrebou podpory a udržania ľudských hodnôt.

4.02 Schvaľovať iba dokumenty pripravené pod ich dohľadom alebo v rámci oblasti ich kompetencie, s ktorými súhlasia.

4.03 Dodržovať profesionálnu objektivitu so zreteľom na akékoľvek softvérové alebo súvisiace dokumenty pri požiadavke o ich zhodnotenie.

4.04 Nezapájať sa do podvodných finančných praktík, ako úplatkárstvo, dvojité účtovanie alebo iných nevhodných finančných praktík.

4.05 Informovať všetky zúčastnené strany, ktorých konfliktom záujmov nemožno primerane zabrániť alebo vyhnúť sa im.

4.06 Odmietnuť účasť ako členovia alebo poradcovia v súkromných, vládnych, alebo v profesionálnych telesách zaoberajúcich so softvérom alebo s jemu príbuznými aktivitami v ktorých oni sami, ich zamestnávatelia alebo klienti majú nezverejnené potencionálne konflikty záujmov.

Princíp 5: Manažment

Manažéri a lídri softvérového inžinierstva by mali majú podporovať a propagovať etický prístup k manažmentu softvérového vývoja a údržby. Manažéri a vedúci softvéroví inžinieri by obzvlášť mali: 

5.01 Zabezpečiť dobrý manažment pre všetky projekty, na ktorých pracujú, vrátane efektívnych procedúr na podporu kvality a znižovania rizika.

5.02 Zabezpečiť, aby softvéroví inžinieri boli informovaní o štandardoch skôr, ako ich majú dodržiavať.

5.03 Zabezpečiť, aby softvéroví inžinieri poznali koncepciu zamestnávateľa a procedúry na ochranu hesiel, súborov a informácií, ktoré sú dôverné pre zamestnávateľa alebo ostatné osoby.

5.04 Zadávať prácu až po zohľadnení vhodných príspevkov vzdelania a skúseností, kombinujúc túžbu rozširovať takéto vzdelanie a skúsenosti.

5.05 Zabezpečiť reálne kvantitatívne odhady nákladov, rozvrhu, personálu, kvality a výsledkov všetkých projektov, na ktorých pracujú alebo navrhujú pracovať, a poskytovať vyhodnotenie neistoty týchto ukazovateľov.

5.06 Pritiahnuť potenciálnych softvérových inžinierov iba úplným a presným opisom podmienok zamestnania.

5.07 Ponúknuť spravodlivé a presné odmeňovanie.

5.08 Nebrániť nespravodlivo niekomu v tom, aby zaujal pozíciu, na ktorú je vhodne kvalifikovaný.

5.09 Zabezpečiť spravodlivé dohody o vlastníctve týkajúce sa každého softvérového, procesného, výskumného, písomného alebo iného duševného vlastníctva, ku ktorému softvérový inžinier prispel.

5.10 Umožniť riadny proces pri konaní o porušení koncepcie zamestnávateľa alebo tohto Kódexu.

5.11 Nežiadať od softvérového inžiniera, aby vykonal to, čo nie je v súlade s týmto Kódexom.

5.12 Nikoho netrestať za vyjadrenie etických pripomienok k určitému projektu.

Princíp 6: Profesia

Softvéroví inžinieri by mali zlepšovať bezúhonnosť a povesť profesie v súlade s verejným záujmom. Obzvlášť by softvéroví inžinieri mali: 

6.01 Pomáhať vytvárať pracovné prostredie napomáhajúce etickému správaniu.

6.02 Zvyšovať povedomie verejnosti o profesii softvérového inžiniera.

6.03 Rozširovať znalosť softvérového inžinierstva vhodnou účasťou v profesijných organizáciách, stretnutiach a publikáciách.

6.04 Podporovať, ako členovia profesie, ostatných softvérových inžinierov snažiacich sa o dodržiavanie tohoto kódexu.

6.05 Nepovyšovať vlastné záujmy na úkor profesie, klientov alebo zamestnávateľa.

6.06 Dodržiavať všetky pravidlá týkajúce sa práce softvérových inžinierov, okrem prípadov, keď takýto postoj nie je v zhode s verejnými záujmami.

6.07 Byť presný pri stanovovaní vlastností softvéru, na ktorom pracujú a vyhnúť sa tým stanoveniu nielen nepravdivých tvrdení, ale aj tvrdení špekulatívnych, bezduchých, klamlivých, zavádzajúcich alebo pochybných.

6.08 Preberať zodpovednosť za hľadanie a opravu chýb, za vytváranie správ o chybách v softvéri a v príslušných dokumentoch, na ktorých pracujú.

6.09 Zaistiť, aby klienti, zamestnávatelia a vedúci pracovníci vedeli o záväzku softvérového inžiniera dodržiavať tento Kódex a z toho vyplývajúcich ostatných záväzkov.

6.10 Vyhýbať sa spájaniu s ľuďmi, spoločnosťami a organizáciami, ktoré porušujú tento kódex.

6.11 Uvedomiť si, že porušovanie tohoto kódexu nie je v zhode so správaním sa profesionálneho softvérového inžiniera.

6.12 Vyjadriť znepokojenie ľuďom zúčastneným na závažnom porušení tohoto kódexu, keď to nie je nemožné, kontraproduktívne alebo nebezpečné.

6.13 Oznámiť podstatné porušenia tohoto kódexu príslušným autoritám, keď je jasné, že konzultácie s dotknutými osobami sú nemožné, kontraproduktívne alebo nebezpečné.

Princíp 7: Kolegovia

Softvéroví inžinieri by mali byť spravodliví ku svojím kolegom a mali by ich podporovať. Obzvlášť by softvéroví inžinieri mali: 

7.01 Nabádať kolegov aby sa pridržiavali tohto Kódexu.

7.02 Napomáhať kolegom v profesionálnom raste.

7.03 Plne dôverovať práci ostatných a zdržať sa pripisovania nadmerných zásluh.

7.04 Posudzovať prácu iných objektívne, poctivo a náležite zdokumentovaným spôsobom.

7.05 Korektne vypočuť názory, obavy alebo sťažnosti kolegov.

7.06 Napomáhať kolegom k uvedomeniu si súčasných štandardných praktík vrátane bezpečnostnej politiky a procedúr na ochranu hesiel, súborov a ostatných citlivých informácií a bezpečnostné opatrenia všeobecne.

7.07 Nepodnikať žiadne nekorektné kroky v kariére ostatných kolegov, i keby obavy zamestnávateľa, klienta alebo záujem verejnosti nútili softvérových inžinierov, v dobrej viere, zapochybovať o schopnostiach kolegov.

7.08 V situáciách mimo svojho poľa pôsobenia požiadať o pomoc odborníka, ktorý má kompetencie v týchto oblastiach.

Princíp 8: Osobnosť

Softvéroví inžinieri by sa mali zúčastňovať celoživotného vzdelávania týkajúceho sa ich profesnej praxe a mali by presadzovať etický prístup v profesnej praxi. Obzvlášť by sa mali sotvéroví inžinieri usilovať: 

8.01 Rozširovať svoje znalosti analýzy, špecifikácie, návrhu, vývoja, údržby a testovania softvéru a súvisiacich dokumentov spolu s manažmentom vývojového procesu.

8.02 Zlepšovať svoju schopnosť vytvárať bezpečný, spoľahlivý a prospešný vysoko kvalitný softvér za rozumnú cenu a v rozumnom čase.

8.03 Zlepšovať svoju schopnosť vytvoriť presnú, informatívnu a dobre napísanú dokumentáciu.

8.04 Zlepšovať svoje porozumenie softvéru a príslušnej dokumentácie, na ktorých pracujú, a prostredia, v ktorom budú použité.

8.05 Zlepšovať svoju znalosť príslušných štandardov a práva spravujúceho softvér a príslušnú dokumentáciu, na ktorých pracujú.

8.06 Zlepšovať svoju znalosť tohto Kódexu, jeho interpretácie a jeho aplikácie v praxi.

8.07 Nezaobchádzať nespravodlivo s nikým z dôvodu akýchkoľvek irelevantných predsudkov.

8.08 Nenabádať iných na vykonanie činov zahŕňajúcich porušenie tohto Kódexu.

8.09 Poznať, že osobné porušenie tohto Kódexu je nezlúčiteľné s postavením softvérového inžiniera.