1.9 Software Engineering Code of Professional and Ethical Responsibility
“To be a professional is to be responsible and accountable for using one's special skills to give careful and constant consideration to the impact of one's products and services on others.”{6}[Sommerville2008]
Like other engineers, software engineers must accept that their job involves wider responsibilities than simply the application of technical skills. Their work is carried out within a legal and social framework. Software engineering is obviously bounded by local, national and international laws. Software engineers must behave in an ethical and morally responsible way if they are to be respected as professionals.
It goes without saying that engineers should uphold normal standards of honesty and integrity. They should not use their skills and abilities to behave in a dishonest way or in a way that will bring disrepute to the software engineering profession. However, there are areas where standards of acceptable behaviors are not bounded by laws but by the more tenuous notion of professional responsibility. Some of these are:
1) Confidentiality: Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
2) Competence: Engineers should not misrepresent their level of competence. They should not knowingly accept work which is out with their competence.
3) Intellectual property rights: Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected.
4) Computer misuse: Software engineers should not use their technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses).
In this respect, professional societies and institutions have an important role to play. Organizations such as the ACM, the IEEE (Institute of Electrical and Electronic Engineers) and the British Computer Society publish a code of professional conduct or code of ethics. Members of these organizations undertake to follow that code when they sign up for membership. These codes of conduct are generally concerned with fundamental ethical behavior.
The ACM and the IEEE have cooperated to produce a joint Software Engineering Code of Ethics and Professional Practice.
In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following eight principles:
1) Public-Software engineers shall act consistently with the public interest.
2) Client and employer-Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
3) Product-Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
4) Judgment-Software engineers shall maintain integrity and independence in their professional judgment.
5) Management-Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
6) Profession-Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
7) Colleagues-Software engineers shall be fair to and supportive of their colleagues.
8) Self-Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.