Contents

1. Software Products

1.1 The product vision
1.2 Software product management
1.3 Product prototyping
Key points
Recommended reading
Website
Exercises

2. Agile Software Engineering

2.1 Agile methods
2.2 Extreme programming
2.3 Scrum
Key points
Recommended reading
Website
Exercises

3. Features, Scenarios and Stories

3.1 Personas
3.2 Scenarios
3.3 User stories
3.4 Feature identification
Key points
Recommended reading
Website
Exercises

4. Software Architecture

4.1 Why is architecture important?
4.2 Architectural design
4.3 System decomposition
4.4 Distribution architecture
4.5 Technology issues
Key points
Recommended reading
Website
Exercises

5. Cloud-based Software

5.1 Virtualisation and containers
5.2 Everything as a service
5.3 Software as a service
5.4 Multitenant and multi-instance systems
5.5 Cloud software architecture
Key points
Recommended reading
Website
Exercises

6. Microservices Architecture

6.1 Microservices
6.2 Microservices architecture
6.3 RESTful services
6.4 Microservice deployment
Key points
Recommended reading
Website
Exercises

7. Security and Privacy

7.1 Attacks and defences
7.2 Authentication
7.3 Authorization
7.4 Encryption
7.5 Privacy
Key points
Recommended reading
Website
Exercises

8. Reliable Programming

8.1 Fault avoidance
8.2 Input validation
8.3 Failure management
Key points
Recommended reading
Website
Exercises

9. Testing

9.1 Functional testing
9.2 Test automation
9.3 Test-driven development
9.4 Security testing
9.5 Code reviews
Key points
Recommended reading
Website
Exercises

10. DevOps and Code Management

10.1 Source code management
10.2 DevOps automation
10.3 DevOps measurement
Key points
Recommended reading
Website
Exercises