软件工程师道德规范

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 视违反本规范为与软件工程师职业不符的行为。

posted @ 2007-12-31 13:15  phcis  阅读(2646)  评论(0编辑  收藏  举报