You are previewing Beginning Software Engineering.
O'Reilly logo
Beginning Software Engineering

Book Description

A complete introduction to building robust and reliable software

Beginning Software Engineering demystifies the software engineering methodologies and techniques that professional developers use to design and build robust, efficient, and consistently reliable software. Free of jargon and assuming no previous programming, development, or management experience, this accessible guide explains important concepts and techniques that can be applied to any programming language. Each chapter ends with exercises that let you test your understanding and help you elaborate on the chapter's main concepts. Everything you need to understand waterfall, Sashimi, agile, RAD, Scrum, Kanban, Extreme Programming, and many other development models is inside!

  • Describes in plain English what software engineering is

  • Explains the roles and responsibilities of team members working on a software engineering project

  • Outlines key phases that any software engineering effort must handle to produce applications that are powerful and dependable

  • Details the most popular software development methodologies and explains the different ways they handle critical development tasks

  • Incorporates exercises that expand upon each chapter's main ideas

  • Includes an extensive glossary of software engineering terms

  • Table of Contents

    1. 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
    2. PART I SOFTWARE ENGINEERING STEP-BY-STEP
      1. CHAPTER 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
      2. CHAPTER 2 BEFORE THE BEGINNING
        1. DOCUMENT MANAGEMENT
        2. HISTORICAL DOCUMENTS
        3. E-MAIL
        4. CODE
        5. CODE DOCUMENTATION
        6. APPLICATION DOCUMENTATION
        7. SUMMARY
      3. CHAPTER 3 PROJECT MANAGEMENT
        1. EXECUTIVE SUPPORT
        2. PROJECT MANAGEMENT
        3. SUMMARY
      4. CHAPTER 4 REQUIREMENT GATHERING
        1. REQUIREMENTS DEFINED
        2. REQUIREMENT CATEGORIES
        3. GATHERING REQUIREMENTS
        4. REFINING REQUIREMENTS
        5. RECORDING REQUIREMENTS
        6. VALIDATION AND VERIFICATION
        7. CHANGING REQUIREMENTS
        8. SUMMARY
      5. CHAPTER 5 HIGH-LEVEL DESIGN
        1. THE BIG PICTURE
        2. WHAT TO SPECIFY
        3. UML
        4. SUMMARY
      6. CHAPTER 6 LOW-LEVEL DESIGN
        1. OO DESIGN
        2. DATABASE DESIGN
        3. SUMMARY
      7. CHAPTER 7 DEVELOPMENT
        1. USE THE RIGHT TOOLS
        2. SELECTING ALGORITHMS
        3. TOP-DOWN DESIGN
        4. PROGRAMMING TIPS AND TRICKS
        5. SUMMARY
      8. CHAPTER 8 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. CHAPTER 9 DEPLOYMENT
        1. SCOPE
        2. THE PLAN
        3. CUTOVER
        4. DEPLOYMENT TASKS
        5. DEPLOYMENT MISTAKES
        6. SUMMARY
      10. CHAPTER 10 METRICS
        1. WRAP PARTY
        2. DEFECT ANALYSIS
        3. SOFTWARE METRICS
        4. SUMMARY
      11. CHAPTER 11 MAINTENANCE
        1. MAINTENANCE COSTS
        2. TASK CATEGORIES
        3. TASK EXECUTION
        4. SUMMARY
    3. PART II PROCESS MODELS
      1. CHAPTER 12 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. SYSTEMS DEVELOPMENT LIFE CYCLE
        10. SUMMARY
      2. CHAPTER 13 ITERATIVE MODELS
        1. ITERATIVE VERSUS PREDICTIVE
        2. ITERATIVE VERSUS INCREMENTAL
        3. PROTOTYPES
        4. SPIRAL
        5. UNIFIED PROCESS
        6. CLEANROOM
        7. SUMMARY
      3. CHAPTER 14 RAD
        1. RAD PRINCIPLES
        2. JAMES MARTIN RAD
        3. AGILE
        4. XP
        5. SCRUM
        6. LEAN
        7. CRYSTAL
        8. FEATURE-DRIVEN DEVELOPMENT
        9. AGILE UNIFIED PROCESS
        10. DISCIPLINED AGILE DELIVERY
        11. DYNAMIC SYSTEMS DEVELOPMENT METHOD
        12. KANBAN
        13. SUMMARY
    4. APPENDIX SOLUTIONS TO EXERCISES
    5. GLOSSARY
    6. TITLE PAGE
    7. COPYRIGHT
    8. ABOUT THE AUTHOR
    9. ABOUT THE TECHNICAL EDITOR
    10. CREDITS
    11. ACKNOWLEDGMENTS
    12. ADVERT
    13. EULA