Beginning Software Engineering, 2nd Edition

Book description

Discover the foundations of software engineering with this easy and intuitive guide

In the newly updated second edition of Beginning Software Engineering, expert programmer and tech educator Rod Stephens delivers an instructive and intuitive introduction to the fundamentals of software engineering. In the book, you’ll learn to create well-constructed software applications that meet the needs of users while developing the practical, hands-on skills needed to build robust, efficient, and reliable software.

The author skips the unnecessary jargon and sticks to simple and straightforward English to help you understand the concepts and ideas discussed within. He also offers you real-world tested methods you can apply to any programming language.

You’ll also get:

  • Practical tips for preparing for programming job interviews, which often include questions about software engineering practices
  • A no-nonsense guide to requirements gathering, system modeling, design, implementation, testing, and debugging
  • Brand-new coverage of user interface design, algorithms, and programming language choices

Beginning Software Engineering doesn’t assume any experience with programming, development, or management. It’s plentiful figures and graphics help to explain the foundational concepts and every chapter offers several case examples, Try It Out, and How It Works explanatory sections.

For anyone interested in a new career in software development, or simply curious about the software engineering process, Beginning Software Engineering, Second Edition is the handbook you’ve been waiting for.

Table of contents

  1. COVER
  2. TITLE PAGE
  3. INTRODUCTION
    1. WHAT IS SOFTWARE ENGINEERING?
    2. WHY IS SOFTWARE ENGINEERING IMPORTANT?
    3. WHO SHOULD READ THIS BOOK?
    4. APPROACH
    5. WHAT THIS BOOK COVERS (AND WHAT IT DOESN'T)
    6. WHAT TOOLS DO YOU NEED?
    7. CONVENTIONS
    8. ERRATA
    9. IMPORTANT URLs
    10. CONTACTING THE AUTHOR
    11. DISCLAIMER
  4. PART I: Software Engineering Step-by-Step
    1. 1 Software Engineering from 20,000 Feet
      1. REQUIREMENTS GATHERING
      2. HIGH-LEVEL DESIGN
      3. LOW-LEVEL DESIGN
      4. DEVELOPMENT
      5. TESTING
      6. DEPLOYMENT
      7. MAINTENANCE
      8. WRAP-UP
      9. EVERYTHING ALL AT ONCE
      10. SUMMARY
      11. WHAT YOU LEARNED IN THIS CHAPTER
    2. 2 Before the Beginning
      1. DOCUMENT MANAGEMENT
      2. HISTORICAL DOCUMENTS
      3. EMAIL
      4. CODE
      5. CODE DOCUMENTATION
      6. APPLICATION DOCUMENTATION
      7. SUMMARY
      8. WHAT YOU LEARNED IN THIS CHAPTER
    3. 3 The Team
      1. TEAM FEATURES
      2. TEAM ROLES
      3. TEAM CULTURE
      4. INTERVIEWS
      5. PHYSICAL ENVIRONMENT
      6. COLLABORATION SOFTWARE
      7. OUTSOURCING
      8. SUMMARY
      9. WHAT YOU LEARNED IN THIS CHAPTER
    4. 4 Project Management
      1. EXECUTIVE SUPPORT
      2. PROJECT MANAGEMENT
      3. SUMMARY
      4. WHAT YOU LEARNED IN THIS CHAPTER
    5. 5 Requirements Gathering
      1. REQUIREMENTS DEFINED
      2. REQUIREMENT CATEGORIES
      3. GATHERING REQUIREMENTS
      4. REFINING REQUIREMENTS
      5. RECORDING REQUIREMENTS
      6. VALIDATION AND VERIFICATION
      7. CHANGING REQUIREMENTS
      8. DIGITAL TRANSFORMATION
      9. SUMMARY
      10. WHAT YOU LEARNED IN THIS CHAPTER
    6. 6 High-Level Design
      1. THE BIG PICTURE
      2. WHAT TO SPECIFY
      3. UML
      4. SUMMARY
      5. WHAT YOU LEARNED IN THIS CHAPTER
    7. 7 Low-Level Design
      1. DESIGN APPROACHES
      2. OO DESIGN
      3. DATABASE DESIGN
      4. WHEN TO OPTIMIZE
      5. SUMMARY
      6. WHAT YOU LEARNED IN THIS CHAPTER
    8. 8 Security Design
      1. SECURITY GOALS
      2. SECURITY TYPES
      3. CYBERSECURITY
      4. SHIFT-LEFT SECURITY
      5. MALWARE MENAGERIE
      6. PHISHING AND SPOOFING
      7. SOCIAL ENGINEERING ATTACKS
      8. CRAPWARE
      9. PASSWORD ATTACKS
      10. USER ACCESS
      11. COUNTERMEASURES
      12. CYBER INSURANCE
      13. SUMMARY
      14. WHAT YOU LEARNED IN THIS CHAPTER
    9. 9 User Experience Design
      1. DESIGN MINDSET
      2. DESIGN GUIDELINES
      3. FORM DESIGN
      4. SUMMARY
      5. WHAT YOU LEARNED IN THIS CHAPTER
    10. 10 Programming
      1. TOOLS
      2. ALGORITHMS
      3. TOP-DOWN DESIGN
      4. PROGRAMMING TIPS AND TRICKS
      5. SUMMARY
      6. WHAT YOU LEARNED IN THIS CHAPTER
    11. 11 Algorithms
      1. ALGORITHM STUDY
      2. ALGORITHMIC APPROACHES
      3. ALGORITHM CHARACTERISTICS
      4. SUMMARY
      5. WHAT YOU LEARNED IN THIS CHAPTER
    12. 12 Programming Languages
      1. THE MYTH OF PICKING A LANGUAGE
      2. LANGUAGE GENERATIONS
      3. LANGUAGE FAMILIES
      4. THE BEST LANGUAGE
      5. SUMMARY
      6. WHAT YOU LEARNED IN THIS CHAPTER
    13. 13 Testing
      1. TESTING GOALS
      2. REASONS BUGS NEVER DIE
      3. LEVELS OF TESTING
      4. TESTING TECHNIQUES
      5. TESTING HABITS
      6. HOW TO FIX A BUG
      7. ESTIMATING NUMBER OF BUGS
      8. SUMMARY
      9. WHAT YOU LEARNED IN THIS CHAPTER
    14. 14 Deployment
      1. SCOPE
      2. THE PLAN
      3. CUTOVER
      4. DEPLOYMENT TASKS
      5. DEPLOYMENT MISTAKES
      6. SUMMARY
      7. WHAT YOU LEARNED IN THIS CHAPTER
    15. 15 Metrics
      1. WRAP PARTY
      2. DEFECT ANALYSIS
      3. SOFTWARE METRICS
      4. SUMMARY
      5. WHAT YOU LEARNED IN THIS CHAPTER
    16. 16 Maintenance
      1. MAINTENANCE COSTS
      2. TASK CATEGORIES
      3. TASK EXECUTION
      4. SUMMARY
      5. WHAT YOU LEARNED IN THIS CHAPTER
  5. PART II: Process Models
    1. 17 Predictive Models
      1. MODEL APPROACHES
      2. PREREQUISITES
      3. PREDICTIVE AND ADAPTIVE
      4. WATERFALL
      5. WATERFALL WITH FEEDBACK
      6. SASHIMI
      7. INCREMENTAL WATERFALL
      8. V-MODEL
      9. SOFTWARE DEVELOPMENT LIFE CYCLE
      10. SUMMARY
      11. WHAT YOU LEARNED IN THIS CHAPTER
    2. 18 Iterative Models
      1. ITERATIVE VS. PREDICTIVE
      2. ITERATIVE VS. INCREMENTAL
      3. PROTOTYPES
      4. SPIRAL
      5. UNIFIED PROCESS
      6. CLEANROOM
      7. COWBOY CODING
      8. SUMMARY
      9. WHAT YOU LEARNED IN THIS CHAPTER
    3. 19 RAD
      1. RAD PRINCIPLES
      2. JAMES MARTIN RAD
      3. AGILE
      4. XP
      5. SCRUM
      6. LEAN
      7. CRYSTAL
      8. FEATURE-DRIVEN DEVELOPMENT
      9. DISCIPLINED AGILE DELIVERY
      10. DYNAMIC SYSTEMS DEVELOPMENT METHOD
      11. KANBAN
      12. SUMMARY
      13. WHAT YOU LEARNED IN THIS CHAPTER
  6. PART III: Advanced Topics
    1. 20 Software Ethics
      1. ETHICAL BEHAVIOR
      2. RESPONSIBILITY
      3. THOUGHT EXPERIMENTS
      4. SUMMARY
      5. WHAT YOU LEARNED IN THIS CHAPTER
    2. 21 Future Trends
      1. SECURITY
      2. UX/UI
      3. CODE PACKAGING
      4. CLOUD TECHNOLOGY
      5. SOFTWARE DEVELOPMENT
      6. ALGORITHMS
      7. TECH TOYS
      8. SUMMARY
      9. WHAT YOU LEARNED IN THIS CHAPTER
  7. APPENDIX: Solutions to Exercises
    1. CHAPTER 1
    2. CHAPTER 2
    3. CHAPTER 3
    4. CHAPTER 4
    5. CHAPTER 5
    6. CHAPTER 6
    7. CHAPTER 7
    8. CHAPTER 8
    9. CHAPTER 9
    10. CHAPTER 10
    11. CHAPTER 11
    12. CHAPTER 12
    13. CHAPTER 13
    14. CHAPTER 14
    15. CHAPTER 15
    16. CHAPTER 16
    17. CHAPTER 17
    18. CHAPTER 18
    19. CHAPTER 19
    20. CHAPTER 20
    21. CHAPTER 21
  8. GLOSSARY
  9. INDEX
  10. COPYRIGHT
  11. ABOUT THE AUTHOR
    1. ABOUT THE TECHNICAL EDITOR
  12. ACKNOWLEDGMENTS
  13. END USER LICENSE AGREEMENT

Product information

  • Title: Beginning Software Engineering, 2nd Edition
  • Author(s): Rod Stephens
  • Release date: November 2022
  • Publisher(s): Wiley
  • ISBN: 9781119901709