Research 5: Software Engineering
- What was the "software crisis" of the 1960s, and how did it lead to the creation of software engineering? What problems did this new discipline aim to solve?
- In the 1960s, as the complexity of problems increased, and the programs written were advancing, while existing methods were inadequate.
This was solved through several changes, some of which were the introduction of quality assurance for testing and training, as well as
the introduction of documentation standards and a new structured methodical approach from when new software is being planned to the
maintenance of software.
- What are Agile methods and the Waterfall model in software development, and how are they different?
- The agile method is the more flexible approach that is based on the idea of constant refinement, where different stages of software development
are revisited in order to continuously improve and adapt to changing requirements. The waterfall model on the other hand is a linear approach where
software development is split into 5 discrete steps which are completed in the following order, and programmers only move onto the next step once
the present step has been fully completed: initiation, planning, execution, monitoring/control, and closing.
- Why does Netflix intentionally shut down its servers randomly, and how does this help their software?
- It's known as the chaos monkey. The purpose is to test if the system were to partially lose some components, it should be able to continue working
without any significant distruptions.
- What is open-source software, and why do big companies like Google, Microsoft, and Amazon contribute to it?
- It is software that the general public has access to, and can be inspected, modified and enhanced. Companies contribute to it since it keeps their
foundational software secure and updated, saving costs in the long run
- Why can maintaining software sometimes be more costly than building it initially, and how does technical debt contribute to these higher maintenance costs?
- As the software is continuously changed, its complexity increases, making debugging an arduous and almost impossible task. Technical debt is when a shorter solution
that could be made in less time but is less efficient is used as compared to a longer, more complete and efficient solution that would take longer to develop. It leads
to more bugs, reduced adaptability as well as the creation of less maintainable code.
1960's software ciris: Medium
Differences between the Agile and Waterfall models
The chaos monkey