这一《规范》包括了有关职业软件工程师的行为和决断的八项准则,涉及软件工程方面的实际工作者、教育工作者、经理、主管、决策制定者以及相关的受训人员和学生。这些准则指出了个人、小组和团体参与软件工程的道德责任关系,以及这些关系中的主要责任。每一条原则都是对这些关系中的责任做出的说明。这些责任覆盖了软件工程师的人性,他们对那些受软件工程师工作影响的人们的特别关照,以及软件工程实践的独特因素。《规范》规定任何已经成为或者想成为软件工程师的人必须遵守这些原则。

  本规范的每个部分都不应该被断章取义, 孤立使用去判断人们有意或无意犯下的错误。因此这些原则和条款并不是非常完善详尽的。在实际使用过程中,不应当将条款中的可接受部分和不可接受部分分开来讲。同时,《规范》也不是一个简单的道德算法,可以产生所有的道德上的决定。在某些情况下,一些标准可能会相互抵触或者与其他地方的标准相互抵触。在这种情况下,要求软件工程师能够运用自己的道德判断能力,在特定的情况下做出符合《规范》的行为。

  解决道德冲突好的方法是对基本原则进行全面的思考,而不是去盲目的依靠一些具体条目。这些原则应当会促使软件工程师们去更广泛的思考哪些人是他们工作的受众,去思考他和他的同事是否给予其他人足够的尊重,去思考对他们工作有足够了解的公众会如何看待他们的决定,去思考他们的决定如何影响小,以及去思考他们的行为是否符合一名的专业软件工程师的标准。在所有这些思考中,对公众健康、安全与福利的关注是主要的。也是说,“公众利益”是《规范》的核心。

  由于软件工程这一行业的多变性与苛刻性,它需要一份相关的规范去应对自身不断出现的新情况。《规范》记录了这个行业的道德立场与标准。因此即使是对于这样普遍性的要求,《规范》依然为软件工程师以及他们的经理提供了支持。《规范》无论是对团队中的个人还是团队本身来说都提供了一个道德基础。《规范》也规定了那些对软件工程师或其团队来说道德上不正当的要求。

  这份《规范》不仅仅能用来对那些遭到质疑的行为的性质进行判断,它还具有非常重要的教育功能。由于这份《规范》表达了这个行业对于职业道德的一致认识,因此它是教育公众和那些有抱负的专业人员有关软件工程师道德责任的一种工具。

  原则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. 力求完全理解你工作的specification。

  3.08. 确保软件的specification完善,满足用户需求,也经过恰当的批准。

  3.09. 对于任何你工作或者提出的项目,要对费用,调度,人员,质量和产出进行现实的和量化的评估,而且要给出对你的评估的不确定性的估计。

  3.10. 确保对于你在做的项目的程序和文档,要有足够的测试,调试和复审。

  3.11. 确保对于你在做的项目,要有足够的文档,包括所有你发现的问题和解决的方法。