To the untrained eye, writing software appears to be all about the new and shiny, free from the earthly troubles of working with atoms rather than imaginary bits. In practice, software ages quietly, in the shadows, and stubbornly refuses to die. … So-called “greenfield” projects – those where a developer gets to write software from scratch – are coveted for a reason. Most of the work that software developers do is not writing new code, but rather tending to the code that someone else has written. Nathan Ensmenger, a professor of informatics and computing at Indiana University, suggests that “most computer programmers begin their careers doing software maintenance, and many never do anything but.” (Eghbal 2020)

Learning Objectives

  • Define software engineering
  • Compare software engineering with amateur software development
  • Compare software engineering with computer science and systems engineering
  • Summarize the essential attributes of good software
  • List the fundamental activities common to all software processes
  • Identify common software engineering myths
  • Identify the principles of the Software Engineering Code of Ethics and Professional Practice

How to Complete this Lesson

Complete the following learning activities: (3.25–3.5 hours total)

  1. Read the following in Software Engineering and (optionally) complete the reading guide:
    • Chapter 1: Introduction (60–75 minutes)
      • Professional software development
      • Software engineering ethics
      • Case studies (skim)
  2. Read the Software Engineering Code of Ethics and Professional Practice (15 minutes)
  3. Attend the class meeting (60 minutes)
  4. Start the process models homework (60 minutes)
    • Write the ethics essay

Resources

Videos