1.6 软件工程人员的业务素质和职业道德
现在,计算机越来越成为商业、工业、政府、医疗、教育、娱乐、社会事务以及人们日常生活的中心角色。那些直接或通过教学从事设计和开发软件系统的人员,有着极大的机会既可从事善举也可从事恶行,同时还能影响或使得他人做同样的事情。为尽可能保证这种力量用于有益的目的,软件工程师必须要求他们自己所进行的软件设计和开发是有益的,所从事的是受人尊敬的职业。
软件工程从业人员的业务素质和职业道德规范对顺利高效地完成软件开发过程和管理过程有重要的影响。和其他工程人员一样,软件工程人员必须担负许多责任。软件工程人员的工作是在法律和社会认可的框架内完成的。软件工程人员要想受人尊敬,其行为就必须合乎道德,必须有责任感。软件工程人员必须坚持诚实正直的行为准则,这是不言而喻的。他们不能用掌握的知识和技能做不诚实的事情,更不能给软件工程行业抹黑。然而,在有些方面,某些行为没有法律加以规范,只能靠职业道德来约束,这种约束是软弱无力的。包括:
1.保密
工程人员必须严格保守雇主或客户的机密,而不管是否签署了保密协议。
2.工作能力
工程人员应该实事求是地表述自己的工作能力,不应有意接受超出自己能力的工作。
3.知识产权
工程人员应当知晓有关专利权、著作权等知识产权的地方法律,必须谨慎行事,确保雇主和客户的知识产权受到保护。
4.计算机滥用
软件工程人员不应运用自己的技能滥用计算机,如通过网络窃取别人个人隐私信息等。
1.6.1 软件工程师的业务素质
软件工程师应该具备什么业务素质,才算胜任工作呢?软件工程师的基本业务素质包括如下八条:
(1)热爱软件工程事业,对软件开发、软件实施、软件管理或软件维护等工作感兴趣。因为喜欢才会产生兴趣,而兴趣就是动力,动力十足就不会疲劳与厌倦。
(2)至少要熟练掌握两种以上的编程语言,能编写规范的源程序。
(3)熟悉问题求解的数据结构或数据库,即数据建模。数据结构适合于系统软件、工具软件的建模,数据库应用于管理信息系统软件建模。
(4)有良好的文档书写习惯,真正理解软件是“知识、程序、数据和文档”的集合,掌握符合国际标准规范的文档撰写方法,以便国际软件工程师之间互通交流。
(5)在软件工程技术上与时俱进,掌握主流的软件开发工具及环境,如各种CASE工具和软件配置管理工具等。
(6)努力跟踪所在行业领域知识,不断适应客户需求的变化。因为任何软件企业,都不可能面向许多行业,而只能面向一两个行业,所以必须掌握这些行业领域的最新业务知识。
(7)在技术或管理上不断总结经验,吸取教训,做到每年都有所进步。
(8)在业务工作中提倡与遵守团队精神,反对个人英雄主义。
以上八条是一个整体,对于不同的人、不同的岗位及不同的软件企业,可能各自有所侧重。
1.6.2 软件工程师的职业道德规范
什么样的人才能成为出色的软件工程师呢?他们要遵守软件开发规范,要有诗人的激情,艺术家的灵感,孩童的好奇心,要有团队合作精神,要能忍耐寂寞,要有很强的自我控制能力,要有温情的性格,要有耐心细腻的作风,要喜欢软件、热爱软件。此外,软件工程师还特别肩负着社会责任,所以更要有良好的职业道德的约束。
软件工程师的职业道德规范有如下八条:
(1)首先必须做一位遵纪守法的公民。
(2)做事认真负责,一丝不苟,每一条语句都经过周密思考。
(3)再忙再累也不会走捷径,对自己拿出手的东西绝不马虎。
(4)不会给合作方造成麻烦。
(5)看得见、看不见都会做到更好,自我控制已经形成习惯、成为风格。
(6)永远在学新东西,让自己不断进步。
(7)善于吸取教训,勇于承担责任。
(8)有聪明才智,对软件要有悟性。
如果读者正在从事编程工作,遵守规范、认真负责、耐心细致就是最基本的职业要求。
如果读者正在从事项目管理,就要统一规划,全面考虑,心胸宽广,心地善良,头脑冷静,因为心静才能发现问题。否则,遇到开发和测试问题就会越改越乱,甚至跟测试人员发生冲突。要知道,软件设计是不可轻易改动的,软件代码打补丁是不可取的。
如果读者正在从事高层的系统分析工作,就更要坚定信念,不怕麻烦,从全局到细节都要考虑周全,像法律文件一样滴水不漏,不然软件产品就会漏洞百出,最后要么报废,要么补丁摞补丁。
一大批具有良好职业道德水平的软件工程管理人员、设计人员、编程人员、测试人员、实施人员和维护人员,才是发展和振兴民族软件产业的可靠保障。
1.6.3 软件工程师职业实践的准则
(1)自觉遵守公民道德规范标准和中国软件行业基本公约。
(2)讲诚信,坚决反对各种弄虚作假现象,不承接自己能力尚难以胜任的任务,对已经承诺的事,要保证做到,在情况变化和有特殊原因实在难以做到时,应及早向当事人报告说明。忠实做好各种作业记录,不隐瞒、不虚构,对提交的软件产品功能,在有关文档上不作夸大不实的说明。
(3)讲团结、讲合作,有良好的团队协作精神,善于沟通和交流。在业务讨论上,积极坦率地发表自己的观点和意见,对理解不清楚和有疑问的地方,决不放过。在做同行评审和技术审核时,实事求是地反映和指出问题,对事不对人,要自觉协助项目经理做好项目管理,积极提出工作改进建议。
(4)有良好的知识产权保护观念,自觉抵制各种违反知识产权保护的行为,不购买和使用盗版软件,不参与侵犯知识产权的活动,在自己开发的产品中,不复制/复用未取得使用许可的他方内容。
(5)树立正确的技能观,努力提高自己的技能,为社会和人民造福,绝不利用自己的技能从事危害公众利益的活动,包括构造虚假信息和不良内容、制造计算机病毒、参与盗版活动、非法解密存取、黑客行为和攻击网站等,提倡健康的网络道德准则和交流活动。对于利用自己的计算机知识、积极参与社会科学普及和应用推广活动,应大力鼓励和提倡。
(6)认真履行签订的合同和协议,有良好的责任感。不能以追求个人利益为目的而做出如下行为:不顾协议与合同规定,不顾对原先已承诺的项目开发任务的影响,甚至以携带原企业的资料提高自己的身价。自觉遵守保密规定,不随意向他人泄露工作和客户机密。
(7)软件业是一个不断变化和不断创新的行业,面对飞速发展的技术,能自觉跟踪技术发展动态,积极参与各种技术交流、技术培训和继续教育活动,不断改进和提高自己的技能,自觉参与项目管理和软件过程改进活动,注意对个人软件过程活动的监控和管理,积累工程数据,研究和不断改进自己的软件生产率和质量,并积极参与发展高效的团队软件过程的管理,使各项软件产出都能达到国际和国家标准与规范。
(8)努力提高自己的技术和职业道德素质,力争做到与国际接轨,提交的软件和文档资料,技术上符合国际和国家的有关标准;在职业道德规范上,也符合国际软件工程职业道德规范标准。
(9)有良好的编码能力,软件工程师的一个重要职责,是把用户的需求功能用某种计算机语言加以实现。编码能力直接决定了项目开发的效率,这就要求软件工程师至少精通一两门编程语言,熟悉它们的基本语法、技术特点和API(应用程序接口)。
(10)信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。
(11)程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章也离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为软件工程师,具有一定的英语基础对于提升自身的学习和工作能力极有帮助。
1.6.4 软件工程师职业实践的国际标准
软件工程职业道德规范和实践要求5.2版
IEEE-CS和ACM软件工程道德和职业实践联合工作组推荐
经IEEE-CS和ACM批准定为讲授和实践软件工程的标准
简明版
序言
本规范的简明版以更高的摘要形式归纳了规范的主要意向,完整版所包括的条款则给出了范例和细节,说明这些意向会如何改变软件工程专业人员的行为。没有这些意向,细节会变得过于法律化和烦琐;而没有细节补充,意向又会显得高调而空洞,因此意向和细节使规范构成一个整体。
软件工程师应履行其实践承诺,使软件的需求分析、规格说明、设计、开发、测试和维护成为一项有益和受人尊敬的职业。为实现他们对公众健康、安全和利益的承诺目标,软件工程师,应当坚持以下八项原则:
(1)公众——软件工程师应当以公众利益为目标。
(2)客户和雇主——在保持与公众利益一致的原则下,软件工程师应注意满足客户和雇主的最高利益。
(3)产品——软件工程师应当确保他们的产品和相关的改进符合最高的专业标准。
(4)判断——软件工程师应当维护他们职业判断的完整性和独立性。
(5)管理——软件工程的经理和领导人员应赞成和促进对软件开发和维护合乎道德规范的管理。
(6)专业——在与公众利益一致的原则下,软件工程师应当推进其专业的完整性和声誉。
(7)同行——软件工程师对其同行应持平等、互助和支持的态度。
(8)自我——软件工程师应当参与终生职业实践的学习,并促进合乎道德的职业实践方法。