Engineering Software Products: An Introduction to Modern Software Engineering

Book description

For one-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 and focuses on the type of software products and apps that are familiar to students, rather than focusing on project-based techniques. Written in an informal style, this book focuses on software engineering techniques that are relevant for software product engineering. Topics covered include personas and scenarios, cloud-based software, microservices, security and privacy and DevOps. 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.

Table of contents

  1. Engineering Software Products An Introduction to Modern Software Engineering
  2. Preface
    1. Who is the book for?
    2. Why do we need a software engineering book that’s focused on software products?
    3. Is this a new edition of your other software engineering textbook?
    4. What’s in the book?
    5. How is this book different from other introductory texts on software engineering?
    6. What do I need to know to get value from the book?
    7. What extra material is available to help teachers and instructors?
    8. Where can I find out more?
  3. Contents
  4. 1 Software Products
    1. 1.1 The product vision
      1. 1.1.1 A vision example
    2. 1.2 Software product management
      1. 1.2.1 Product vision management
      2. 1.2.2 Product roadmap development
      3. 1.2.3 User story and scenario development
      4. 1.2.4 Product backlog management
      5. 1.2.5 Acceptance testing
      6. 1.2.6 Customer testing
      7. 1.2.7 User interface design
    3. 1.3 Product prototyping
    4. Key Points
    5. Recommended Reading
    6. Presentations, Videos, and Links
    7. Exercises
  5. 2 Agile Software Engineering
    1. 2.1 Agile methods
    2. 2.2 Extreme Programming
    3. 2.3 Scrum
      1. 2.3.1 Product backlogs
      2. 2.3.2 Timeboxed sprints
      3. 2.3.3 Self-organizing teams
    4. Key Points
    5. Recommended Reading
    6. Presentations, Videos, and Links
    7. Exercises
  6. 3 Features, Scenarios, and Stories
    1. 3.1 Personas
    2. 3.2 Scenarios
      1. 3.2.1 Writing scenarios
    3. 3.3 User stories
    4. 3.4 Feature identification
      1. 3.4.1 Feature derivation
      2. 3.4.2 The feature list
    5. Key Points
    6. Recommended Reading
    7. Presentations, Videos, and Links
    8. Exercises
  7. 4 Software Architecture
    1. 4.1 Why is architecture important?
    2. 4.2 Architectural design
    3. 4.3 System decomposition
    4. 4.4 Distribution architecture
    5. 4.5 Technology issues
      1. 4.5.1 Database
      2. 4.5.2 Delivery platform
      3. 4.5.3 Server
      4. 4.5.4 Open source
      5. 4.5.5 Development technology
    6. Key Points
    7. Recommended Reading
    8. Presentations, Videos, and Links
    9. Exercises
  8. 5 Cloud-Based Software
    1. 5.1 Virtualization and containers
    2. 5.2 Everything as a service
    3. 5.3 Software as a service
    4. 5.4 Multi-tenant and multi-instance systems
      1. 5.4.1 Multi-tenant systems
      2. 5.4.2 Multi-instance systems
    5. 5.5 Cloud software architecture
      1. 5.5.1 Database organization
      2. 5.5.2 Scalability and resilience
      3. 5.5.3 Software structure
      4. 5.5.4 Cloud platform
    6. Key Points
    7. Recommended Reading
    8. Presentations, Videos, and Links
    9. Exercises
  9. 6 Microservices Architecture
    1. 6.1 Microservices
    2. 6.2 Microservices architecture
      1. 6.2.1 Architectural design decisions
      2. 6.2.2 Service communications
      3. 6.2.3 Data distribution and sharing
      4. 6.2.4 Service coordination
      5. 6.2.5 Failure management
    3. 6.3 RESTful services
    4. 6.4 Service deployment
    5. Key Points
    6. Recommended Reading
    7. Presentations, Videos, and Links
    8. Exercises
  10. 7 Security and Privacy
    1. 7.1 Attacks and defenses
      1. 7.1.1 Injection attacks
      2. 7.1.2 Cross-site scripting attacks
      3. 7.1.3 Session hijacking attacks
      4. 7.1.4 Denial-of-service attacks
      5. 7.1.5 Brute force attacks
    2. 7.2 Authentication
      1. 7.2.1 Federated identity
      2. 7.2.2 Mobile device authentication
    3. 7.3 Authorization
    4. 7.4 Encryption
      1. 7.4.1 Symmetric and asymmetric encryption
      2. 7.4.2 TLS and digital certificates
      3. 7.4.3 Data encryption
      4. 7.4.4 Key management
    5. 7.5 Privacy
    6. Key Points
    7. Recommended Reading
    8. Presentations, Videos, and Links
    9. Exercises
  11. 8 Reliable Programming
    1. 8.1 Fault avoidance
      1. 8.1.1 Program complexity
        1. Ensure that every class has a single responsibility
        2. Avoid deeply nested conditional statements
        3. Avoid deep inheritance hierarchies
      2. 8.1.2 Design patterns
      3. 8.1.3 Refactoring
    2. 8.2 Input validation
      1. 8.2.1 Regular expressions
      2. 8.2.2 Number checking
    3. 8.3 Failure management
    4. Key Points
    5. Recommended Reading
    6. Presentations, Videos, and Links
    7. Exercises
  12. 9 Testing
    1. 9.1 Functional testing
      1. 9.1.1 Unit testing
      2. 9.1.2 Feature testing
      3. 9.1.3 System and release testing
    2. 9.2 Test automation
    3. 9.3 Test-driven development
    4. 9.4 Security testing
    5. 9.5 Code reviews
    6. Key Points
    7. Recommended Reading
    8. Presentations, Videos, and Links
    9. Exercises
  13. 10 DevOps and Code Management
    1. 10.1 Code management
      1. 10.1.1 Fundamentals of source code management
      2. 10.1.2 Using Git
    2. 10.2 DevOps automation
      1. 10.2.1 Continuous integration
      2. 10.2.2 Continuous delivery and deployment
      3. 10.2.3 Infrastructure as code
    3. 10.3 DevOps measurement
    4. Key Points
    5. Recommended Reading
    6. Presentations, Videos, and Links
    7. Exercises
  14. Index
    1. A
    2. B
    3. C
    4. D
    5. E
    6. F
    7. G
    8. H
    9. I
    10. J
    11. K
    12. L
    13. M
    14. N
    15. O
    16. P
    17. R
    18. S
    19. T
    20. U
    21. V
    22. W
    23. X
    24. Y

Product information

  • Title: Engineering Software Products: An Introduction to Modern Software Engineering
  • Author(s): Ian Sommerville
  • Release date: May 2019
  • Publisher(s): Pearson
  • ISBN: 9780137586721