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

1.6 软件工程人员的职业道德

作为一名专业的软件开发人员,必须认识到在有限的工作中包括更多的额外责任,而不仅仅是应用技术。必须保持一贯标准,不要利用技术和能力来制造一些损害软件工程行业声誉的事情。

软件开发人员应该注意的道德和标准如下。

1)保密:软件开发人员必须遵守客户的保密原则,也必须遵守同事的保密原则。

2)能力:软件开发人员不应虚报自己的能力水平,必须明白自己能做什么,不能做什么。

3)知识产权:和其他职业一样,软件开发人员必须了解知识产权,如专利和版权。

4)计算机滥用:软件开发人员不应该运用技术来滥用他人和设备的隐私。

1.ACM/IEEE道德准则

一些组织,如IEEE(电气和电子工程师协会)、ACM和英国计算机协会发布了软件工程人员的道德和标准。这些组织的所有成员在注册会员时必须遵守这些准则。该行为准则一般涉及基本的道德行为。

软件工程职业道德准则的重点是提供高质量的软件。这些职业道德准则致力于分析、描述、设计、开发、测试和维护对公司或客户有利和有效的软件。

因此,ACM和IEEE合作制定了一个联合的道德规范和职业规范。ACM/IEEE道德准则包含以下8项。

1)公众:软件开发人员的行为应与公众的利益一致。

2)客户和雇主:软件开发人员的行为应符合客户和雇主的最大利益,并与公共利益一致。

3)产品:软件开发人员应确保产品和相关的改进应尽可能达到最高的专业标准。

4)判断力:软件开发人员应保持其专业判断力的诚实性和独立性。

5)管理:软件工程经理和领导应认同并推广软件开发和维护管理的道德方法。

6)职业:软件开发人员应在符合公众利益的情况下,提高职业的诚信和声誉。

7)同事:软件开发人员应公平对待并支持其他同事。

8)自我:软件开发人员应参与有关其职业规范的终身学习,并应推广职业规范的道德方法。

2.职业伦理

当想到软件开发时,伦理并不是人们首先想到的(见图1-5)。毕竟,在开发软件时,作为开发人员,应该处理诸如功能和项目规范之类的技术问题。但是人们通常没有意识到的是,软件和技术在个人层面上影响着人们的生活,并且有能力使它们变得更好或更糟。

图1-5 软件工程中的伦理问题

现在人们做的每件事都涉及某种软件。例如,开车、买食物、交流、通勤、看电视、在线购物……这些活动涉及的技术在驱动着人们的生活,与人类生活密不可分。

技术甚至改变了企业的运作方式。为了成为第一个将产品推向市场、发展是最好的、产品和服务是最创新的企业,许多企业忽视了他们的冒险带来的副作用和可能给人们的生活带来的问题。

其实,有些公司为了追求利润确实忽视了普遍的商业道德标准。软件开发人员参与了不道德的行为,他们为有欺骗行为的公司工作,这些公司把自己的利益置于人们的生命之上,并且不顾后果。

科技逐渐成为人们日常生活的重要组成部分,已无法将科技与影响日常生活的伦理分开,而且科技还决定了人们的消费方式和创造方式。

尽管如此,软件开发人员有责任为用户提供一个安全的透明的、可信任的程序。

乍一看,很容易认为开发的技术部分与人们的生活没有直接关系。毕竟,真正影响用户的是商业规范。然而,软件开发人员才是那些知道他们的产品能做什么的人。

3.应该注意的一些道德问题

以下是软件开发人员在开发产品和选择为公司工作时应该注意的一些道德问题。

(1)客户数据

许多网站的服务在很大程度上是为了收集客户的信息。

以某搜索引擎公司为例。它拥有大量关于客户的信息:客户去过哪里,搜索历史,用过的应用程序,和谁一起使用等。

在数字世界,个人数据安全是最令人担忧的问题之一,因为客户会将他们的敏感信息托付给软件开发人员。许多组织都对个人信息感兴趣。那些没有制定应对此类情况的政策的公司,没有告知客户他们的数据将如何被处理,从而将客户置于危险之中。如果客户的数据确实用在了不当之处,客户可通过法律途径进行维权等。

(2)知识产权

在这个快速发展且声势浩大的创新行业,软件开发人员和经营者应该谨慎行事,以确保他们的发明在创新体系内得到适当的保护。

软件开发处理的是由版权、专利、商标和竞争优势法混合组成的相互关联的问题。为了确保客户免受不道德的商业行为的侵害,软件开发企业的人员应该熟悉所有这些要素以及如何有效地实施它们。由于缺乏知识而导致不道德行为,这并不能成为软件开发者为他们的行为如何影响人们的生活质量而承担责任的借口。

(3)版权拥有权

从理论上讲,软件开发人员拥有软件创作的版权,未经允许,任何人都不能复制、分发、展示或进行更改。当它由第三方开发人员或开发机构进行开发时,版权协议应始终伴随协作过程,以定义和保护代码开发者和最初拥有该想法的客户的权利。注册版权可以防止软件开发人员在所有权问题上遇到麻烦。

通常情况下,在产品商业发布后,源代码会被保密,以防止非法复制和传播。使用版权保护源代码对公司是有益的,因为它提供了一种保护知识产权的简便方法。

(4)许可协议

如果客户要求源代码,双方应澄清客户是需要索取源代码,还是只是稍后修改或更新产品。

如果当事方同意产品许可协议,要求透露源代码以重做或更新产品,则开发人员可以采用一项合约,在此合约下,客户承诺对源代码保密。

(5)道德问题解决方案

关于道德问题的棘手部分是,它们要解决一个人自己的道德准则,这是经过多年的教育、家庭和社会影响而形成的。再加上生活并不总是一成不变的,因此就有了一个令人难解的问题。

尽管面对这些道德困境,作为软件开发人员似乎很棘手,但我们仍然可以采取一些解决方案和步骤来做得更好。例如,通过社会舆论来进行呼吁等。

(6)道德教育

公司的运作方式是由管理层决定的,而不是由软件开发人员决定的。即使软件开发人员不同意,也可以被迫遵循所选择的行动方针。对软件开发人员进行有关商业和软件开发道德通用标准的教育,可以增进他们对社会责任以及如何采取行动的了解。它还可以帮助软件开发人员决定为哪些公司工作,或者在软件开发人员自己的企业中如何遵守道德规范。