軟件工程師道德規範

 
軟件工程師道德規範

1993年5月,IEEE計算機協會的管理委員會設立了一個指導委員會,其目的是爲確立軟件工程作爲一個職業而進行評估、計劃和協調各種活動。同年,ACM理事會也同意設立一個關於軟件工程的委員會。到1994年1月,兩個協會成立了一個聯合指導委員會,負責爲軟件工程職業實踐制定一組適當標準,以此作爲工業決策、職業認證和教學課程的基礎。爲完成這項工作,他們提出瞭如下建議:

  *採用標準定義;
  *定義所需的知識主體和推薦的實踐活動;
  *定義道德標準;
  *定義本科生、研究生(碩士)和繼續教育(再培訓和轉崗)的教學課程

  指導委員會決定通過設立一系列的專題組實現這些目標。最初的幾個專題組包括:軟件工程知識主體和推薦的實踐活動;軟件工程道德和職業實踐以及軟件工程課程體系。
  軟件工程道德和職業實踐小組的目標是爲軟件工程師在道德上和職業上的責任和義務制定一份文件。本道德規範(草案)由IEEE計算機協會和ACM聯合指導委員會的軟件工程道德和職業實踐專題組開發,並且已經過該委員會的審查。
  任何規範,如果認真制定並正確推行,都會成爲推動職業化和建立社會安全保障的有力工具。它們不應該也不會只開花不結果,但這常常是人們對規範的錯覺。
本規範草案是在對多個計算學科和工程學科規範進行廣泛研究的基礎上做出的,意在教育和激勵採用規範的職業羣體和成員。規範也告訴公衆,一種職業的職責及其重要性。規範向實踐者指明社會期望他們達到的標準,以及他們同行的追求和相互的期望。規範並不意味着鼓勵訟爭,並且它們也不代表立法;但它們的確就影響專業人員及其客戶的一些問題給出了實際的建議,同時也給政策的制訂者提供借鑑。


序言

  現在,計算機越來越成爲商業、工業、政府、醫療、教育、娛樂、社會事務以及人們日常生活的中心角色。那些直接或通過教學從事設計和開發軟件系統的人員,有着極大的機會既可從事善舉也可從事惡行,同時還能影響或使得他人做同樣的事情。爲儘可能保證這種力量用於有益的目的,軟件工程師必須要求他們自己所進行的軟件設計和開發是有益的,所從事的是受人尊敬的職業。爲此,軟件工程師應該堅持下面的道德規範。
  本規範含有8組由關鍵詞命名的準則,這些準則均與專業軟件工程師的行爲和他們所作出的決定有關,也適用於本行業的從業者、教育者、管理者和督辦人、下午制定者以及職業受訓者和學生。這些準則對參與其中的個人、羣體和組織相互之間的各種關係給出了區別,並指出了在這些關係當中各自的主要義務。
  規範中的每一組準則均以三個層次的道德義務闡述,這些道德義務都是專業軟件工程師在所述的各種關係中所應承擔的。第一個層次給出的是一組道德價值,這也是專業軟件工程師和所有其他人就人性而言所共有的。第二個層次則是對軟件工程專業人員提出的比第一個層次更具挑戰性的一些義務。之所以要求第二個層次的義務,是因爲專業人員應對那些會受到他們工作影響的人們負有特別的責任。第三層次也是更深的層次,包括了只與軟件工程的專業實踐有關的因素所直接引出的幾項義務。每組準則中的條款是對相應的關係中各層次的義務的詳細闡述。
  每組準則中的條款由對應於三個層次的三種不同類型的陳述組成。
  第一層次:渴望(對於真正的人)。渴望的陳述給出了方向和目標,並用於指導職業行爲。這些指導性的要求對道德判斷是非常重要的。
  第二層次:期望(對於專業人員)。期望的陳述表達了所有專業人員的義務和職業態度。雖然它們沒有描述具體行爲細節,但是它們清楚地指明瞭在計算科學領域中的職業責任。
  第三層次:要求(對於良好的從業者)。要求的陳述提出了在軟件工程中更具體的行爲責任,這些責任與當前的技術狀況密切相關。本層陳述的範圍從一般的渴望陳述到具體的可度量的要求。
  雖然所有層次的職業義務都已列舉,但本規範並不打算包羅萬象,也不希望它的各個部分被孤立地用來判定失職或違規。所列的準則和條款並不是很詳盡的,不希望讀者對於所有實際情形中的職業行爲,簡單地以此來區分哪些是可接受的哪些是不可接受的。本規範也不是一個簡單地給出道德判定的道德算法。在某些情況下,本規範的各個標準有可能相互衝突或與其他的標準衝突。此時,就要求軟件工程師結合當時的環境,以與本道德規範的精神最一致的方式來進行道德判斷和採取行動。
  對於道德問題最好是給出經過深思熟慮的基本準則,而不是僅僅列出許多詳細的規定。這些準則應該影響你去更廣泛地考慮誰將受到你的工作影響;去檢查你和你的同事是否以應有的尊重對待他人;去推測如果公衆被恰當地告知,那麼他們將怎樣審視你所做的決定;去分析你的決定的最低影響力是多少;去考慮是否你的作爲夠得上軟件工程師的理想的職業行爲。因爲本規範代表那些從事該職業的人的共同意見,所以我們應該重視由那些有見識的、受人尊重的和有經驗的同行在掌握全部事實的情況下,他們認爲的什麼是特定環境中最道德的行爲方式,並且只在具有深刻的原因同時又經過認真仔細地判別之後才違反這種常規。
  軟件工程的動態性和需求的前後關係,要求一個規範能對出現的新情形有較強的適應性和適用性。但是即使在這種一般性原則下,本規範也只對那些以文檔記錄職業道德態度並採取積極行動的軟件工程師提供支持;即提供相應開發組中的個人以及整個開發組都可以求助的道德基礎。本規範也幫助定義哪些是對軟件工程師提出的道德上不適當的要求。
  本規範還具有教育的作用,它指出了對任何想加入的繼續從事軟件工程職業的人的要求。因爲它表達了該有關道德問題的一致意見,所以可以用作決策制定的指導,它也可以作爲公衆和渴望從事該職業的人瞭解有關軟件工程師的職業義務的教育工具。

準則1:產品

  軟件工程師應儘可以確保他們開發的軟件對於公衆、僱主、客戶以及用戶是有用的,在質量上是可接受的,在時間上要按期完成並且費用合理,同時無錯。特別地,軟件工程師應儘可能發地做到:
  1.01 保證他們所做的軟件的規格說明很好地製作了文檔,能滿足用戶的需求,並得到客戶的認可。
  1.02 努力去完全理解他們從事的軟件的規格說明。
  1.03 通過適當的教育和經驗的結合,保證對於從事的和將要從事的任何項目他們是合格的。
  1.04 對於他們從事的和將要從事的任何項目,保證正確的和可以實現的方向和目標。
  1.05 對於他們從事的和將要從事的任何項目,保證有一種恰當的方法學。
  1.06 對於他們從事的任何項目,保證有良好的管理,包括爲提高質量和降低風險而採取的有效規程。
  1.07 對於他們從事的和將要從事的任何項目的費用、時間表、人員和支出,保證給出一個切合實際的預算,並且對這些預算作出風險評估。
  1.08 對於他們從事的任何項目要保證給出充分的文檔,包括髮現問題的日誌和採取的解決方案。
  1.09 地他們從事的軟件和有關文檔,保證充分的測試、排錯和複審。
  1.10 開發軟件和相關的文檔要努力做到尊重使用該軟件的人的隱私權。
  1.11 注意只使用合法來源的準確數據,並且只以適當授權的方式使用。
  1.12 只在適當的時候,刪去過時的或有問題的數據。
  1.13 努力辨別、定義和闡明與任何工作的項目相關的道德、經濟、文化、法律和環境問題。
  1.14 爲僱主、客戶、用戶和公衆最大限度地提高質量和降低費用。爲有關的各方之間作出折衷。
  1.15 努力遵循最適合於當前工作的工業標準,只有當技術上證明應該背離這些標準時纔可以不遵守。

準則2:公衆

  從職業角色來說,軟件工程只應該按照與公衆的安全、健康和福利相一致的方式發揮作用。爲此,軟件工程師應該:
  2.01 就其負責或瞭解的軟件或相關文檔,如其中存在任何有可能對用戶、第三方開發商或環境構成實際或潛在危害的危險,應向有關人士或權威機構報告。
  2.02 僅當有充足理由相信某個軟件是安全的、滿足規格說明要求、已經通過了適當的測試,並且沒有降低生活質量或危害環境時,才贊成或批准它。
  2.03 只在那些在他們的監督之下準備好的文檔上簽字,或者這些文檔屬其能力範圍內併爲他們首肯。
  2.04 對由軟件或相關文檔引起的公衆關心的重大問題應努力合作予以解決。

  2.05 盡力開發尊重多樣性的軟件。與語言、不同的能力、不同的訪問形式(身體的、智力的)、經濟優勢以及資源分配等有關的問題都應予以考慮。
  2.06 與軟件或相關文檔有關的所有陳述都要公正的誠實,尤其對於公衆關心的部分。
  2.07 不要將自身利益、僱主的利益、客戶的利益或者用戶的利益置於公衆的利益之上。
  2.08 當機會出現時把職業技能獻給美好的事業,並對與該學科相關的公共教育事業貢獻力量。
  2.09 對他們自己的工作承擔全部責任。

準則3:判斷

  在與準則2保持一致的情況下,軟件工程師應該儘可能地維護他們職業判斷的獨立性並保護判斷的聲譽。特別地,軟件工程師應做到:
  3.01 對於要求他們評價的任何軟件或相關文檔,應保持職業的客觀性。
  3.02 只在那些在他們的監督下準備好的並且在其能力範圍內的文檔上簽字。

  3.03 拒絕賄賂。
  3.04 除了合同的所有各方都知道的和都同意的之外,不接受第三方就該合同所付的回報、佣金或其他的酬金。
  3.05 對任何特定的項目或者特定於該項目的服務,除了當環境已經完全暴露給有關的各方並且他們都已表示同意外,否則只從一方接受報酬。
  3.06 對於那些不能合理地避免或避開並且又急切期望解決的利益衝突,要向有關的所有各方公開。
  3.07 凡與他們自身、他們的僱主、他們的客戶的經濟利益有關的軟件或相關文檔,應拒絕作爲成員或顧問參與政府或專業團體對該軟件或文檔做任何決定。
  3.08 以支持和維護人的價值來調和所有的技術判斷。

準則4:客戶和僱主

  軟件工程師的工作應該始終與公衆的健康、安全和福利保持一致,他們應該總是以職業的方式擔當他們的客戶或僱主的忠實代理人和委託人。特別地,軟件工程師應該:
  4.01 只在他們的能力範圍內提供服務。
  4.02 保證他們依據的任何文檔都獲得授權人的批准。
  4.03 只以適當授權的方式使用客戶或僱主的財物,並且要讓客戶和僱主知道並獲得他們的同意。
  4.04 不要在知道的情況下使用非法獲得的或持有的軟件。
  4.05 對於在職業活動中獲得不屬於公共範圍的信息予以保密,當然,這種保密不應影響公衆關心的問題。
  4.06 在他們工作的或知道的軟件或相關文檔中,對於任何與社會有關的問題應認真辨別、記錄並向僱主或客戶報告。
  4.07 如果他們認爲某個項目可能失敗,或證明費用太高,或違反了知識產權法,特別是版權法、專利法或商標法,或存在任何其他問題,應立即通知客戶或僱主。
  4.08 不接受對其主要僱主的工作不利的其他工作。
  4.09 在未獲得僱主特別同意的情況下,不去代表與他們僱主的利益相反的任何一方,除非需要服從一個更高的道德準則,此時他們應使僱主或另一個適當授權人或機構知道他們的道德情形。

準則5:管理

  具有管理和領導職能的軟件工程師應該公平行事,應使得並鼓勵他們所領導的人履行自己的和集體的義務,包括本規範中要求的義務。特別地,扮演領導角色的軟件工程師應儘可能適當地做到:
  5.01 在要求僱員遵守各種標準之前,保證使他們都已瞭解這些標準。
  5.02 保證僱員知道僱主爲保護口令、文件和其他的保密信息而採取的策略和規程。
  5.03 只有在適當考慮了具有一定的教育和經驗同時確認對這種教育和經驗有進一步的渴望和要求之後,再分派工作。
  5.04 在聽取對違反僱主的政策或本規範的指控之後給出必要的處理。         5.05 對於僱員做出貢獻的任何軟件、處理技術、研究、文章或其他的知識產品,對其所有權制定出一份公平合理的協議。
  5.06 只通過對工作情況的全面和準確的描述來吸收僱員。
  5.07 只提供公平合理的酬報。
  5.08 對於有資格從事某項工作的下屬,不能不公平地阻止他(或她)取得該項工作。
  5.09 不要求一個僱員去做任何與本規範不一致的事情。

準則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 不要爲尋求個人的利益而暗中破壞其他軟件工程師的工作。
  7.09 對處於自己能力領域之外的情形,應徵詢相應領域的其他專業人員的意見。

準則8:本人

  軟件工程師應該在他們的整個職業生涯中,努力增加他們從事自己的職業所應該具有的能力。特別地,軟件工程師應該始終努力做到:
  8.01 進一步提高在軟件和相關文檔的設計、開發和測試方面的知識水平,以及開發過程管理方面的知識。
  8.02 提高在合理的時間內以合理的費用創建安全、可靠和高質量軟件的能力。
  8.03 提高編寫準確的、信息豐富的和語言流暢的文檔的能力,以支持所使用的軟件。
  8.04 提高對所使用的軟件和相關文檔的理解,以及對這些軟件和文檔將要應用的環境的理解。
  8.05 提高對管理所使用的軟件和相關文檔的法律知識的瞭解。
  8.06 提高對本規範、有關它的解釋以及應用於自身工作的瞭解。
  8.07 不要要求或影響其他人去從事任何違反本規範的活動。
  8.08 視違反本規範爲與軟件工程師職業不符的行爲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章