ethical-se / ese-practices

Ethical values and IEEE 7000 meet agile practices

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ethical-software-engineering (ESE)

TL;DR: IEEE Std. 7000 meets Agile practices (note: access to IEEE Std. 7000 is free after registration for IEEE Xplore).

Agile and ESE Practices per IEEE 7000 stage and phase

Quick links: (1) Story Valuation, (2) Ethical Review, (3) two-way Practice-Process Mappings (4) Glossary (5) FAQs

Motivation

Ethical Software Engineering (ESE) is for you if:

  1. You see yourself as a socially responsible software engineer.
  2. You see the risk that the software under construction may have undesired and/or unexpected and/or unjustified effects for one or more of its stakeholder groups and want to manage and mitigate this risk.
  3. You look for a set of essential, as-light-as-possible practices that increase the chances of your project or product development effort becoming compliant with IEEE Std. 7000.

ESE targets any software engineer1 who wishes to create ethically valuable software, agile teams in particular. Its motivating themes are:

  • Synergies: A value- and risk-based approach to design is very much at the heart of agile methods; for instance, Extreme Programming aims at balancing cost, time, quality and scope variables.
  • Dual relation: Agile practices may promote social responsibility and ethical behavior, but may also harm ethical values. The devil is in the detail, software usage context matters.
  • Novelty: The topic of ethical values has not been discussed much in Agile practices so far.2 The Agile Alliance has a Code of Conduct. And a blog post on coaching ethics made it to the top 10 of 2022 (Agile Alliance).

But what are ethical values? Our glossary references the definitions of the terms value and ethical value from IEEE Std. 7000; the Merriam-Webster Dictionary defines the term "ethic". The following figure shows three different meanings of the term "value", depending on the viewpoint taken:

For additional motivation for ethical software engineering and terminology clarification, please refer to "Are Programmers Ethically (and Legally) Responsible for Their Code?", an article by Jennifer Riggins on The New Stack (Aug 16, 2018).

Repository Navigation

ESE provides new and/or enhanced practices (i.e., activities and artifacts):

Other folders and pages in this repository include:

Other content is linked in the directory-level index pages.

Prerequisite Knowledge and Background Information

Working with ESE (the content of this repository) does not assume that you have read the IEEE Std. 7000 end to end. It is helpful but not required to be familiar with its concepts and processes; these are introduced and/or referenced as needed.

Experience with the Agile practices that ESE applies, extends or complements is welcome and useful but not strongly required; links and examples provide opportunities to catch up.

The Background Information page provides value comparisons and mappings from IEEE Std. 7000 to Agile concepts and practices (and back).

Glossary

The Glossary defines and explains terms in IEEE Std. 7000, Agile, ESE.

Frequently Asked Questions

A collection of Frequently Asked Questions (FAQs) is available.

Literature and Related Work

See Bibliography page.

Evaluation and Feedback

See experimentation folder and README.

January 13, 2024
ZIO aka Olaf Zimmermann

Acknowledgments

Bärbel Bohr, Mirko Stocker and Stefan Kapferer contributed to the ESE content via discussion input, experimenation and/or review feedback.

This work was funded by the Hasler Foundation.

Footnotes

  1. We use the term "software engineer" in a broad sense here, including roles such as requirements engineer, architect, developer, tester, operator and maintainer. The entire software development lifecycle is in scope, with special emphasis on analysis and design.

  2. For instance, search for terms such as "ethics" on the website of the Agile Alliance.

About

Ethical values and IEEE 7000 meet agile practices

License:Other