Software Engineering Principles and Practices / Software Security & Ethics

Professional Ethics

In Software Engineering, Professional Ethics isn't just about "being a good person." It is a formal commitment to the safety, privacy, and well-being of the public. Because software now controls everything from banking to hospital equipment, a developer's ethical choices can have life-or-death consequences.

The industry standard is the ACM/IEEE Software Engineering Code of Ethics and Professional Practice.


The code defines eight core principles that should guide every decision an engineer makes:

  1. Public: Act consistently with the public interest (this is the highest priority).

  2. Client and Employer: Act in their best interests, provided it doesn't conflict with the public good.

  3. Product: Ensure products meet the highest professional standards possible.

  4. Judgment: Maintain integrity and independence in professional judgment (no bribes or "cutting corners").

  5. Management: Leaders must promote an ethical approach to software development and maintenance.

  6. Profession: Advance the integrity and reputation of the profession.

  7. Colleagues: Be fair to and supportive of your colleagues.

  8. Self: Participate in lifelong learning and promote an ethical approach to the practice.


🕵️ Case Study: The Therac-25 (A Warning from History)

The Therac-25 was a radiation therapy machine in the 1980s that stands as the most famous ethical and safety failure in software history.

  • The Problem: A "race condition" bug in the software caused the machine to give patients 100x the intended dose of radiation.

  • The Ethical Failure: The manufacturer initially dismissed hospital reports of malfunctions, claiming the machine was "perfect." They prioritized their reputation over the safety of the patients.

  • The Lesson: Software engineers must be humble about their code and prioritize transparency when errors are reported.


📊 Key Ethical Dilemmas in Modern Tech

Dilemma

The Ethical Choice (Code of Ethics)

The "Crunch" Deadline

Refuse to ship software that hasn't been adequately tested, even if the boss is angry.

Algorithmic Bias

Actively test for and remove biases that might discriminate based on race, gender, or age.

Privacy vs. Profit

Only collect the minimum data required (Least Privilege) and protect it at all costs.

Whistleblowing

If you discover your company is doing something dangerous or illegal, you are ethically obligated to report it.


💡 "Shift Left" on Ethics

Just as we "Shift Left" on Security (finding bugs early), we should Shift Left on Ethics. This means asking during the Requirements phase: "How could this software be misused?" rather than waiting until it's already causing harm.


🎓 Summary of the Course

You’ve traveled through the entire landscape of Software Engineering:

  • Methodologies: Agile, Scrum, Kanban, and XP.

  • Technical Pipeline: Version Control, CI/CD, and Automation.

  • Quality & Safety: Reliability, Security (OWASP), and Safety-Critical systems.

  • The Human Side: Professional Ethics and the CAMS model of DevOps.