Friday, July 24, 2015

How I used Software Engineering Code of Ethics and Professional Practice (Version 5.2) as recommended by the ACM/IEEE in my project "Donation finding system for schools"



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]. 
[Accessed : July 24,2015 ].




No comments:

Post a Comment