INCORPORATING ETHICS THROUGHOUT THE SOFTWARE DEVELOPMENT PROCESS

The media is reporting scandals associated with computer companies with increasing regularity; whether it is the misuse of user data, breach of privacy concerns, the use of biased artificial intelligence, or the problems of automated vehicles. Because of these complex issues, there is a growing need to equip computer science students with a deep appreciation of ethics, and to ensure that in the future they will develop computer systems that are ethically-based. One particularly useful strand of their education to incorporate ethics into is when teaching them about the formal approaches to developing computer systems.Typically a computer system is developed when a customer (or user) approaches a computer company and asks them to write that system for them, to address some specific requirements. Developing the computer system so that it both works and satisfies the needs of its intended users is a reasonably complex process, and it usually consists of a number of standard phases, including specifying, designing, implementing, deploying and maintaining the system. In detail, these stages can be described as follows:• Specifying: This stage involves understanding the requirements of the intended users fully, and articulating them in a coherent and unambiguous way.• Designing: This stage is analogous to an architect creating a blueprint for a house, it involves software designers taking the specification from the previous stage and describing the potential way(s) that a system can be built to satisfy those requirements.• Implementing: This is the stage where the system is built, based on the previous stage, and includes decisions related to the type of operating system(s), programing language(s), and database(s) that will be used to build the system.• Deploying: This stage means that the implemented software is taken from the computer company and transferred onto the users’ computer system, which may require some alterations to the software. This stage may also require the development of some support documentation or training• Maintaining: This stage occurs after the system is up-and-running for the users, the users may require the development of additional features once they become familiar with the existing features. There are a number of specific processes and methodologies that incorporate these stages in different ways into their approaches. Some take a linear approach to these stages, whereas others take a more iterative and/or incremental approach. These models include the Waterfall Model, the Vee Model, the Spiral Model, and the Agile family of models. For each of these models it is possible to include ethics in the Specifying stage, and well as threaded throughout the model, and as an explicit stage in a final review process at the end of the implementation stage.The formal models described above are understood (and used) by computer companies all over the world, and therefore are a natural means of incorporating ethics into software development in a manner that would not seem overly arduous or unwieldy to developers. These techniques are also taught in the computer science departments of universities all over the world, it is vitally important that lecturers incorporate an ethical dimension into their systems development teaching, and we believe that these newly refined models provide them with a simple means of achieving this task, and this will make a new generation of software developers ethically-aware.