An Introduction to Modern Software Engineering
Slutsåld
Ian Sommerville is Emeritus Professor of Computer Science at St Andrews University, Scotland. He has a BSc in Physics from Strathclyde University and MSc and PhD degrees in Computer Science from St Andrews University. He has been a full Professor of Computer Science since 1986 firstly, at Lancaster University, and, subsequently, at St Andrews University. He has written several software engineering textbooks, including 'Software Engineering', now in its 10th edition, which has been in print since 1982. In 2011, he was awarded both the IEEE TCSE Distinguished Educator award and the ACM SIGSOFT Influential Educator award. He wrote his first computer program in 1970 and, almost 50 years later, still enjoys programming.
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