Ethics in Software Engineering: A Focus on Copyright and AI.
The use of software has become ubiquitous, and as a result, software engineers have become an integral part of society. As they create software that is used by people across the world, they must operate under a code of ethics to ensure the protection of intellectual property, the responsible use of artificial intelligence, and the safeguarding of the privacy and security of individuals. In this paper, we will discuss the importance of a code of ethics for software engineers, with a particular emphasis on copyright, AI, and ethics.
Software engineering is a relatively new research field derived from computer science. Over six decades, from 1948 until today, its importance has been widely recognized by more and more scholars within the field of computing, and it becomes an active and promising subdivision of the computing field. (Wang, Li, Ma, 2014)
Definition of software engineering:
Software engineering may be defined as the systematic design and development of software[products] and the management of the software [process] (Mills, 1980)
Importance of software engineering
Modern software systems pervade our lives. They have become more open and hyperconnected, manage large amounts of our personal data, and are used to support the lives of individuals and communities and the functions of businesses and governments. They are a part of our society and play an important role in shaping it.
The software systems that lie at the core of worldwide financial systems, air traffic management, defense command and control — indeed, virtually all parts of our economy — are the most complex human inventions ever created. As a result, however, our society now faces unknown hazards both from hostile attacks on these systems and from the even greater threat that simple mistakes or system failures will bring [the] wholesale collapse of critical systems. The small software failures that have shut down large parts of the nation's phone systems and air traffic control systems and the “millennium bug” are examples of what can go wrong in our current environment. We do not know how to design and test complex software systems with millions of lines of code in the same way that we can verify whether a bridge or an airplane is safe. (Morris, 2007, p. 6)
Software engineering is a crucial discipline that has become essential to modern society. It is responsible for designing, developing, testing, and maintaining software systems that drive numerous aspects of our lives. The importance of software engineering cannot be overstated, as it is a crucial tool for solving complex problems and improving efficiency across various industries.
One of the most significant benefits of software engineering is that it enables the creation of software that meets the needs of users. By using established development processes, engineers can gather user requirements, design solutions, and test software to ensure it is user-friendly and valuable. This results in software that is efficient and effective in meeting the needs of its users.
Another critical aspect of software engineering is quality assurance. The software development process emphasizes the importance of designing software that is easy to maintain and testing it thoroughly to ensure it functions as intended. Providing support to users when they encounter issues also contributes to the reliability, efficiency, and effectiveness of the software.
Efficiency and productivity are crucial components of any organization, and software engineering can help businesses increase both. By using software to automate routine tasks, companies can save time and reduce costs. Moreover, software engineering enables the creation of custom software solutions that meet the specific needs of an organization, further increasing efficiency.
Security is another significant concern for businesses and individuals. Software engineering can create secure software solutions that protect sensitive data and prevent unauthorized access. By building security measures into the software development process, engineers can ensure that software is secure from the start.
Finally, scalability is a critical aspect of software engineering. As organizations grow, they need software solutions that can scale with their needs. Software engineering can create scalable software solutions that can adapt to changing needs and growing user bases. This allows organizations to continue using the software even as their needs change.
Why is a code of ethics necessary?
A code of ethics is essential for software engineering to ensure responsible behaviour, protect users, promote trust, uphold professional standards, and encourage innovation. Firstly, software engineers have a responsibility to develop software that is safe, reliable, and meets the needs of users. A code of ethics provides guidelines for responsible behaviour, ensuring that software engineers are accountable for their actions. Additionally, ethical considerations are crucial to the development of new technologies such as artificial intelligence, and a code of ethics provides a framework for the responsible development of such technologies.
Secondly, the software can have significant impacts on users, and ethical considerations must be taken into account to protect them from harm. A code of ethics ensures that software engineers consider the potential impact of their work on users and take steps to mitigate any negative consequences. Moreover, users rely on software to perform critical functions, and trust is essential to ensure that software is used appropriately. A code of ethics promotes trust by ensuring that software engineers act with integrity, honesty, and transparency.
Finally, software engineering is a profession, and as such, it requires adherence to certain professional standards. A code of ethics ensures that software engineers uphold these standards and behave in a manner that is consistent with their professional obligations. In summary, a code of ethics is necessary for software engineering to ensure responsible behaviour, protect users, promote trust, uphold professional standards, and encourage innovation.
COPYRIGHT
Definition of copyright and its relevance to software engineering
Copyright is one of a group of ‘intellectual property rights’. It gives the owner the right to control the use of certain kinds of ‘work’ which are the result of the author’s skill or which have involved an investment of time, effort and/or money by the owner.
Copyright is highly relevant to software engineering, as software is considered a type of intellectual property that can be protected by copyright law. This means that software developers and owners have the exclusive right to control how their software is used, copied, distributed, and modified. This protection encourages innovation and creativity in the field of software engineering by ensuring that developers can profit from their creations and that their work is not stolen or copied without their permission.
Copyright law also provides software developers with legal recourse in case their work is infringed upon. For example, if someone copies or distributes a software program without the permission of the copyright owner, the copyright holder can take legal action to stop the infringement and seek damages. This helps to deter software piracy and other forms of copyright infringement in the software industry.
Moreover, software engineers must be careful not to infringe on the copyright of others in their work. This includes ensuring that any code or content they use in their software is either their creation or is properly licensed and credited to the original owner. Failure to do so can result in legal and financial consequences, as well as damage to the reputation of the developer and the software they have created.
Examples of copyright infringement in software development
Software piracy
Software piracy is the unauthorized duplication, distribution, or use of computer software--for example, making more copies of [the] software than the license allows, or installing software licensed for one computer onto multiple computers or a server.
Code plagiarism
Code plagiarism is the act of copying or using someone else’s code without permission or proper attribution. In software engineering, this can occur when developers copy code snippets or entire sections of code from other sources, such as open-source repositories or online forums, without giving credit to the original author or obtaining the necessary permissions.
GitHub, a popular platform for hosting and sharing code, is no exception to code plagiarism. Due to its ease of access and the abundance of open-source repositories, GitHub has become a target for code plagiarists. Code plagiarism on GitHub can occur when developers fork or clone repositories without proper attribution or when they upload code that is copied from other sources without permission.
To combat code plagiarism on its platform, GitHub has implemented several features and policies.
GitHub does not allow any content or activity that:
infringes any proprietary right of any party, including patent, trademark, trade secret, copyright, right of publicity, or other rights;
unlawfully shares unauthorized product licensing keys, software for generating unauthorized product licensing keys, or software for bypassing checks for product licensing keys, including the extension of a free license beyond its trial period;
impersonates any person or entity, including any of our employees or representatives, including through false association with GitHub, or by fraudulently misrepresenting your identity or site's purpose; or
violates the privacy of any third party, such as by posting another person's personal information without consent.
Reverse engineering
This involves the unauthorized analysis of software to understand how it works or to replicate its functionality. This can be a violation of copyright law, as it may involve the creation of derivative works without the permission of the copyright holder. For example, a lot of smaller tech companies reverse-engineered Apple’s AirPods to create their versions of the product.
Use of copyrighted material
This can occur when software developers incorporate copyrighted material such as images, text, or music into their software without permission from the copyright holder.
2.2.5 Infringement of software patents
This can occur when software developers create software that infringes on an existing patent. This can lead to legal disputes and may result in the developers being required to pay damages or royalties to the patent holder.
2.3 Importance of adhering to copyright laws in software development
Software copyright is the application of copyright in law to machine-readable software. Software copyright is used by software developers and proprietary software companies to prevent the unauthorized copying of their software. Free and [open-source] licenses also rely on copyright law to enforce their terms.
Adhering to copyright laws is essential in software engineering. Copyright laws provide legal protection for software and the work of software developers. These laws prohibit unauthorized use, distribution, or modification of copyrighted software, which includes code, design, and documentation. It is essential to respect these laws and the rights of software developers, as they invest significant time, effort, and resources in creating software.
One important reason to adhere to copyright laws is to avoid legal consequences. Copyright infringement can result in lawsuits, fines, and even criminal charges. It can damage a company's reputation and result in significant financial losses. Therefore, software developers must ensure that they have the legal right to use any code or other intellectual property they incorporate into their work.
Another reason to adhere to copyright laws is to promote innovation and creativity. Copyright laws provide incentives for software developers to invest in research and development by protecting their creations from unauthorized use. This protection encourages software developers to create new and innovative solutions to problems and ensures that they are rewarded for their efforts. By respecting copyright laws, software developers can encourage innovation and contribute to the growth of the industry.
Finally, adhering to copyright laws is essential for ethical reasons. It is a matter of fairness and respect to acknowledge the work of others and obtain the necessary permissions before using their work. Failing to do so undermines the principles of honesty and integrity that are essential in the software engineering profession. By adhering to copyright laws, software developers can uphold ethical standards and promote a culture of professionalism and respect in the industry.
2.4 How a Code of Ethics for software engineers should address copyright
A code of ethics for software engineers should address copyright and copyright infringement by emphasizing the importance of respecting the intellectual property rights of others. This includes obtaining proper permissions and licenses for the use of copyrighted material, avoiding plagiarism, and not distributing or using software that infringes on the copyrights of others. The code should also emphasize the importance of regularly updating and maintaining software to ensure that it remains compliant with copyright laws and avoiding using open-source software without proper attribution or compliance with its licensing terms. Additionally, the code should encourage software engineers to report any suspected copyright infringements to their superiors or authorities as appropriate.
3.0 Artificial Intelligence (AI) And Ethics
3.1 Definition Of AI And Its Applications In Software Development
Artificial Intelligence (AI), a term coined by emeritus Stanford Professor John McCarthy in 1955,
was defined by him as “the science and engineering of making intelligent machines”. Much research has humans program machines to behave in a clever way, like playing chess, but, today, we emphasize machines that can learn, at least somewhat like human beings do. (Manning, 2020)
3.2 Explanation Of Ethical Considerations When Developing AI
Artificial Intelligence (AI) is an area of computer science that deals with the creation of intelligent machines that can perform tasks that would typically require human intelligence. As AI becomes more prevalent in society, it is essential for software engineers to ensure that they are developing AI that is ethical and responsible.
Examples Of Ethical Concerns Related To AI Development
Data Governance
AI needs a lot of data, so questions about data privacy, storage, sharing and governance are essential for this technology.
Fairness
How do we make sure that AI can act according to the most appropriate notion of fairness in each scenario in which it is applied?
How A Code Of Ethics For Software Engineers Should Address AI And Ethics
A code of ethics for software engineers should include guidelines on the ethical use of AI. This would ensure that software engineers do not develop AI that is discriminatory or biased against certain groups, that they do not use AI for nefarious purposes such as surveillance or espionage, and that they do not develop AI that can cause harm to individuals or society.
4.0 Ethics In Software Engineering
4.1 Definition Of Ethics
Ethics is the branch of philosophy that deals with moral principles and values. Ethics is essential in software development because software engineers need to consider the ethical implications of the software they develop.
4.2 The Importance Of A Code Of Ethics For Software Engineers:
A code of ethics is a set of guidelines that outlines the principles and values that guide the behaviour of individuals or groups in a particular profession. In the case of software engineers, a code of ethics is necessary to ensure that they act ethically and responsibly while developing software. Software engineers are responsible for developing software that can have far-reaching consequences, both positive and negative. As such, they need to ensure that the software they develop is not only functional but also ethical and responsible.
Below is the short version of the Code of Ethics by the IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices:
PREAMBLE
The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high-sounding but empty; together, the aspirations and the details form a cohesive code.
Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:
1. PUBLIC – Software engineers shall act consistently with the public interest.
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.
3. PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment.
5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
7. COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues.
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.
4.3 How A Code Of Ethics For Software Engineers Should Address Ethics In Software Engineering
A code of ethics for software engineers should include guidelines on ethical behaviour. This would ensure that software engineers act in a manner that is respectful, honest, and transparent. It would also ensure that software engineers are aware of the potential ethical implications of the software they develop and take steps to mitigate any harm that may result from the software.
REFERENCES
Software Engineering:
“An Analysis of Research in Software Engineering: Assessment and Trends“ Zhi Wang a,b, Bing Li c,d, Yutao Ma b,d,∗ link: https://arxiv.org/ftp/arxiv/papers/1407/1407.4903.pdf
Definition of software engineering: H. D. Mills, "The management of software engineering, Part I: Principles of software engineering," in IBM Systems Journal, vol. 19, no. 4, pp. 414-420, 1980, doi: 10.1147/sj.194.0414.
Importance of software engineering:
R. Kazman and L. Pasquale, "Software Engineering in Society," in IEEE Software, vol. 37, no. 1, pp. 7-9, Jan.-Feb. 2020, doi: 10.1109/MS.2019.2949322.
Morris, Allan. (2007). Why Software Engineering is Important?
Definition of copyright: Copyright and related rights (National Archives)
Software piracy: Copyright Infringement of Software | IT@Cornell
GitHub acceptable use policies: GitHub Acceptable Use Policies
Software Copyright
Software copyright. (2023, March 5). In Wikipedia. Software copyright - Wikipedia
Definition of AI: Artificial Intelligence Definitions
Software Engineering Ethics
Subscribe to my newsletter
Read articles from Jude Boachie directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Jude Boachie
Jude Boachie
Building systems around code for people.