|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/srakitin/OLD/newsletter/vol6/no2/ |
Upload File : |
Food for Thought-An e-newsletter published by Software Quality Consulting, Inc.
February 2009, Vol. 6 No. 2
Ethics in Software Development
What topics would you like to see in this newsletter? Each month, this
newsletter tries to provide you with useful information. This is a two-way
street and your feedback is important. Please send your thoughts and comments
to [email protected].
--------------------------------------------------------------------------------
Welcome to Food for Thought(TM), an e-newsletter from Software Quality
Consulting (http://www.swqual.com/index.html?Intro). I've created free
subscriptions for my valued business contacts. If you find this newsletter
informative, I encourage you to continue reading. Feel free to pass this
newsletter along to colleagues by clicking the Forward Email link at the bottom
of this email. If you�ve received this newsletter from a colleague and would
like to subscribe, please click this Enter New Subscription link
(http://www.swqual.com/newsletter/Subscribe.htm?Newsletter). If you don't wish
to receive this newsletter, click the SafeUnSubscribe(TM) link at the bottom of
this newsletter, and you won�t be bothered again.
Your continued feedback on this newsletter is most welcome. Please send
your comments and suggestions to [email protected].
--------------------------------------------------------------------------------
*** In This Issue ***
In This Months� Topic, I discuss ethical behavior and professionalism...
Regular features to look for each month are:
- Monthly Morsels
Hints, tips, techniques and reference info related to this month�s topic
- Calendar
Conferences, workshops, and meetings of interest to software engineers,
QA engineers and anyone interested in software development
--------------------------------------------------------------------------------
*** This Month�s Topic ***
ETHICS IN SOFTWARE DEVELOPMENT
The parade of politicians charged with or admitting to unethical behavior
seems endless. The governor of Illinois was impeached and barred from ever
holding public office in Illinois. The governor of New York resigned after
a prostitution scandal. The last three Speakers of the House of
Representatives in Massachusetts have resigned amid accusations of
unethical behavior. Several key members of the new Obama administration
have admitted to not paying all the income tax they owed. National sports
figures such as Major League Baseball player Alex Rodriquez have admitted
to using performance enhancing drugs.
Unethical behaviors have occurred repeatedly on Wall Street and in many
companies. For example:
- Ford - Remember the infamous exploding gas tank in the Ford Pinto?
Executives at Ford decided it would be cheaper to deal with lawsuits
resulting from deaths caused by the poor design of the Pinto than to
actually fix the problem. The fix was estimated to cost $11 at the time.
As a result of this bad decision, several people were killed and others
severely burned.
Read more about the cost-benefit analysis used by Ford execs...
(http://www.calbaptist.edu/dskubik/pinto.htm)
- Enron - CEO Ken Lay and his management team were involved in many
unethical actions that ultimately resulted in the loss of: $60 billion
of lost value to share holders, thousands of jobs, and the retirement
savings of most Enron employees.
Read more about the Enron Scandal...
(http://en.wikipedia.org/wiki/Enron_scandal)
- The unethical actions of investment manager Bernard Madoff resulted in
investors losing over $50 billion. Several of these investors were
charitable organizations that donate millions of dollars to support many
social programs for people in need.
Read more about the Bernard Madoff scandal...
(http://www.npr.org/templates/story/story.php?storyId=98393250)
- The on-going investigation into the salmonella outbreak in the US has
raised allegations that the CEO of the Georgia plant where the tainted
product was made knew the product was tainted but shipped it anyway,
resulting in at least 9 deaths...
Read more about the salmonella outbreak...
(http://www.fda.gov/oc/opacom/hottopics/Salmonellatyph.html)
Ethical behavior is something that we all must deal with everyday in both
our work and personal lives. This month, we discuss how ethics affects
decisions we make with regard to software development.
DEFINITIONS
First we need to start with a few definitions from Webster�s New World
College Dictionary, 3rd edition:
Ethic A system of moral standards or values. A particular moral
standard or value.
Ethical Having to do with ethics or morality; of or conforming to
moral standards. Conforming to the standards of conduct of a given
profession or group. Synonym: moral
WHAT IS ETHICAL BEHAVIOR?
�The term ethical behavior refers to how an individual or an
organization ensures that all its decisions, actions, and stakeholder
interactions conform to the individual�s or organization�s moral and
professional principles. These principles should support all applicable
laws and regulations and are the foundation for the individual�s or
organization�s culture and values. They define right from wrong.� [1]
Organizations and individuals often make decisions which, taken by
themselves, may seem perfectly ethical. However, taken as a whole, these
decisions may border on unethical behavior. For example:
- A software sales person accepts a purchase order from a customer to
deliver some software application with specific features by a specific
date. The sales person knows that implementing the features and meeting
the date are highly unlikely. Nevertheless, to meet sales projections
and to get a commission, the order is accepted.
- As a result of the promises made to this customer, the project manager
must make decisions in order to meet the unrealistic schedule. The
project manager decides to cut out tasks included in the standard
software development process, such as document and code reviews.
Further, the project manager reduces the amount of time allocated for
system test by 50%.
- To meet the unrealistic schedule, the development manager decides to
drop a few of the new features that haven�t been fully implemented yet.
Unbeknownst to the development manager, the features dropped were
promised to the customer.
- The test manager must reduce testing by 50%. To do this, the test
manager decides not to test certain features that were not supposed to
change. Because the document and code reviews were eliminated, the test
manager was not aware that several of these features actually did
change.
- The end result was a software release that came out months after it was
promised, without the new features that were promised, and with many
more defects than were in the previous release.
Taken individually, the actions of the people involved may seem
reasonable. However, when these actions are combined, the effects are
magnified many times and the results can include everything from customer
dissatisfaction to contractual litigation, layoffs, and even bankruptcy.
Customers form expectations of what a software release is supposed to
contain from many sources, including information provided by sales and
marketing and from company literature. If customer expectations are not
met, customers may suffer business repercussions. If this happens for
reasons within control of the company (i.e., the company makes a conscious
decision to not deliver what was promised in order to further their own
goals), one may view this as an example of unethical business practices.
ENTER THE CODE OF ETHICS...
The software engineering community has attempted to deal with issues of
ethics and the many ethical dilemmas often faced by software engineers and
testers by developing a Code of Ethics....
�Professionals see themselves as part of a community of like-minded
individuals who put their professional standards above their individual
self-interest or their employer�s self-interest. In the beginning,
professional societies usually promote the exchange of knowledge. Over
time, their function evolves to include defining certification criteria,
managing certification programs, establishing accreditation standards,
and defining codes of ethics and disciplinary action for violations of
those codes.� [2]
The Code of Ethics adopted by the ACM-IEEE Joint Task Force on Software
Engineering Ethics and Professional Practice states that:
Software engineers shall commit themselves to making the analysis,
specification, design, development, testing and maintenance of software
a beneficial and respected profession. [3]
The Code of Ethics is based on the following 8 principles:
PUBLIC - Software engineers shall act consistently with the public
interest.
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.
PRODUCT - Software engineers shall ensure that their products and
related modifications meet the highest professional standards possible.
JUDGMENT - Software engineers shall maintain integrity and independence
in their professional judgment.
MANAGEMENT - Software engineering managers and leaders shall subscribe
to and promote an ethical approach to the management of software
development and maintenance.
PROFESSION - Software engineers shall advance the integrity and
reputation of the profession consistent with the public interest.
COLLEAGUES - Software engineers shall be fair to and supportive of their
colleagues.
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.
Copyright (c) 1999 by the Association for Computing Machinery, Inc. and
the Institute for Electrical and Electronics Engineers, Inc.
Read more about the Software Engineering Code of Ethics...
(http://www.acm.org/about/se-code)
Having a Code of Ethics is an important part of an engineering profession.
Unfortunately, having this Code of Ethics has had little or no impact on
behavior, primarily due to the fact that, as stated in [1]:
- A large percentage of software professionals do not belong to the IEEE
or the ACM.
- Many individuals working on projects might not be software
professionals, but instead are product or project managers.
- Many ACM and IEEE members are unfamiliar with these ethics codes.
- Even when somewhat familiar with the imperatives, peer, organizational,
or other pressures might be brought to bear.
- In some cases, the imperatives are vague and require study to understand
when they apply to a particular situation.
Ethical behaviors in the software engineering profession don�t get much
attention in the typical undergraduate curriculum.
Lastly, the Code of Ethics has no enforcement mechanism. In the legal
profession, attorneys are licensed. When a licensed attorney is found to have
violated their Code of Ethics http://www.law.cornell.edu/ethics/ny/code/
NY_CODE.HTM), the attorney can be disbarred, effectively preventing that person
from practicing law. Since software engineers and testers are not licensed,
there is no mechanism for addressing unethical behavior.
ULTIMATELY, SOMEONE IS RESPONSIBLE...
Shari Pfleeger [4] identified several interesting scenarios that raise
interesting ethical questions. In the following examples, the question to
ask is Who is responsible?
- Developers work together with customers and users to define requirements
and specify what a proposed system will do. Once it is built, the system
works according to specification but harms someone physically or
financially.
- A system is designed and implemented using off the shelf (COTS)
software. When deployed, the system fails and harms someone physically
or financially as a result of defects in off the shelf (COTS) software.
- An offshore development company is hired to develop a portion of a
software system. When deployed, the system fails and harms someone
physically or financially as a result of defects in the code developed
by the offshore company.
- Your customer requires you to use a specific software development model
when it contracts with you to build them a system. After the software
is delivered and installed, the system experiences a catastrophic
failure.
When the customer investigates, you are accused of not having done code
reviews that would have found the source of the problem before delivery.
You respond that code reviews were not in the required software
development model.
- A test team performs system testing according to an approved test plan.
After delivery, a critical defect is discovered in the customer
environment that results in financial harm to the customer.
- A safety-critical system fails and several lives are lost. When the
cause of the failure is investigated, the inquiry commission discovers
that the test plan neglected to consider the case that caused the system
failure.
Who is responsible?
- The testers for not noticing the missing case?
- The test planners for not writing a complete test plan?
- The managers for not having checked the test plan?
- The customer for not having done a thorough acceptance test?
In addition to these scenarios, there are the situations that we face
everyday where we make decisions using our own internal �Code of Ethics�.
For example:
- We often come up with estimates and schedules that are what the boss
wants to hear rather than what is really required. Is this ethical?
- We often release software with known defects. Is this ethical?
- We often don�t bother to read documents that have been circulated for
review hoping others will catch problems. Is this ethical?
- Management allows sales people to tell customers what they want to hear
in order to get orders. Is this ethical?
There are many more examples like this that people face daily. Every day
we make decisions and take actions that by themselves may seem perfectly
reasonable. What we need to do is recognize that the effects of each of
these actions and decisions are multiplied together and the results can be
catastrophic.
SUMMARY
Behaving in an ethical manner is not always easy when you work in an
industry where, for a very long time, it was very easy to fool people and
mislead customers. Today, customers are a lot more technically perceptive
and managers are not so easily fooled. Today we need to behave in an
ethical manner. There are far too many unscrupulous people in the business
world and their egregious behavior is to a large degree responsible for
the economic mess we are in.
The Code of Ethics really just boils down to one simple principle...
Do the right thing.
Til next time...
--------------------------------------------------------------------------------
*** Monthly Morsels ***
Every month in this space, you�ll find additional information related to
this month�s topic.
References
1 Berenbach, B. and Manfred, B., �Professional and Ethical Dilemmas in
Software Engineering�, IEEE Computer, January 2009.
2 McConnell, S. and Tripp L., �Professional Software Engineering: Fact or
Fiction�, IEEE Software, Nov-Dec 1999.
3 Gotterbarn, D., et. al., �Computer Society and ACM Approve Software
Engineering Code of Ethics�, IEEE Computer, October 1999.
4 Pfleeger, S., Software Engineering - Theory and Practice, Prentice-Hall,
1998.
Additional Resources
- Software Engineering Code of Ethics and Professional Practice, adopted
by Joint ACM-IEEE Task Force
(http://www.acm.org/about/se-code)
- Software Engineering Ethics Research Institute
(http://seeri.etsu.edu/)
- Online Ethics Center at the National Academy of Engineering
(http://www.onlineethics.org/)
- Martin M. and Schinzinger R., Ethics in Engineering, 4th Edition,
McGraw-Hill, 2005
(http://books.google.com/books?id=nJBVhEtOQaQC&dq=software+engineering+ethics)
--------------------------------------------------------------------------------
*** Calendar ***
Every month you�ll find news here about local and national events that
are of interest to the software community...
- Software Quality Calendar
There are many organizations that sponsor monthly meetings, workshops,
and conferences of interest to software professionals. Find out what�s
happening...
(http://www.swqual.com/links/upcoming.html)
- Workshops Offered by Software Quality Consulting
Software Quality Consulting offers workshops in many topics related to
software process improvement. Get more info...
(http://www.swqual.com/seminars/courses.html)
--------------------------------------------------------------------------------
*** About SQC ***
Software Quality Consulting provides consulting, training, and auditing
services tailored to meet the specific needs of clients. We help clients
fine-tune their software development processes and improve the quality of
their software products. The overall goal is to help clients achieve
Predictable Software Development(TM) � so that organizations can consistently
deliver quality software with promised features in the promised timeframe.
To learn more about how we can help your organization, visit our web site
(http://www.swqual.com/index.html?AboutSQC) or send us an email
([email protected]).
--------------------------------------------------------------------------------
I hope this newsletter has been informative and helpful. Your comments and
feedback are most welcome. Send me your feedback...
Thanks,
Steve Rakitin
[email protected]
Food for Thought, Predictable Software Development, Act Like a Customer,
and ALAC are trademarks of Software Quality Consulting, Inc.
Copyright 2009. Software Quality Consulting, Inc. All rights reserved.
Graphic design by Sarah Cole Design.