Software Engineering Code of Ethics (Version 3.0)


 Author: IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices
 Date: October 1997
 Subject: Software Engineering Code of Ethics
 Recepient: N/A
 Format: Miscellaneous

PDF of Document

Software Engineering Code of Ethics, Version 3.0
Don Gotterbarn, Keith Miller, and Simon Rogerson
IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices

In May of 1993, the Board of Governors of the IEEE-CS established a steering committee for evaluating, planning, and coordinating actions related to establishing software engineering as a profession. In that same year the ACM Council endorsed the establishment of a Commission on Software Engineering. By January of 1994, both societies formed a joint steering committee "To establish the appropriate sets) of standards for professional practice of Software Engineering upon which industrial decisions, professional certification, and educational curricula can be based." To accomplish these tasks they made the following recommendations:

1. adopt standard definitions
2. define required body of knowledge and recommended practices
3. define ethical standards
4. define educational curricula for undergraduate, graduate(MS) and continuing education (for retraining and migration)

The steering committee decided to accomplish these tasks through the establishment of a series of task forces. Initially the task forces established were: Software Engineering Body of Knowledge and Recommended Practices; Software Engineering Ethics and Professional Practices, and Software Engineering Curriculum.

The purpose of the Software Engineering ethics and professional practices task force is to document the ethical and professional responsibilities and obligations of software engineers. This draft code of ethics was developed by a task force of the joint IEEE Computer Society and Association for Computing Machinery Steering Committee for the Establishment of Software Engineering as a Profession and has been reviewed by the Steering Committee. The task force on Software Engineering Ethics and Professional Practices developed this code for a sub?specialization within the constituencies of both of the professional societies. In an attempt to reflect the international character of both organizations and the profession as a whole, the composition of the task force is multinational in both citizenship and in membership in professional computing organizations. The proposed draft Code of Ethics for Software Engineers (version 3) was developed by the task force and reviewed by the Steering Committee for distribution and comment. The purpose of this distribution is to solicit comments from practitioners and other interested parties.

Codes, if carefully written and properly promoted, can be powerful instruments in the drive for professionalism and in establishing safeguards for society. They do not have to be and should not be sterile, which is often the perception that people have of them. This draft code evolved after extensive study of several computing engineering codes[l].

All of these codes try to a educate and inspire the members of the professional group that adopts the code. Codes also inform the public about the responsibilities that are important to a profession. Codes instruct practitioners about the standards that society expects them to meet, and what their peers strive for and expect of each other. Codes are not meant to encourage litigation, and they are not legislation; but they do offer practical advice about issues that matter to professionals and their clients and they do inform policymakers. These concepts have been adopted in the development of this code. Based on the feedback from readers of this publication and from other sources, a final draft of the code will be developed and presented to the Steering Committee for approval.

1] Codes referred to include: The American Association of Engineering Societies, Model Guide for Professional Conduct; Accreditation Board for Engineering Technology's, Code of Ethics for Engineers and Guidelines for the Fundamental Cannon of Ethics; the Association of Computing Machinery's Code of Ethics and Guidelines for Professional Conduct, the British Computer Society, Code of Conduct; the British Computer Society, Code of Practice; the Institute for the Certification of Computing Professionals; the Engineer's Council for Professional Development; Faith of the Engineer; the Institute of Electrical and Electronics Engineers, Code of Ethics; the National Society of Professional Engineers, Code of Ethics for Engineers, and the Project Management Institute Code of Ethics for the Project Management Profession.

PREAMBLE

Computers now have a central and growing role in commerce, industry, government, medicine, education, entertainment, social affairs, and ordinary life. Those who contribute, by direct participation or by teaching, to the design and development of software systems have significant opportunities both to do good and to cause harm and to influence and enable others to do good or cause harm. To ensure, as much as possible, that this power will be used for good, software engineers must commit themselves to making the design and development of software beneficial and respected profession. In accordance with that commitment,.software engineers shall adhere to the following Code of Ethics.

The Code contains eight Principles related to the behavior of and decisions made by professional software engineers, be they practitioners, educators, managers and supervisors, or policymakers, as well as trainees and students of the profession. The Principles identify the various relationships in which individuals, groups, and organizations participate and the primary obligations within these relationships.

Each Principle of this code addresses three levels of ethical obligation owed by professional software engineers in each of these relationships. The first level identified is a set of ethical values, which professional software engineers share with all other human beings by virtue of their humanity. The second level obliges software engineering professionals to more challenging obligations than those required at level one. Level two obligations are required because professionals owe special care to people affected by their work. The third and deeper level comprises several obligations which derive directly from elements unique to the professional practice of software engineering. The Clauses of each Principle are illustrations of the various levels of obligation included in that relationship.

The Clauses under each Principle consist of three different types of statement corresponding to each level. Level one: Aspire (to be human); statements of aspiration provide vision and objectives and are intended to direct professional behavior. These directives require significant ethical judgment. Level Two: Expect (to be professional); statements of expectation express the obligations of all professionals and professional attitudes. Again they do not describe the specific behavior details but they clearly indicate professional responsibilities in computing. Level Three: Demand (to use good practices); statements of demand assert more specific behavioral responsibilities within software engineering which are more closely related to the current state of the art. The range of statements is from the more general aspirational statement to specific measurable requirements.

Although all levels of professional obligation are recognized, the Code is not intended to be all inclusive, nor 1S it intended that its individual parts be used in isolation to justify errors of omission or commission. The list of Principles and Clauses is not exhaustive, and should not be read as separating the acceptable from the unacceptab le in professional conduct in all practical situations. The Code is not a simple ethical algorithm which generates ethical decisions. In some situations standards may conflict with each other or with standards from other sources. These situation s require the software engineer to use ethical judgment to act in a manner which is most consistent with the spirit of the Code of Ethics, given the circumstances.

These ethical tensions can best be addressed by thoughtful consideration of fundamental principles, rather than reliance on detailed regulations. These Principles should influence you to consider broadly who is affected by your work; to examine if you and your colleagues are treating other human beings with due respect; to speculate on how the public would view your decision if they were reasonably well informed; to analyze how the least empowered will be affected by your decision; and to consider whether your acts would be judged worthy of the ideal professional working as a software engineer. Since this code represents a consensus of those engaged in the profession, one should take into account what is likely to be judged as the most ethical way to act in the circumstances by informed, respected, and experienced peers in possession of all the facts and only depart from such a course for profound reasons, backed with careful judgment.

The dynamic and demanding context of software engineering requires a code that is adaptable and relevant to new situations as they occur. However even in this generality, the Code provides support for the software engineer who needs to take positive action by documenting the ethical stance of the profession. It provides an ethical foundation to which individuals within teams and the team as a whole can appeal. The Code also helps to define those things which are ethically improper to request of a software engineer.

The Code has an educational function, stating what is required of anyone wishing to join or continue in the software engineering community. Because it expresses the consensus of the profession on ethical issues, it can be used as a guide to decision making and as a means to educate both the public and aspiring professionals about the professional obligation of all software engineers.

PRINCIPLES
Principle 1: Product


Software engineers shall, insofar as possible, ensure that the software on which they work is useful and of accept able quality to the public, the employer, the client, and the user; completed on time and at reasonable cost; and free of error. In particular, software engineers shall, as appropriate:
1.01. Ensure that specifications for software on which they work have been well documented, satisfy the user's requirements, and have the client's approval.
1.02. Strive to fully understand the specificati_o_ns for software on which they work.
1.03. Ensure that they are qualified, by an appropriate combination of education and experience, for any project on which they work or propose to work.
1.04. Ensure proper and achievable goals and objectives for any project on which they work or propose.
1.05. Ensure an appropriate methodology for any project on which they work or propose to work.
1.06. Ensure good management for any project on which they work, including effective procedures for promotion of quality and reduction of risk.
1.07. Ensure realistic estimates of cost, scheduling, personnel, and outcome on any project on which they work or propose to work and provide a risk assessment of these estimates.
1.08. Ensure adequate documentation on any project on which they work, including a log of problems discovered and solutions adopted.
1.09. Ensure adequate testing, debugging, and review of software and related documents on which they work.
1.10. Work to develop software and related documents that respect the privacy of those who will be subjected to that software.
1.11. & careful to use only accurate data derived from legal sources and use only in ways properly authorized.
1.12. Whenever appropriate, delete outdated or flawed data.
1.13. Work to identify, define, and address ethical, economic, cultural, legal, and environmental issues related to any work project.
1.14. Promote maximum quality and minimum cost to the employee; the client, the uses and the public. Make any tradeoffs clear to all parties concerned.
1.15. Work to follow industry standards that are most appropriate for the task at hand, departing from these only when technically justified.


Principle 2: Public
Software engineers shall, in their professional role, act only in ways consistent with the public safety, health, and welfare. In particular, software engineers shall:
2.01. Disclose to appropriate persons or authorities any actual or potential danger to the uses a third party, or the environment, that they reasonably believe to be associated with the software or related documents for which they are responsible, or merely know about.
2.02. Approve software only if they have a well founded belief that it is safe, meets specifications, has passed appropriate tests, and does not diminish quality of life or harm the environment.
2.03. Affix their signature only to documents prepared under their supervision or within their areas of competence and with which they are in agreement.
2.04. Cooperate in efforts to address matters of grave public concern caused by software or related documents.
2.05. Endeavor to produce software that respects diversity. Issues of language, different abilities, physical access, mental access, economic advantage, and allocation of resources should all be considered.
2.06. & fair and truthful in all statements, particularly public ones, concerning software or related documents.
2.07. Not put self?interest, the interest of an employer, the interest of a client, or the interest of the user ahead of the public's interest.
2.08. Donate professional skills to good causes when opportunities arise and contribute to public education with respect to the discipline.
2.09. Accept full responsibility for their own work.


Principle 3:
JUDGEMENT
Software engineers shall, insofar as possible and consistent with Principle 2, protect both the independence of their professional judgment and their reputation for such judgment. In particular, software engineers shall, as appropriate:
3.01. Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.
3.02. Affix their signature only to documents prepared under their supervision and within their areas of competence.
3.03. Reject bribery.
appropriate:
3.04. Accept no payback, kickback, or other payment from a third parry to a contract, except with the knowledge and consent of all parties to the contract.
3.05. Accept payment from only one parry for any particular project, or for services specific to that project, except when the circumstances have been fully disclosed to parties concerned and they have given their informed consent.
3.06. Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped and aspire to resolve them.
3.07. Refuse to participate in any decision of a governmental or professional body, as a member or advisor, concerned with software, or related documents, in which they, their employer, or their Client
have a financial interest.
3.08. Temper all technical judgments by the need
to support and maintain human values.

Principle 4: CLIENT AND EMPLOYER

Software engineers shall, consistent
with the public health, safe and welfare, always act in professional matters
as faithful agents and trustees of their client or employer. In particular, software
engineers shall:
4.01. Provide service only in areas of their competence.
4.02. Ensure that any document upon which they rely has been approved by someone authorized to approve it.
4.03. Use the property of a client or employer only in ways properly authorized, and with the client's or employer's knowledge and consent.
4.04. Not knowingly use illegally obtained or retained software.
4.05. Keep as confidential information gained in their professional work that is not in the public domain, where such confidentiality is not inconsistent with matters of public concern.
4.06. Identify, document, and report to the employer or the client any problems or matters of social concern in the software or related documents on which they work or of which they are aware.
4.07. Inform the client or the employer promptly if, in their opinion, a project is likely to fail, to prove too expensive, to violate intellectual property legislation-in particular copyright, patent, and trade marks?or otherwise be problematic.
4.08. Accept no outside work detrimental to the work they perform for their primary employer.
4.09. Represent no interest adverse to their employer's without the employer's specific consent, unless a higher ethical concern is being compromised; then in that case the employer or another appropriate authority should be informed of the engineer's ethical concern.

Principle 6: MANAGEMENT
A software engineer in a management or leadership capacity shall act fairly and shall enable and encourage those whom they lead to meet their own and collective obligations, including those under this code. In particular, those software engineers in leadership roles shall as appropriate:
5.01. Ensure that employees are informed of standards before being held to them.
5.02. Assure employees know the employer's policies and procedures for protecting passwords, files, and other confidential information.
5.03. Assign work only after taking into account appropriate contributions of education and experience tempered with a desire to further that education and experience.
5.04. Provide for due process in heating charges of violation of an employer's policy or of this code.
5.05. Develop a fair agreement concerning ownership of any processes, research, writing, or other intellectual property to which an employee has contributed.
5.06. Attract employees only by full and accurate description of the conditions of employment.
5.07. Offer only fair and just remuneration.
5.08. Not unjustly prevent a subordinate from taking a better position for which the subordinate is suitably qualified.
5.09. Not ask an employee to do anything inconsistent with this code.

Principle 6: PROFESSION

Software engineers shall, in all professional matters, advance both the integrity and reputation of their profession as is consistent with public health, safety, and welfare. In particular, software engineers shall, insofar as possible:
6.01. Associate only with reputable businesses and organizations.
6.02. Ensure that clients, employers, and super- visors know of the software engineer's commitment to this code of ethics, and their own responsibility under it.
6.03. Support those who similarly do as this code requires.
6.04. Help develop an organizational environment favorable to acting ethically.
6.05. Report anything reasonably believed to be a violation of this code to appropriate authorities.
6.06. Take responsibility for detecting, correcting, and reporting errors in software and associate documents on which they work.
6.07. Only accept remuneration appropriate to professional qualifications or experience.
6.08. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might reasonably be supposed to be deceptive, misleading, or doubtful.
6.09. Not promote their own interest at the expense of the profession.
6.10. Obey all laws governing their work, insofar as such obedience is consistent with the public health, safety, and welfare.
6.11. Exercise professional responsibility to society by constructively serving in civic affairs.
6.12. Promote public knowledge of software engineering.
6.13. Share useful software-related knowledge, inventions, or discoveries with the profession, for example, by presenting papers at professional meetings, by publishing articles in the technical press, and by serving on the profession's standard setting bodies.

Principle 7: Colleagues

Software engineers shall treat all those with whom they work fairly and take positive steps to support these collegial activities. In particular, software engineers shall, as appropriate:
7.01. Assist colleagues in professional development.
7.02. Review the work of other software engineers, which is not in the public domain, only with their prior knowledge, provided this is consistent with public health, safety, and welfare.
7.03. Credit fully the work of others.
7.04. Review the work of others in an objective, candid, and properly documented way.
7.05. Give a fair hearing to the opinion, concern, or complaint of a colleague.
7.06. Assist colleagues in being fully aware of current standard work practices including policies
and procedures for protecting passwords, files, security measures in general, and other confidential information.
7.07. Not interfere in the professional career progression of any colleague.
7.08. Not undermine another software engineer's job prospects for one's own personal gain.
7.09. In situations outside of their own areas of competence, call upon the opinions of other profesonals who have competence in that area.

Principle 8 SELF: Software Engineers shall, through out their own career, strive to enhance their own ability to practice their own profession as it should be practiced. In particular, software engineers should continually endeavor to :

8.01. Further their knowledge of developments in the analysis, design, development, and testing of software and related documents, together with the management of the development process.
8.02. Improve their ability to create safe, reliable, and useful quality software ac reasonable cost and within a reasonable time.
8.03. Improve their ability to write accurate, informative, and literate documents in support of software on which they work.
8.04. Improve their understanding of the software and related documents on which they work and of the environment in which they will be used.
8.05. Improve their knowledge of the laws governing the software and related documents on which they work.
8.06. Improve their knowledge of this code, its interpretation, and its application to their work.
8.07. Refrain from requiring or influencing others to undertake any action which involves a breach of this code.
8.08. Consider violations of this code inconsistent with being a professional software engineer.

 

For the code to have currency it needs to be carefully considered by software engineers, especially those who are ACM or IEEE members. Therefore, it is essential that you review this draft code and supply feedback to the taskforce. For each clause within the eight keyword Principles, please indicate how strongly you are either in favor of it, or opposed to it, or whether you are uncertain. If you are opposed to any clause, please indicate your reasons why and offer an alternative wherever possible. Please also indicate any suggested improvements to this document. Use
additional pages for comments if necessary. The draft code is available at http://computer.org/tab/proftse/ or http://www.acm.org/ or http://www.ccsr.cas.dmu.ac.uk/.

Return the form to Don Gotterbarn, fax (423) 461-7119.

Abbreviated clauses for Strongly Favor Favor Uncertain Oppose Strongly Oppose
each principle

1.00 PRODUCTS
1.01 Ensure adequate software specification
1.02 Understand specifications fully
1.03 Ensure you are suitably qualified
1.04 Ensure all goals are achievable
1.05 Ensure proper methodology
1.06 Ensure good project management
1.07 Ensure all estimates are realistic
1.08 Ensure adequate documentation
1.09 Ensure adequate testing and debugging
1.10 Promote privacy of individuals
1.11 Use data legitimately
1.12 Delete outdated and flawed data
1.13 Identify and address contentious issues
1.14 Promote maximum quality and minimum cost
1.15 Follow appropriate industry standards
2.00 PUBLIC
2.01 Disclose any software-related dangers
2.02 Approve only safe, well-tested software
2.03 Only sign documents in areas of competence
2.04 Cooperate on matters of public concern
2.05 Produce software that respects diversity
2.06 Be fair and truthful in all matters
2.07 Always put the public's interest first
2.08 Donate professional skills to goofs causes
2.09 Accept full responsibility for your own work
3.00 JUDGMENT
3.01 Maintain professional objectivity
3.02 Only sign documents within your responsibility
3.03 Reject bribery
3.04 Do not accept payments secret from the client
3.05 Accept payment from only one source for a job
3.06 Disclose conflicts of interest
3.07 Avoid conflicting financial interests
3.08 Temper technological judgment with ethics
4,00 CLIENT AND EMPLOYER
4.01 Provide service only where competent
4.02 Ensure resources are authentically approved
4.03 Only use property as authorized by the owner
4.05 Honor confidentiality of information
4.06 Raise matters of social concern
4.07 Inform when a project becomes problematical
4.08 Accept no detrimental outside work
4.09 Represent no interest adverse to your employer
5.00 MANAGEMENT
5.01 Assure standards are known by employees
5.02 Assure knowledge of confidentiality protocols
5.03 Assign work according to competence
5.04 Provide due process for code violations
5.05 Develop fair ownership agreements
5.06 Accurately describe conditions of employment
5.07 Offer only fair and just remuneration
5.08 Do not prevent a subordinate's promotion
5.09 Do not ask a person to breach this code
6.00 PROFESSION
6.01 Associate with reputable people
6.02 Promote commitment to this code
6.03 Support followers of this code
6.04 Help develop an ethical environment
6.05 Report suspected violations of this code
6.06 Take responsibility for errors
6.07 Only accept appropriate remuneration
6.08 Be accurate and honest regarding software
6.09 Place professional interests before personal
6.10 Obey all laws governing your work
6.11 Exercise professional responsibility
6.12 Promote public knowledge of the subject
6.13 Share software knowledge with the profession
7.00 COLLEAGUES
7.01 Assist colleagues in professional development
7.02 Review others' work only with their consent
7.03 Credit fully the work of others.
7.04 Review others' work candidly
7.05 Give fair hearing to colleagues
7.06 Assist colleagues' awareness of work practices
7.07 Do not hinder a colleague's career
7.08 Do not pursue a job offered to a colleague
7.09 Seek help with work outside your competence
8.00 SELF
8.01 Further your own professional knowledge
8.02 Improve your ability to produce quality work
8.03 Improve your ability to document work
8.04 Improve your understanding of work details
8.05 Improve your knowledge of relevant legislation
8.06 Improve your knowledge of this code
8.07 Do not force anyone to violate this code.
8.08 Consider code violations inconsistent with S. Eng.

This draft Code was developed by the IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices: Chair: Donald Gotterbarn. Executive Committee: Keith Miller and Simon Rogerson Members: Peter Barnes, Steve barber Ilene Burnstein, Amr El-Kadi, N. Ben Fairweather, Milton Fulghum, N. Jayaram, Tom Jewett, Maj. Mark, Kanko, Ernie MI Iman Duncan, Little, Ed Mechler, Manuel J. Norman, Douglas Phillips, Peter Ron Prinzivalli, Patrick Sullivan, John Weckert S. Weisband, and Laurie Honour Werth.


Please send comments on this draft of the Preamble and the Code to Donald Gotterbarn, Computer and Information Sciences, East Tennessee State University, Box 70711, Johnson City; TN 376140711; d.gotterbarn@computer.org.