Software Engineering

Roots

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

Pre-History of Software Engineering

  • Edsger W. Dijkstra
  • David Parnas
  • Fred Brooks
  • Margaret Hamilton

Edsger W. Dijkstra

  • Known for the shortest path "Dijkstra's algorithm."
  • Advocated for structured programming and was a critic of the GOTO statement.
  • His famous letter, Go To Statement Considered Harmful, influenced the debate on programming practices

David L. Parnas

Programs, like people, get old. We can’t prevent aging, but we can understand its causes, take steps to limit its effects, temporarily reverse some of the damage it has caused, and prepare for the day when the software is no longer viable. … (We must) lose our preoccupation with the first release and focus on the long term health of our products.

  • Introduced the concept of information hiding in modular programming, which remains a core principle in software design
  • Advocated for the use of precise specifications and documentation in software design
  • Early proponent for the concept of software evolution

Fred Brooks

  • Managed the development of IBM's System/360 family of computers and the OS/360 software.
  • Authored "The Mythical Man-Month," which discussed the challenges of large software projects and introduced concepts such as "adding manpower to a late software project makes it later."

Margaret Hamilton

  • Led the team that developed the onboard flight software for NASA's Apollo program, used for the Apollo 11 moon landing in 1969
  • Coined the term "software engineering" to emphasize the complexity and importance of software development similar to traditional engineering
  • Introduced the concepts of asynchronous software, priority scheduling, and human-in-the-loop decision capability
  • Emphasized the importance of rigorous testing in simulation environments
  • Credited with establishing the foundation for modern software development processes
  • One of the members in the Women of NASA Lego Set

"Software Engineering"

Do we still have a software crisis?

Role of Process

Goals

Process

Methods

Tools