Professor Eduardo - Software Engineering

1. 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?

The software crisis in the 1960s refers to the difficulties faced by organizations in developing large-scale and reliable software systems. Projects began to suffer as companies missed deadlines, overran costs, and produced low-quality outcomes.

This led to the discipline of software engineering by bringing more structured and rigid approaches to software development. It aimed to solve the problems of poor project management, unreliable software, lack of standardization, and the challenges of maintenance.

2. What are Agile methods and the Waterfall model in software development, and how are they different?

The Waterfall model is a linear approach to development as the process is broken down into sequential phases. Once a phase is completed, you move on to the next one, with little movement backward.

The Agile method is more flexible, where the development is broken into small cycles known as “sprints” with continuous building, testing, and feedback. This allows for greater adaptation and collaboration, where changes can be made at any time.

The differences are that Waterfall is rigid while Agile is adaptable. In Waterfall, feedback comes at the end of the project, while Agile encourages constant feedback throughout the development process.

3. Why does Netflix intentionally shut down its servers randomly, and how does this help their software?

Netflix utilizes chaos engineering, which shuts down servers randomly, intentionally. The purpose of this is to simulate unexpected failures in infrastructure. This helps their software by identifying weaknesses and improving their resilience. They can also address potential issues before they occur.

This also encourages automated monitoring and recovery, meaning a faster response time to issues.

4. What is open-source software, and why do big companies like Google, Microsoft, and Amazon contribute to it?

Open-source software is when source code is made freely available to the public. This means anyone can view, use, and change the code. This promotes collaboration and transparency.

Big companies contribute to open source in order to speed up the innovation process as they can collaborate with the broader community. This also helps maintain their reputation by showing transparency and innovation.

5. 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 can be more costly than building it because, as software requires updates, it becomes more complex and requires greater time and effort to fix issues.

Technical debt refers to the shortcuts taken during initial development to meet deadlines or reduce costs. This debt accumulates, making the software harder to maintain. Addressing this debt requires significant effort, adding to maintenance costs.

References