Software Development Essentials and Challenges

Sep 21, 2024

Computer Science 1JC3: Introduction to Computational Thinking

Lecture on Software Development

Introduction

  • Course: Computer Science 1JC3
  • Topic: Software Development - the last topic of the course.

Color Models in Art and Technology

  • RGB Model: Used for producing color with light.
  • CMY/CMYK Model: Used for producing color with ink.
  • Traditional Artist Color Model: Red, Yellow, Blue
    • Creates intermediate colors: Orange, Green, Violet
  • Historical models used by artists include:
    • Red-Yellow-Blue
    • Orange-Green-Violet

Analog Computing Devices

  • Charles Babbage's Analytical Engine: Digital, mechanical engineering-based.
  • Leibniz's Stoffelwalze: Digital.
  • Abacus: Digital.
  • Slide Rule: An analog computing device.
    • Used for computation by adding logarithms (equivalent to multiplication).
    • Transition away from slide rules in 1970s due to affordable electronic calculators.
    • Requires estimation skills due to lack of decimal point placement.

Case Study: Therac-25 Disaster

  • A radiation therapy machine that caused harm due to software issues.
  • Developed by Atomic Energy of Canada Limited (AECL).
  • Incidents in the 1980s resulted in severe physical damage or death.
    • Example incident in Hamilton, Ontario.
  • Causes of Failure:
    • Inadequate software design and development.
    • Coding and testing by one person.
    • No independent code review.
    • Poor documentation of error codes.
    • Missed race conditions and arithmetic overflow.
    • Poor user interface leading to input errors.
    • Software ignored in reliability modeling.
    • Lack of hardware interlocks.
  • Emphasizes the importance of rational software development processes.

Challenges in Software Development

  • Human errors are inevitable; processes should minimize and catch them.
  • Imperfect communication between humans.
  • Initial project uncertainties.
  • Technological limitations.
  • Changing requirements over time.

David Parnas

  • Key figure in software engineering.
  • Positions & Contributions:
    • Professor Emeritus at McMaster University.
    • Started the software engineering program at McMaster.
    • Developed ideas on information hiding and modular design.
    • Advocated for precise documentation, including Parnas tables.
    • Promoted software engineering as an engineering discipline.
    • Main influencer behind McMaster's undergraduate software engineering program.

Conclusion

  • Importance of developing software through rational processes.
  • Encouragement to read David Parnas's collected papers for deeper insights into software development challenges.