软件工程原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 软件工程职业道德规范

在软件定义时代,软件的行为及质量对现实世界和人类社会有着巨大的影响。作为软件的创造者,软件工程师应遵循软件工程职业道德规范,肩负起这一巨大的责任。

1.4.1 SEEPP标准

为了让软件工程成为有真正意义的职业,IEEE计算机学会和美国计算机学会从1996年起组织专家编写软件工程职业道德规范(SEEPP),作为指导软件工程师的行为准则。该准则1998年已发布5版,通过广泛的评审和修改,其中5.2版[5]被两学会正式批准,有些公司已开始拿它作为聘请员工签约时的一个组成部分。居德华教授和朱三元教授将规范标准翻译成中文,以促进国内软件工程的职业化建设。

SEEPP标准有两个首要目标。第一个目标是,“软件工程师必须做出自己的承诺,做好软件分析、说明、设计、开发、测试和维护,使软件工程师成为有益和受人尊敬的职业。”换句话说,这一规范的一个主要功能是促进软件工程职业本身的发展。第二个目标是,软件工程师“对公众健康、安全和福利的承诺”,强调软件工程师的社会责任高于某个特定个人,与其他工程领域的职业道德规范类似。为了实现这两个目标,软件工程师应当坚持下列八项原则。

1)公众——软件工程师应保持与公众利益的一致性。

5.2版特意将公众利益列为第一原则,当出现利益冲突时,职业软件工程师应把维护公众利益作为最高判断准则,而绝不能将个人或雇主利益放在第一位,这一点是符合我国国情的。这一原则也意味着,软件工程师应负起使自己的工作和开发的软件能有益于公众的全部责任;对一切可能危及公众或环境的东西,软件工程师应毫不犹豫地加以揭露和阻止。

2)客户和雇主——在保持与公众利益一致的原则下,软件工程师应注意实现客户和雇主的最高利益。

由于软件工程师的工作对客户和雇主有直接影响,他们应当尽力保护客户和雇主的利益,除非后者的利益与公众利益有冲突。软件工程师只提供他们专长范围内的服务,注意保护机密信息,不做私活和有害于客户或雇主的事情,不使用非法获得的软件,如果他们认为项目有可能失败,应如实向客户和雇主报告。

3)产品——软件工程师应当尽可能地保证他们的产品和修改符合最高的专业标准。

对开发的产品,软件工程师应尽一切努力确保高质量、可接受的成本和合理的进度,当因素存在冲突需要折中解决时,应让雇主和客户知道实情。他们应对估算中的不肯定性提供评估,遵守相关的职业标准,在产品公开发布前,确保经过适当的评审和测试。

4)判断——软件工程师应当维护他们职业判断的完整性和独立性。

真正的职业人员同时具有独立行使职业判断的权利和责任,即使在与自身利益或与客户/雇主利益有冲突时,仍能坚持高的职业标准。软件工程师只认可和放行他们认为已适当评审和可以客观认同的产品,他们不应当参与非法或不诚信活动,例如行贿、重复收费或者同时为有利害冲突的双方工作且隐瞒冲突实情。

5)管理——软件工程的经理和领导人员应赞成并促进对软件开发和维护的理性管理。

软件工程的管理人员应与其他软件工程师一样遵循同样的职业标准,包括职业道德规范。对待其雇员应公平和真诚,注意将任务分配给可胜任的人,并注重提升他们的教育和实践经验,对成本、进度、人员投入、质量和项目的其他产出,应能做出现实的定量估计。

6)专业——软件工程师应当推进其专业的完整性和声誉,以符合公众利益。

软件工程师应用自身行动推进软件工程成为一个职业,促进软件工程知识的传播,自觉创造支持职业规范的工作环境,拒绝为违反职业道德规范的组织工作,对出现违反职业道德规范的情况应向同事、经理或有关管理机构及时反映。

7)同事——软件工程师对同事应持正直和支持的态度。

软件工程师应帮助其他同事遵循职业道德规范,互相公正对待,为他人的职业发展提供协助,对要求胜任力之外的专长时,应主动请求具有此专长的其他专业人员的帮助。

8)自我——软件工程师应当终身参加职业实践的学习,并促进理性的职业实践方法的发展。

软件工程师应不断提高自身的技能水平,保持知识更新,使自己能跟上技术发展的步伐,做出更大的贡献。

软件工程职业道德规范和职业实践标准,强调职业的责任和对社会的贡献,正是软件工程本身正在成长和成熟的一个标志。沿着这一方向,我们希望看到一个全新的软件工程职业。

1.4.2 软件工程师的职业责任

高度的工作责任感和严格履行职责是每一位软件工程师的不折不扣的义务,这可表现为以下三个层次:

1)社会责任。只做有益于社会的事,不做并阻止任何有害于社会的事,这是必须坚持的首要原则。因此,IEEE的职业道德规范明确列出,必须承担使工程决策保证公众健康、安全和福利的责任,即刻揭露那些可能危及公众利益或环境的因素。

2)工作责任。这涉及软件工程师工作可能直接影响的人,诸如雇主、客户、合作者、同事和其他干系人,应尽最大努力履行自己的职责,保质保量地完成任务,努力保护干系人应得的利益,诚恳地向他们提出建议,若发现可能有损他们利益的情况则应如实地反映和报告。

3)严格履行合同、协议和交付的职责。应保证交付的软件能实现要求的功能,这涉及工程师是否守信和正直的问题。如果感觉无法按要求完成分配的任务,有责任提出修改要求,应把风险和事由如实告知雇主和客户。对接受的工作和任务,不管是否已表示过可能出现的问题,都应尽力履行,并对出现的结果承担责任。

梅宏院士在CCF中国工程师文化日活动中提出:对于工程师而言,如何顺应时代,迎接机遇,应对挑战,成为数字经济时代推动我国甚至全球产业振兴的新时代工程师,做出无愧于时代的贡献?这是我们必须回答好的问题。我们需要不断学习、勇于创新、追求卓越,用0和1去改变世界、编织世界。