I am a computer science
undergraduate of University of Colombo School of Computing.I have written this
blog to indicate how I used Software Engineering Code of Ethics and
Professional Practice as recommended by
the ACM/IEEE in my project Donation finding system for schools. This project is
carried out as an assignment for Professional Practice subject in my 3rd
year. First I Included Brief Introduction of the project and my role in this
project .Then I described how I used Software Engineering Code of Ethics and
Professional Practice as recommended by the ACM/IEEE in my project. I indicate
the relevant principles extracted from code of ethics within quotation marks.
Brief Introduction of Project
My project was “Donation finding system for
schools” .The purpose of this project is to develop and implement the
proposed donation finding system for schools. There are many rural schools in
Sri Lanka suffered from lack of facilities. Classrooms, desks, chairs, electricity,
books, computers and many more. There are many foreign and local donors who are
willing to facilitate such schools. We found the main problem is donors haven’t
enough knowledge about needy schools. There is no proper way to find such schools
for donors. Main focus of this system is to help needed schools in finding
donations easily. Donors can easily find needy schools through this system. It
will save the time and reduce the effort of donors. This system has a website
which facilitates online registration, login search, modify, and delete
functionalities to authorized users. Schools can register with this system by
providing their information. Then their information stored in a database. Donors
can publish their donations to the website. Registered schools can search for
available donations. Donors and needy schools meet through this system efficiently
and effectively.
Main functionalities of the system
- Provide the details about the donations which are suitable for schools.
- Donors can provide details about donations that they can provide to the system
- Registered Schools can search and find details about available donations
- Only registered schools can search and view the details through the system.
- There will be an administrator who will approve or reject the details that are requested to be added to the system or removed from the system. Only after the approval users can view the details.
My Role in Project
I have involved in both design and implementation of
system.
Design
I designed the website home page, about us, gallery
and login. User interfaces of those pages also developed by me.
Implementation
Following functionalities of the system developed by
me
1. Searching available donations-registered schools
can search available donations
2. Approval of requests and removals- An
administrator should approve the requests to newly Entered details and the requests for removal.
3. Generating of reports-when administrators or
donors want to take any details ‘report,
System
should generate report
How I used Software Engineering Code of
Ethics and Professional Practice (Version 5.2) as recommended by the ACM/IEEE
in my project.
1. PUBLIC
After we divided the project work among our three members
take the responsibility of above mentioned part. Then I worked hard in order to
make attractive and functional system tried my best to solve issues and make a
better product.
Principle:-“Accept full responsibility for their own work.”
Clients of our system are schools and donors
developed the interfaces and functions in a way that easy to use. Both schools
and donors can easily use and perform their intended task from this website.
Here as developers we had a intention to made some useful software to community
and schools have and donors had the intention of using this system to perform
finding donations easily.
Principle:-“Moderate the interests of the software engineer, the
employer, the client and the users with the public good.”
This system is not a safety critical system so there
are no any potential danger to users or public environment .There was a one issue,
that we provided online registration .So If there is no proper validation
anyone can register as a school by providing wrong details. I discussed the
problem with other team members and introduced administrator to the system. Now
an administrator should approve the requests to newly entered details and the
requests for removal.
Principle:-“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.”
I cooperate well with my team members in developing
software. We discussed and took decisions when we had a problem. We discussed
with some donors and needy schools about difficulties they have and how can we
help them to overcome those difficulties in finding donations. We put a
administrator to the system to maintain the requests, approve or remove them.
We maintain the site, if there are any failures we solve them. This website is
designed very simple and easy to use.
Principle:-“Cooperate in efforts to address matters of grave
public concern caused by software, its installation, maintenance, support or
documentation.”
Our website is freely available online. Anyone who have
internet connection can use this system. But there were some barriers for rural
schools which haven’t internet connection. But they can register with the system
from another place like internet café etc. Once they have registered internet
connection is not compulsory. Donors can contact them via telephone numbers and
addresses. Schools have another option. They can call us and give their
information, then we register them.
Principle:-“Consider issues of physical disabilities, allocation
of resources, economic disadvantage and other factors that can diminish access
to the benefits of software.”
2. CLIENT AND EMPLOYER
Clients of our system are donors and schools. As a
developer (We consider our development team as Employer) I always use open
source software in my project work. When writing sql queries for generating
reports, I wrote queries of my own. When I need a little support I followed the
examples in public domain.(In Internet)
Principle:-“Not knowingly use software that is obtained or
retained either illegally or unethically.”
We told schools that their information is published
on the website and donors can view. This information is displayed before a
school register.
I only used the school information and donation
information confidentially and only to implement required functionality.
Principle:-“Use the property of a client or employer only in ways
properly authorized, and with the client's or employer's knowledge and
consent.”
Principle:-“Keep private any confidential information gained in
their professional work, where such confidentiality is consistent with the
public interest and consistent with the law.”
There was no too much of documents in our project.
But we got approval for project proposal before implement the system.
Principle:-“Ensure that any document upon which they rely has
been approved, when required, by someone authorized to approve it.”
We told schools that their information is published
on the website and donors can view. This information is displayed before a
school register.
Principle:-“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.
3. PRODUCT
I tried to design web pages developed by me to meet
highest professional standards possible. This is some kind of professional
website because schools and donors use this system. I have used Yellow and
Brown mix color for interfaces. An images as appropriate. This is not a
commercial website. But I think about increase usability and consistency so I
used appropriate color combination. I developed the webpages and functions as a
charity work therefore no costs associated with it tried to achieve following
principle by doing above.
Principle:-“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. “
I considered achievable goals on my project as an
individual as well as a team. As a team we discussed what the time period
available is and what the maximum thing that we can do within given time
period. As individual I selected functionalities I can really implement.
Principle:-“Ensure proper and achievable goals and objectives for
any project on which they work or propose.”
In our system we store school information such as
school name, number of students, difficulties they currently have etc. These
information is not much sensitive but these information can be viewed by
donors. We told schools that their information is published on the website and
donors can view. This information is displayed before a school register.
Principle:-“Identify, define and address ethical, economic,
cultural, legal and environmental issues related to work projects.”
I
selected standard template for web page design. It guarantees consistency
within all web pages.
Then
I added relevant styles, images and headings in order to make the website more attractive.
When developing report generation functionality I have used SQL queries and
PHP. Report is converted to a PDF and easily downloadable from website. This
improves usability.
When
implementing search functionality I made the interface more attractive and easy
to enter search terms. Searching can be done by using name of donor, things for
donate Or using pin number (auto generated for donors).
Principle:-“Ensure an appropriate method is used for any project
on which they work or propose to work.”
I added comments to improve readability when coding.
Then I also used meaningful variable names. I tried my best to code and develop
website according to professional standards.
Principle:-“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.”
We got approval for project proposal before
implement the project. Our website has user friendly interfaces. These
interfaces gave relevant information to users. Mainly our users are donors and
schools.
In home page I gave a brief introduction and
overview of our system. It will guide user to relevant functionalities.
In gallery page there are photos of successful
donations carried out previously through our system. This will prompt donors
and schools to add their information to our website.
About us page gives a brief introduction of
development team. Schools and donors can contact development team if there are
any issues with the system.
All these pages created in order to satisfy users
and meet user requirements.
Search functionality will make users easily find
donations by entering search terms. Report generation will help to analyses the
information of users and donors quickly.
Principle:-“Ensure that specifications for software on which they
work have been well documented, satisfy the users’ requirements and have the
appropriate approvals.”
After implementing search functionality I tested
that functionality myself as a unit testing. Report generation also the same. After
unit testing I have done an integration testing with my team members. Finally
we have done a system testing and performance testing. Identified issues were
corrected.
Principle:-“Ensure adequate testing, debugging, and review of
software and related documents on which they work.”
4. JUDGEMENT
I have taken my technical decisions to support
donors and schools to find and add donations quickly. In Home page Images and
banners used for achieve this.
Eye catching slogans and summarized descriptive
texts used to motivate donors to donate and help schools to easily find
donations. I selected the positions in the web page for high user attraction.
Simplicity is also maintained.
When designing and implementing search functionality
I facilitated users to search using things to be donate(Items), Donors name or
PIN number(auto generated for donors).
Principle:-“Temper all technical judgments by the need to support
and maintain human values.”
5. MANAGEMENT
As a team as well as an individual I followed the
principles of good management in my project work. We divide the design and
functionalities among team members, developed respective parts and carry out
discussions to evaluate the process. We use all the principles of management
such as planning, controlling, leading, organizing in our project.
As an individual I divide my part of the project
into modules and develop each. I have done
Self-evaluation and a team evaluation of modules
after developing.
Principle:-“Ensure good management for any project on which they
work, including effective procedures for promotion of quality and reduction of
risk.”
I only used the school information and donation
information confidentially and only to implement required functionality and
told schools that their information is published on the website and donors can
view. This information is displayed before a school register.
There passwords are kept in database using md5
hashing for ensure better security.
Principle:-“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.”
When developing software, I followed better coding
standards and naming conventions. Then it is easy to other developers to
understand code. When a change is required in other module I asked that
developer to change it politely and help him on change.
Principle:-“Not ask a software engineer to do anything
inconsistent with this Code.”
“Offer fair and just remuneration.”
When we divide work among team members we discussed
the competencies of each developer. And Assign tasks based on their willingness
and skill.
Principle:-“Assign work only after taking into account
appropriate contributions of education and experience tempered with a desire to
further that education and experience.”
6. PROFESSION
I helped all developers in my team when a help is
needed. When I got a new idea of improvement of this project, I informed other
team members and discussed with them. Then I received their ideas also. Then we
made changes. We share our knowledge throughout the entire project. I discussed
how to follow this code of ethics with team members.
Principle:-“Extend software engineering knowledge by appropriate
participation in professional organizations, meetings and publications.”
Principle:-“Support, as members of a profession, other software
engineers striving to follow this Code.”
I worked with the aim of success of whole project
all over the time .I focused more on project work rather than my other works.
Principle:-“Not promote their own interest at the expense of the
profession, client or employer.”
7. COLLEAGUES
First we (me and my two team members) discussed
about our topic of project. Then we discussed how we can adhere and use this
code of ethics in our project work. When we had troubles in development or following
this code of ethics we discussed the problem and help the others.
One such situation was I had a trouble to understand
some parts of this code of ethics. My colleagues helped me to understand it.
One of the friend had difficulties in developing the system (coding).I helped
him to do it.
Principle:-“Encourage colleagues to adhere to this Code.”
Principle:-”Assist colleagues in professional development.”
We had weekly meetings to discuss the project work.
We gave equal opportunity to all team members to express their ideas and
opinions.
One such opinion come out in a discussion was
generate a pin number for donors. This feature will be very helpful to donors
when working with their donation details after entering them (editing and
deleting).
So we considered this as a good opinion and add that
functionality to the system.
Since we all worked under proper understanding of
features of the system, and we had weekly meetings there was not so much
complaints from our team members.
But there was a complaint from my colleague that I
displayed so many information in home page. I considered that and since it was
true I added view all button to home page.
Principle:-”Give a fair hearing to the opinions, concerns, or
complaints of a colleague.”
As mentioned above we discussed policies and
procedures to protect confidential information (In our site donor details and
school needs) and for protecting passwords. We used access granting mechanism
by providing privileges to user groups.
Principle:-“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.”
8. SELF
I used this project work as a learning experience. I
learned HTML,PHP,Javascript and CSS
technologies for develop this software. I had a basic knowledge of HTML and PHP
before this project. I further improved that knowledge. My first experience of
Javascript is this project.
Most Important thing is this project is the first
project that I followed Software Engineering Code of Ethics and Professional
Practice as recommended by the ACM/IEEE .
First I read this code of ethics carefully and then
I followed it when developing this software. How I followed it is mentioned
throughout this blog.
Principle:-“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.”
“Improve their knowledge of this Code, its
interpretation, and its application to their work.”
In this project I got experience with many phases of
software development lifecycle. Requirement gathering, Design, Implementation
and Testing. We have created relevant documentation as Project Proposals , SRS
and User Manuals.
Principle:-“Improve their ability to
produce accurate, informative, and well-written documentation.”
Reference:
"Software Engineering Code of Ethics and Professional Practice, " [Online].
Available : https://www.acm.org/about/se-code
[Accessed : July 24,2015 ].