The software crisis of the 1960s is the event where people encountered difficulties in developing large and complex systems. During this period of time, software complexities and the lack of existing methods led to many software problems, and some of the large-scale software development projects were not even successful. High amounts of money were needed and used left and right, and more time was used to develop software until you had a final product that was not even efficient and high-quality. Hence, software engineering emerged. This new dimension of engineering covers the aspects of software production, its theories, concepts, techniques, and tools that could be used to develop high-quality software. Software engineering aims to solve the problems that software developers faced back then, including high complexities, etc., by introducing new more organized techniques to software development.
What are Agile methods and the Waterfall model in software development, and how are they different?The Waterfall method in software development follows a linear sequence of events, and each of these events has to be chronologically ordered. Software development is split into phases and people must finish each phase in order before going into the next phase. In essence, before testing the program, you have to code the entire program first using the Waterfall method. Meanwhile, the Agile method in software development is not as strictly structured as the Waterfall method. This method breaks work down into smaller tasks that can be completed quickly, and these iterations are called “sprints.” People complete one sprint before moving on to the next one, but the requirements can fluctuate at any time based on ongoing feedback. Hence, compared to Waterfall, the Agile method is more flexible and encourages collaboration due to continuous feedback during the development process.
Why does Netflix intentionally shut down its servers randomly, and how does this help their software?Netflix intentionally shuts down its servers randomly because it uses this technique called “Chaos Engineering.” Chaos Engineering essentially intentionally provides a “mock” failure and then tests how the system responds to this failure before becoming a large-scale problem. They use a “Chaos Monkey” to perform this Chaos Engineering technique so that it will randomly execute a certain problem to train how well the system runs. Netflix does this so that they can view their software’s resilience to solve this problem and test how good it is. However, if the software fails, then this would enable Netflix to identify the failure and fix this in advance so that if this problem came up unintentionally in the future, they would already be prepared for this.
What is open-source software, and why do big companies like Google, Microsoft, and Amazon contribute to it?Open-source software is software where upon distribution, its source code is also released to the public, making it available for people to access. This means that you could, within reasonable limits and rights, modify these types of software for yourself so that it will execute the way you would like it to while being rooted from the original source code. According to sources, big companies like Google, Microsoft, and Amazon contribute to it since they claim that it promotes clean, transparent, and secure code to resolve some security issues that could happen. Additionally, people’s ability to modify these source codes encourages collaboration and innovation within our community. Hence, this benefits both parties simultaneously, where the person who innovated it in the open-source community earns recognition and the company can use this innovation for themselves.
Why can maintaining software sometimes be more costly than building it initially, and how does technical debt contribute to these higher maintenance costs?Maintaining software tends to be more costly than developing it initially. This is because software needs, among many other things, maintenance, improvements, bug fixes, optimization for high complexities, some adjustments to fit user feedbacks, etc. Technical debt contributes to these higher maintenance costs since it refers to shortcuts taken in initial development that accelerate this process even further, eventually releasing it as fast as possible. However, this debt will accumulate more and more for maintenance costs and new features. Since these are shortcuts, it would resultantly eventually add up at a fast rate considering the acceleration of these processes. Thus, in addition to other maintenance costs, paying this debt as a whole would also be another issue and contribute to the overall cost.
Works Cited and Additional Resources: