La Crisis del Software
Crisis of Software: An Overview
Introduction to the Software Crisis
- The discussion begins with an introduction to the software crisis, a problem recognized in the 1960s.
- Edger Dijkstra highlighted a significant distinction in software maintenance: adapting to changing problems versus merely fixing errors.
Consequences of Complexity
- As computational science advanced, software solutions became increasingly complex, leading to substantial issues and costs due to inadequate measurement of development processes.
- Neglecting security measures resulted in severe consequences, including risks to sensitive information and even patient safety in medical equipment.
Historical Context of Software Development
- Early programming efforts (1940-1959) focused on specific tasks like artillery tables or payroll calculations, which were manageable but not overly complex.
- Over time, software evolved into more intricate systems that required broader execution flows and responsibilities, increasing failure rates.
Challenges Faced by Programmers
- The rise of new operating systems and programming languages created challenges for maintaining high levels of expertise among programmers.
- Dijkstra was noted as a critical figure who addressed these growing issues at NATO's science committee meeting.
Critique of Industry Practices
- Dijkstra criticized major computing companies like IBM for their practices during this period, suggesting they contributed to a fraudulent environment regarding software quality.
Understanding the Myths in Software Development
The Myth of Man-Month
- A common misconception is measuring development effort solely based on man-month metrics; this oversimplifies project complexity.
- Fred Brooks' book "The Mythical Man-Month" discusses how project timelines cannot be accurately predicted based on manpower alone due to non-parallelizable tasks.
Case Study: OS/360 Project Failure
- The OS/360 project exemplified poor management with its $50 million cost and extensive labor investment without achieving desired outcomes.
Future Projections and Quality Concerns
- By 1978, concerns about declining software quality compared to other manufacturing industries persisted. Effective management remained elusive without deeper understanding of design processes.
Understanding Software Development Challenges
The Complexity of Large Software Projects
- The speaker emphasizes that not everything can be paused in software development, referencing an article by Eduardo Estrella on his experience with large software projects.
- A past project is mentioned where unrealistic deadlines and excessive personnel led to a slow and costly development process, termed "human wave" development.
Consequences of Software Errors
- David and Fraser highlight the alarming reliability issues associated with large-scale software systems, noting that failures have resulted in loss of life.
- The mass dissemination of error-laden software is described as terrifying; critical testing processes are often skipped in human wave development.
Importance of Rigorous Testing
- Testing is crucial for identifying faults but cannot guarantee their absence; rigorous testing minimizes errors but does not eliminate them entirely.
- Eliminating tests to speed up project timelines leads to disastrous outcomes, likened to losing weight by donating blood.
Standards and Quality Assurance
- Establishing clear standards for quality in software creation is essential due to the reliance on software for vital functions like transportation and military operations.
Historical Case Studies of Software Failures
- Notable cases illustrate the dire consequences of software errors:
- Cerec 25 Incident (1985-1987): Resulted in three patient deaths due to radiation overdoses.
- Patriot Missile Failure (1991): A software error led to the death of 28 U.S. soldiers during a missile attack.
- First Energy Blackout (2003): A failure in alarm systems caused widespread outages, resulting in numerous accidents and 90 fatalities.
- Boeing 737 Max Crashes: An automatic control issue led to crashes that killed 157 people, prompting investigations into both the aircraft and its flight software.