Software engineering professionalism

Software engineering professionalism is a movement to make software engineering a profession, with aspects such as degree and certification programs, professional associations, professional ethics, and government licensing. The field is a licensed discipline in Texas in the United States, BS Australia[1](since 2001), and many provinces in Canada.

History

In 1993 the IEEE and ACM began a joint effort called JCESEP, which evolved into SWECC in 1998 to explore making software engineering into a profession. The ACM pulled out of SWECC in May 1999, objecting to its support for the Texas professionalization efforts, of having state licenses for software engineers. ACM determined that the state of knowledge and practice in software engineering was too immature to warrant licensing, and that licensing would give false assurances of competence even if the body of knowledge were mature.[2] The IEEE continued to support making software engineering a branch of traditional engineering.

In Canada the Canadian Information Processing Society established the Information Systems Professional certification process. Also, by the late 90's (1999 in British Columbia) the discipline of software engineering as a professional engineering discipline was officially created. This has caused some disputes between the provincial engineering associations and companies who call their developers software engineers, even though these developers have not been licensed by any engineering association.[3]

In 1999, the Panel of Software Engineering was formed as part of the settlement between Engineering Canada and the Memorial University of Newfoundland over the school's use of the term "software engineering" in the name of a computer science program. Concerns were raised over inappropriate use of the name "software engineering" to describe non-engineering programs could lead to student and public confusion, and ultimately threaten public safety.[4] The Panel issued recommendations to create a Software Engineering Accreditation Board, but the task force created to carry out the recommendations were unable to get the various stakeholders to agree to concrete proposals, resulting in separate accreditation boards.[5][6]

Ethics

Software engineering ethics is a large field. In some ways it began as an unrealistic attempt to define bugs as unethical. More recently it has been defined as the application of both computer science and engineering philosophy, principles, and practices to the design and development of software systems. Due to this engineering focus and the increased use of software in mission critical and human critical systems, where failure can result in large losses of capital but more importantly lives such as the Therac-25 system, many ethical codes have been developed by a number of societies, associations and organizations. These entities, such as the ACM, IEEE, APEGBC[7] and Institute for Certification of Computing Professionals (ICCP)[8] have formal codes of ethics. Adherence to the code of ethics is required as a condition of membership or certification. According to the ICCP, violation of the code can result in revocation of the certificate. Also, all engineering societies require conformance to their ethical codes; violation of the code results in the revocation of the license to practice engineering in the society's jurisdiction.

These codes of ethics usually have much in common. They typically relate the need to act consistently with the client's interest, employer's interest, and most importantly the public's interest. They also outline the need to act with professionalism and to promote an ethical approach to the profession.

A Software Engineering Code of Ethics[9] has been approved by the ACM and the IEEE-CS as the standard for teaching and practicing software engineering.

Examples of codes of conduct

The following are examples of codes of conduct for Professional Engineers. These 2 have been chosen because both jurisdictions have a designation for Professional Software Engineers.

Opinions on ethics

Bill Joy argued that "better software" can only enable its privileged end users, make reality more power-pointy as opposed to more humane, and ultimately run away with itself so that "the future doesn't need us." He openly questioned the goals of software engineering in this respect, asking why it isn't trying to be more ethical rather than more efficient. In his book Code and Other Laws of Cyberspace, Lawrence Lessig argues that computer code can regulate conduct in much the same way as the legal code. Lessig and Joy urge people to think about the consequences of the software being developed, not only in a functional way, but also in how it affects the public and society as a whole.

Overall, due to the youth of software engineering, many of the ethical codes and values have been borrowed from other fields, such as mechanical and civil engineering. However, there are many ethical questions that even these, much older, disciplines have not encountered. Questions about the ethical impact of internet applications, which have a global reach, have never been encountered until recently and other ethical questions are still to be encountered. This means the ethical codes for software engineering are a work in progress, that will change and update as more questions arise.

Professional responsibilities in developing software

Who's responsible?
Responsibilities for engineering and geoscience software

Licensing

The American National Society of Professional Engineers provides a model law and lobbies legislatures to adopt occupational licensing regulations. The model law requires:

  1. a four-year degree from a university program accredited by the Engineering Accreditation Committee (EAC) of the Accreditation Board for Engineering and Technology (ABET),
  2. an eight-hour examination on the fundamentals of engineering (FE) usually taken in the senior year of college,
  3. four years of acceptable experience,
  4. a second examination on principles and practice, and
  5. written recommendations from other professional engineers.

Some states require continuing education.

In Texas Donald Bagert of Texas became the first professional software engineer in the U.S. on September 4, 1998 or October 9, 1998. As of May 2002, Texas had issued 44 professional engineering licenses for software engineers. Rochester Institute of Technology granted the first Software Engineering bachelor’s degrees in 2001. Other universities have followed.

Professional licensing has been criticized for many reasons.[2]

Licensing and certification exams

The IEEE offers the Certified Software Development Professional certification exam. A group of experts from industry and academia developed the exam and maintain it. Donald Bagert heads the certification committee. Contents of the exam center around the SWEBOK (Software Engineering Body of Knowledge) guide. The motivation was to produce a structure at an international level for software engineering’s knowledge areas.[13][14]

Right to practice in Ontario

A person must be granted the “professional engineer” license to have the right to practice professional software engineering in Ontario. To become licensed by Professional Engineers Ontario (PEO), you must:

  1. Be at least 18 years of age.
  2. Be a citizen or permanent resident of Canada.
  3. Be of good character. You will be requested to answer questions and make a written declaration on your application form to test your ethics.
  4. Meet PEO’s stipulated academic requirements for licensure.
  5. Pass the Professional Practice Examination.
  6. Fulfill engineering work experience requirements.

Right to practice in Quebec

A person must be granted the “engineer” license to have the right to practice professional software engineering in Quebec. To become licensed by the Quebec order of engineers (in French : Ordre des ingénieurs du Québec - OIQ), you must:

  1. Be at least 18 years of age.
  2. Be of good character. You will be requested to answer questions and make a written declaration on your application form to test your ethics.
  3. Meet OIQ’s stipulated academic requirements for licensure. In this case, the academic program should be accredited by the Canadian Engineering Accreditation Board - CEAB)
  4. Pass the Professional Practice Examination.
  5. Fulfill engineering work experience requirements.
  6. Pass the working knowledge of French exam

Software engineering (SEng) guidelines by Canadian provinces

The term "engineer" in Canada is restricted to those who have graduated from a qualifying engineering programme. Some universities’ "software engineering" programmes are under the engineering faculty and therefore qualify, for example the University of Waterloo. Others, such as the University of Toronto have "software engineering" in the computer science faculty which does not qualify. This distinction has to do with the way the profession is regulated. Degrees in "Engineering" must be accredited by a national panel and have certain specific requirements to allow the graduate to pursue a career as a professional engineer. "Computer Science" degrees, even those with specialties in software engineering, do not have to meet these requirements so the computer science departments can generally teach a wider variety of topics and students can graduate without specific courses required to pursue a career as a professional engineer.[15]

See also

References

External links

This article is issued from Wikipedia - version of the Thursday, March 31, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.