Upload
vuque
View
213
Download
0
Embed Size (px)
Citation preview
I
A Framework for Ethical Practices in Software
Development Life Cycle: A case study in the Kingdom of
Saudi Arabia
A thesis
Submitted in partial fulfillment of the requirements for the degree of
Masters of Science in Software Engineering
at the College of Computer and Information Science
at Prince Sultan University
By:
Fahdah AlAmmar
February 2016
II
A Framework for Ethical Practices in Software
Development Life Cycle: A case study in the Kingdom of
Saudi Arabia
A thesis
Submitted in partial fulfillment of the requirements for the degree of
Masters of Science in Software Engineering
at the College of Computer and Information Science
at Prince Sultan University
By:
Fahdah AlAmmar
February 2016
IV
ACKNOWLEDGEMENTS
First and foremost, I want to express my highest gratitude to Allah almighty for providing
me guidance, ability, knowledge and patience in completing this thesis. I would like to
express my gratitude for the opportunity to contribute to the field of Software
Engineering. I am mostly thankful to my advisor Prof. Dr. Nor Shahriza Abdul Karim
who has been supportive throughout my studies, and in the completion of this thesis. I
would also like to extend my thanks to all the professors and faculty members, who were
not only lecturers, but also mentors. I am extremely grateful to have been accompanied
by colleagues who became my friends throughout my studies; friends, who were nothing
short of supportive, helpful and motivating.
Special thanks would be addressed to my employer, SADAD Payments System, and its
management team, especially Mr. Abdulmalik Al Sheikh and Mr. Abdulaziz Alafaleg for
their continuous support and guidance. SADAD Payment System, the organization that is
not only serving the community with its services, but helping its staff in growing and
contributing to the community and the country
Most importantly, none of this would have been possible without the love and patience
of my family. My family, to whom this thesis is dedicated to, has been a constant source
of love, support and strength all these years. I would like to express my heart-felt
gratitude to them, as they have aided and encouraged me throughout this endeavor.
Last but not least, my sincere thanks and appreciation go to all my friends who supported
me during my studies, especially Arwa Albuolayan, Nahlah Almashouq and Saba
Hmdan.
V
ABSTRACT
Software engineering code of ethics (SWECOE) is an area within software engineering
that requires more research attention. SWECOE has been acknowledged as an important
area of practice that gives a huge impact on how software affects our daily life. The
degree of harm to the users as a result of using equipment with faulty software
applications highly depends on the ability of software engineers to follow the good
practices in software engineering.
There has not been much research in this area, especially those that focus on how
SWECOE is being practiced and whether there is any effective framework that
practitioners have followed. This study therefore fills the gap in research in this area. The
research’s first objective was to investigate the implementation of software engineering
code of ethics within the software development projects. The objective was achieved by
analyzing documents of policies, procedures, and projects management. This was
followed by interviews with experts and questionnaires responded to by software
engineers. The second and third objectives were to investigate which SWECOE was
perceived to be the most challenging to follow, and which was perceived to be a high risk
category. These objectives were achieved by analyzing responses to questionnaires
distributed to software engineers. The fourth objective was to propose a new
classification of the software engineering code of ethics based on the SDLC phases. This
was achieved by analyzing responses of a questionnaire distributed to software engineers,
who were asked to classify the existing SWECOE based on the SDLC phases. All the
results were collected and analyzed to achieve the last objective which was to propose a
framework of software engineering code of ethics within the software development life
cycle. A new set of SWECOE was then proposed and validated by practitioners in the
field.
The results showed no evidence to indicate the presence of any formal guidelines or
requirements on ethics in software development life cycle within the organization. There
was no indication of awareness of any existing code of ethics as provided by IEEE/ACM.
Also, the risks and challenges in practicing certain areas in the SWECOE framework
VI
were found to be not significantly different, as high risk areas were also found to be
highly challenging to observe and practice. The results can provide a guide for the
organization to prioritize the risk area concerning code of ethics. The existing SWECOE
are addressed in generic terms and need to be made clear at each phase in SDLC; a
categorization of SWECOE at each phase may clearly address the ethical issues and
concerns that may arise at each phase. This categorization can be a guide in the training
of engineers, as well as guide project managers to manage teams that are highly
professional with the delivery of quality products. So, the provision of a new
classification of the software engineering code of ethics based on the software
development life cycle phases can help software engineers better understand, apply,
control and monitor software development projects and ethical practices. A guideline and
policy checklists and tools can be designed to enhance the quality of software
development as a result of this study.
Keywords: Software Engineering, code of ethics, software development life cycle
VII
ملخص البحث
تطوير البرمجيات حياة دورة مجال في األخالقية للممارسات عمل إطار
للبحث اهتماما كبيرا التي تتطلب هندسة البرمجيات إحدى المناطق في نطاق هي البرمجيات هندسيةأخالقيات
ضرر ال درجة. لها اليومي استخدامنا من خالل حياتنا على البرمجيات تأثير على كيفية تأثير كبيرلما لها من :العلمي
هندسة الممارسات الجيدة في مجال لمتابعة مهندسي البرمجيات على قدرة يعتمد إلى حد كبير المستخدمين ىعل
.البرمجيات
ممارسة الكيفية التي يتم بها على التي تركيز في هذا المجال، وجدت األبحاث ليس هناك الكثير من الواضح أنهفمن
هذا البحث، اقترح ولذلك المهندسين.باعه من قبل تيتم ا أي إطار عملما إذا كان هناك و رمجياتهندسة الب أخالقيات
مهندس البرمجيات يمارس كيف وهو فهمحقق هذا البحث هدفه: و .البحوث في هذا المجال من الفجوةهذه ملءل
مهندسي البرمجيات ت التي تواجهالتحديا فيوالتحقيق ،تطوير البرمجياتحياة دورة في أخالقيات وقواعد السلوك
مقابالت مع تاله إجراءإدارة المشاريع. ووثائق . عن طريق تحليل سياسات اجراءاتاألخالقياتهذه وصعوبة اتباع
الممارسات األخالقيةاي والثالث وهم تحديد والهدف الثاني البرمجيات. قبل مهندسيخبراء واستبيانات تم تعبئتها من
تحقيق تمو عالية،نها ذات خطورة أيهم ينظر مهندس البرمجيات أيا تطبيقها وتحد وأكثرصعب أات يهندسة البرمج في
ومبادئ توجيهية هو اقتراح إطارالهدف الرابع و البرمجيات. أماسي دعن طريق استبيانات وزعت لمهن هذه األهداف
ن طريق توزيع استبيان على مهندسي حياة تطوير البرمجيات ع دورة من مراحل مرحلة في كلمهندسي البرمجيات ل
حياة تطوير ساس مراحل دورةأهندسة البرمجيات على في الممارسات األخالقيةبتصنيف اليقوموبرمجيات ال
البرمجيات.
في كلمهندسي البرمجيات ومبادئ توجيهية ل دالئل على وجود إطارأنه ال يوجد هي كانت أهم نتائج البحثمن إنو
ومبادئ إطارود مهندسي البرمجيات بوجو علم أ الشركة،حياة تطوير البرمجيات في دورة من مراحل مرحلة
الممارسات منعتقد مهندسو البرمجيات يفرق بين ما أنه لوحظ أنه ال يوجد مهندسي البرمجيات. كماتوجيهية ل
انها هندسو البرمجيات علىمينظر أيهمومن تطبيقه وأكثر تحديا صعبأ اانهعلى هندسة البرمجيات في األخالقية
.ذات خطورة عالية
كيففهم و ،البرمجيات تطوير حياة دورة في مرحلة في كلمهندسي البرمجيات ومبادئ توجيهية ل اقتراح إطار إن
التحديات التي في والتحقيق تطوير البرمجيات،حياة دورة في قواعد السلوكأخالقيات و برمجياتالمهندس يمارس
هندسية ألخالقيات جديد تصنيفاقتراح كما أن ،األخالقياتهذه وصعوبة اتباع البرمجياتمهندسي تواجه
،مراقبة، تطبيق فهم،على مهندسي البرمجيات يساعدهحياة تطوير البرمجيات دورة مراحل على أساس البرمجيات
العامة الثقة تحسينإلى يؤدي البرمجيات هندسية واتباع أخالقياتاعتماد أنه ا. كمالبرمجياتمهندسي ورصد
مستوى عال من من خالل ةالعام مصالحبال الوفاءب تهتمي الت لسياساتااالجراءات و اتباعخالل من والسمعة
VIII
البابينبالتفصيل في المنهجية المتبعة والنتائج في كما موضح .مستوى من السريةمع هندسة البرمجيات و ممارسات
.4و 3
IX
Table of Contents
DEDICATION ................................................................................................................................... III
ACKNOWLEDGEMENTS .................................................................................................................. IV
ABSTRACT ........................................................................................................................................ V
البحث ملخص ..................................................................................................................................... VII
LIST OF TABLES ......................................................................................................................... XI
LIST OF FIGURES ....................................................................................................................... XII
List of abbreviations ..................................................................................................................... XIII
CHAPTER 1 - INTRODUCTION .................................................................................................. 1
1.1 Background ..................................................................................................................... 1
1.2 The Research Problem ..................................................................................................... 4
1.3 Research Questions ......................................................................................................... 5
1.4 Research Objectives ........................................................................................................ 5
1.5 Research Contribution ..................................................................................................... 5
1.6 Outline of the Thesis ....................................................................................................... 6
CHAPTER 2 - LITERATURE REVIEW ....................................................................................... 7
2.1 Software Engineering and Ethics .................................................................................... 7
2.2 Software Engineering Code of Ethics ........................................................................... 10
2.3 Importance of Software Engineering Code of Ethics .................................................... 12
2.4 Related Research ........................................................................................................... 15
2.5 Summary ....................................................................................................................... 22
CHAPTER 3 – METHODOLOGY ............................................................................................... 23
3.1 Research Approach ........................................................................................................ 23
3.2 Research Design ............................................................................................................ 24
3.3 Case Study ..................................................................................................................... 25
3.4 Data Collection .............................................................................................................. 28
3.5 Data Analysis ................................................................................................................ 31
3.6 Summary ....................................................................................................................... 32
CHAPTER 4 – RESULTS AND DISCUSSION .......................................................................... 33
4.1 How Code of Ethics is Being Implemented in SADAD................................................ 33
4.1.1 Document Analysis ................................................................................................ 33
X
4.1.2 Interview Analysis ......................................................................................................... 38
4.1.3 Questionnaire Analysis .......................................................................................... 51
4.2 Identification of High Risk and Most Challenging SWECOE to Follow ...................... 53
4.2.1 High Risk and Most Challenge SWECOE to Follow ................................................ 53
4.3 SWECOE based on the SDLC Phases ........................................................................... 58
4.3.1 Questionnaire Results ........................................................................................... 59
4.3.2 New Classification of SWECOE based on the SDLC ............................................... 65
4.4 Proposed framework ...................................................................................................... 72
4.5 Validation ...................................................................................................................... 80
4.6 Summary ....................................................................................................................... 83
CHAPTER 5 – CONCLUSION ........................................................................................................... 85
5.1 Summary Findings ............................................................................................................... 85
5.2 Research contribution and recommendation ............................................................... 86
5.3 Research Limitations and Suggestion for Future Research ................................................. 87
REFERENCES .............................................................................................................................. 88
APPENDIX A- Software Engineering Code of Ethics and Professional Practice (Full Version)
PREAMBLE .................................................................................................................................. 94
APPENDIX B - Permission and Approval Letter ........................................................................... 103
Appendix C ................................................................................................................................... 104
APPENDIX D - Sample of the questionnaire ................................................................................ 106
APPENDIX E - Questionnaire Results and Analysis ...................................................................... 110
APPENDIX F – Interviews results .............................................................................................. 119
XI
LIST OF TABLES
Table 2. 1 ACM and IEEE-CS Software Engineering Code of Ethics principles ......................... 11
Table 3. 1 Interviewee Overview .................................................................................................. 29
Table 3. 2 Summary of research objectives and data collection strategies ................................... 30
Table 4. 1 Reasons why having code of ethics is important ......................................................... 40
Table 4.2 Ethical concerns on the requirement phase based on the interviews ............................ 44
Table 4.3 Ethical concerns about the design phase based on the interviews ................................ 46
Table 4.4 Ethical concerns on the coding phase based on the interviews .................................... 47
Table 4.5 Ethical concerns on the testing phase based on the interviews ..................................... 48
Table 4.6 Ethical concerns on the maintenance phase based on the interviews ........................... 50
Table 4. 7 Summary of the ethical concerns about each SDLC phase .......................................... 51
Table 4.8 Ethical concerns about each SDLC phase from the interviewees’ perspectives .......... 51
Table 4.9 Public principle clause based on the risk rating ........................................................... 54
Table 4.10 Client and employer principle clause listed based on the risk rating ......................... 55
Table 4.11 Product clause based on the risk rating along ............................................................ 56
Table 4.12 Judgment principle clause based on the risk rating .................................................... 57
Table 4.13 Questionnaire segmentation analysis .......................................................................... 58
Table 4.14 Public principle clause as aligned with the SDLC phases .......................................... 59
Table 4.15 Client and employer principle clause as aligned with the SDLC phases ................... 60
Table 4.16 Product principle clause as aligned with the SDLC phases ........................................ 62
Table 4.17 Judgment principle clause as aligned with the SDLC phases .................................... 64
Table 4.18 Case 1 .......................................................................................................................... 82
Table 4.19 Case 2 .......................................................................................................................... 82
Table 4. 20 Research objectives and Results ................................................................................. 83
XII
LIST OF FIGURES
Figure 2. 1 e-Government ethics position related to computer ethics, information ethics, cyber
ethics and other applied ethics. .................................................................................................... 18
Figure 3. 1 Research Design Diagram ........................................................................................... 25
Figure 3.2 SADAD Overview (SADAD Payment System official website) ................................ 27
Figure 4.1 Requirement Verification and Validation Guidelines – Criteria for a quality
requirement .................................................................................................................................... 35
Figure 4.2 Requirement Verification and Validation Guidelines – Guidelines for writing
requirements statements ................................................................................................................ 36
Figure 4.3 Requirement Verification and Validation Guidelines – Verifications Guidelines ....... 37
Figure 4. 4 Screen shot from Business Analysis Performance Evaluation Guidelines document . 38
Figure 4. 5 General clauses ........................................................................................................... 66
Figure 4. 6 Requirement Clauses................................................................................................... 67
Figure 4.7 Design Clauses ............................................................................................................. 68
Figure 4.8 Code Clauses ................................................................................................................ 69
Figure 4.9 Test Clauses ................................................................................................................. 70
Figure 4.10 Maintenance Clauses .................................................................................................. 71
Figure 4.11 ACM/IEEE 8 Principles ............................................................................................. 72
Figure 4.12 ACM/IEEE first four principles ................................................................................. 72
Figure 4.13 SDLC Phases.............................................................................................................. 73
Figure 4. 14 New proposed SDLC Code of Ethics Framework ....................................................... 74
XIII
List of abbreviations
SWECOE Software Engineering Code Of Ethics
SDLC Software Development Life Cycle
KSA Kingdom of Saudi Arabia
ACM Association for Computing Machinery
IEEE Institute of Electrical and Electronics Engineers
SAMA Saudi Arabian Monetary Agency
EBPP Electronic Bill Presentment and Payment
BA KPIs Business Analysis Key Performance Indicator
SLR Systematic literature review
ROA Return on Assets
ROE Return on Equity
SEEPP Software Engineering Ethics and Professional Practice
EDSD Ethical-Driven Software Development
1
CHAPTER 1 - INTRODUCTION
‘When the devils will come and visit us, they will not have big horns. It will not hurt; it does not
hurt a living being. It will just arrange to lower our levels of ethics. Just a little. And the rest will
follow...’
Albert Brooks in the movie ‘Broadcast News’
1.1 Background
With the increasing use of electronic equipment into our daily lives, software applications
have become an essential part of our lives. Whether people are aware or not, electronic
equipment has software applications controlling their functionalities. Software
applications affect our lives directly or indirectly, such as, in our work, business
transactions, transportation, education and entertainment. Software development is not an
easy task and, in fact, is a complex process involving requirement gathering, design,
implementation, and testing. This exposes software engineers to many personal
challenges within each process in the development. Software engineers can not only
influence the developing process of software in many ways, but also be influenced by it:
they could engage in unethical behavior, intentionally or unintentionally (Godfrey, 1996),
which may lead to numerous positive and negative consequences. Negatively, these can
cause personal harm, financial collapse, huge lost due to unusable software, and loss of
confidence in software and trust in the organizations that own them. Ultimately, it may
lead to serious legal implications that affect the lives of individuals and organizations at
large (Quigley, 2007).
A huge amount of software is being used on a daily basis and the situation becomes
critical when they affect users negatively. During the process of software development,
engineers face crucial ethical decisions in order to ensure minimal harm to the users. One
way to do this is to seriously consider and review some form of code of ethics software
creation (Gotterbarn, 2001).
2
There are many reasons why it is important to include ethical practices in decisions
regarding software engineering. In software development projects, technical decisions are
usually made from the aspects of technical issues with minimal consideration given to the
impact those decisions might have on the users or other stakeholders. On the contrary,
decisions made in software development projects should consider the ethical dimension
as well as the technical dimension in order to safeguard the software against potential
harm to others (Gotterbarn, 2001). Software engineers have the responsibility to the
engineering profession and society at large. They should be willing to adhere to the
professional code of ethics as part of their contribution to the development of quality
software. Professional codes of ethics do not only require doing the right thing for the
client, but it also includes doing the right thing for the society as well (Godfrey, 1996).
Software code of ethics is an area within software engineering that requires great
attention in research (Lurie & Mark, 2015; Bynun, 2008; Gottenbarn, 1999). Code of
ethics has been acknowledged as an important area of practice that tremendously impact
the quality of software and how it affects lives through the daily use of the computer and
information systems. The degree of harm to the users highly depends on the ability of
software engineers to follow and respect good practices in software engineering (Agarwal
& Garcia, 2006). While the software engineering profession have stressed on the
adherence to the professional conduct and code of ethics, not much is known on how the
code of ethics is being practiced or how adherence is enforced to ensure quality, trust,
commitment, and lack of harm that may occur at each stage of software development
projects.
The existing software engineering code of ethics, as developed by IEEE and ACM can
impose a huge challenge to practitioners. Without a proper mechanism and framework to
ensure clarity, adherence to the standard of practice among software engineers in
software projects can be highly difficult. In developing policies and frameworks, more
understanding is needed on how the elements of this code of conduct are being enforced
and perceived by developers and engineers (Lurie & Mark, 2015). Thus, many studies
should be done at various levels of software development, to understand issues, concerns
and challenges in enforcing some of these elements.
3
This study focuses on describing how the software engineering code of ethics is being
practiced in software development projects based on a case in Saudi Arabia.
Subsequently, the study also seeks to investigate the availability of a framework for
software engineering code of ethics in this context and study the challenges faced by
software engineers in adhering to the ethical principles throughout the software
development life cycle.
In addition, a new classification of the existing IEEE/ACM software engineering code of
ethics based on the software development life cycle phases is identified and proposed.
This reclassification is done for four principles out of the eight IEEE/ACM principles.
The four principles are Public, Client and Employer, Product and Judgment. This is done
to help the researcher better understand the framework, and guide project managers to
apply, control and monitor software engineers’ ethical practices with the software project
life cycle.
Adopting a software engineering code of ethics will improve the public trust and
professional image of the software product by committing that the public interest is being
met through a high standard of software engineering practices and level of confidentiality
(Gotternbarn, Miller & Rogerson, 1999). Similarly, adopting this software engineering
code of ethics can improve internal communication between colleagues as well as
management. Having organizations implement this code of practice may further attract
reliable and dedicated employees who want to be part of a reliable organization
(Association for Computer Machinery & Institute of Electrical and Electronics Engineers
[ACM /IEEE-CS]).
Due to the importance and advantages of adherence to the code of ethics, software
engineers need to be aware of and understand how to comply with these ethical
requirements. In addition to good ethics curriculum in the teaching and learning process,
a good framework is also needed for the engineers to follow effectively during the
development phase of software projects. Similarly, a classification of the software
engineering code of ethics based on the software development life cycle phases will be a
4
good tool to help software engineers to better understand and comply with the code of
ethics.
This research was conducted in an attempt to establish a preliminary framework for
guidelines and practice in software development starting with an investigation of the
current practices to understand and identify ethical concerns within software development
projects.
1.2 The Research Problem
Given the many definitions of ethics, it is clear the subject is regarded as highly important
in the engineering field, especially in software engineering. In the field of software
engineering, Quigley (2007) defines ethics as “…a code of professional standards,
containing aspects of fairness and duty to the profession and the general public.”
Researchers in software engineering have come up with various codes and guidelines to
inform educators and professional practitioners about what ethics are and, most
importantly, to uphold its value in the actual process of software products development
(Gottenbarn, 1999, 2001, 2009). The revised version of the ethical framework was
produced in collaboration between IEEE and ACM, a joint task force with the most
updated Software Engineering Code of Ethics Version 5.2 (SWECOE V 5.2)
(ACM/IEEE-CS Joint Task Force, 2014).
Despite the existence of a detailed ethical code by ACM/IEEE-CS Joint Task Force,
many practitioners remain unaware of its existence and were not able to uphold the
standards in the software development projects. On many occasions, ethical issues arise
due to the lack of awareness, and this has resulted in significant losses and damages to
the individual, organization, and society at large (Volkman, 2011, 2015; Gotterbarn &
Miller, 2009). The most common mechanism used to create awareness is through
academic curriculum as well as corporate training. However, not many academic
programs would impose on SWECOE and few corporate sectors send their developers for
training. Yet, ethical framework is highly needed in order to ensure quality software with
the development of lifecycle itself (Lurie & Mark, 2015).
5
1.3 Research Questions
In view of the motivations and definitions provided earlier, this research was conducted
using the case study method in the context of the Kingdom of Saudi Arabia to answer the
following research questions:
1. How is software engineering code of ethics practiced within the software
development life cycle?
2. Among software engineering codes of ethics established:
o Which are perceived to be the most challenging to be followed?
o Which are perceived as high risk category to be included in the software
development life cycle policy and guidelines?
3. What is the best classification of code of ethics that can be made within each phase of
the software development life cycle?
4. What is the appropriate framework of software engineering code of ethics to be
implemented within the software development life cycle?
1.4 Research Objectives
To investigate how software engineering code of ethics is being implemented within
the software development projects
To investigate which software engineering code of ethics is perceived to be the most
challenging to follow.
To investigate which software engineering code of ethics is perceived to be a high
risk category.
To propose a new classification of the software engineering code of ethics based on
the software development life cycle phases.
To propose a framework of software engineering code of ethics within the software
development life cycle.
1.5 Research Contribution
The contribution of the research are described in the following paragraphs.
6
First, the research offers recommendations that could assist software engineers to comply
with the software engineering code of ethics in software development projects. This can
also help them to focus on the most important and challenging code of ethics, of which
the implication can be severe if overlooked or not followed. The proposed framework can
assist developers in applying software engineering code of ethics within the software
development life cycle and prioritize the code of ethics based on risks and providing a list
which contains items perceived to be the most challenging code of ethics to be followed.
Second, the research provides a new classification of the software engineering code of
ethics based on the software development life cycle phases that can help software
engineers better understand, apply, control and monitor software development projects
following ethical practices.
Third, the research results would enhance research and knowledge in software
engineering code of ethics which is really needed in the field. The framework identified
can contribute significantly into our understanding of ethical concerns among software
engineering professionals. It can assist educators and academicians in enhancing ethics
curriculum and prepare software engineering professionals entering the field. They would
understand the ethical practices and able to adhere to the professional code of conduct.
1.6 Outline of the Thesis
This research was conducted to investigate how a software engineering code of ethics is
practiced in software development project in KSA. The chapters that follow provide a full
report of the thesis and are arranged according to the following: Chapter 2 presents the
Literature Review of related works; Chapter 3 presents the Methodology, which describes
the method used to collect data to answer the research questions; Chapter 4 presents the
Results and Discussion, and the last chapter, Chapter 5 ends with the Conclusion, which
highlights the main findings, proposes a set of recommendation, provides the research
limitation, further research topics and research significance.
7
CHAPTER 2 - LITERATURE REVIEW
This chapter provides a review of the literature on software engineering ethics and related
research areas. In order to survey the literature, a systematic literature review
methodology was used as a guide. Systematic literature review (SLR) “… is a means of
identifying, evaluating and interpreting all available research relevant to a particular
research question, or topic area, or phenomenon of interest. Individual studies
contributing to a systematic review are called primary studies; a systematic review is a
form of a secondary study” (Kitchenha, 2004).
The literature review is intended to provide further understanding of the topic under study
based on published documents and past research. Preferred publications are those which
tackle both the subjects of ethics and software engineering. The review also examined
research which covers topics on computer ethics, information ethics and security,
software engineer profession, software engineering code of ethics. For this purpose,
IEEE, Google Scholar, and Science Direct digital libraries were used to as sources to
collect data that helped in answering the research questions.
2.1 Software Engineering and Ethics
The Oxford English dictionary defines engineering as the “branch of science and
technology concerned with the design, building, and use of engines, machines, and
structures,” and as “…a field of study or activity concerned with modification or
development in a particular area.”
Software, according to Merriam-Webster Dictionary, refers to “the programs that run on a
computer and perform certain functions.” Further, software engineering is defined as “a
branch of computer science that deals with the design, implementation, and maintenance
of complex computer programs,.“
8
Another definition is provided by Mills (1999) who referred to software engineering as
“the systematic design and development of software products and the management of the
software process. “ Software engineering has, as one of its primary objectives, the
production of programs that meet specifications, and are demonstrably accurate,
produced on time, and within budget (Mills, 1999).
Ethics, according to Capurro (1988), is derived from the Greek word "ethos", which
means "way of living". The definition of ethics is provided in the following paragraphs
according to different sources and areas.
Ethics, as illustrated by the Cambridge Dictionary of Philosophy, has been found to be
used alternatively with the term morality and sometimes “…it is used more narrowly to
mean the moral principles of a particular tradition, group or individual” (Deigh, 1995).
Studies of ethics have focused more on the creation of rules to distinguish between right
and wrong. Ethics in a broad sense refers to “the concern of figuring out how to have a
good life” (Vallor, n.d.). On a personal level, it is expressed as an individual’s self-
reflection and continuous strivings to become a better person. As a profession, it is
usually formulated in formal codes or standards such as medical ethics or business ethics
(Vallor, n.d.).
Kaddu (2007) defines ethics as “…a branch of philosophy that is concerned with human
conduct, more specifically the behavior of individuals in society.” Another definition by
Averweg & Erwin (2005) states ethics as “a branch of philosophy that deals with what is
considered to be right and wrong”. Yücel et at. (2009) describe ethics as “a branch of
philosophy that studies morals and values,” While Fieser and Dowden (2011) stated that
“the field of ethics (or moral philosophy) involves systematizing, defending, and
recommending concepts of right and wrong behavior.”
The general perceptions of ethics as a discipline is that it is “the study of value concepts
such as ‘good,’ ‘bad,’ ‘right,’ ‘wrong,’ ‘ought’, applied to actions in relation to group
norms and rules” (Veatch, 1977). Therefore, it deals with many issues fundamental to
decision-making.
9
The Oxford English Dictionary defines ethics as the “moral principles that govern a
person’s behavior or the conducting of an activity”. Another definition for ethics by
Gotterbarn (2001) is “any intentional action that impacts negatively or positively the lives
and values of others”. Likewise, Merriam-Webster Dictionary defines it as “an area of
study that deals with ideas about what is good and bad behavior: a branch of philosophy
dealing with what is morally right or wrong”. Similarly, Pollice (2006) defines it as the
“discipline dealing with what is good and bad and with moral duty and obligation."
Moreover, Paul and Elder (2006) define ethics as “a set of concepts and principles that
guide us in determining what behavior helps or harms sentient creatures.”
Ethics may refer to the norms that guide societal behaviour. Redstone (2014) defines
code of ethics as “…a set of guidelines that defines acceptable behavior for members of a
business or organization.” Usually the organization tailors the code of ethics to fit the
organizational need and create some mechanism to enforce it. According to Berenbach
and Broy (2009), ethics is “…how an individual or an organization ensures that all its
decisions, actions and stakeholders’ interaction 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.”
Brief History
In the early 1940’s during the World War Two, Norbert Wiener, a professor of the
Massachusett Institute of Technology, established Computer Ethics as a field of study
while helping to develop antiaircraft cannon. This project challenges caused Wiener and
a few colleagues to create a new branch of science, which Wiener called “cybernetics”
which refers to the science of information feedback systems (Bynum, 2000).
In software engineering, research pertaining to Code of Ethics took place in 1994, when
the International Task Force formed the Software Engineering Ethics and Professional
Practice (SEEPP). In July 1997, an initial version was shown as a published proposal to
professional societies including ACM’s SIGSOFT (Gotterbarn et al., 1997). During the
10
later part of the year, version 3 was published in IEEE-CS and ACM magazines. Version
4 was then presented to IEEE review process. In October 1998, version 5.2 was
unanimously adopted by ACM and IEEE (Gotterbarn et al., 1999).
Among the content in the preamble of the software engineering code of ethics
(SWECOE) was that: “Software engineers are those who contribute by direct
participation or by teaching, to the analysis, specification, design, development,
certification, maintenance, and testing of software systems. Prevalence of software in
society provides significant opportunities to do good or cause harm, ensure that efforts
are used to do good.” This preamble also indicates that the concept is not intended to be
applied in piecemeal (ACM/IEEE – Joint Task Force, 2014).
2.2 Software Engineering Code of Ethics
Software engineering has evolved from being just an activity of computer science to a
discipline on its own (Vallor, n.d.). A huge amount of software is used on a daily basis
and they become critical when they affect the society causing harm. During the
development of the software, engineers are faced with crucial ethical decisions in order to
ensure minimal harm to the users. In other words, they should review and consider the
ethical dimension while creating the software (Gotterbarn, 2001).
Quigley (2007) in his evaluation of software engineering as a profession defines ethics as
“a code of professional standards, containing aspects of fairness and duty to the
profession and the general public.” This will be passed on to the users as good practices.
The Association for Computing Machinery (ACM) and the IEEE Computer Society
(IEEE-CS) are known for the many activities that they have jointly undertaken through
the years. These cooperative activities include: conference sponsorship; a joint
membership agreement; joint publication of journals and conference proceedings, and
educational curricula; cooperation in Digital Library metadata exchange joint sponsorship
of awards and committees; and an accreditation board a shared speakers program.
(ACM/IEEE-CS Joint Task Force, 2014).
11
At the end of 1998, ACM and the IEEE-CS jointly approved Software Engineering Code
of Ethics and Professional Practice to encourage software engineers to undertake positive
actions and to resist pressures to act unethically (ACM/IEEE-CS Joint Task Force, 2014).
This code of ethics went through an extensive review process that concluded with an
official common approval by the leadership of both organizations.
The code of ethics contains a number of clauses classified under eight principles that
software engineers need to adhere when developing software. In accordance with their
commitment to the welfare of the public, two versions of this code were released; the full
version included the detail clauses under each principle (ACM/IEEE-CS Joint Task
Force, 2014). Appendix A refers to the full version of ACM/IEEE Software Engineering
Code of Ethics. A short version of the code summarizes the goal of the concept as
provided in the following table:
Table 2. 1 ACM and IEEE-CS Software Engineering Code of Ethics principles
Principle Description
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.
MANAGEMEN
T
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.
This code of ethics adopted by ACM-IEEE Joint Task Force on Software Engineering
Ethics and Professional Practice states that:
12
“Software engineers shall commit themselves to making the analysis, specification,
design development, testing, and maintenance of software a beneficial and respected
profession” (Gotterbarn et at., 1999) .
Gotterbarn and Miller (2009) studied how code can help software engineers make
complex decisions, either technical or ethical, which are better for the public, profession
and the engineer. This was done by presenting three cases, one fictional and two based on
news reports and how using this code as a decision-making aid when conflict arises.
Evans (2012) explored the IEEE Code of Conduct and issues of privacy, badware, and
net neutrality in regards of what obligations fall on the software engineer to act ethically
in their development of software.
2.3 Importance of Software Engineering Code of Ethics
This section will present the review of ethics and the importance of having SWECOE as
found in the literature.
Rogerson (2002) discussed briefly the need for having an effective code of ethics and
practice in the field of information and communication technology. The benefits of
adapting Software Engineering Code of Ethics and Professional Practice and how this
code provides clear guidance on how to make decisions related to software development
were also listed. The benefits relate to the idea that when the public are aware that the
organization is adapting to such a code of ethics, this will increase reputation and the
public trust, as they are confident that the organization is producing a high standard of
quality. Adopting this code of ethics will attract dedicated and hardworking employees as
they know that the organization is complying with high standards and aims to produce
high quality software. Moreover, adopting the Software Engineering Code of Ethics and
Professional Practice provides a clear guidance on how to make decisions related to
software development (Rogerson, 2002).
Godfrey (1996) identified the importance of software engineering code of ethics and the
reasons why ethics should be taught in software engineering courses. The paper started
by emphasizing on the wide use of equipment nowadays, and how equipment is
13
controlled by software, that went through a complex development and production
process. In the process, software engineers can influence the software in many ways, for
example, they could engage in an unethical behavior, intentionally or unintentionally, as
mentioned earlier. Software engineers have a responsibility to the engineering profession
and society and should be willing to adhere to the professional code of ethics.
Professional codes of ethics require doing the right thing for the client, and also the
society at large (Godfrey, 1996).
According to Godfrey, there should be a course in code of ethics, and proposes that it
should be taught in a five-stage process. The first stage is to establish the need for ethical
behavior. The second stage requires an understanding of ethical concepts and theories.
The third stage introduces the idea of the code of ethics. The fourth stage applies the
ethics rules and theory in different scenarios to explore all possible actions. The final
stage, present an ethical situation for students to reflect upon their critical thinking and
and offer solutions to the problem (Godfrey, 1996).
Today, people depend on software for almost everything. You would not see any car, for
example, without software for their safe operations, or a bridge built without the use of
sophisticated software to calculate the material strength and expected load, and to design
resilience. Any software failure, such as a poorly designed gas tank, can result in a
disaster, causing serious injuries to the users and sometimes even death (Vallor, n.d.).
Regardless of the purpose of the software, if the software fails to act in a trustworthy
manner this would usually lead to harm. Harm differs based on the type, size, and the
purpose of the software. Harm can be minor such as in scheduler systems. However, in
other more critical systems such as aircraft controlling application or application that
controls medical devices, the harm can be massive as it can be a matter of life or death.
This explains why such critical systems are costly as the software engineers would have
spent more time to ensure their quality compared to simpler non-critical systems such as
a television control software where the consequence of failure would merely be that we
cannot watch a desired program (Pollice, 2006).
14
Nonetheless, harm is often unintentional. For example, doctors being human would
sometimes make wrong diagnoses and treatments which lead to harm to their patients.
Likewise, software engineers may release unknowingly software that contains defects
that causes harm. So we need to limit the harm of intentional as well as unintentional
defects. We need to introduce and enforce a code of ethics (Pollice, 2006).
There is a lot of ethical concerns related to software and information technology, such as,
intellectual property of the software product, privacy of the personal data, intrusions,
fraud, and so on. In this research we are focusing on the ethical concerns that are the
responsibility of the software engineers when developing software, where misconduct
may result in delivering faulty software that will provide an unintended and undesirable
consequence (Génova et al., 2006).
Developing software varies from an easy process for a very simple small program to a
very complex process for critical systems, especially for distributed, networked and
heterogeneous systems (Génova et al., 2006). The main purpose of codes of ethics for
any profession is to avoid harm to others through professional conduct. We can
distinguish between harm because of a software failure and harm because of a software
misuse. But, again we need to consider that if the software is intentionally designed to
spy or to commit a fraud, then it is the software engineer’s (designer) responsibility to be
fully accountable (Génova et al., 2006). One of the ethical concepts that will reduce such
harm is that software engineers should take full responsibility for their work and act upon
it. Pollice (2006) mentioned aptly that “if we are going to trust software, we must trust
the people who build it.”
A code of ethics gives an indication of the organizational culture to the employees as well
as the public (Landers, 2014). The code serves as the organization’s ethics and should be
integral to its communications strategy. It also serves as an annual assessment tool for
continuous improvement (Collins, 2012).
15
2.4 Related Research
Several studies were found related to ethics and technology in the literature. For example,
Shakib and Layton (2014) studied the interaction between ethics and technology. At first
glance, there appears to be no interaction between ethics and technology. However, there
is an influence on technology from ethics, from the profession and public perspectives. In
addition, Agarwal and Garcia (2006) concurred that some research that has been done in
the area of computer ethics mainly focused on how computer technology should be used.
Among the popular research works are those covering the concept of integrity,
confidentiality, intellectual property, and privacy along with an explanation for each,
such as Bynum (2008), Thomson and Schmoldt (2001) and Taherdoost et al. (2011).
The authors established that every person should understand that there are right and
wrong way to do things and the person should do the right things, even when he or she
does not like it. However, there is no absolute general agreement on what is considered
right or wrong. Ethics can help software engineers to avoid wrong actions and respond to
misconduct by showing what decisions the engineer can take, and allowing them to
differentiate between good and bad software applications. From an ethical perspective,
technology improvement should protect human values while enhancing computer
software (Shakib and Layton, 2014).
A study of ethics helps in improving the education of engineers in providing guidelines
for decision making during the development process. Collins (2012) identified six
reasons why computer ethics should be studied. They are as listed:
We should study computer ethics because doing so will make us behave like
responsible professionals.
We should study computer ethics because doing so will teach us how to avoid
computer abuse and catastrophes.
We should study computer ethics because the advance of computing technology
will continue to create temporary policy vacuums.
We should study computer ethics because the use of computing permanently
transforms certain ethical issues to the degree that their alterations require
independent study.
16
We should study computer ethics because the use of computing technology
creates, and will continue to create, novel ethical issues that require special study.
We should study computer ethics because the set of novel and transformed issues
is large enough and coherent enough to define a new field.
The code of ethics was developed due to increasing ambiguity of issues related to ethical
concerns, and used to minimize this ambiguity by creating guidelines to apply when
making decisions (Collins, 2012).
Taherdoost et al.,(2011) proposed an educational plan for computer ethics and
information security as they were concerned that computer technology may raise some
unethical issues with the current life style, especially with the number and type of
computer applications that have dramatically increased each year as well as their impact.
After defining computer ethics as “…the analysis of the nature and social impact of
computer technology and the corresponding formulation and justification of policies for
the ethical use of such a technology” and explaining the importance of teaching code of
ethics to students, they suggested a list of applicable topics that can be part of the
computer ethics course such as computer crime, privacy, intellectual property, accuracy,
accessibility, morality, and awareness (Taherdoost et al., 2011).
Dodig-Crnkovic and Feldt (2009) discussed the significance of teaching professional,
social and ethical issues in Software Engineering in a Swedish context and practice. The
objective of including ethics is to increase the ability of future professionals to identify
and address ethical problems, to accept different ethical perspectives, and allow for
ethical variety. A course on Ethics would help develop the skills of rational thinking by
studying examples of teaching materials from other universities and how the participants
can discover important factors that may influence their professional judgment and
decision making.
Moreover, Rodeno et al., proposed a 30-hour course on Computer Ethics at the European
Computer Science Universities. The aim of the course is to teach students the basis for
ethical decision-making and methodology for computing matters, with the final objective
of having the students do well in their jobs as a service to society. This would meet the
17
professional associations’ requirement, as part of their accreditation as a computer
scientist (Rodeño et al., n.d.).
Maner (1996) argued that computer ethics is an academic filed in its own right with
unique ethical issues that would not have existed if computer technology had not been
invented. Thus, it is a field worth further study. Bynum (2008) explored the historical
information about computer ethics which consisted of mainly the foundation of computer
and information ethics and their respective definitions. Different topics in computer
ethics were discussed such as computer crime and computer security which are obvious
and crucial topics of concern in the field of computer ethics. The authors identified that
the problem is not just related to the physical security of the hardware, but rather a logical
security, which is divided into five aspects:
1. Privacy and confidentiality
2. Integrity — assuring that data and programs are not modified without proper
authority
3. Unimpaired service
4. Consistency — ensuring that the data and behavior we see today will be the same
tomorrow
5. Controlling access to resource
Agarwal and Garcia (2006) explored the history of computer ethics and it has grown over
the years as a discipline. They concurred that ethics is a dynamic and complex field of
study, which cover both social as well as personal policies for the ethical use of
technology. Therefore, it was maintained that computer ethics is “the analysis of nature
and social impact of computer technology and the corresponding formulation and
justification of policies for the ethical use of technology” (Agarwal & Garcia, 2006). This
research can, therefore, lead to further needed research in order to establish a deeper and
common understanding of ethics.
Ramadhan et al. (2011) brought the topic of e-Government ethics by defining and
formulating the issues of e- Government ethics, and explaining three types of applied
18
ethics which are computer ethics, information ethics and cyber ethics. This was done by
by first providing a definition of ethics followed by a discussion on issues associated with
it. The researchers proposed the position of e-Government ethics in relation to other
applied ethics, as shown in Figure 2.1.
Figure 2. 1 e-Government ethics position related to computer ethics, information ethics, cyber ethics and other applied ethics.
Al-A’ali (2008) studied the ethical behavior of Muslim IT professionals in an attempt to
stop unethical practices such as, software intellectual property violation and software
privacy. The study examined the principles of computer ethics presented by the ACM
code of conduct from an Islamic point of view by several relevant verses from the Holy
Quran and Hadiths of Prophet Mohammed (peace be upon him).
Likewise, Hameed et al. (2010) focused their investigation mainly on adopting an
enhanced version of software engineering principle based on Islamic ethical values to
help Muslim software engineers to understand ethics and implement them in their work.
As a result, a web-based database mode for Islamic ethics was developed.
Volkman (2015) studied the nature of computer ethics arguing that computer ethics
beyond simple compliance will have to be diverse and sensitive to the starting places of
various audiences. Earlier, Aljyu et al. (2010) examined the awareness of computer
ethics and security of undergraduate computer science students at the University of
19
Technology Malaysia and International Islamic University of Malaysia. The finding
indicated that there are satisfactory levels of awareness and male students reported a
higher level of violations than female. The findings indicated that female students are
more aware of ethics while using computer than male students.
Taherdoost et al. (2013) studied different conceptions and frameworks of computer ethics
from different perspectives. This review of many models and scenarios of computer
ethics indicates the need for this important topic for the current technology development.
In addition, previous studies show the need for computer ethics courses in educational
systems. As the future of education becomes more technology-driven and technology-
dependent, further studies are necessary for analyzing and anticipating the impact of such
trends. Scholarly research and empirical evidence of computer ethics behavior and the
effectiveness of various computer ethics policies and instructions are needed to enrich
and add to the existing body of research.
Heersmink et al., (2011) created the first bibliometric mapping analysis of computer and
information ethics. The map gives an overview and shows the relations between
information technology and ethical concepts. Moor (1985), on the other hand, discussed
what makes the computer different from other technology and how this influences ethical
consideration.
Thomson and Schmoldt (2001) examined the current ethical issues of software
development in relation to privacy, accuracy, property, accessibility, and effects on
quality of life. In their discussion, the authors stated that using an ethical approach to
software development may lead to the significantly increased likelihood of system
success. They also argued that in any system design methodology, the engineer should
not only focus on how the system and information should be used, but also on how the
system should not be used (Thomson and Schmoldt, 2001).
In the field of software engineering, massive research was conducted in the early and late
1990’s led by Gotterbarn and his team and jointly sponsored by ACM and IEEE
20
(Gotterbarn et al., 1997, 1998, 1999). The purpose was to identify a set of code of ethics
to be used not only as a guideline for professionals in the field, but also to educate them.
The ACM/IEEE code of ethics was established with eight principles, as follows:
1.1 Contribute to society and human well-being
1.2 Avoid harm to others
1.3 Be honest and trustworthy
1.4 Be fair and do not discriminate
1.5 Honor property rights including copyrights and patent
1.6 Give proper credit to intellectual property
1.7 Respect the privacy of others
1.8 Honor confidentiality
Research as reviewed above, have become the catalyst to more research in the field of
Software Engineering code of ethics. The establishment of the Software Engineering
Code of Ethics (SWECOE) has become the backbone in research and practice in this area
and the foundation for the establishment of an ethical framework for professionalism.
Lurie and Mark (2015) proposed an ethical framework for software engineers by
proposing an approach to fundamental tasks of the practitioners: to deal with challenges,
non-successes and failures in software development projects. This is called ethical-driven
software development. The researchers also stated that following an ethical approach
would lead to better engineers. For example, as there are different solutions for a
problem, an ethical framework will provide a guideline within the software development
process that will help the engineer to evaluate the advantages and disadvantages of each
solution (Lurie & Mark, 2015).
The ethical framework is an Ethical-Driven Software Development (EDSD) which is
inherently connected to the day-to-day activities of the software engineer in developing a
software. The proposed ethical framework is a set of yes/no ethical questions related to
each software development phase that each stakeholder must be aware before each phase.
The EDSD Yes or No Questionnaire is given in the following list:
Initiation phase
1. Are there criteria for adjusting the organization to examine the initiation?
2. Are there criteria for approval of product initiation, which should be particularly
demanding in fields where the organization or developer is not an expert?
21
3. Are there criteria to which the supplier accordingly agrees to offer a product that is
being developed for a new field?
4. Is the supplier knowledgeable enough about the resources with which s/he must work?
5. Is there a mechanism to ensure that supplier agreement pertaining to the project at hand
was obtained only after determining whether the organization or developer has the ability
to carry out the project?
6. Has it been determined who would make decisions on behalf of the client?
7. Has it been determined who would approve the budgetary flexibility for project
management?
8. Has it been determined who would be the authority who deals with the abnormalities in
the scope of work?
Requirements phase
1. Has it been determined who would define the requirements?
2. Are there mechanisms in place to determine the path of action when one or more of the
functional requirements cannot be achieved is discovered?
3. Are there mechanisms in place to determine the path of action when the customer is
demanding?
4. Is there a procedure in place to define the course of action if, during the planning
requirements phases, it is discovered that fulfilling the customer’s demand will lead to
negative consequences and possibly contradictory and illegal outcomes?
5. Is there a mechanism in place to prioritize requirements?
Design phase
1. Are conditions set to determine the level of commitment to developing a reuse
approach?
2. Are conditions set to determine the level of commitment to the development of all
standards methodology—for example, Design Pattern in object-oriented analysis and
design (OOAD)?
3. Would it be easy to fit in the design diagrams?
4. Do you think you should use more design diagrams?
5. Can someone who is not an expert fit in the diagrams?
6. Are the diagrams clear enough?
7. Is there sufficient attention to details?
8. Is the level of detail sufficient?
Development phase
1. Are conditions set to select the encoding language?
2. Are conditions in place for integrating young and less experienced developers?
3. Are conditions in place for integrating the advanced capabilities of the code
management? What are the timings and environmental parameters
4. Is it easy to orientate the code you wrote?
5. Do the comments have sufficient clarity?
6. Is the code compatible with the design diagrams?
Testing and verification phase
22
1. Has the level of allowed errors been determined before there is a transfer of the
product to acceptance testing been set?
2. Is a mechanism that distinguishes between a quality product and
a correct product in place?
3. Is a mechanism that determines whether the required tests were performed in place?
4. Is there a set of mandatory tests?
5. Are the metrics for determining the level of required tester training defined?
(Lurie and Mark, 2015)
2.5 Summary
The main reason for choosing this research topic is that there is limited research in the
area of software engineering code of ethics practices within software development
projects. The relevant research reviewed was mainly in the area of computer ethics and
information security ethics rather than software engineering ethics. Moreover, the
available research on software engineering ethics mainly describes the importance of
ethics in the field of software engineering, and why and how ethics should be added to
software engineering curriculum.
This research found out for the first time that ACM and the IEEE-CS jointly approved
Software Engineering Code of Ethics and Professional Practice, and this factor provided
strong support to the purpose of the research as it was not part of my study. The study
fills the gap in research in this area, especially on how ethics is being practiced within
software development projects.
23
CHAPTER 3 – METHODOLOGY
In this chapter, the research approach is explained in detail. The case and unit analysis are
described and defined. The research instruments are described along with the methods
used to answer the research questions and fulfill the research objectives. The chapter
concludes with a presentation of the research analysis.
3.1 Research Approach
This research is categorized as an exploratory case study. This means that this research is
qualitative in nature. A case study research is an exploratory investigation of a particular
existing phenomenon within its real life environment using various sources of evidence
(Runeson et al., 2012).
According to Baxter and Jack (2008), “..qualitative case study methodology provides
tools for researchers to study complex phenomena within their contexts. When the
approach is applied correctly, it becomes a valuable method for health science research to
develop theory, evaluate programs, and develop interventions” (Baxter & Jack, 2008).
Runesan et al. (2012) stated that case study research strategy is commonly used in areas
such as psychology, sociology, social work, etc., not only to increase knowledge but also
to improve education or social care. Moreover, software engineering research usually has
similar high-level objectives which are to understand how and why software engineering
should be undertaken to improve the software engineering process and the software
product (Runeson et al., 2012).
In software engineering, the term case study is used parallel with terms like observational
study and field study (Runeson et al., 2012). Runeson & Host (2009) defines case study as
“… a strategy for doing research that involves an empirical investigation of a particular
contemporary phenomenon within its context using multiple sources of evidence.”
24
Likewise, Yin defined case study as “… an empirical inquiry that investigates a
contemporary phenomenon within its real-life context, especially when the boundaries
between the phenomenon and its context are not clearly evident” (Yin, 2003). Runeson et
al. (2012) defined case study in software engineering as “an empirical enquiry that draws
on multiple sources of evidence to investigate one instance (or a small number of
instances) of a contemporary software engineering phenomenon within its real-life
context, especially when the boundary between phenomenon and context cannot be
clearly specified.”
This research is, therefore, following an exploratory case study research approach, as
defined earlier, to explore, study and analyze how software code of ethics is being
applied throughout the software development life cycle.
3.2 Research Design
In this research, we investigated how ethics is being practiced within software
development projects. In addition, this research was also carried out to understand how
the ethical clauses are used and understood, and the degree of challenge and risk as
perceived by the engineers and developers on the first four principles of the Code of
Ethics and Professional Practice by ACM and the IEEE-CS. Finally, this research also
seeks to propose a new classification for the four principles of the code of ethics based on
the software development life cycle phases.
This study used different data collection techniques to research as suggested by Yin
(2013). Both qualitative and quantitative data collection analyses are used in order to
achieve the research objectives. Qualitative data collection techniques such as in-depth
interviews can provide rich and in-depth information about the experiences of individuals
(DiCicco-Bloom & Crabtree, 2006).
The research methodology that was used in this research followed the case research
design suggested by Yin (2013), as discussed earlier. The design started with problem
identification, followed by a literature review of relevant studies, and data collection
using questionnaire, interviews and document analysis. After that, the results were
25
analyzed using content analysis and analyses, in order to answer the research questions
and achieve the research objectives. Based on the framework derived from the findings, a
scenario-based session was conducted to validate the framework. Figure 3.1 shows the
research approach followed in this study.
Figure 3. 1 Research Design Diagram
3.3 Case Study
The case study is based on the SADAD Payment system. The business nature of SADAD
is that it hosts many software projects and employs more than 100 software engineers.
The company builds critical systems that provide important services to the customers.
Many projects under this category will go through the common SDLC (Software
Development Life Cycle) and waterfall techniques. All these projects involve the
development of application systems that undergo constant changes to adapt new
technologies (such as Oracle upgrades), information update (i.e., address issues), fixes,
and constant changes in customer requirements, etc. Therefore, this company is seen as a
good fit for the case studied in this research. Moreover, having the researcher as one of
the company employees provided the advantage by having an easy access to the
organization’s information in order to collect data and complete the research.
26
SADAD was launched on October 3, 2004 by the Saudi Arabian Monetary Agency
(SAMA). It acts as an Electronic Bill Presentment and Payment (EBPP) system for the
Saudi nation by streamlining bill payment transactions of end customers through all
banking channels in KSA. This EBPP system intricately links banks in Saudi Arabia with
a respectful number of medium to large sized billers such as government agencies and
private businesses (SADAD Payment System official website). Before SADAD was
created, in order for an end-user to pay his bill, he would need to visit the biller branches
or make payments through specific banks. Nearly 60 to 70 per cent of bills were paid
through bank branches in cash. This was costing the banks more than the profits they
were making (AL-Adwan et al., 2013).
Before SADAD, some major billers attempted to enhance its customer service by
enabling their customers to use their bank channels to pay bills from any banks in KSA.
This required a connection within banks. Similarly, each bank will connect separately
with each biller. Then, SAMA introduced SADAD to facilitate the payments by having a
single platform that links different billers and banks to enable customers to use the banks’
respective electronic channels (AL-Adwan et al., 2013). Figure 3.2 provides an overview
of how the organization functions in relation to its customers.
SADAD’s vision is “One solution for all payments.” Similarly, SADAD’s mission is “To
develop new payment products and services to lead the financial services sector towards
high levels of service, for individuals, business and government sectors. This will be
achieved through the development and operation of an efficient and secure infrastructure
based on national and international standards and in accordance with industry recognized
best practice” (SADAD Payment System official website).
27
Figure 3.2 SADAD Overview (SADAD Payment System official website)
A number of research has been conducted using SADAD as a case study. One research
by AL-Adwan et al. (2013) studied the impact of having an electronic bill payment on
banks’ profitability. The research focused on SADAD’s Electronic Bill Presentment and
Payment system’s impact with reference to banks’ profitability by focusing mainly on
Return on Assets (ROA) and Return on Equity (ROE). The study presented three
different arguments on the relation between technology and profitability: the first group
believes that there is a link between technology and profitability, the second group argues
that there is no link between technology and profitability, while the third group believes
that there is a link between profitability and technology with reference to network impact.
The study was conducted by presenting an empirical study of the Saudi e-payment
system. By looking into these six pillars: Convenience, Different Choice, Cost reduction,
Security and Accessibility, the statistical analysis of ROA and ROE showed the
significant role of e-payment in enhancing banks profitability.
Another research by Al Sudairi et al. provided a thorough description of SADAD, the
purpose of SADAD, and listed the advantages of using SADAD for banks, billers and
end users.
In the current study, after SADAD was selected as the focus of the case study, contact
was established with the organization in order to acquire permission to conduct the field
work. Appendix B shows the permission and approval letter received to conduct the
research in the organization, subject to confidentiality.
28
Field visits to the research site started with the analysis of documents on policies,
procedures, and projects management. This is followed by interviews with experts and
questionnaires filled by software engineers. Interviews were conducted with software
development project team members who are working on different software development
projects and holding various positions. This was carried out to investigate how Software
engineering code of ethics is being implemented within the software development
projects, and to help in developing the proposed framework of the software engineering
code of ethics.
Likewise, the questionnaires were distributed to software engineers with various years of
experience. The purpose is to answer the research questions by continuing to understand
how the code of ethics under investigation can be categorized based on the SDLC phases,
and to understand each ethical clause level of challenge and risk perceived by the
participants.
After analyzing all results, a SWECOE framework was proposed. This proposed
framework was evaluated by practitioners in the field. Following this, a scenario-based
simulation was conducted to validate some elements in the framework. A session was
conducted with three practitioners to validate the framework using actual cases of two of
SADAD projects. These cases become the scenario for simulation. The simulation was
developed and conducted to test the situation with and without the placement of the
proposed SWECOE in the research framework. The factors tested in the simulation were
cost and time. The simulation was further verified by practitioners in the field during the
session.
3.4 Data Collection
Three types of data collection methods were used in order to achieve the research
objectives using the case study approach (Lethbridge et al., 2005; Merriam, 1998). In
order to meet the research objective which is to investigate how Software engineering
code of ethics is being implemented within the software development projects in
SADAD, SADAD documents, policies, procedures and project documentations, were
procured and analyzed.
29
In addition, unstructured preliminary interviews were conducted with three of SADAD
software engineers with minimum seven years of experience in software development.
Table 3.1 provides the overview of the interviewee profile. The interview questions are
provided in Appendix C.
After conducting and analyzing the interviews, the results of the analysis were later used
to refine the questionnaires before distribution to software engineers. The questions went
through several validation processes from two engineers until it was agreed that the final
version was clear and addressed the research objectives. Google drive was used to
administer the questionnaire. Appendix D provides the sample questionnaire used. As a
result of the survey administration, 17 responses were received from engineers with
different years of experience. This number was considered sufficient for analysis as the
result and discussion were qualitative. The responses allowed the researcher to establish a
Table 3. 1 Interviewee Overview
Interviewee Years of
experience Role
Role description
1-
6 years Quality control
manager
product verification
1 year Quality assurance
manager
To make sure that all the SDLC processes
meet the agreed standards
2- 7 years
Business Analyst
& service change
manager
As a change manager, we facilitate the
changes of SADAD system which is the
EBPP. There are 3 types of changes: new
business for biller or bank, enhancement of
current feature of fixes to our system.
As BA, we collect the requirements for
these changes, to elicit the requirement,
validate the requirement and then
document them, get the approval from the
stakeholder and then go through again the
change management process.
3- 10 years
Software
development
manager
30
sound knowledge on the categorization of code of ethics based on their background and
experiences.
Table 3.2 below shows the summary of research objectives and data collection strategies.
As outlined by Yin (2003) and Lethbridge et al. (2005), a case study research method
allows for multiple data collection points, based on the purpose and nature of the research
questions. Different research questions may require different techniques in data
collection. The evidence was later compiled to match the overall objectives of the
research.
Table 3. 2 Summary of research objectives and data collection strategies
# Research objectives
Description of the method
1.
To investigate how Software
engineering code of ethics is being
implemented within the software
development projects
A case study by analyzing how code of ethics is
being practiced on a well-known financial company
in Saudi Arabia (SADAD).
Reading and analyzing policies, procedures and
projects documents.
Interview software engineers
2. To investigate which software
engineering code of ethics is perceived
to be the most challenging to follow.
A case study by analyzing how code of ethics is
being practiced on a well-known financial company
in Saudi Arabia (SADAD).
Interview software engineers
Distribute questionnaire
3. To investigate which software
engineering code of ethics is perceived
to be of a high risk.
A case study by analyzing how code of ethics is
being practiced on a well-known financial company
in Saudi Arabia (SADAD).
Reading and analyzing policies, procedures and
projects documents.
Interview software engineers
Distribute questionnaire
4.
To propose a classification of the
software engineering code of ethics
based on the software development
life cycle phases.
Distribute questionnaire
5. To propose a framework of software
engineering code of ethics within the
Analysis of evidence from all data collection
techniques
31
software development life cycle. Scenario-based simulation conducted with
practitioners to validate the framework
3.5 Data Analysis
Data analysis was conducted using qualitative technique of content analysis suggested by
Yin (2003) and Huberman et al., (2002) and descriptive analysis based on rating in scale
and count. The data was analyzed using purposefulness technique by gathering evidence
that helped answer the research questions. No relationship analysis was established
between constructs or variables as this was not part of the research objective. For
qualitative data gathered from interviews the tools used for the analysis was Excel
spreadsheet where data was tabulated in tables through logical coding that relates to the
research problem. An example of how data is tabulated is provided in Appendix F. The
coding helped in classifying the responses and establishing patterns, which further
allowed answering the research questions. The results are presented in Chapter 5, in a
manner that shows how each finding is mapped to the responses. Common analysis tool
like NVivo or Atlasti for analyzing text are not used because the text amount was
considered manageable by using only Excel.
Other types of analysis involved descriptive statistical analysis using counts and averages
to describe the frequency of the respondents’ responses. This is also followed by the
assignment of rating and weight score in the analysis.
Based on the literature review and the results of the analyses of the interviews and
survey, a draft of a framework was developed. The framework provided an overview of
how the software code of ethics could be used and made available at each phase of the
SDLC. This framework is only meant as a guide for the development of better quality
software and research guidelines.
A session with three practitioners to validate the framework using actual cases of two of
SADAD projects was conducted. Based on the scenario of the actual event, a simulation
is developed and conducted to test the situation with and without SWECOE, as proposed
32
in the study framework. The factors tested in the validation were cost and time. The
scenarios were verified by the practitioners during the session.
3.6 Summary
The research followed the case study research approach, as defined earlier, by analyzing
the documents of software development projects of one company, which is SADAD.
Unstructured interviews were conducted with experienced software engineers who were
working on different software development projects and holding various different
positions to study and analyze how software code of ethics was being applied throughout
the software development life cycle. In addition, questionnaires were distributed to
software engineers with different years of experience to investigate which software
engineering code of ethics was perceived to be the most challenging to follow and which
was perceived to be of a high risk category. Consequently, a framework of software
engineering code of ethics was proposed based on the SDLC phases. Finally, a scenario-
based session was conducted with practitioners to validate some elements in the
framework.
33
CHAPTER 4 – RESULTS AND DISCUSSION
This section presents the results of the study, and fulfills the objectives of this research.
These are identified as follow: to investigate how Software engineering code of ethics is
being implemented within the software development projects, to investigate which
software engineering code of ethics are perceived to be the most challenging to follow, to
investigate which software engineering code of ethics are perceived to be of a high risk
category, to identify an appropriate classification of the software engineering code of
ethics based on the software development life cycle phases, and to propose a framework
of software engineering code of ethics within the software development life cycle.
The results presented in this section are organized according to several subsections: how
code of ethics is being implemented, identification of high risk and most challenging to
follow SWECOE, SWECOE classified based on the SDLC phases, and a proposed code
of ethics framework at each SDLC. In each of these sections, evidence is provided
through a combination analysis using the case study approach with multiple sources of
evidence. They are document analysis, interviews, and questionnaires; followed by
scenario-based session conducted with practitioners in the field to validate the
framework.
4.1 How Code of Ethics is Being Implemented in SADAD
In order to investigate how Software engineering code of ethics is being implemented
within the software development projects (objective 1) in the case study, SADAD’s
project documents, policies and procedures were retrieved and analyzed. In addition, a set
of interviews were conducted with software engineers who worked in software
development projects in SADAD, and questionnaires were distributed to 17 software
engineers.
4.1.1 Document Analysis
In this section, SADAD documents were collected and analyzed for evidence of any
statements that request practitioners (employees, engineers, concerned stakeholders) to
observe any forms of code of conduct or address any matters pertaining to ethics or
34
ethical concern in software development. This resulted in the analysis of two relevant
documents, namely Requirement Verification and Validation Guidelines (RVVG), and
Business Analysis Performance Evaluation Guidelines (BAPEG).
Based on the analysis of the two documents, it was observed that software engineering
code of ethics was not documented explicitly as a separate code of ethics guidelines or
policy requirements. Many were written as part of other guidelines within development
process requirements.
The two sections describe the documents that were analyzed in the research, and indicate
how and in what manner they are being used and addressed in the company.
a. Requirement Verifications and Validation Guidelines
This document provides guidelines for verifying and validating stakeholder requirements.
This document is primarily intended for the business analysis team in order to help them
write verified and valid requirements free of common defects. Moreover, this document
is intended for other stakeholders concerned with verifying requirements in order to
understand the criteria for valid and verifiable requirement.
We found a number of criteria listed in the document referring to a quality requirement,
such as: clear, complete, valid, verifiable, consistent, solution independent and testable.
In the following Figure 4.1, a section from the document is presented that shows a list of
the criteria for a quality requirement followed by a description for each. For example,
complete requirement which means the document has no missing information, has a
documented priority and risk level, has no undocumented assumptions, etc.
35
Figure 4.1 Requirement Verification and Validation Guidelines – Criteria for a quality requirement
36
In another section in the document, a list of guidelines for how to write the requirements
is given in Figure 4.2, for example, avoid ambiguity by using complete sentences.
Figure 4.2 Requirement Verification and Validation Guidelines – Guidelines for writing requirements
statements
In addition, a criteria on how to validate a requirement is described in the document as
well. This is as shown below in Figure 4.3.
37
Figure 4.3 Requirement Verification and Validation Guidelines – Verifications Guidelines
b. Business Analysis Performance Evaluation Guidelines
The purpose of this document is to establish the guidelines for defining, documenting,
collecting and analyzing performance measurements for business analysts. This
38
document is intended for the business analysis team, service creation management and
appropriate management at SADAD to help them understand the guiding principles used
in defining the BA KPIs.
This document provides a number of business analysis goals such as: satisfy the end user,
provides a quality software requirements, meet stakeholders’ expectations in regards to
timely delivery of requirements, improve the efficiency of business analysis processes,
and how to measure them. For example, for “provide quality software requirement goal”,
it can be measured by defect density which is the number and severity of defects found in
the requirements artifacts. Figure 4.4 is a screenshot of the procedure.
Based on the analysis of documents in the case study, it was found that some policies,
procedures, and guidelines are available to guide software engineers in their projects.
However, there is no separate document that directly addresses the ethical concern that
would serve as a guideline for the software engineers. There is also no evidence of code
of ethics guideline at the overall organizational level.
4.1.2 Interview Analysis
Figure 4. 4 Screen shot from Business Analysis Performance Evaluation Guidelines document
39
This section seeks to provide more input and evidence on the use of code of ethics in
projects according to the employees. Accordingly, three in-depth unstructured interviews
were conducted with software engineers in SADAD, who have more than 7 years of
experience each. They were: a Business Analyst, a Software developer, and a tester.
Questions were asked relating to the practice of ethics throughout software development
projects. The following results are organized according to (a) ethical concerns and
importance, and (b) how ethics is observed with each SDLC.
a. Ethical Concerns and Importance
The interviews showed that, employees are, in general aware of the importance of having
a clear code of ethics in the workplace as a guidance for various security reasons. Many
of the interviewees have long years of experience in developing software at various
phases. Based on their perspectives, several areas can be highlighted as reasons for the
importance of having a code of ethics. These are categorized as follows:
Protection from harm for the organization and the users
Respondents indicate that having a code of ethics in place can provide the
necessary protection for the organization and the people. By having the Code of
Ethics, the guidelines can be enforced and followed and misconduct can be
avoided.
Increase productivity
Other evidence from the point of view of the respondents indicates that a clear
code of ethics can increase organizational productivity.
Professionalism
Professionalism is highly important in providing respect and establishing a sound
reputation for any profession. A good developer can only be established through a
reputation of having a good integrity in the development process. Having the
Code of Ethics clearly written and followed can enhance this outlook and benefit
the workers and the organization.
40
Avoid troubles
Having a Code of Ethics and complying with it helps in preventing the software
engineer from being in trouble such as breaching confidentiality, integrity, and so
on.
Maintaining integrity
To maintain integrity in development is to follow a set of ethical conducts. The
only evidence to good integrity is to have a clear code of conduct at various levels
and different phases in the development.
Ensure quality
The overall quality of a good software development will require the degree of
observation of ethical conducts, for example, the issue of writing a strong code
versus a weak code and the time required to complete. There must be a clear
boundary between cost saving practices and maintaining safe and secure
applications.
Increase company morale
One of the participants believes that having a clear code of ethics, with clear
consequences of misconduct and the benefits of following code of ethics will
increase the organization’s morale.
Table 4.1 below provides the reasons as evidence for the importance of having a clear
Code of Ethics policy and guidelines, as analyzed. The sample responses are provided to
illustrate the reasons, respectively.
Table 4. 1 Reasons why having code of ethics is important
Reasons Participant Can you tell me how ethic is important in your
work?
Protection P1 Because, what I see it protects everyone, its protects
41
the organization. It protects the people, so it’s like one
of the very important aspects that everyone has to take it
in his consideration, while he is working in any
company and this organization is one of these examples.
Productivity
P1
I believe if we have a clear ethics, if we have a clear
standard about these ethics, everything will be fine, and
maybe the productivity of the organization will be
better.
Increase
company
morale
P1
They have to consider those factors because this will
increase the morale of the team if we do not have a clear
standard and we do not know what are the consequences
if you do not have them and what’s the benefits if you
have them and what are the impacts if you do not have
them; I think is going to be better for us.
Professionalis
m
P2
Of course ethics is connected to professionalism, so the
more you apply work ethics the more you are considered
as a professional person and your conduct is appreciated
by others.
Avoiding
troubles and
Maintain
integrity
P2
Also, by applying ethics I guess you’re supporting
yourself and preventing yourself from being in
trouble; trouble that can go into confidentiality,
integrity whatever that can be a bad experience for
yourself.
Quality P3
In my view, I think ethics is something very important;
the reason behind it is if we do not have ethics in
anything, there is not any quality that is going to be
delivered right.
Those findings are in line with Rogerson (2002) who stated that when the public are
aware that the organization is adopting a code of ethics, this will increase their reputation
and the public trust as they will be confident that the organization will produce quality
software in their best interest by complying with high standards of quality. Similarly,
adopting a code of ethics will attract dedicated and hardworking employees as they know
that the organization is complying with high standards and aims to produce high quality
software. Moreover, the Software Engineering Code of Ethics and Professional Practice
provides a clear guidance on how to make decisions related to software development
(Rogerson, 2002).
42
b. How Ethics is observed within Each SDLC Phase
The earlier analysis indicates that there is no evidence that a clear guideline for ethics
exists at the institutional level. However, it is also generally agreed that having a clear
guideline for observing ethics is highly important for reasons such as protecting the
organization and users from harm, increasing productivity, avoiding trouble, maintaining
professionalism, ensuring quality, and maintaining integrity. In this section, respondents
are asked how software code of ethics is practiced within each SDLC phase. In response
to this question, the respondents raised several ethical concerns in each of the SDLC
phase: requirement, design, code, testing and maintenance. These ethical concerns
resulted in further analysis to provide the framework for a code of ethics in software
engineering practices. The following sections describe how ethics is observed throughout
the software development projects in SADAD based on the analysis of the interview
results.
Requirement phase
The first phase of the SDLC is the requirement phase which is the process of establishing
the customer requirements and system constraints (Sommerville, 2004). Wiegers and
Beattly (2013) define requirement as “a statement of a customer need or objective, or of a
condition or capability that a product must possess to satisfy such a need or objective.”
This phase is considered critical because, depending on how the information is gathered,
whether it is correct or ambiguous, the end product will depend on this information. The
quality and the success of the software development project will highly depend on the
information gathered at this phase (Polga, 2008).
Accordingly, the requirement phase is perceived by one of the interviewees to be the
most difficult phases of the SDLC phases. The analysis of the interviews indicates that
several ethical concerns need to be addressed. Table 4.2 summarizes the ethical concerns
of the requirement phase, from the perspectives of the employees interviewed. The
ethical concerns are categorized, as follows:
Vague requirement
43
The first step in this phase is requirements elicitation, in which the business analyst will
play his important role in getting all the important information to feed into the stages that
follow (Polga, 2008). In some situation, stakeholders (i.e., clients or sponsors, users) are
not able to express what they need and require time to understand their requirements. It is
challenging for the Business Analyst to understand the requirements without the proper
methodology and the right knowledge and skills. Under these circumstances, there can be
situations where insufficient requirements are provided leading the project to be highly at
risk of failure.
Conflict of interest
The first refers to the compromising of quality due to constraints. If the software
development is done by a third party (i.e., vendor), conflict of interest is likely to occur.
For example, problems or requirements may have either several solutions, an easy
solution or a hard solution. The software engineer will be facing the issue of choosing
either the best solution or the easy solution. If he chooses the easy solution, due to some
constraints such as time and resource availability, he may be compromising the quality of
the software.
The second refers to compromising constraints (i.e., quality, time and cost) by promising
unachievable stakeholder request. The requirement phase is the first phase in the SDLC
that requires a huge interaction with the stakeholders to understand their needs and
expectations. Usually, the stakeholders do not have much knowledge of the software
development projects and their constraints. So they might ask for something that is not
achievable, which may lead the software engineers to violate their ethical principles to
meet those requirements.
Software engineers misrepresenting the actual cost, time or complexity
Sometime software engineers do not estimate an accurate effort; they tend to
overestimate in order to meet the targets.
Table 4.2 provides the evidence from the systematic analysis of the interviews, following
the categories reported above.
44
Table 4.2 Ethical concerns on the requirement phase based on the interviews
Ethical concerns Participant Requirement phase
Conflict of
interest
P1
I think requirement is the start point and the most
difficult part; at this stage there is the customer (I’m
giving you this from my experience) now when I start
the interaction with the customer, the ethical issues
might come at this stage; the customer may ask for
things beyond the expectation and in order to achieve
them and get the customer satisfaction, you might
exceed or you might violate your ethical issues in
order to achieve this. So I think this is very important
point, it has to be addressed very well at this level.
P2
Ok, first thing is when you receive requirements for
example, as a third party, some requirements might be
difficult to develop and some might be easy to
develop so ethically you should not go with what’s
easy to develop but rather what’s best for the
stakeholder asking you for this requirement, so you
apply ethics of knowing the best for your customer
and doing it even if it’s not the best solution for
yourself as a third party.
As I said, ethically you should support the best for the
requester and not the easy solution, rather any
different solution you might think of. Or you know
that this not satisfy him but you do not say it. So you
should make him aware of what he asking for and
what he is receiving.
Software
engineer
misrepresenting
the actual cost,
time or
complexity
P2
From a change management perspective also, the
ethics that you should apply is when you facilitate this
change; I would say the time consumed; whenever a
request come the requester doesn’t know the
complexity of this so you can say it’s very complex. It
will take me a month or you can say it’s very easy
that it going to take me a week. So again. ethically
you should support this.
Vague P3
Ethical practice sometimes it will be or it’s hard for
BA to dig further into what exactly the client needs.
45
requirement
Generally and it’s been identified that there are 50%
who know what they need and the other 50% who do
not know what they need. They want something like
that they just will give comparison there; the BA
should go much deeper not just as project point of
view. If I know that this requirement going to be
easier tougher it should not be that way. He should
separate that and he should be collecting everything
not what I like.
Design phase
Similarly, the design phase which is the second phase in the software development
project, includes the definition of the solution of the problem specified by the
requirements (Jalote, 1997). Software design may refer to either "all the activities
involved in conceptualizing, framing, implementing, commissioning, and ultimately
modifying complex systems" or "the activity following requirements specification and
before programming, as ... [in] a stylized software engineering process” (Freeman &
Hart, 2004).
The analysis of the interviews indicates that there are several ethical concerns in the
design phase that need to be addressed. Table 4.3 provides a summary of the ethical
concerns about the design phase based on the interviews. These ethical concerns are
categorized as follows:
Compromising quality to meet time, cost or available resources
Each problem may have different design solution with different complexity so it is the
responsibility of the designer to choose the one that best fit the stakeholder needs and not
the easiest solution. In our case, it is much more complex since the SDLC is done by a
third party, which the team would most likely think that what is best for them as a third
party rather than what is best for the stakeholders. For example, if there is a limitation of
some specialized resources or time, or a regulation and there is need to comply to a
specific deadline, the design should be driven from the best solution rather than the
46
hardship of the situation. Given this important point, the developer must always be able
to meet cost and time constraints of the customer’s budget. This may mean that the
developer and customer could work out a compromise in order to achieve the most
ethical solution possible.
Designing weak codes
Software is developed to solve problems, and each problem has several solutions. As one
of the participants said, “…the software engineer may design weak code which is prone
to hacking.”
Table 4.3 Ethical concerns about the design phase based on the interviews
Ethical concerns Participant Design
Designing weak
code P2
For the design, I would say that you can say, its
depends on the company, for example, you can
design a code that is prone to hacking, let say weak.
Compromising
quality to meet
time, cost or
because of the
available resources
P3
If you see that a problem can have many designed
solutions. From requirement, it will come to
architecture then design and all that. Again, from a
design point of view, it has something with man
days right so you will design and complexity
generally what happens from the bottom up the
manager is there and his going to tell you that there
is a limited recourse of JAVA resource, something
like that. I feel that the design should not be bound
to something like that. it should be dependent and
directly it affects us. It should provide more ethical
value not something driven from circumstances and
situations. All that it should come from what is the
best approach to do that.
Coding phase
47
The Coding phase involves translating the design of the system into a code using a
programming language (Jalote, 1997). The analysis of the interviews indicates that there
are several ethical concerns about the implementation phase that need to be addressed.
Table 4.4 provides a summary of the ethical concerns about the coding phase based on
the interviews. These ethical concerns are categorized as follows:
Developing weak code
The developer can develop two kinds of codes which both fulfill the requirements; one
can be prone to hacking (weak) and the other one is a strong code.
Not complying to best practices and policies
Depending on the organization and the criticality of the code, there may be a set of
guidelines or policies the developer has to comply with. Some of them are quality
standards and some of them are security standards. The developer should be aware of
them and comply with them. Ethically, if they are not followed, the circumstances may
be fatal.
Table 4.4 Ethical concerns on the coding phase based on the interviews
Ethical concerns Participant Code
Not complying to
best practices and
policies
P2
There is a strong code and a weak code; sometimes
writing a weak code or not following the best
practices for coding may make it simple and easy to
change. However, ethically you should not; you
should go with tried coding practices.
Developing weak
code
P3
From development point of view, as I said I gave you
one example; about fixing a bug. Here, from an ethical
point of view, what I feel is fixing the bug (I’m going
further) that can be a bug that fix the problem and
there can be bug that postpone the problem. That there
are way as sometime we cannot cover it up
completely, we just have bugs not been fixed
completely we give it the production, we going to
48
solve this and we know that this will be opened again
in a while. Just because the pressure is on I think this
the one and I feel software development should be
separate from that concern. I just give you an
example; it can be many.
Testing phase
The testing phase is the process of validating and verifying that the software is working
as expected and meeting its requirements (John, n.d.). According to Williams (2006),
“software testing is the process of analyzing a software item to detect the differences
between existing and required conditions (that is, bugs) and to evaluate the features of the
software item.”
The analysis of the interviews indicates that there are several ethical concerns about the
testing phase that need to be addressed. Table 4.5 provides a summary of the ethical
concerns about the testing phase based on the interviews. These ethical concerns are
categorized as follows:
Releasing software with defects to meet the scheduled time
Sometimes, the testers release software with some issues, deficiencies, or of low quality
usually due to meet a deadline. As one of the interviewees mentioned about one incident
that occurred, “...they released software with some issues knowing that it will cause a lot
of issues in production but they released it to meet the planned time.”
Certifying/passing release with defects without knowing its exact effects
Some defects in the software are acceptable. However, the problem is that if those defects
are major, they will consequently have major effects on the users and the public.
Table 4.5 Ethical concerns on the testing phase based on the interviews
49
Ethical concerns Participant Test
Releasing software
with defects to meet
the scheduled time
P3
Now the ethical might be between the team for
example between the testing and the
development. When I was managing the testing
team, I was facing a lot of issues between the
development and testing, Sometimes, we, in
some words sometimes we do not accept the
way they are developing the system so a lot of
clashes introduced and some classes can
introduce some ethical issues and some time we
disregard their work. We disregard the quality of
the work they deliver, so we consider they do
not work as what they supposed to do, do you
get my point? So, it does reach to the level.
Certifying/ passing
release with bugs
without knowing its
exact effects
P2
Testing again is testing for scenarios and, for
example, if you are aware of the SDLC,
sometimes when you find a bug or a gap, there is
certain stuff that you can pass them and say that
this bug is fine and can pass the release. Again,
when you pass this release, ethically you should
know that it will not cause any issues with your
client, with SADAD, with different client billers
or banks. Saying this is minor, Let’s pass it,
however, you know that no, actually this is a
major one.
P3
Testing point of view it goes there like as I go it
can be same as reporting the bug. There are
pressures on and then there is a blocker blog,
then it’s been fixed to become a functional bug.
In their consciousness, they have to report
whatever. They should not assume or presume
this will not happen, they should think it from
production point of view like software developer
give this bug and they have to assist this as a
production point of view. Like what would
happen and if they have. And SADAD specially
what I feel is like if they have an environmental
problems, they may compromise a bit, They will
50
assume that this recourse will access this
database and then problem will not going to
come, they just compromise that. I think from an
ethical point for view, there should be zero
compromise.
Maintenance phase
Finally, the maintenance phase is the process of modifying software or software
component after delivery (Reifer, 2011). The analysis of the interviews indicates that
there are several ethical concerns about the maintenance phase that need to be addressed.
Table 4.6 provides a summary of the ethical concerns about the maintenance phase based
on the interviews. These ethical concerns are categorized as follows:
Compromising the environment
Sometimes, software engineers compromise the environment by not validating and
testing the environment configuration and they assume that the same configuration is
applicable for new releases.
Table 4.6 Ethical concerns on the maintenance phase based on the interviews
Ethical
concerns
Participant Maintenance
Compromising
the
environment
P3
Compromising the environment by not validating the
configurations and they deploy this package. And
sometimes they assume that same configuration will
affect this package. Again, they assume of whatever
activities may take.
Table 4.7 summarizes the ethical concerns about each SDLC phase based on the
interviews.
51
Table 4. 7 Summary of the ethical concerns about each SDLC phase
SDLC Phase Ethical concern
Requirements
Conflict of interest
Vague requirement
Software engineers misrepresenting the actual cost, time or complexity
Design
Designing weak code
Compromising quality to meet time, cost or available resources
Coding Not complying to best practices and policies
Developing weak code
Testing Releasing software with defects to meet the scheduled time
Passing release with minor bugs without knowing its exact effects
Maintenance Compromising the environment
4.1.3 Questionnaire Analysis
Questionnaires were distributed to software engineers to investigate the ethical concerns
of each SDLC phase. 17 responses were received from participants with different years of
experience as shown in Table 4.13 and their perspectives vary as shown below in Table
4.8. In this part, the respondents were asked open-ended question to indicate the ethical
concerns at each phase in the process. Appendix D and Appendix E provide the
questionnaire sample and Questionnaire results and data analysis, respectively. Table 4.8
presents the respondents’ answers to the question: “In your point of view, please provide
the most common issues of ethics that you believe need to be addressed at each SDLC
phase.”
Table 4.8 Ethical concerns about each SDLC phase from the interviewees’ perspectives
52
SDLC Phase Ethical concern
Requirements
Technical/solution knowledge
Compliance with rule and regulation
Not to build the requirement based on personal needs or support of a
certain technology
Honesty in meeting customer needs
Training customers as they learn their needs because customers may not
know their needs well - it is unethical to build requirements knowing the
customer is uneducated in describing their needs
Maintain the integrity of data, being sensitive to outdated or flawed
occurrences.
Ensuring proper security, privacy and that these are part of requirements
from start.
Identify clearly requirement from the end user perspective
Design
easy vs right way of design
Not to create the design based on personal needs or support of a certain
technology
Follow the correct design standards, to use incorrect design templates and
to not verify design has properly designed the requirements.
Not engage in deceptive financial practices such as bribery, double billing,
or other improper financial practices.
Ensuring proper security, privacy and that these are part of design from the
start.
Coding
Crack codes
Non-compliance with the company policies
Not to create harmful code
Following the correct coding standards
Verifying you have coded the design and trace code back through design
to the requirements.
Ensure an appropriate method is used for any project, current or proposed.
Not cutting corners
using a standard code
Testing
Not to jump certain cases to save time and reduce cost
Following correct standards
Performing traceability
Not doing a quick and dirty job
Not passing software when it is known to be faulty
Accept no outside work detrimental to the work they perform for their
53
primary employer.
Providing adequate testing.
Maintenance
Too much work around
Creating issues that were not part of the main release
Not engage in deceptive financial practices such as bribery, double billing,
or other improper financial practices.
Treat all forms of software maintenance with the same professionalism as
new development.
Providing long term maintenance.
Troubleshooting any issue
4.2 Identification of High Risk and Most Challenging SWECOE to Follow
At the end of 1998, ACM and the IEEE-CS jointly approved Software Engineering Code
of Ethics and Professional Practice to encourage software engineers to undertake positive
actions and to resist pressures to act unethically.
This Code of Ethics contains eight principles that software engineers need to adhere to in
order to develop software. The focus of this research is on the first four principles, and
they are Public, Client and Employer, Product and Judgment. As part of this research is
to investigate which of the software engineering codes of ethics are perceived to be the
most challenging to follow and which perceived to be a high risk category, a structured
and non-structured questionnaire was distributed to software engineers. The participants
were asked to rate a 7 point Likert-scale (1 as least challenging to follow and 7 as most
challenging to follow) for each clause pertaining to the degree of “challenging to follow”.
Likewise, on the risk of each clause, 1 as perceived with low risk and 7 as a high risk
code of ethics. 15 responses were received, and the average of each clause is reported in
the following sections.
4.2.1 High Risk and Most Challenge SWECOE to Follow
This section presents the results of the investigation of how software engineers perceived
ACM/IEEE SWECOE risk rating for each clause of the four principles, After getting the
average score for each clause rated by the questionnaire participants, the researcher
54
prioritized the list based from the perceived high risk to the low risk. In addition to the
software engineers’ perceptions of the most challenging ACM/IEEE SWECOE, each
clause of the four principles is also reported with the average score for each clause rated
by the participants.
Principle 1 – Public
Public is the first principle of ACM/IEEE SWECOE and refers to how software
engineers should act consistently according to the public interest. Table 4.9 presents the
Public principle clause listed from the high perceived risk to the low risk after calculating
the average score for each clause.
Table 4.9 Public principle clause based on the risk rating
Clause Risk
(1-7)
Challenge
(1-7)
1.3 Approve software only if they have a well-founded belief that it
is safe, meets specifications, passes appropriate tests, and does not
diminish quality of life, privacy or harm the environment. The
ultimate effect of the work should be to the public good.
5.4 4.8
1.1 Accept full responsibility for their own work. 4.93 4.7
1.4 Disclose to appropriate persons or authorities any actual or
potential danger to the user, the public, or the environment, that they
reasonably believe to be associated with software or related
documents.
4.8 4.2
1.6 Be fair and avoid deception in all statements, particularly public
ones, concerning software or related documents, methods and tools. 4.2 4.3
1.2 Moderate the interests of the software engineer, the employer,
the client and the users with the public good. 4.1 4.5
1.5 Cooperate with efforts to address matters of grave public
concern caused by software, its installation, maintenance, support or
documentation.
4.1 4.1
1.7 Consider issues of physical disabilities, allocation of resources,
economic disadvantage and other factors that can diminish access to
the benefits of software.
4 4.2
1.8 Be encouraged to volunteer professional skills to good causes
and contribute to public education concerning the discipline. 2.6 3.2
55
Principle 2 – Client and Employer
Client and employer is the second principle of CM/IEEE SWECOE and refers to how
software engineers should act in a manner that is in the best interest of their client and
employer, consistent with the public interest.
Table 4.10 presents the client and employer principle clause from the perceived high risk
to the low risk after calculating the average score for each clause.
Table 4.10 Client and employer principle clause listed based on the risk rating
Clause Risk
(1-7)
Challenge
(1-7)
2.05. Keep private any confidential information gained in
professional work, where such confidentiality is consistent with the
public interest and consistent with the law.
5.2 4.7
2.2 Not knowingly use software that is obtained or retained either
illegally or unethically. 5 4.5
2.06. Identify, document, collect evidence and report to the client or
the employer promptly if, in their opinion, a project is likely to fail,
to prove too expensive, to violate intellectual property law, or
otherwise to be problematic.
5 4.4
2.09. Promote no interest adverse to their employer or client, unless a
higher ethical concern is being compromised; in that case, inform the
employer or another appropriate authority of the ethical concern.
4.4 3.6
2.3 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 3
2.4 Ensure that any document upon which they rely has been
approved, when required, by someone authorized to approve it. 4 3.7
2.07. Identify, document, and report significant issues of social
concern, of which they are aware, in software or related documents,
to the employer or the client.
4 4.5
2.08. Accept no outside work detrimental to the work they perform
for their primary employer. 4 3.6
2.1 Provide service in their areas of competence, being honest and
forthright about any limitations of their experience and education. 3 3.6
56
Principle 3 – Product
Product is the third principle of CM/IEEE SWECOE, which refers to how software
engineers should ensure that their products and related modifications meet the highest
professional standards possible.
Table 4.11 presents the product principle clause from the perceived high risk to the low
risk perceived after calculating the average score for each clause.
Table 4.11 Product clause based on the risk rating along
Clause Risk(1-
7)
Challenge
(1-7)
3.10. Ensure adequate testing, debugging, and review of software
and related documents on which they work. 5 4
3.12. Work to develop software and related documents that respect
the privacy of those who will be affected by that software. 4.8 4.3
3.2 Ensure proper and achievable goals and objectives for any
project on which they work or propose. 4.6 4.8
3.14. Maintain the integrity of data, being sensitive to outdated or
flawed occurrences. 4.6 4
3.1 Strive for high quality, acceptable cost and a reasonable
schedule, ensuring significant tradeoffs are clear to and accepted
by the employer and the client, and are available for consideration
by the user and the public.
4.5 5.2
3.4 Ensure that they are qualified for any project on which they
work or propose to work by an appropriate combination of
education and training, and experience.
4.5 4.4
3.7 Strive to fully understand the specifications for software on
which they work. 4.5 4.6
57
3.08. Ensure that specifications for software with which they work
have been well documented, satisfy the users’ requirements and
have the appropriate approvals.
4.4 5.2
3.13. Be careful to use only accurate data derived by ethical and
lawful means, and use it only in ways properly authorized. 4.4 4
3.09. Ensure realistic quantitative estimates of cost, scheduling,
personnel, quality and outcomes on any project on which they
work or propose to work and provide an uncertainty assessment of
these estimates.
4.3 4.7
3.3 Identify, define and address ethical, economic, cultural, legal
and environmental issues related to work projects. 4.2 4.3
3.11. Ensure adequate documentation, including significant
problems discovered and solutions adopted, for any project on
which they work.
4.2 4.4
3.6 Work to follow professional standards, when available, that
are most appropriate for the task at hand, departing from these
only when ethically or technically justified.
4 3.9
3.5 Ensure an appropriate method is used for any project on which
they work or propose to work. 3.6 4
3.15 Treat all forms of software maintenance as new development
with the same professionalism. 3.6 3.5
Principle 4 – Judgment
Judgment is the fourth principle of CM/IEEE SWECOE, which refers to how software
engineers should maintain integrity and independence in their professional judgment.
Table 4.12 presents the judgment principle clause from the perceived high risk to the low
risk after calculating the average score for each clause.
Table 4.12 Judgment principle clause based on the risk rating
Clause Risk Challenge
58
(1-
7)
(1-7)
4.6 Refuse to participate, as members or advisors, in a private,
governmental or professional body concerned with software related
issues, in which they, their employers or their clients have
undisclosed potential conflicts of interest.
5 4.4
4.5 Disclose to all concerned parties those conflicts of interest that
cannot reasonably be avoided or escaped. 4.6 3.9
4.4 Not engage in deceptive financial practices such as bribery,
double billing, or other improper financial practices. 4 3
4.3 Maintain professional objectivity with respect to any software or
related documents they are asked to evaluate. 3.7 3.7
4.2 Only endorse documents either prepared under their supervision
or within their areas of competence and with which they are in
agreement.
3.5 3
4.1 Temper all technical judgments by the need to support and
maintain human values. 2.8 3
4.3 SWECOE based on the SDLC Phases
Another objective of this research is to propose a new classification for the first four
principles of the existing ACM/IEEE SWECOE. They are: Public, Client and Employer,
Product, and Judgment; to re-classify it based on the SDLC phase by distributing a
questionnaire to software engineers and asking them to check the phases that they
perceived are part of the clause.
17 responses were received engineers with different years of experience which should be
considered in the results. So the methodology in the questionnaire analysis gave weight
for each score based on years of experience.
The participants were divided into three segments based on their years of experience and
a weight is given for each segment (as shown in the Table 4.13) to create the score.
Table 4.13 Questionnaire segmentation analysis
Years of experience Weight Count Score
59
0-4 1 12 12
5- 9 2 3 6
10 and more 3 2 6
Total 17 24
After adding the weight scores, the total is 24; so whenever a clause score reach half or
above the score which is 12 and above (24/2), this clause will be considered to be in this
phase. The results are explained in the following sections.
4.3.1 Questionnaire Results
Principle 1 – Public
For the first principle the results are shown in Table 4.14.
Table 4.14 Public principle clause as aligned with the SDLC phases
Clause Requirement Design Code Test Maintenance
1.1 Accept full responsibility for
their own work. √ √ √ √ √
1.2 Moderate the interests of the
software engineer, the employer,
the client and the users with the
public good.
√ √
1.3 Approve software only if they
have a well-founded belief that it is
safe, meets specifications, passes
appropriate tests, and does not
diminish quality of life, privacy or
harm the environment. The ultimate
effect of the work should be to the
public good.
√
1.4 Disclose to appropriate persons
or authorities any actual or potential
danger to the user, the public, or the
environment, that they reasonably
√ √
60
believe to be associated with the
software or related documents.
1.5 Cooperate with effort to address
matters of grave public concern
caused by software, its installation,
maintenance, support or
documentation.
√ √
1.6 Be fair and avoid deception in
all statements, particularly public
ones, concerning software or
related documents, methods and
tools.
√ √ √
1.7 Consider issues of physical
disabilities, allocation of resources,
economic disadvantage and other
factors that can diminish access to
the benefits of software.
√
1.8 Be encouraged to volunteer
professional skills to good causes
and contribute to public education
concerning the discipline.
√ √ √ √
Principle 2 – Client and Employer
For the client and employer principle the results are shown in Table 4.15.
Table 4.15 Client and employer principle clause as aligned with the SDLC phases
Clause Requirement Design Code Test Maintenance
2.1 Provide service in their area of
competence, being honest and
forthright about any limitations of
their experience and education.
√ √ √ √ √
61
2.2 Not knowingly use software
that is obtained or retained either
illegally or unethically.
√ √
2.3 Use the property of a client or
employer only in ways properly
authorized, and with the client's or
employer's knowledge and consent.
√ √ √ √ √
2.4 Ensure that any document upon
which they rely has been approved,
when required, by someone
authorized to approve it.
√ √ √ √ √
2.05. Keep private any confidential
information gained in their
professional work, where such
confidentiality is consistent with
the public interest and consistent
with the law.
√ √ √ √
2.06. Identify document, collect
evidence and report to the client or
the employer promptly if, in their
opinion, a project is likely to fail,
prove too expensive, to violate
intellectual property law, or
otherwise to be problematic.
√ √
2.07. Identify, document, and report
significant issues of social concern,
of which they are aware, in
software or related documents, to
the employer or the client.
√ √ √ √
2.08. Accept no outside work
detrimental to the work they
perform for their primary employer.
√ √ √ √
2.09. Promote no interest adverse to
their employer or client, unless a
√ √ √ √
62
higher ethical concern is being
compromised; in that case, inform
the employer or another appropriate
authority of the ethical concern.
Principle 3 – Product
For product principle, the results are shown in Table 4.16.
Table 4.16 Product principle clause as aligned with the SDLC phases
Clause Requirement Design Code Test Maintenance
3.1 Strive for high quality,
acceptable cost and a reasonable
schedule, ensuring significant
tradeoffs are clear to and accepted
by the employer and the client, and
are available for consideration by
the user and the public.
√ √ √ √ √
3.2 Ensure proper and achievable
goals and objectives for any project
on which they work or propose.
√ √
3.3 Identify, define and address
ethical, economic, cultural, legal
and environmental issues related to
work projects.
√ √ √
3.4 Ensure that they are qualified
for any project on which they work
or propose to work by an
appropriate combination of
education and training, and
experience.
√ √ √ √ √
3.5 Ensure an appropriate method is
used for any project on which they
√ √ √ √
63
work or propose to work.
3.6 Work to follow professional
standards, when available, that are
most appropriate for the task at
hand, departing from these only
when ethically or technically
justified.
√ √ √ √ √
3.7 Strive to fully understand the
specifications for software on
which they work.
√ √ √ √
3.08. Ensure that specifications for
software on which they work have
been well documented, satisfy the
users’ requirements and have the
appropriate approvals.
√ √ √
3.09. Ensure realistic quantitative
estimates of cost, scheduling,
personnel, quality and outcomes on
any project on which they work or
propose to work and provide an
uncertainty assessment of these
estimates.
√ √
3.10. Ensure adequate testing,
debugging, and review of software
and related documents on which
they work.
√
3.11. Ensure adequate
documentation, including
significant problems discovered and
solutions adopted, for any project
on which they work.
√ √ √ √
3.12. Work to develop software and
related documents that respect the
privacy of those who will be
√ √
64
affected by that software.
3.13. Be careful to use only
accurate data derived by ethical and
lawful means, and use it only in
ways properly authorized.
√ √ √
3.14. Maintain the integrity of data,
being sensitive to outdated or
flawed occurrences.
√ √ √
3.15 Treat all forms of software
maintenance with the same
professionalism as new
development.
√
Principle 4 – Judgment
For the judgment principle, the results are shown in Table 4.17.
Table 4.17 Judgment principle clause as aligned with the SDLC phases
Clause Requirement Design Code Test Maintenance
4.1 Temper all technical judgments
by the need to support and maintain
human values.
√ √ √ √
4.2 Only endorse documents either
prepared under their supervision or
within their areas of competence
and with which they are in
agreement.
√ √ √ √ √
4.3 Maintain professional
objectivity with respect to any
software or related documents they
are asked to evaluate.
√ √ √
65
4.4 Not engage in deceptive
financial practices such as bribery,
double billing, or other improper
financial practices.
√ √ √ √ √
4.5 Disclose to all concerned parties
those conflicts of interest that
cannot reasonably be avoided or
escaped.
√ √ √ √
4.6 Refuse to participate, as
members or advisors, in a private,
governmental or professional body
concerned with software related
issues, in which they, their
employers or their clients have
undisclosed potential conflicts of
interest.
√ √ √ √
4.3.2 New Classification of SWECOE based on the SDLC
In this section a reclassification of the existing ACM/IEEE code of ethics is proposed
based on the SLDC phases as perceived by the respondents, with the consideration of the
weight based on years of experience. Below are the results for each phase.
General clauses
General clauses are clauses that are found applicable for all SDLC phases. It is identified
as the general clause if the clause score for each phase is 12 or above. This means that the
weight of the clause is not heavier in any phase in the SDLC.
66
Figure 4. 5 General clauses
Requirement phase
Based on the results, the applicable clauses to requirement phase are given in Figure 4.6
where the clause score is 12 or above.
•1.1 Accept full responsibility for their own work.
Public
•2.1 Provide service in their areas of competence, being honest and forthright about any limitations of their experience and education.
•2.3 Use the property of a client or employer only in ways properly authorized, and with the client's or employer's knowledge and consent.
•2.4 Ensure that any document upon which they rely has been approved, when required, by someone authorized to approve it.
Client and employer
•3.1 Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are clear to and accepted by the employer and the client, and are available for consideration by the user and the public.
•3.4 Ensure that they are qualified for any project on which they work or propose to work by an appropriate combination of education and training, and experience.
•3.6 Work to follow professional standards, when available, that are most appropriate for the task at hand, departing from these only when ethically or technically justified.
Product
•4.2 Only endorse documents either prepared under their supervision or within their areas of competence and with which they are in agreement.
•4.4 Not engaging in deceptive financial practices such as bribery, double billing, or other improper financial practices.
Judgment
67
Figure 4. 6 Requirement Clauses
•1.2 Moderate the interests of the software engineer, the employer, the client and the users with the public good.
•1.4 Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documents.
•1.5 Cooperate with effort to address matters of grave public concern caused by software, its installation, maintenance, support or documentation.
•1.6 Be fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and tools.
•1.7 Consider issues of physical disabilities, allocation of resources, economic disadvantage and other factors that can diminish access to the benefits of software.
•1.8 Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.
Public
•2.05. Keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law.
•2.06. Identify, document, collect evidence and report to the client or the employer promptly if, in their opinion, a project is likely to fail, to prove too expensive, to violate intellectual property law, or otherwise to be problematic.
•2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or related documents, to the employer or the client.
•2.08. Accept no outside work detrimental to the work they perform for their primary employer.
•2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
Client and employer
•3.2 Ensure proper and achievable goals and objectives for any project which they are working on or propose. to work on.
•3.3 Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects.
•3.5 Ensure an appropriate method is used for any project which they are working on or propose. to work on.
•3.08. Ensure that specifications for software which they are working on or propose., their work have been well documented, satisfy the users’ requirements and have the appropriate approvals.
•3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project which they are working on or propose.to work on, and provide an uncertainty assessment of these estimates.
•3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project which they are working on or propose. to work on..
•3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
•3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
Product
•4.1 Temper all technical judgments by the need to support and maintain human values.
•4.3 Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.
•4.5 Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.
•4.6 Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.
Judgment
68
Design phase
Based on the results, Figure 4.7 shows the applicable clauses to design phase where the
clause score is 12 or above, as shown in.
Figure 4.7 Design Clauses
•1.2 Moderate the interests of the software engineer, the employer, the client and the users with the public good.
•1.6 Be fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and tools.
•1.8 Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.
Public
•2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or related documents, to the employer or the client.
•2.08. Accept no outside work detrimental to the work they perform for their primary employer.
•2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
•2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
Client and employer
•3.3 Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects.
•3.5 Ensure an appropriate method is used for any project which they are working on or propose. to work on.
•3.7 Strive to fully understand the specifications for software which they are working on or propose. to work on.
•3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project which they are working on or propose to work on and provide an uncertainty assessment of these estimates.
•3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project which they are working on or propose to work on..
•3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that software.
•3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
•3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
Product
•4.1 Temper all technical judgments by the need to support and maintain human values.
•4.3 Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.
•4.5 Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.
•4.6 Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.
Judgment
69
Code phase
Based on the results, Figure 4.8 shows the applicable clauses to code phase where the
clause score is 12 or above.
Figure 4.8 Code Clauses
•1.2 Moderate the interests of the software engineer, the employer, the client and the users with the public good.
•1.8 Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.
Public
•2.2 Not knowingly use software that is obtained or retained either illegally or unethically.
•2.05. Keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law.
•2.08. Accept no outside work detrimental to the work they perform for their primary employer.
•2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
Client and employer
•3.5 Ensure an appropriate method is used for any project which they are working on or propose to work on.
•3.7 Strive to fully understand the specifications for software which they are working on or propose to work on.
Product
Judgment
70
Test Phase
Based on the results, Figure 4.9 shows the applicable clauses to Test phase where the
clause score is 12 or above.
Figure 4.9 Test Clauses
•1.3 Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, privacy or harm the environment. The ultimate effect of the work should be to the public good.
•1.8 Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.
Public
•2.05. Keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law.
•2.06. Identify, document, collect evidence and report to the client or the employer promptly if, in their opinion, a project is likely to fail, prove too expensive, violate intellectual property law, or otherwise to be problematic.
•2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or related documents, to the employer or the client.
•2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.
Client and employer
•.3.2 Ensure proper and achievable goals and objectives for any project which they are working on or propose. to work on.
•3.4 Ensure that they are qualified for any project which they are working on or propose to work on.
•3.7 Strive to fully understand the specifications for software which they are working on or propose to work on.
•3.08. Ensure that specifications for software which they are working on have been well documented, satisfy the users’ requirements and have the appropriate approvals.
•3.10. Ensure adequate testing, debugging, and review of software and related documents which they are working on.
•3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project which they are working on.
•3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that software.
•3.13. Be careful touse only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
•3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
Product
•4.1 Temper all technical judgments by the need to support and maintain human values.
•4.3 Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.
•4.5 Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.
•4.6 Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.
Judgment
71
Maintenance Phase
Based on the results, Figure 4.10 shows the applicable clauses to maintenance phase
where the clause score is 12 or above.
Figure 4.10 Maintenance Clauses
•1.4 Disclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documents.
•1.5 Cooperate in efforts to address matters of grave public concern caused by software, its installation, maintenance, support or documentation.
•1.6 Be fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and tools.
•1.8 Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.
Public
•2.2 Not knowingly use software that is obtained or retained either illegally or unethically.
•2.05. Keep private any confidential information gained in their professional work, where such confidentiality is consistent with the public interest and consistent with the law.
•2.07. Identify, document, and report significant issues of social concern, of which they are aware, in software or related documents, to the employer or the client.
•2.08. Accept no outside work detrimental to the work they perform for their primary employer.
Client and employer
•3.3 Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects.
•3.7 Strive to fully understand the specifications for software on which they work.
•3.08. Ensure that specifications for software on which they work have been well documented, satisfy the users’ requirements and have the appropriate approvals.
•3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on which they work.
•3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
•3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
•3.15 Treat all forms of software maintenance with the same professionalism as new development.
Product
•4.1 Temper all technical judgments by the need to support and maintain human values.
•4.3 Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.
•4.5 Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.
•4.6 Refuse to participate, as members or advisors, in a private, governmental or professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.
Judgment
72
4.4 Proposed framework
The existing ACM/IEEE SWECOE is based on eight principles as shown in Figure 4.11.
Figure 4.11 ACM/IEEE 8 Principles
Our focus in this research is on the first four principles, which are public, client and
employer, product, and judgement as shown in Figure 4.12
Figure 4.12 ACM/IEEE first four principles
ACM/IEEE
SWECOE principles
Public
Client and
Employer
Self
College
Product
Judgment
Management
Profession
ACM/IEEE SWECOE principles
Public
Client and Employer
Product
Judgment
73
From the case study and after analyzing the results of the document analysis, interviews,
and questionnaire results, we found that there is no indication of awareness of the
existing code of ethics as provided by IEEE/ACM. Moreover, there is no evidence to
indicate the presence of any formal guidelines or requirements on ethics in software
development in the organization. To make it easy for the software engineers and after
investigating how software engineering code of ethics is being practiced throughout the
SDLC, a new framework is proposed based on the SDLC phases. This will provide
recommendations that will further assist software engineers to comply with the software
engineering code of ethics within the software development projects.
The new classification of the existing IEEE/ACM code of ethics is proposed based on the
SDLC phases shown in Figure 4.13
Figure 4.13 SDLC Phases
ACM/IEEE SWECOE
Requirement
Design
Code Test
Maintenance
74
To make it easier for the software engineers, a new re-classification of the existing
ACM/IEEE SWECOE based on the SDLC phases and after adding the participants’ input
from the questionnaire, a new framework is proposed, as shown in Figure 4.14.
Figure 4. 14 New proposed SDLC Code of Ethics Framework
The proposed framework is based on the SDLC phases and listed from high risk clause to
low risk clause as shown in Table 4.15.
E.g.
1.Accept full
responsibility for their
own work.
2.Strive for high
quality, acceptable cost
and a reasonable
schedule, ensuring
significant tradeoffs are
clear to and accepted by
the employer and the
client, and are available
for consideration by the
user and the public.
3.Work to follow
professional standards,
when available, that are
most appropriate for the
task at hand, departing
from these only when
ethically or technically
justified.
E.g.
1.Ensure adequate
documentation,
including significant
problems discovered
and solutions adopted,
for any project on
which they work.
2.Moderate the interests
of the software
engineer, the employer,
the client and the users
with the public good.
3.Identify, document,
and report significant
issues of social concern,
of which they are
aware, in software or
related documents, to
the employer or the
client.
E.g.
1.Ensure proper and
achievable goals and
objectives for any
project on which they
work or propose.
2.Disclose to all
concerned parties those
conflicts of interest that
cannot reasonably be
avoided or escaped.
3.Maintain the integrity
of data, being sensitive
to outdated or flawed
occurrences
4. Identify, define and
address ethical,
economic, cultural,
legal and environmental
issues related to work
projects.
E.g.
1.Not knowingly use
software that is
obtained or retained
either illegally or
unethically.
2.Strive to fully
understand the
specifications for
software on which
they work.
3.Follow the correct
coding standards
4.Verify you have
coded the design and
traced code back
through design to the
requirements.
E.g.
1.Approve software
only if they have a
well-founded belief
that it is safe, meets
specifications, passes
appropriate tests, and
does not diminish
quality of life,
privacy or harm the
environment. The
ultimate effect of the
work should be to
the public good.
2. Ensure adequate
testing, debugging,
and review of
software and related
documents on which
they work.
E.g.
1.Disclose to
appropriate persons
or authorities any
actual or potential
danger to the user,
the public, or the
environment, that
they reasonably
believe to be
associated with
software or related
documents.
2. Fully understand
the specifications for
software on which
they work.
ACM/IEEE Code of Ethics
Software Development Process (SDLC)
Categorization of code of ethics
COE to be followed in SDLC
75
Table 4.15 Proposed Framework
SDLC
Phase Ethical concern
Genera
l
1. Accept full responsibility for their own work.
2. Strive for high quality, acceptable cost and a reasonable schedule, ensuring
significant tradeoffs are clear to and accepted by the employer and the client, and
are available for consideration by the user and the public.
3. Ensure that they are qualified for any project on which they work or propose to
work by an appropriate combination of education and training, and experience.
4. Use the property of a client or employer only in ways properly authorized, and
with the client's or employer's knowledge and consent.
5. Work to follow professional standards, when available, that are most appropriate
for the task at hand, departing from these only when ethically or technically
justified.
6. Not engage in deceptive financial practices such as bribery, double billing, or other
improper financial practices. Ensure that any document upon which they rely has
been approved, when required, by someone authorized to approve it.
7. Only endorse documents either prepared under their supervision or within their
areas of competence and with which they are in agreement.
8. Provide service in their areas of competence, being honest and forthright about any
limitations of their experience and education.
Requir
ement
1. Keep private any confidential information gained in their professional work, where
such confidentiality is consistent with the public interest and consistent with the
law.
2. Identify, document, collect evidence and report to the client or the employer
promptly if, in their opinion, a project is likely to fail, to prove too expensive, to
violate intellectual property law, or otherwise to be problematic.
3. Refuse to participate, as members or advisors, in a private, governmental or
professional body concerned with software related issues, in which they, their
employers or their clients have undisclosed potential conflicts of interest.
4. Disclose to appropriate persons or authorities any actual or potential danger to the
user, the public, or the environment, that they reasonably believe to be associated
with software or related documents.
5. Ensure proper and achievable goals and objectives for any project on which they
work or propose.
6. Disclose to all concerned parties those conflicts of interest that cannot reasonably
76
be avoided or escaped.
7. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
8. Promote no interest adverse to their employer or client, unless a higher ethical
concern is being compromised; in that case, inform the employer or another
appropriate authority of the ethical concern.
9. Be careful to use only accurate data derived by ethical and lawful means, and use
it only in ways properly authorized.
10. Ensure that specifications for software on which they work have been well
documented, satisfy the users’ requirements and have the appropriate approvals.
11. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and
outcomes on any project on which they work or propose to work and provide an
uncertainty assessment of these estimates.
12. Identify, define and address ethical, economic, cultural, legal and environmental
issues related to work projects.
13. Ensure adequate documentation, including significant problems discovered and
solutions adopted, for any project on which they work.
14. Moderate the interests of the software engineer, the employer, the client and the
users with the public good.
15. Cooperate with effort to address matters of grave public concern caused by
software, its installation, maintenance, support or documentation.
16. Be fair and avoid deception in all statements, particularly public ones, concerning
software Consider issues of physical disabilities, allocation of resources, economic
disadvantage and other factors that can diminish access to the benefits of software.
17. Identify, document, and report significant issues of social concern, of which they
are aware, in software or related documents, to the employer or the client.
18. Maintain professional objectivity with respect to any software or related
documents they are asked to evaluate.
19. Ensure an appropriate method is used for any project on which they work or
propose to work.
20. Temper all technical judgments by the need to support and maintain human values.
21. Accept no outside work detrimental to the work they perform for their primary
employer. Be encouraged to volunteer professional skills to good causes and
contribute to public education concerning the discipline.
22. Technical/solution knowledge
23. Compliance with rule and regulation
24. Not to build the requirement based on personal needs or support of a certain
technology
25. Honesty in meeting customer needs
26. Training customers as they learn their needs because customers may not know
their needs well - it is unethical to build requirements knowing the customer is
uneducated in describing their needs
27. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
28. Ensuring proper security, privacy and that these are part of requirements from the
start.
29. To identify clearly the requirement from end user perspective
77
Design
1. Refuse to participate, as members or advisors, in a private, governmental or
professional body concerned with software related issues, in which they, their
employers or their clients have undisclosed potential conflicts of interest.
2. Be fair and avoid deception in all statements, particularly public ones, concerning
software or related documents, methods and tools.
3. Disclose to all concerned parties those conflicts of interest that cannot reasonably
be avoided or escaped.
4. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
5. Strive to fully understand the specifications for software on which they work.
6. Be careful to use only accurate data derived by ethical and lawful means, and use
it only in ways properly authorized.
7. Promote no interest adverse to their employer or client, unless a higher ethical
concern is being compromised; in that case, inform the employer or another
appropriate authority of the ethical concern.
8. Promote no interest adverse to their employer or client, unless a higher ethical
concern is being compromised; in that case, inform the employer or another
appropriate authority of the ethical concern.
9. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and
outcomes on any project on which they work or propose to work and provide an
uncertainty assessment of these estimates.
10. Identify, define and address ethical, economic, cultural, legal and environmental
issues related to work projects.
11. Ensure an appropriate method is used for any project on which they work or
propose to work.
12. Ensure adequate documentation, including significant problems discovered and
solutions adopted, for any project on which they work.
13. Moderate the interests of the software engineer, the employer, the client and the
users with the public good.
14. Identify, document, and report significant issues of social concern, of which they
are aware, in software or related documents, to the employer or the client.
15. Accept no outside work detrimental to the work they perform for their primary
employer.
16. Maintain professional objectivity with respect to any software or related
documents they are asked to evaluate.
17. Be encouraged to volunteer professional skills to good causes and contribute to
public education concerning the discipline.
18. Temper all technical judgments by the need to support and maintain human values.
19. Work to develop software and related documents that respect the privacy of those
who will be affected by that software.
20. Easy vs right way of design
21. Not to create the design based on personal needs or support of a certain technology
22. Follow the correct design standards, to use incorrect design templates and to not
verify design has properly designed the requirements.
78
23. Not engage in deceptive financial practices such as bribery, double billing, or other
improper financial practices.
24. Ensuring proper security, privacy and that these are part of designs from start.
Codin
g
1. Keep private any confidential information gained in their professional work, where
such confidentiality is consistent with the public interest and consistent with the
law.
2. Not knowingly use software that is obtained or retained either illegally or
unethically.
3. Strive to fully understand the specifications for software on which they work.
4. Promote no interest adverse to their employer or client, unless a higher ethical
concern is being compromised; in that case, inform the employer or another
appropriate authority of the ethical concern.
5. Accept no outside work detrimental to the work they perform for their primary
employer.
6. The interests of the software engineer, the employer, the client and the users with
the public good.
7. Ensure an appropriate method is used for any project on which they work or
propose to work.
8. Be encouraged to volunteer professional skills to good causes and contribute to
public education concerning the discipline.
9. Crack codes
10. Non-compliance with the company policies
11. Not to create harmful code
12. Follow the correct coding standards
13. Verify you have coded the design and traced code back through design to the
requirements.
14. Not cutting corners.
15. Use a standard code.
Testin
g
1. Approve software only if they have a well-founded belief that it is safe, meets
specifications, passes appropriate tests, and does not diminish quality of life,
privacy or harm the environment. The ultimate effect of the work should be to the
public good.
2. Keep private any confidential information gained in their professional work, where
such confidentiality is consistent with the public interest and consistent with the
law.
3. Refuse to participate, as members or advisors, in a private, governmental or
professional body concerned with software related issues, in which they, their
employers or their clients have undisclosed potential conflicts of interest.
4. Identify, document, collect evidence and report to the client or the employer
promptly if, in their opinion, a project is likely to fail, prove too expensive, violate
intellectual property law, or otherwise to be problematic.
5. Ensure adequate testing, debugging, and review of software and related documents
79
on which they work.
6. Work to develop software and related documents that respect the privacy of those
who will be affected by that software.
7. Disclose to all concerned parties those conflicts of interest that cannot reasonably
be avoided or escaped.
8. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
9. Strive to fully understand the specifications for software on which they work.
10. Promote no interest adverse to their employer or client, unless a higher ethical
concern is being compromised; in that case, inform the employer or another
appropriate authority of the ethical concern.
11. Ensure that specifications for software on which they work have been well
documented, satisfy the users’ requirements and have the appropriate approvals.
12. Be careful to use only accurate data derived by ethical and lawful means, and use
it only in ways properly authorized.
13. Ensure adequate documentation, including significant problems discovered and
solutions adopted, for any project on which they work.
14. Identify, document, and report significant issues of social concern, of which they
are aware, in software or related documents, to the employer or the client.
15. Ensure that they are qualified for any project on which they work or propose to
work by an appropriate
16. Maintain professional objectivity with respect to any software or related
documents they are asked to evaluate.
17. Temper all technical judgments by the need to support and maintain human values.
18. Not to jump certain cases to save time and reduce cost
19. Follow correct standards
20. Perform traceability
21. Not to do a quick and dirty job
22. Pass software when it is known to be faulty
23. Accept no outside work detrimental to the work they perform for their primary
employer.
24. Providing adequate testing.
Mainte
nance
1. Keep private any confidential information gained in their professional work, where
such confidentiality is consistent with the public interest and consistent with the
law.
2. Not knowingly use software that is obtained or retained either illegally or
unethically.
3. Refuse to participate, as members or advisors, in a private, governmental or
professional body concerned with software related issues, in which they, their
employers or their clients have undisclosed potential conflicts of interest.
4. Disclose to appropriate persons or authorities any actual or potential danger to the
user, the public, or the environment, that they reasonably believe to be associated
with software or related documents.
80
5. Disclose to all concerned parties those conflicts of interest that cannot reasonably
be avoided or escaped.
6. Ensure that specifications for software on which they work have been well
documented, satisfy the users’ requirements and have the appropriate approvals.
7. Be careful to use only accurate data derived by ethical and lawful means, and use
it only in ways properly authorized.
8. Be fair and avoid deception in all statements, particularly public ones, concerning
software or related documents, methods and tools.
9. Identify, define and address ethical, economic, cultural, legal and environmental
issues related to work projects.
10. Fully understand the specifications for software on which they work.
11. Ensure adequate documentation, including significant problems discovered and
solutions adopted, for any project on which they work.
12. Cooperate with effort to address matters of grave public concern caused by
software, its installation, maintenance, support or documentation.
13. Accept no outside work detrimental to the work they perform for their primary
employer.
14. Maintain professional objectivity with respect to any software or related
documents they are asked to evaluate.
15. Treat all forms of software maintenance as new development with the same
professionalism.
16. Be encouraged to volunteer professional skills to good causes and contribute to
public education concerning the discipline.
17. Temper all technical judgments by the need to support and maintain human values.
18. Identify, document, and report significant issues of social concern, of which they
are aware, in software or related documents, to the employer or the client.
19. Creating issues that were not part of the main release
20. Not engage in deceptive financial practices such as bribery, double billing, or other
improper financial practices.
21. Treat all forms of software maintenance with the same professionalism as new
development.
22. Providing long-term maintenance.
23. Troubleshooting any issue
4.5 Validation
One of the main purposes of having software engineering code of ethics is to help
software engineers to make decisions throughout the SDLC phases (Collins, 2009).
In this section, the framework will be evaluated by software developers or practitioners
for suitability and appropriateness. In this regards, a scenario-based session was
conducted to validate the framework. A session was conducted with three practitioners to
81
validate the framework using actual cases of the most recent project in SADAD. The
exercise is developed and conducted to test the situation with and without the placement
SWECOE proposed in the study framework. The factors used to test in the simulation are
cost and time. The scenarios was verified by the practitioners during the session. The
numbers used below in Tables 4.19 and 4.20 are not the real numbers, which were
replaced due to confidentiality reasons.
Project Case 1
SADAD always enhances its system by fixing some issues, introducing new services, or
fulfilling clients’ requirements. One of those releases was a software solution that
SADAD developed to cover four main requirements: fixing a problem, introducing a
new channel, adding a new service, and finally fulfilling a client’s request which was to
add the ID number in the payment notification message. This requirement was requested
by a major client who wanted SADAD to share confidential information (customer ID)
with the client so they can do the validation at their end rather than on SADAD side. This
project went through requirement, design, coding, and testing. In the final stages of
testing, a presentation was given to top management to explain the purpose of the release
and the status. However, the top management rejected this release and did not allow using
it since it included sharing confidential information with the client. Consequently, the
fourth requirement was de-scoped from the project after it was designed, implemented,
and tested. This requirement was de-scoped as expressed by the practitioner because
“this case contains confidential information that SADAD should not share without
permission, so this case is no longer valid.” This project included unneeded cost for the
de-scoped requirement, which can be avoided from the beginning. This project cost
SADAD money and time as shown below in Table 4.18.
Using the same release and after applying the proposed SWECOE, the fourth requirement
related to adding the Customer ID to the payment notification message SADAD sent to
the client, will not be scoped from the beginning, from the requirement phase. It would
be rejected as there is a clause stating “Keep private any confidential information gained
in their professional work, where such confidentiality is consistent with the public
82
interest and consistent with the law.” So by having SWECOE, SADAD could save 9% of
the total project cost.
Table 4.18 Case 1
Project 1 Without code of ethics With code of ethics
Cost (man-days) 104 man-days to deliver this
project.
95 man-days to develop this
project
Time 93 days to deliver this
project.
84 days to deliver this
project.
Project Case 2
Taking another project, SADAD is developing a huge project to rebuild and re-architect
the current system by fully migrating to an Event Driven and Service-Oriented
Architecture. This project is outsourced and needs to include all the features in the
current system. So, the current system documentation is a prerequisite. This project faces
huge delays and costing SADAD money, time, and missing opportunities. The main
reason of this delay is the documentations. As the SADAD current system does not have
a low level design, high level design and other software documentations that are needed.
The details are shown in Table 4.20.
On the other hand, with the use of this framework for ethical practices during the SDLC,
all software documentation will be available. One of the clauses states that: “Ensure
adequate documentation, including significant problems discovered and solutions
adopted, for any project on which they work.” And another clause “Ensure that any
document upon which they rely has been approved, when required, by someone
authorized to approve it.” So by having SWECOE, SADAD could save 9% of the total
project cost.
Table 4.19 Case 2
Project 2 Without code of ethics With code of ethics
Cost (man-days) 4027 man-days to deliver
the project
3675 man-days to develop
this project
Time 316 days to deliver this 228 84 days to deliver this
83
project. project.
4.6 Summary
The research met all of its objectives, as shown in Table 4.21, along with the results.
Table 4. 20 Research objectives and Results
Research objectives Results
To investigate how Software
engineering code of ethics is
being implemented within the
software development projects
The results show that there is no indication of awareness
in the existing code of ethics as provided by IEEE/ACM.
Along with the investigation on how code of ethics is
being implemented thought the SDLC. There is no
evidence to indicate the presence of any formal
guidelines or requirements on ethics in software having
SWECOE
To investigate which software
engineering code of ethics is
perceived to be the most
challenging to follow.
From the questionnaire analysis, the risk and challenges
in practicing certain areas in the SWECOE framework
are found to be not significantly different, as high risk
areas are also found to highly challenging to observe and
practice. The results can provide a guide for the
organization to prioritize the risk area concerning code
of ethics.
To investigate which software
engineering code of ethics is
perceived as a high risk.
To propose a classification of the
software engineering code of
ethics based on the software
development life cycle phases.
The existing SWECOE are addressed in generic term
and need to be made aware at each phase in SDLC, a
categorization of SWECODE at each phase can clearly
address the ethical issues and concern that may arise at
each phase. Categorization of SWECOE can guide in
training of engineers and guide project managers to
clearly manage teams who are highly professionals with
delivery of quality products. So providing a new
classification of the software engineering code of ethics
based on the software development life cycle phases can
help software engineers better understand, apply, control
and monitor software development project ethical
practices. A guideline and policy checklists and tools
To propose a framework of
software engineering code of
ethics within the software
development life cycle.
85
CHAPTER 5 – CONCLUSION
This section will include a summary of the research; highlighting the main findings,
proposing set of recommendation, the research limitation, and further research topics, and
research significant.
5.1 Summary Findings
In order to complete this research, the SADAD Payment system was chosen to be the
case in this research. This research has achieved its first objective, which is investigating
how Software engineering code of ethics is being implemented within the software
development projects. This is achieved by a document analysis of policies, procedures,
and projects management, and followed by interviews with experts from software
development projects. team members who were working on different software
development projects and holding various positions and questionnaires filled by software
engineers, as described in the methodology and the results in Chapters 3 and 4. The main
results showed no evidence to indicate the presence of any formal guidelines or
requirements on ethics in software having SWECOE. Moreover, there is no indication of
awareness of the existing code of ethics as provided by IEEE/ACM.
The second and third objectives were to investigate which SWECOE is perceived to be
the most challenging to follow, and which SWECOE is perceived to be in a high-risk
category. These objectives were achieved by questionnaires distributed to software
engineers as described in the methodology and the results in Chapters 3 and 4. The result
showed that risk and challenges in certain areas in the SWECOE framework were not
significantly different, as high risk areas were also found too challenging to observe and
practice. The results can provide a guide for the organization to prioritize the risk areas
concerning code of ethics.
The fourth objective, to propose a new classification of the software engineering code of
ethics based on the SDLC phases, was achieved by distributing questionnaires to
software engineers and asking them to classify the existing SWECOE based on the SDLC
phases. In order to achieve the last objective which is to propose a framework of
86
software engineering code of ethics within the software development life cycle, all the
results were collected and analyzed. Then a new SWECOE were proposed and validated
by practitioners within a simulation session. This was described in Chapters 3 and 4. The
results were showed that the existing SWECOE were addressed in generic terms and
needed to be made aware at each phase in SDLC. A categorization of SWECOE at each
phase can assist in clearly addressing the ethical issues and concern that may arise at each
phase. The categorization of SWECOE can guide in the training of engineers and guide
project managers to clearly manage teams who are highly professionals with the delivery
of quality products. So, providing a new classification of the software engineering code
of ethics based on the software development life cycle phases can help software
engineers better understand, apply, control and monitor the ethical practices of software
development projects. A guideline and policy checklists and tools can be designed to
enhance the quality of software development as a result of this study.
5.2 Research contribution and recommendation
The contribution of the research are: First, the research offers recommendations that
could assist software engineers to comply with the software engineering code of ethics in
software development projects. As the existing SWECOE are addressed in generic term
and need to be made aware at each phase in SDLC, the categorization of SWECOE based
on SDLC phases can help software engineers better understand, apply, control and
monitors software development projects ethical practices. The research found clear
indication of improvement to projects that take into consideration code of ethics at each
phase. Critical issues in software development could have been avoided with the
implementation of relevant code of ethics at each phase in SDLC. Gotternbarn’s (1999,
2001, 2005, 2010) works in Software Engineering code of ethics continue to contribute
significantly to the field of education in software engineering. However, this work
provides a mechanism for application in the actual practice of software development as
part of the actual practical framework that can be followed.
Secondly, in another contribution, this research identified different classification of the
existing code of ethics in the form of ranking in risk and challenges. This finding can
87
provide a guide for the organization ease of prioritizing the risk area concerning code of
ethics. Given the many areas and clauses in the code of ethics it is not easy to identify
which one to prioritize, unless a systematic approach is done to identify and classify them
, through a proper research. This can also help them to focus on the most important and
challenging code of ethics, of which the implication can be severe if overlooked or not
followed. The proposed framework can assist developers in applying software
engineering code of ethics within the software development life cycle and prioritize the
code of ethics based on risks and providing a list which contains items perceived to be the
most challenging code of ethics to be followed.
Thirdly, this research results would enhance research and knowledge in software
engineering code of ethics, which is really needed in the field. While many research
contributes to enhancing each area in the software engineering code of ethics such as
management, public, product, etc., this research tried to refocus to the actual practice of
software development and look for means to implement the concept of ethics in the actual
development process. The framework identified can contribute significantly into our
understanding of ethical concerns among software engineering professionals. This is due
to the fact that many software engineers are either forgotten the areas of ethics during
their academic programs or not at all being exposed to any of them. It can also assist
educators and academicians in enhancing ethics curriculum and prepare software
engineering professionals entering the field.
5.3 Research Limitations and Suggestion for Future Research
Although the research has reached its aims, there were some limitations. This research is
limited to one case (one organization) and a small number of contributors. However,
adding more cases and expanding the number of contributors could results in more
reliable results for generalization. Likewise, due to the small sample of contributors, the
research concentrated on only four principles from the existing SWECOE. By including
the other four principles, this would potentially give a full and complete picture of
SWECOE. Future research is suggested to be expanded into the remaining four principles
and with the use of more robust methodology for validation of the results.
88
REFERENCES
Abdawi, A. (2014) Systematic Review.
ACM/IEEE-CS Joint Task Force (2014), “Software engineering code of ethics and
professional practice”, available at: www.acm.org/about/se-code (accessed 29
July 2014).
ACM/IEEE-CS Joint Task Force (2014), “ACM and IEEE-CS Cooperative Activities”,
available at: http://www.acm.org/acm-ieeecs-coop (accessed 31 December 2015).
Agarwal, S., & Garcia, M. (2006, July). What to Teach About Computer Ethics. In
Information Technology Based Higher Education and Training, 2006. ITHET'06.
7th International Conference on (pp. 86-93). IEEE.
Al-A'ali, M. (2008). Computer ethics for the computer professional from an Islamic point
of view. Journal of Information, Communication and Ethics in Society, 6(1), 28-
45.
AL-Adwan, M., AL-Zyood, M., & Ishfaq, M. (2013). The Impact of Electronic Payment
on Saudi Banks Profitability: Case Study of SADAD Payment System.
International Journal of Research and Reviews in Applied Science, 14-1.
Aliyu, M., Lasisi, N., Diyar, D., & Zeki, A. M. (2010, December). Computer security and
ethics awareness among IIUM students: An empirical study. In Information and
Communication Technology for the Muslim World (ICT4M), 2010 International
Conference on (pp. A52-A56). IEEE.
Alsudairi, M. A., & Vasista, T. Successful Implementation Of Electronic Bill Payment
and Presentment System–A Sadad Case Study. Imtcj, 1.
Averweg, U., & Erwin, G. (2005). Towards a Code of Cyberethics for a Municipality in
South Africa, Proceedings of the Fifth International Conference on Electronic
Business, Hong Kong, December 5-9, 2005, pp. 522 - 527
Baxter, P., & Jack, S. (2008). Qualitative case study methodology: Study design and
implementation for novice researchers. The qualitative report, 13(4), 544-559.
Berenbach, B., & Broy, M. (2009). Professional and ethical dilemmas in software
engineering. Computer, 74-80
89
Bynum, T. (2008). Computer and information ethics.
Bynum, T. W. (2000). A very short history of computer ethics. APA Newsletters on
Philosophy and Computers, 99(2).
Capurro, R. (1988). Information Ethos And Information Ethics-Ideas To Take
Responsible Action in the Field of Information. Nachrichten Fur Dokumentation,
39(1), 1-4.
Collins, D. (2009). Essentials of business ethics: Creating an organization of high
integrity and superior performance (Vol. 47). John Wiley & Sons.
Collins, D. (2012). Defending the Code: Using ethics to improve organizational
performance
Deigh, J. (1995). In Robert Audi (ed), The Cambridge Dictionary of Philosophy.
DiCicco‐Bloom, B., & Crabtree, B. F. (2006). The qualitative research interview.
Medical education, 40(4), 314-321.
Dodig-Crnkovic, G., & Feldt, R. (2009). Professional and Ethical Issues of Software
Engineering Curricula. 2010.
Evans, S. (2012, May). Ethics in Software Engineering, Net Neutrality and Badware-
What obligations rest on software engineers to act ethically in their profession? In
Proceedings of the 2012 4th IEEE Software Engineering Colloquium (SE).
Fieser, J., & Dowden, B. (2011). Internet encyclopedia of philosophy.
Freeman, P., & Hart, D. (2004). A science of design for software-intensive systems.
Communications of the ACM, 47(8), 19-21.
Gable, G. G. (1994). Integrating case study and survey research methods: an example in
information systems. European journal of information systems, 3(2), 112-126.
Génova, G., González, M. R., & Fraga, A. (2006). Ethical Responsibility of the Software
Engineer. In PhiSE.
Godfrey, R. (1996, January). The complete software engineering professional-doing the
right thing as well as doing it right: Five steps on the road to an ethics curriculum.
In Software Engineering: Education and Practice, 1996. Proceedings.
International Conference (pp. 26-32). IEEE.
90
Gotterbarn, D., & Miller, K. W. (2009). The public is the priority: Making decisions
using the software engineering code of ethics. Computer, (6), 66-73.
Gotterbarn, D. (2001). Software Engineering Ethics. Encyclopedia of Software
Engineering.
Gotterbarn, D., Miller, K., & Rogerson, S. (1997). “Software Engineering Code Ethics”,
Communications of the ACM 40, 11 (Nov. 1997), pp. 110-118.
Gotterbarn, D., Miller, K., & Rogerson, S. (1999). Computer society and ACM approve
software engineering code of ethics. Computer, 32(10), 84-88.
Hameed, S., Al-Khateeb, K., & Mutaz, Z. (2010, May). Software Engineer Islamic
Ethics: An interactive web-based model. In Computer and Communication
Engineering (ICCCE), 2010 International Conference on (pp. 1-7). IEEE.
Heersmink, R., van den Hoven, J., van Eck, N. J., & van den Berg, J. (2011).
Bibliometric mapping of computer and information ethics. Ethics and information
technology, 13(3), 241-249.
Huberman, A. M., & Miles, M. B. (2002). The qualitative researcher’s companion.
Thousand Oaks.
IEEE-CS/ACM Joint Task Force (Version 5.2). Software Engneering Ethics and
Professional Practices.
Jalote, P. (1997). An integrated approach to software engineering. Springer Science &
Business Media.
John E. Software Testing Fundamentals—Concepts, Roles, and Terminology
Kaddu, S. B. (2007). Information Ethics: a student’s perspective. International Review of
Information Ethics, 7(9), 1-6.
Kitchenham, B. (2004). Procedures for performing systematic reviews. Keele, UK, Keele
University, 33(2004), 1-26.
Landers, J.(2014) The Purpose of a Professional Code of Ethics[Online]Available at:
http://www.ehow.com/facts_7470742_purpose-professional-code-ethics.html
91
Lethbridge, T. C., Sim, S. E., & Singer, J. (2005). Studying software engineers: Data
collection techniques for software field studies. Empirical software engineering,
10(3), 311-341.
Lurie, Y., & Mark, S. (2015). Professional Ethics of Software Engineers: An Ethical
Framework. Science and engineering ethics, 1-18.
Maner, W. (1996). Unique ethical problems in information technology. Science and
Engineering Ethics, 2(2), 137-154.
Merriam, S. B. (1998). Qualitative Research and Case Study Applications in Education.
Revised and Expanded from" Case Study Research in Education.". Jossey-Bass
Publishers, 350 Sansome St, San Francisco, CA 94104.
Mills, H. D. (1999). The management of software engineering, Part I: Principles of
software engineering. IBM Systems Journal, 38(2.3), 289-295.
Moor, J. H. (1985). What is computer ethics? Metaphilosophy, 16(4), 266-275.
Paul, R., & Elder, L. (2006). The Thinker's Guide to Understanding the Foundations of
Ethical Reasoning. Foundation Critical Thinking.
Pollice, G. (2006). Ethics and Software Development.
Polga, M. (2008) Requirements Engineering Explained
Quigley, M. (Ed.). (2007). Encyclopedia of information ethics and security. IGI Global.
Ramadhan, A., Sensuse, D. I., & Arymurthy, A. M. (2011). E-government ethics: A
synergy of computer ethics, information ethics, and cyber ethics. e-Government,
2(8).
Redstone, A. (2014) What is the Purpose of a Code of Ethics? Available at:
http://www.ehow.com/facts_5490008_purpose-code-ethics.html
Reifer, D. J. (2011). Software Maintenance Success Recipes. CRC Press.
Rogerson, S. (2002). The software engineering code of ethics and professional practice:
a case for being proactive. In Proceedings-International Computer Software &
Applications Conference (pp. 344-345).
92
Rodeño, M. J., Fontrodona, J., & Gutiérrez, J. A. Computer Ethics: A Syllabus For
Teaching Ethics In Computer Science.
Runeson, P., & Höst, M. (2009). Guidelines for conducting and reporting case study
research in software engineering. Empirical software engineering, 14(2), 131-164.
Runeson, P., Host, M., Rainer, A., & Regnell, B. (2012). Case study research in software
engineering: Guidelines and examples. John Wiley & Sons.
SADAD Payment System official website: [Online]. Available at:
http://www.sadad.com/English/history/Pages/Overview.aspx
Shakib, J., & Layton, D. (2014, May). Interaction between ethics and technology. In
Ethics in Science, Technology and Engineering, 2014 IEEE International
Symposium on (pp. 1-5). IEEE.
Schell, C. (1992). The value of the case study as a research strategy. Manchester Business
School, 2.
Software Engineering Code of Ethics (5.2) [Online]. Available at:
http://www.acm.org/about/se-code , ACM/IEEE-CS retrieved 21st February,
2014.
Sommerville, I. (2004). Software Engineering. International computer science series.
Taherdoost, H., Sahibuddin, S., Namayandeh, M., & Jalaliyoon, N. (2011). Propose an
educational plan for computer ethics and information security. Procedia-Social
and Behavioral Sciences, 28, 815-819.
Taherdoost, H., Sahibuddin, S., Namayandeh, M., & Jalaliyoon, N. (2013, December).
Computer and Information Security Ethics--Models. In Advanced Computer
Science Applications and Technologies (ACSAT), 2013 International Conference
on (pp. 145-149). IEEE.
Thomson, A. J., & Schmoldt, D. L. (2001). Ethics in computer software design and
development. Computers and Electronics in Agriculture, 30(1), 85-102.
Vallor, S. An Introduction to Software Engineering Ethics. Retrieved from
http://www.scu.edu/ethics/practicing/focusareas/technology/resources/Students.p
df
93
Veatch, R.M., 1977. Case Studies in Medical Ethics. Cambridge: Harvard University
Press,
Volkman, R. (2015). Computer ethics beyond mere compliance. Journal of Information,
Communication and Ethics in Society, 13(3/4), 176-189.
Wiegers, K., & Beatty, J. (2013). Software requirements. Pearson Education.
Williams, L. (2006). Testing overview and black-box testing techniques. URL:
http://agile. csc. ncsu. edu/SEMaterials/BlackBox. pdf (accessed: 05/08/2008).
Yücel, R., Elibol, H., & Dağdelen, O. (2009). Globalization and international marketing
ethics problems. International Research Journal of Finance and Economics, 26,
93-104.
Yin, R. K. (2003). Case study research design and methods third edition. Applied social
research methods series, 5.
94
APPENDIX A- Software Engineering Code of Ethics and Professional
Practice (Full Version)
PREAMBLE
Computers have a central and growing role in commerce, industry, government,
medicine, education, entertainment and society at large. Software engineers are those
who contribute by direct participation or by teaching, to the analysis, specification,
design, development, certification, maintenance and testing of software systems. Because
of their roles in developing software systems, software engineers have significant
opportunities to do good or cause harm, to enable others to do good or cause harm, or to
influence others to do good or cause harm. To ensure, as much as possible, that their
efforts will be used for good, software engineers must commit themselves to making
software engineering a beneficial and respected profession. In accordance with that
commitment, software engineers shall adhere to the following Code of Ethics and
Professional Practice.
The Code contains eight Principles related to the behavior of and decisions made by
professional software engineers, including practitioners, educators, managers, supervisors
and policy makers, as well as trainees and students of the profession. The Principles
identify the ethically responsible relationships in which individuals, groups, and
organizations participate and the primary obligations within these relationships. The
Clauses of each Principle are illustrations of some of the obligations included in these
relationships. These obligations are founded in the software engineer’s humanity, in
special care owed to people affected by the work of software engineers, and the unique
elements of the practice of software engineering. The Code prescribes these as
obligations of anyone claiming to be or aspiring to be a software engineer.
It is not intended that the individual parts of the Code be used in isolation to justify errors
of omission or commission. The list of Principles and Clauses is not exhaustive. The
Clauses should not be read as separating the acceptable from the unacceptable in
professional conduct in all practical situations. The Code is not a simple ethical algorithm
that generates ethical decisions. In some situations standards may be in tension with each
other or with standards from other sources. These situations 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 and Professional Practice, given the circumstances.
Ethical tensions can best be addressed by thoughtful consideration of fundamental
principles, rather than blind reliance on detailed regulations. These Principles should
influence software engineers to consider broadly who is affected by their work; to
95
examine if they and their colleagues are treating other human beings with due respect; to
consider how the public, if reasonably well informed, would view their decisions; to
analyze how the least empowered will be affected by their decisions; and to consider
whether their acts would be judged worthy of the ideal professional working as a
software engineer. In all these judgments concern for the health, safety and welfare of the
public is primary; that is, the "Public Interest" is central to this Code.
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 software engineers and managers of software engineers
who need to take positive action in a specific case by documenting the ethical stance of
the profession. The Code provides an ethical foundation to which individuals within
teams and the team as a whole can appeal. The Code helps to define those actions that are
ethically improper to request of a software engineer or teams of software engineers.
The Code is not simply for adjudicating the nature of questionable acts; it also has an
important educational function. As this Code expresses the consensus of the profession
on ethical issues, it is a means to educate both the public and aspiring professionals about
the ethical obligations of all software engineers.
PRINCIPLES
Principle 1: PUBLIC
Software engineers shall act consistently with the public interest. In particular,
software engineers shall, as appropriate:
1.01. Accept full responsibility for their own work.
1.02. Moderate the interests of the software engineer, the employer, the client and the
users with the public good.
1.03. Approve software only if they have a well-founded belief that it is safe, meets
specifications, passes appropriate tests, and does not diminish quality of life, diminish
privacy or harm the environment. The ultimate effect of the work should be to the public
good.
1.04. Disclose to appropriate persons or authorities any actual or potential danger to the
user, the public, or the environment, that they reasonably believe to be associated with
software or related documents.
96
1.05. Cooperate in efforts to address matters of grave public concern caused by software,
its installation, maintenance, support or documentation.
1.06. Be fair and avoid deception in all statements, particularly public ones, concerning
software or related documents, methods and tools.
1.07. Consider issues of physical disabilities, allocation of resources, economic
disadvantage and other factors that can diminish access to the benefits of software.
1.08. Be encouraged to volunteer professional skills to good causes and contribute to
public education concerning the discipline.
Principle 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. In particular, software engineers shall, as
appropriate:
2.01. Provide service in their areas of competence, being honest and forthright about any
limitations of their experience and education.
2.02. Not knowingly use software that is obtained or retained either illegally or
unethically.
2.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.
2.04. Ensure that any document upon which they rely has been approved, when required,
by someone authorized to approve it.
2.05. Keep private any confidential information gained in their professional work, where
such confidentiality is consistent with the public interest and consistent with the law.
2.06. Identify, document, collect evidence and report to the client or the employer
promptly if, in their opinion, a project is likely to fail, to prove too expensive, to violate
intellectual property law, or otherwise to be problematic.
2.07. Identify, document, and report significant issues of social concern, of which they
are aware, in software or related documents, to the employer or the client.
2.08. Accept no outside work detrimental to the work they perform for their primary
employer.
97
2.09. Promote no interest adverse to their employer or client, unless a higher ethical
concern is being compromised; in that case, inform the employer or another appropriate
authority of the ethical concern.
Principle 3: PRODUCT
Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible. In particular, software engineers shall,
as appropriate:
3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring
significant tradeoffs are clear to and accepted by the employer and the client, and are
available for consideration by the user and the public.
3.02. Ensure proper and achievable goals and objectives for any project on which they
work or propose.
3.03. Identify, define and address ethical, economic, cultural, legal and environmental
issues related to work projects.
3.04. Ensure that they are qualified for any project on which they work or propose to
work by an appropriate combination of education and training, and experience.
3.05. Ensure an appropriate method is used for any project on which they work or
propose to work.
3.06. Work to follow professional standards, when available, that are most appropriate for
the task at hand, departing from these only when ethically or technically justified.
3.07. Strive to fully understand the specifications for software on which they work.
3.08. Ensure that specifications for software on which they work have been well
documented, satisfy the users’ requirements and have the appropriate approvals.
3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and
outcomes on any project on which they work or propose to work and provide an
uncertainty assessment of these estimates.
3.10. Ensure adequate testing, debugging, and review of software and related documents
on which they work.
98
3.11. Ensure adequate documentation, including significant problems discovered and
solutions adopted, for any project on which they work.
3.12. Work to develop software and related documents that respect the privacy of those
who will be affected by that software.
3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it
only in ways properly authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
3.15 Treat all forms of software maintenance with the same professionalism as new
development.
Principle 4: JUDGMENT
Software engineers shall maintain integrity and independence in their professional
judgment. In particular, software engineers shall, as appropriate:
4.01. Temper all technical judgments by the need to support and maintain human values.
4.02 Only endorse documents either prepared under their supervision or within their areas
of competence and with which they are in agreement.
4.03. Maintain professional objectivity with respect to any software or related documents
they are asked to evaluate.
4.04. Not engage in deceptive financial practices such as bribery, double billing, or other
improper financial practices.
4.05. Disclose to all concerned parties those conflicts of interest that cannot reasonably
be avoided or escaped.
4.06. Refuse to participate, as members or advisors, in a private, governmental or
professional body concerned with software related issues, in which they, their employers
or their clients have undisclosed potential conflicts of interest.
Principle 5: MANAGEMENT
Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and maintenance . In
particular, those managing or leading software engineers shall, as appropriate:
99
5.01 Ensure good management for any project on which they work, including effective
procedures for promotion of quality and reduction of risk.
5.02. Ensure that software engineers are informed of standards before being held to them.
5.03. Ensure that software engineers know the employer's policies and procedures for
protecting passwords, files and information that is confidential to the employer or
confidential to others.
5.04. Assign work only after taking into account appropriate contributions of education
and experience tempered with a desire to further that education and experience.
5.05. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and
outcomes on any project on which they work or propose to work, and provide an
uncertainty assessment of these estimates.
5.06. Attract potential software engineers only by full and accurate description of the
conditions of employment.
5.07. Offer fair and just remuneration.
5.08. Not unjustly prevent someone from taking a position for which that person is
suitably qualified.
5.09. Ensure that there is a fair agreement concerning ownership of any software,
processes, research, writing, or other intellectual property to which a software engineer
has contributed.
5.10. Provide for due process in hearing charges of violation of an employer's policy or of
this Code.
5.11. Not ask a software engineer to do anything inconsistent with this Code.
5.12. Not punish anyone for expressing ethical concerns about a project.
Principle 6: PROFESSION
Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest. In particular, software engineers shall, as
appropriate:
6.01. Help develop an organizational environment favorable to acting ethically.
100
6.02. Promote public knowledge of software engineering.
6.03. Extend software engineering knowledge by appropriate participation in professional
organizations, meetings and publications.
6.04. Support, as members of a profession, other software engineers striving to follow
this Code.
6.05. Not promote their own interest at the expense of the profession, client or employer.
6.06. Obey all laws governing their work, unless, in exceptional circumstances, such
compliance is inconsistent with the public interest.
6.07. 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 speculative,
vacuous, deceptive, misleading, or doubtful.
6.08. Take responsibility for detecting, correcting, and reporting errors in software and
associated documents on which they work.
6.09. Ensure that clients, employers, and supervisors know of the software engineer's
commitment to this Code of ethics, and the subsequent ramifications of such
commitment.
6.10. Avoid associations with businesses and organizations which are in conflict with this
code.
6.11. Recognize that violations of this Code are inconsistent with being a professional
software engineer.
6.12. Express concerns to the people involved when significant violations of this Code
are detected unless this is impossible, counter-productive, or dangerous.
6.13. Report significant violations of this Code to appropriate authorities when it is clear
that consultation with people involved in these significant violations is impossible,
counter-productive or dangerous.
Principle 7: COLLEAGUES
Software engineers shall be fair to and supportive of their colleagues. In particular,
software engineers shall, as appropriate:
101
7.01. Encourage colleagues to adhere to this Code.
7.02. Assist colleagues in professional development.
7.03. Credit fully the work of others and refrain from taking undue credit.
7.04. Review the work of others in an objective, candid, and properly-documented way.
7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.
7.06. Assist colleagues in being fully aware of current standard work practices including
policies and procedures for protecting passwords, files and other confidential
information, and security measures in general.
7.07. Not unfairly intervene in the career of any colleague; however, concern for the
employer, the client or public interest may compel software engineers, in good faith, to
question the competence of a colleague.
7.08. In situations outside of their own areas of competence, call upon the opinions of
other professionals who have competence in that area.
Principle 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. In particular, software engineers shall continually endeavor to:
8.01. Further their knowledge of developments in the analysis, specification, design,
development, maintenance 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 at
reasonable cost and within a reasonable time.
8.03. Improve their ability to produce accurate, informative, and well-written
documentation.
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 relevant standards and the law governing the software
and related documents on which they work.
102
8.06 Improve their knowledge of this Code, its interpretation, and its application to their
work.
8.07 Not give unfair treatment to anyone because of any irrelevant prejudices.
8.08. Not influence others to undertake any action that involves a breach of this Code.
8.09. Recognize that personal violations of this Code are inconsistent with being a
professional software engineer.
(ACM/IEEE-CS Joint Task Force, 2014).
104
Appendix C - Interviews questions
1. Can you introduce yourself please?
Company:
Department:
Role:
2. Can you tell me how ethic is important in your work? Why? Implication?
_____________________________________________________________________
_____________________________________________________________________
3. In what manner ethics is being practice?
_____________________________________________________________________
_____________________________________________________________________
4. How about software engineering code of ethic?
a. Based on the SDLC what are the ethical concerns?
Requirement:
__________________________________________________________________
__________________________________________________________________
Design:
__________________________________________________________________
__________________________________________________________________
Coding:
__________________________________________________________________
__________________________________________________________________
Testing:
__________________________________________________________________
__________________________________________________________________
Deploy:
__________________________________________________________________
__________________________________________________________________
Maintenance:
__________________________________________________________________
__________________________________________________________________
105
b. Which are perceived to be the most challenging to be followed?
_______________________________________________________________
_______________________________________________________________
c. Which are perceived as important?
_______________________________________________________________
_______________________________________________________________
d. How they are imposed?
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
e. How do you make sure that code of ethics is being implemented within the
SDLC?
_______________________________________________________________
_______________________________________________________________
5. Is there any incident were there was a misconduct?
a. How did you know about it?
_______________________________________________________________
_______________________________________________________________
b. What kind of action did you take?
_______________________________________________________________
_______________________________________________________________
6. Do you want to make any suggestion on how to best practice software engineering
code of ethics in projects?
106
APPENDIX D - Sample of the questionnaire
Dear colleague,
This survey is used meant for research purposes only, as part of the requirement in the
completion of my Master of Science in Software Engineering at Prince Sultan University.
Any information collected from this survey will be treated with strictest confidentiality,
and will be destroyed once the research is completed.
As a software engineer please kindly take some time (Not more than 15 minutes) to
answer the questionnaire below on the topic of ethics in the field of software engineering.
Years of experience: _________________________________
Position: __________________________________________
Software Engineering Code of Ethics and Professional Practice (Version 5.2) has been
developed by the ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and
Professional Practices and jointly approved by the ACM and the IEEE-CS as the standard
for teaching and practicing software engineering.
In the table below there are some ethical clauses from Software Engineering Code of
Ethics and Professional Practice (Version 5.2) by ACM and the IEEE-CS. For each
statement or clause, we would like you to please:
1. Chose the SDLC phase that each clause most likely will occur or relevant to by
checking (√) in the relevant column. (i.e. choose requirement, or/and design,
or/and code, or/and test)
2. Rate each software engineering code of ethics clauses BASED ON THEIR
PERCEIVED CHALLENGES to be followed by rating on the scale of 1 to 7,
where 1 is least challenging and 7 as highly challenging.
3. Rate each software engineering code of ethics clauses BASED ON THEIR
PERCEIVED RISK by rating on the scale of 1 to 7, where 1 is very low risk,
and 7 is very high risk.
IEEE/ACM Software Engineering Code of Ethics Requiremen
t
Design Code Test Maintenanc
e
Importanc
e
(1-7)
Challeng
e
(1-7)
1- PUBLIC - Software engineers shall act consistently with the public interest. In particular, software engineers shall, as appropriate:
107
1.1 Accept full responsibility for their own work.
1.2 Moderate the interests of the software engineer,
the employer, the client and the users with the public
good.
1.3 Approve software only if they have a well-
founded belief that it is safe, meets specifications,
passes appropriate tests, and does not diminish quality
of life, diminish privacy or harm the environment.
The ultimate effect of the work should be to the
public good.
1.4 Disclose to appropriate persons or authorities any
actual or potential danger to the user, the public, or
the environment, that they reasonably believe to be
associated with software or related documents.
1.5 Cooperate in efforts to address matters of grave
public concern caused by software, its installation,
maintenance, support or documentation.
1.6 Be fair and avoid deception in all statements,
particularly public ones, concerning software or
related documents, methods and tools.
1.7 Consider issues of physical disabilities, allocation
of resources, economic disadvantage and other factors
that can diminish access to the benefits of software.
1.8 Be encouraged to volunteer professional skills to
good causes and contribute to public education
concerning the discipline.
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. In particular, software engineers shall, as appropriate:
2.1 Provide service in their areas of competence,
being honest and forthright about any limitations of
their experience and education.
2.2 Not knowingly use software that is obtained or
retained either illegally or unethically.
2.3 Use the property of a client or employer only in
ways properly authorized, and with the client's or
employer's knowledge and consent.
2.4 Ensure that any document upon which they rely
has been approved, when required, by someone
authorized to approve it.
2.05. Keep private any confidential information
gained in their professional work, where such
confidentiality is consistent with the public interest
and consistent with the law.
2.06. Identify, document, collect evidence and report
to the client or the employer promptly if, in their
opinion, a project is likely to fail, to prove too
expensive, to violate intellectual property law, or
otherwise to be problematic.
2.07. Identify, document, and report significant issues
of social concern, of which they are aware, in
software or related documents, to the employer or the
client.
2.08. Accept no outside work detrimental to the work
108
they perform for their primary employer.
2.09. Promote no interest adverse to their employer or
client, unless a higher ethical concern is being
compromised; in that case, inform the employer or
another appropriate authority of the ethical concern
3- PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards
possible. In particular, software engineers shall, as appropriate:
3.1 Strive for high quality, acceptable cost and a
reasonable schedule, ensuring significant tradeoffs are
clear to and accepted by the employer and the client,
and are available for consideration by the user and the
public.
3.2 Ensure proper and achievable goals and objectives
for any project on which they work or propose.
3.3 Identify, define and address ethical, economic,
cultural, legal and environmental issues related to
work projects.
3.4 Ensure that they are qualified for any project on
which they work or propose to work by an
appropriate combination of education and training,
and experience.
3.5 Ensure an appropriate method is used for any
project on which they work or propose to work.
3.6 Work to follow professional standards, when
available, that are most appropriate for the task at
hand, departing from these only when ethically or
technically justified.
3.7 Strive to fully understand the specifications for
software on which they work.
3.08. Ensure that specifications for software on which
they work have been well documented, satisfy the
users’ requirements and have the appropriate
approvals.
3.09. Ensure realistic quantitative estimates of cost,
scheduling, personnel, quality and outcomes on any
project on which they work or propose to work and
provide an uncertainty assessment of these estimates.
3.10. Ensure adequate testing, debugging, and review
of software and related documents on which they
work.
3.11. Ensure adequate documentation, including
significant problems discovered and solutions
adopted, for any project on which they work.
3.12. Work to develop software and related
documents that respect the privacy of those who will
be affected by that software.
3.13. Be careful to use only accurate data derived by
ethical and lawful means, and use it only in ways
properly authorized.
3.14. Maintain the integrity of data, being sensitive to
outdated or flawed occurrences.
3.15 Treat all forms of software maintenance with the
same professionalism as new development.
109
4- JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment. In particular, software
engineers shall, as appropriate:
4.1 Temper all technical judgments by the need to
support and maintain human values.
4.2 Only endorse documents either prepared under
their supervision or within their areas of competence
and with which they are in agreement.
4.3 Maintain professional objectivity with respect to
any software or related documents they are asked to
evaluate.
4.4 Not engage in deceptive financial practices such
as bribery, double billing, or other improper financial
practices.
4.5 Disclose to all concerned parties those conflicts of
interest that cannot reasonably be avoided or escaped.
4.6 Refuse to participate, as members or advisors, in a
private, governmental or professional body concerned
with software related issues, in which they, their
employers or their clients have undisclosed potential
conflicts of interest.
In your point of view, please provide the most common issues of ethic that you believe
need to be addressed at each of the following phase:
1. Requirement
2. Design
3. Code
4. Test
5. Maintenance
111
Years of experience Weight Count
0-4 1 12 12
5- 9 2 3 6
10 and more 3 2 6
Total 17 24
24/2 = 12
Principle 1
Results After the weight
Requirement Design Code Test Maintenance Challenge Risk
1.1 Accept full responsibility for their own work. 22 23 21 18 15 4.7 4.93
1.2 Moderate the interests of the software
engineer, the employer, the client and the users
with the public good.
16 14 2 6 4 4.5 4.1
1.3 Approve software only if they have a well-
founded belief that it is safe, meets specifications,
passes appropriate tests, and does not diminish
7 8 11 14 5 4.8 5.4
112
quality of life, diminish privacy or harm the
environment. The ultimate effect of the work
should be to the public good.
1.4 Disclose to appropriate persons or authorities
any actual or potential danger to the user, the
public, or the environment, that they reasonably
believe to be associated with software or related
documents.
15 10 8 10 12 4.2 4.8
1.5 Cooperate in efforts to address matters of
grave public concern caused by software, its
installation, maintenance, support or
documentation.
12 3 9 8 16 4.1 4.1
1.6 Be fair and avoid deception in all statements,
particularly public ones, concerning software or
related documents, methods and tools.
15 18 8 8 12 4.3 4.2
1.7 Consider issues of physical disabilities,
allocation of resources, economic disadvantage
and other factors that can diminish access to the
benefits of software.
19 11 3 5 10 4.2 4
1.8 Be encouraged to volunteer professional skills
to good causes and contribute to public education
concerning the discipline.
16 18 14 11 13 3.2 2.6
Principle 2
Results After the weight
Requirement Design Code Test Maintenance Challenge Risk
2.1 Provide service in their areas of competence,
being honest and forthright about any limitations
of their experience and education.
13 15 13 14 16 3.6 3
2.2 Not knowingly use software that is obtained or
retained either illegally or unethically.
9 8 18 10 12 4.5 5
2.3 Use the property of a client or employer only
in ways properly authorized, and with the client's
or employer's knowledge and consent.
22 21 19 20 15 3 4
2.4 Ensure that any document upon which they
rely has been approved, when required, by
someone authorized to approve it.
19 15 13 14 13 3.7 4
2.05. Keep private any confidential information
gained in their professional work, where such
confidentiality is consistent with the public
interest and consistent with the law.
21 11 14 13 16 4.7 5.2
2.06. Identify, document, collect evidence and
report to the client or the employer promptly if, in
18 11 7 15 5 4.4 5
113
their opinion, a project is likely to fail, to prove too
expensive, to violate intellectual property law, or
otherwise to be problematic.
2.07. Identify, document, and report significant
issues of social concern, of which they are aware,
in software or related documents, to the
employer or the client.
21 14 5 15 12 4.5 4
2.08. Accept no outside work detrimental to the
work they perform for their primary employer.
18 14 12 11 16 3.6 4
2.09. Promote no interest adverse to their
employer or client, unless a higher ethical concern
is being compromised; in that case, inform the
employer or another appropriate authority of the
ethical concern.
13 13 12 13 10 3.6 4.4
Principle 3
Results After the weight
Requirement Design Code Test Maintenance Challenge Risk
3.1 Strive for high
quality,
acceptable cost
and a reasonable
schedule,
ensuring
significant
tradeoffs are clear
to and accepted
by the employer
and the client,
and are available
for consideration
by the user and
the public.
21 18 18 19 15 5.2 4.5
3.2 Ensure proper
and achievable
goals and
objectives for any
project on which
they work or
propose.
20 11 10 14 10 4.8 4.6
3.3 Identify,
define and
address ethical,
economic,
24 14 9 10 12 4.3 4.2
114
cultural, legal and
environmental
issues related to
work projects.
3.4 Ensure that
they are qualified
for any project on
which they work
or propose to
work by an
appropriate
combination of
education and
training, and
experience.
19 15 13 14 15 4.4 4.5
3.5 Ensure an
appropriate
method is used
for any project on
which they work
or propose to
work.
18 17 15 15 8 4 3.6
3.6 Work to
follow
professional
standards, when
available, that are
most appropriate
for the task at
hand, departing
from these only
when ethically or
technically
justified.
20 21 20 20 14 3.9 4
3.7 Strive to fully understand the specifications for software on which they work.
11 14 15 16 14 4.6 4.5
3.08. Ensure that specifications for software on which they work have been well documented, satisfy the users’ requirements and
11 9 7 13 12 5.2 4.4
115
have the appropriate approvals.
3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work and provide an uncertainty assessment of these estimates.
21
12 10 10 9 4.7 4.3
3.10. Ensure adequate testing, debugging, and review of software and related documents on which they work.
4 8
8 22 1 4 5
3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on which they work.
10 12 11 15 13 4.4 4.2
3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that software.
11 13 10 14 6 4.3 4.8
3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly
14 10 9 17 14 4 4.4
116
authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
13 10 7 15 17 4 4.6
3.15 Treat all forms of software maintenance with the same professionalism as new development.
5 7 4 5 21 3.5 3.6
Principle 4
Results after the weight Requirement Design Code Test Maintenance Challenge Risk
4.1 Temper all technical judgments by
the need to support and maintain
human values.
20 12 9 12 15 3 2.8
4.2 Only endorse documents either
prepared under their supervision or
within their areas of competence and
with which they are in agreement.
19 20 15 16 12 3 3.5
4.3 Maintain professional objectivity
with respect to any software or related
documents they are asked to evaluate.
15 11 9 16 14 3.7 3.7
4.4 Not engage in deceptive financial
practices such as bribery, double
billing, or other improper financial
practices.
22 18 17 17 18 3 4
4.5 Disclose to all concerned parties
those conflicts of interest that cannot
reasonably be avoided or escaped.
23 13 11 13 17 3.9 4.6
4.6 Refuse to participate, as members
or advisors, in a private, governmental
or professional body concerned with
software related issues, in which they,
their employers or their clients have
undisclosed potential conflicts of
interest.
22 13 8 14 13 4.4 5
In your point of view, please provide the most common issues of ethic that you believe need to be addressed at each of the following phase:
Requirement Design Code Test maintenance
1. - technical/solution knowledge - easy vs right way of - crack codes - the coverage -to much work
117
- compliance with rule and
regulation
design
-
- Non-
compliance
with the
company
policies
around
2. Separating the stakeholder needs from developer righteousness
3.
To be honest, Im not sure that I fully understood the questions, they were quit hard to analyze and answer.
However, I believe that keeping integrity, high quality, security, and achieving the business need on its optimum
figure, with respect to the agreed budget and timelines should be maintained throughout the software life cycle to
avoid any ethical issues. And the same applies for the below phases!
4.
5.
6. Not to bulid the requirement
based on personal needs or
support of a certain technology
Not to create the
design based on
personal needs or
support of a certain
technology
Not to create
harmful code
Not to jump
certain cases to
save time and
reduce cost
Creating issues
that were not
part of the main
release
7.
8. Honesty in meeting customer needs Training customers as they learn their needs because customers may not well know their needs - it is unethical to build requirements knowing the customer is uneducated in describing their needs
It is unethical to not follow the correct design standards, to use incorrect design templates and to not verify design has properly designed the requirements.
It is unethical to not follow the correct coding standards It is unethical to not verify you have coded the design and traced code back through design to the requirements.
It is unethical to not follow correct standards it is unethical to not perform traceability It is unethical to do a quick and dirty job It is unethical to pass software when it is known to be faulty
9.
10. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices. *
Ensure an appropriate method is used for any project on which they work or propose to work.
Accept no outside work detrimental to the work they perform for their primary employer.
Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices. &
118
Treat all forms of software maintenance with the same professionalism as new development.
11. Ensuring proper security, privacy and that these are part of requirements from start.
Ensuring proper security, privacy and that these are part of designs from start.
Not cutting corners
Providing adequate testing.
Providing long term maintenance.
12.
13. we have to identify clearly requirement from end user perspective
using a stander code
troubleshooting any issue
14.
15.
119
APPENDIX F – Interviews results
Response Can you tell me how ethic is
important in your work? Obj 3
In what manner ethics is being practice?
Obj 1
1-
Multiple things ethics is very
important; because, what I see its
protects everyone, its protect the
organization its protect the people, so
it’s like one of the very important
aspect that everyone has to take it in
his consideration while he is working
in any company and this organization
is one of these example; so I believe if
we have a clear ethics if we have a
clear standard about these ethics
everything will be find, and maybe the
productivity of the organization will
be better.
Ok, as you know I’m working under (Company X )and there we have
standard as company x employees we have to have an ethics standard so
every year we have a refresh training we call it , where we have to go
through multiple ethics check points ; so as x employee we have to be
compliance with these ethics such as confidentiality, data , conflict of interest,
bribery. All these should be taken into consideration as part of our
refreshment training.
So how can I see the ethics impacting my job the alignment let take an
example when do the quality assurance within my function I have to make
sure all procedures are clear have the type or classification its confidential can
to be exposed so this can be consider part of the ethics another one can be
related to the people how they communicated with each other so we have
multiple layers I see it in this way we have:
Processes
People
The system itself the organization
So the processes should clear understand for each resource each document has
its own classification ethically you cannot expose it to any one unless it’s
clear for you whether you can or you cannot.
So for the people: we have multiple aspects; I have to make sure that the
people doesn’t have conflict of interest between SADAD and HP you have to
make sure that they are treated very well they do not have disregards or
disrespect or dignity issues all these aspect as a QA should be in
consideration. So I have to say one issue I found one incident so my job is to
escalate this to the committee and to resolve this so this ethical issue be
resolved because my understanding this will have impact on the moral of the
team so we have to resolve it directly is this for the people.
Now for the organization it all across the organization because every you
know when HP or SADAD has contract with HP so they have to make sure
that there no conflict of interest there’s no any gaps there is no any finding
that affect the ethical things so this is in general.
2- Off course; ethics is connected to
professionalism so the more you apply
work ethics the more you are
considered as a professional person
and your conduct is appreciated by
others. Also by applying ethics I
guess your supporting yourself and
preventing yourself from being in
troubles; troubles that can go into
confidentiality, integrity whatever that
can be a bad experience for yourself.
Ok, first thing is when you receive requirements for example; as a third party
some requirements might be difficult to develop and some might be easy to
develop so ethically you should not go with what’s easy to develop but rather
what’s best for the stakeholder asking you for this requirement, so you apply
ethics of knowing the best for your customer and doing it even if it’s not the
best solution for yourself as a third party.
From a change management perspective also the ethics that you should apply
is when you facilitate this change; I would say the time consumed; whenever a
request come the requester doesn’t know the complexity of this so you can say
it’s very complex its will take me a month or you can say it’s a very easy that
it going to take me a week. So again ethically you should support this.
3-
In my view I think ethics is something
very important; the reason behind is if
we do not have ethics in anything
First of all we keep up the moral value it’s not work alone , so we just say that
there are some soft skills that we need to develop and after that we need to
understand what particular thing will disturbed others. This are the things are
120
Based on the SDLC what are the ethical concerns? Obj1
Response Requirement Design Code Test
1- I think requirement is the start point and
the most difficult part; at this stage there
is the customer (I’m giving you this is
form my experience) now when start the
interaction with the customer the ethical
issues might come at this stage; the
Design or the technical team
including design development
testing I think the level will be there
but not the same as the requirement
ok, now the ethical might be
between the team for example
there is no any quality that is going to
be delivered right.
Suppose if we have a team mate and
then if there are not delivering okay, if
they do not have this ethical
consciousness in their mind that they
do not like suppose we have bugs and
all that whatever QA reports it been
there it’s there that software
development from our site they will
know something proactively that there
is a bug exists something like that, this
is we can not dig in further but it
applies like thing about it and ethical
value to it.
Overall it’s very important as I see a
stone in software development.
going to encompass the complete value. As a practice what we do it during
meeting monthly meetings we do collaborate and we do speak up and we
come up with a variable messing in the slide we give our input.
Response
How about software engineering code of ethic?
1 to be honest with you I do not have wariness about it; if there is something called software engineering ethics I
know about the generic ethical issue as I mentioned the refresh training we have a generic staff for all the
organization not for a specific district we have the bribery ethics you shouldn’t do it we have the conflict of interest
we have dignity we have all this stuff covered in the refresher training and all HP employee comply to this training
2 I never read it.
3
Software engineering code of ethics heard about it but not going very deep about it.
It’s there we know it in our head and everyone knows about it as a policy as a process. But specifically we do not
have that.
It’s a very good at least I feel it’s there it has to be practice. Yes, it’s better to have it as a SDLC we want to match
this with an SDC itself. When we talk about SDLC we are talking about different perspectives.
121
customer my ask for things let say
beyond the expectation and in order to
achieve them and get the customer
satisfaction you might exceed or you
might violate your ethical issues in order
to achieve this.so I think this is very
important point is has to be addressed
very well at this level so this is for
requirement.
between the testing and the
development when I was managing
the testing team I was facing a lot of
issues between the development and
testing sometimes we .. some words
sometimes we do not accept the way
they are developing the system so a
lot of clashes introduced and some
classes can introduce some ethical
issues and some time we disregard
there work we disregard the quality
of the work they deliver, so we
consider them they do not work as
what they supposed to do, do you
got my point so its doses reach to the
level.
2-
As I said ethically you should support
the best for the requester and not the
easy solution rather any different
solution you might think of. Or you
know that this not satisfy him but you do
not say It.; so you should make him
aware of what he asking for and wheat
he is receiving.
For the design I would say that you
can say; it’s depends on the
company for example you can
design a code that it’s prone to
hacking let say weak. There is a
strong code and a weak code;
sometimes writing a weak code of
not following the best practices for
coding may make it simple and easy
to change. However, ethically you
should not; you should go with dried
coding practices.
3-
If we going to collect a requirement
generally we will see what is there and
what’s is need and they will contact the
Clint then they will had the CAD and
something like that, for me this my;
ethical practice sometimes it will be or
it’s hard for BA to dig further into what
exactly the client needs in generally and
If you see that a problem can have
many designed solutions. From
requirement it will come to
architecture then design and all that.
Again from design point of view it
has something with man days right
so you will design and complexity
generally what happens form the
From
development
point of view as I
said I gave you
one example;
about fixing a
bugs. Here form
ethical point of
Testing point
of view it
goes there
like as I go it
can be same
as reporting
the bug, there
are pressure
122
it’s been identified that there are 50%
knows what they need and the other
50% they do not know what they need.
They what something like that they just
will give comparison there ; the BA
should go much deeper not just as
project point of view if I know that this
requirement going to be easier tougher it
should not be that way he should
separate that and he should be collecting
everything not what I like.
bottom up the manager is there and
his going to tell you that there is a
limited recourse of JAVA resource
something like that I feel that the
design should not be bind to
something like that is should be
dependent and directly its affects us.
It’s should come more ethical value
not something driven form
circumstances and situations all that
it should come from what it’s the
best approach to do that
view what I feel
is fixing the bug
(I’m going
further) that can
be a bug that fix
the problem and
there can be bug
the postpone the
problem that there
are way as
sometime we
cannot cover it up
completely we
just have bugs not
are been fixed
completely we
give it the
production we
going to solve this
and we know that
this will be
opened again in a
while. Just
because the
pressure is on I
think this the one
and I feel
software
development
should be spate
form that concern.
I just give you an
example it can be
many.
on and then
there is a
blocker blog
we fixed it
then it’s
become a
functional
bug in their
consciousness
they had to
report
whatever,
they should
not keep it to
them self like
I assume or
presume that
this will not
happen that
not a very
good practice,
they should
think it from
production
point of view,
like they just
think it the
software
developer
give this bug
and they have
to assist this
and they
should think it
from a
production
point of view
123
like what
would happen
and if they
have and
SADAD
specially what
I feel is like if
they have an
environmental
problems they
compromise a
bit they will
assume that
this recourse
will accesses
this database
and then
problem will
not going to
come they not
to be blame
but they just
compromise
that. I think
from an
ethical point
for view they
should be
zero
compromise.
Respon
se
Which are perceived to be the
most challenging to be followed?
Which are
perceived as
important?
How they are imposed?
1-
The hardest is resolving conflict of
interests; this is the hardest part for
me I see is conflict of interest
between teams.
Ok, what the code of
ethics you are
referring to? I think
people respect and
As I mentioned we try not to force them; but in the
documentation yes we enforce them in the policies and the
procedures; all documents should be clear. For the other part
no we do not have something like that SADAD have ethics
124
the dignity, it’s very
important to build a
healthy environment
for bribery we do not have like code of ethics for respect. So
I think it’s the right time for us to start thinking of this
specially the quality team of the steering committee for the
organization. They have to consider those factor because this
is will increase the moral of the team if we do not have a
clear standard and we do not know what are the
consequences if you do not have them and what’s the benefits
if you have them and what’s are the impacts if you do not
have them; I think is going to be better for us.
2- It’s depends everyone on his area
so to me I might say facilitating the
requirement between the requester
and the designer because
sometimes the designer might not
understand the business need for it.
And go and just tell you do not do
this or do not implement this. So
you have to be a mediator between
the designer and the requester.
I would say
certifying the release
which is from testing
perspective.
From requirement perspective whenever your requirements
does not meet the requester or the stakeholder needs we call
it a gap and we have according to our KPIs or performance
indicators the number of gaps in each release so whenever
these are identified its makes bad performance so we make
sure no one finds a gaps In our requirements.
The BA process tell you whenever you write a requirement
you have to check for its completeness there is certain things
you have to check for to make sure that there is no gap into
your requirements. So we have a procedure for this.
3-
The toughest thing to adapt. I feel
the compromising of the time line
because it across all the SDLC.
Like because the timeline is there
and the pressure is there I think the
quality will be the toughest one.
This is should not be there is
should
I will go with the
same
I feel with my personal opinion just educating them
periodically and sometime in my experience we see such
behaviors like unethical behavior form employees and
something like that. I’m not saying that its really bad but,
maybe this person doesn’t have that knowledge, so we need
to educate them that it’s not the way its supposed to be and
then it will be good to have a processes and tell them the
benefit we got of it’s the point is that they do not see that at
benefit at their level they look into the organization level so
bringing it to the personal level saying that if you applied it
will help you.
Respon
se
Is there any incident were there was a misconduct? How did you know
about it? What kind of action did you
take?
1-
As I mentioned yes, we had some incidents and we
resolved them.
People disrespect and regard Conflict of interest and the
quality of the services.
Let take one by one; for the people disrespect and dignity I
already escalated to the higher management and they
already resolved it. Not SADAD to HP.
AND FOR conflict of interest until know sometimes it’s
From experience; and I
was part of it.
When we have those issues we
communicate it to the customers.
And they expose it to the partner.
125
not do you want me to give an example? Like sometime
the Service Design team asks HP recourse to verify HP
resource because we have SADAD 2 and we have HP
local team Service Creation so SD sometimes request for
HP local team to verify SADAD 2 jobs or delivers so
because the SC and SADDA 2 HP resource this will cause
a conflict of interest we always faces this we try to
decrease it but it’s not easy and the request come from the
customer so its causes conflict of interest.
2- Yes, actually as I said from business people they do not; ,
they just tell you what they required when they write the
CAD they do not make sure that this satisfies their need.
So sometimes for time sake and the easiest way they put
the solution and they just go through it with business
without telling them what the risk is or what goanna is
happen.
Through reviewing the
CAD, when I review
the CAD I noticed that
there is no risk impact
analysis done.
It was reported to management; I
reported to my manager that this
CAD doesn’t have risk impact
analysis and the BA team had to
complete it.
3-
Not misconduct but, mistakes. Yes, mistakes do happened.
Respon
se
How do you make sure that code of ethics is being
implemented within the SDLC Do you want to make any suggestion on how to best
practice software engineering code of ethics in projects?
1-
There is no clear check that it’s told you. We have code of
ethics implemented within our processes. As I mentioned
the yearly training; but the yearly training doesn’t give you
an indicator; we haven’t done an assessment before
I think as I mentioned in order to come up to a healthy
environment I think every organization should have a code
of ethic, standard and policy. And this policy.
2- From KPI, and if the release is deployed and the biller or the
bank find a bug, it’s identified then. Also through reviews;
before the release the CAD we send it for reviews from
technical reviews from stakeholder reviews from partners so
they can identify the gaps before we deploy the release.
3-
It’s like proactive its reactive actually after the problem is
identified
Yes, as I told you by having at the organization level then at
the department level and as part of software development
policy we mention ethical behavior and all that.