
Title overview
For 1-semester courses in software engineering.
Introduces software engineering techniques for developing software products and apps
With Engineering Software Products, author Ian Sommerville takes a unique approach to teaching software engineering. He focuses on the type of software products and apps that are familiar to students, rather than focusing on project-based techniques.
The text is designed for students taking their first course in software engineering with experience in programming using a modern programming language such as Java, Python or Ruby. Topics covered include personas and scenarios, cloud-based software, microservices, security and privacy, and DevOps.
Hallmark features of this title
An introductory text focusing on modern software engineering, based around the kind of software that students can relate to
- Covers methods and techniques that are used in the development of off-the-shelf, software products.
- Current topics (Cloud computing, microservices, security and privacy, and DevOps) are covered that are not covered in other software engineering texts.
- The book is written in an informal style with many illustrative examples, diagrams and tables, key points, and exercises for each chapter.
- Recommended Reading and Exercises section.
- 20 diagrams and tables for each chapter.
- Instructor resources and supporting material are available online.
Table of contents
- Software Products
- 1.1 The product vision
- 1.2 Software product management
- 1.3 Product prototyping
- Key points
- Recommended reading
- Website
- Exercises
- Agile Software Engineering
- 2.1 Agile methods
- 2.2 Extreme programming
- 2.3 Scrum
- Key points
- Recommended reading
- Website
- Exercises
- Features, Scenarios and Stories
- 3.1 Personas
- 3.2 Scenarios
- 3.3 User stories
- 3.4 Feature identification
- Key points
- Recommended reading
- Website
- Exercises
- 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
- 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
- Microservices Architecture
- 6.1 Microservices
- 6.2 Microservices architecture
- 6.3 RESTful services
- 6.4 Microservice deployment
- Key points
- Recommended reading
- Website
- Exercises
- 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
- Reliable Programming
- 8.1 Fault avoidance
- 8.2 Input validation
- 8.3 Failure management
- Key points
- Recommended reading
- Website
- Exercises
- 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
- DevOps and Code Management
- 10.1 Source code management
- 10.2 DevOps automation
- 10.3 DevOps measurement
- Key points
- Recommended reading
- Website
- Exercises
Author bios
About our author
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.