Cover image for Beginning Software Engineering.
Beginning Software Engineering.
Title:
Beginning Software Engineering.
Author:
Stephens, Rod.
ISBN:
9781118969175
Personal Author:
Edition:
1st ed.
Physical Description:
1 online resource (482 pages)
Contents:
BEGINNING Software Engineering -- CONTENTS -- INTRODUCTION -- PART I: SOFTWARE ENGINEERING STEP-BY-STEP -- CHAPTER 1: SOFTWARE ENGINEERING FROM 20,000 FEET -- Requirements Gathering -- High-Level Design -- Low-Level Design -- Development -- Testing -- Deployment -- Maintenance -- Wrap-up -- Everything All at Once -- Summary -- CHAPTER 2: BEFORE THE BEGINNING -- Document Management -- Historical Documents -- E-mail -- Code -- Code Documentation -- Application Documentation -- Summary -- CHAPTER 3: PROJECT MANAGEMENT -- Executive Support -- Project Management -- PERT Charts -- Critical Path Methods -- Gantt Charts -- Scheduling Software -- Predicting Times -- Get Experience -- Break Unknown Tasks into Simpler Pieces -- Look for Similarities -- Expect the Unexpected -- Track Progress -- Risk Management -- Summary -- CHAPTER 4: REQUIREMENT GATHERING -- Requirements Defined -- Clear -- Unambiguous -- Consistent -- Prioritized -- Verifiable -- Words to Avoid -- Requirement Categories -- Audience-Oriented Requirements -- Business Requirements -- User Requirements -- Functional Requirements -- Nonfunctional Requirements -- Implementation Requirements -- FURPS -- FURPS+ -- Common Requirements -- Gathering Requirements -- Listen to Customers (and Users) -- Use the Five Ws (and One H) -- Who -- What -- When -- Where -- Why -- How -- Study Users -- Refining Requirements -- Copy Existing Systems -- Clairvoyance -- Brainstorm -- Recording Requirements -- UML -- User Stories -- Use Cases -- Prototypes -- Requirements Specification -- Validation and Verification -- Changing Requirements -- Summary -- CHAPTER 5: HIGH-LEVEL DESIGN -- The Big Picture -- What to Specify -- Security -- Hardware -- User Interface -- Internal Interfaces -- External Interfaces -- Architecture -- Monolithic -- Client/Server -- Component-Based -- Service-Oriented -- Data-Centric.

Event-Driven -- Rule-Based -- Distributed -- Mix and Match -- Reports -- Other Outputs -- Database -- Audit Trails -- User Access -- Database Maintenance -- Configuration Data -- Data Flows and States -- Training -- UML -- Structure Diagrams -- Behavior Diagrams -- Activity Diagrams -- Use Case Diagram -- State Machine Diagram -- Interaction Diagrams -- Sequence Diagram -- Communication Diagram -- Timing Diagram -- Interaction Overview Diagram -- Summary -- CHAPTER 6: LOW-LEVEL DESIGN -- OO Design -- Identifying Classes -- Building Inheritance Hierarchies -- Refinement -- Generalization -- Hierarchy Warning Signs -- Object Composition -- Database Design -- Relational Databases -- First Normal Form -- Second Normal Form -- Third Normal Form -- Higher Levels of Normalization -- Summary -- CHAPTER 7: DEVELOPMENT -- Use the Right Tools -- Hardware -- Network -- Development Environment -- Source Code Control -- Profilers -- Static Analysis Tools -- Testing Tools -- Source Code Formatters -- Refactoring Tools -- Training -- Selecting Algorithms -- Effective -- Efficient -- Predictable -- Simple -- Prepackaged -- Top-Down Design -- Programming Tips and Tricks -- Be Alert -- Write for People, Not the Computer -- Comment First -- Write Self-Documenting Code -- Keep It Small -- Stay Focused -- Avoid Side Effects -- Validate Results -- Practice Offensive Programming -- Use Exceptions -- Write Exception Handers First -- Don't Repeat Code -- Defer Optimization -- Summary -- CHAPTER 8: TESTING -- Testing Goals -- Reasons Bugs Never Die -- Diminishing Returns -- Deadlines -- Consequences -- It's Too Soon -- Usefulness -- Obsolescence -- It's Not a Bug -- It Never Ends -- It's Better Than Nothing -- Fixing Bugs Is Dangerous -- Which Bugs to Fix -- Levels of Testing -- Unit Testing -- Integration Testing -- Automated Testing -- Component Interface Testing.

System Testing -- Acceptance Testing -- Other Testing Categories -- Testing Techniques -- Exhaustive Testing -- Black-Box Testing -- White-Box Testing -- Gray-Box Testing -- Testing Habits -- Test and Debug When Alert -- Test Your Own Code -- Have Someone Else Test Your Code -- Fix Your Own Bugs -- Think Before You Change -- Don't Believe in Magic -- See What Changed -- Fix Bugs, Not Symptoms -- Test Your Tests -- How to Fix a Bug -- Estimating Number of Bugs -- Tracking Bugs Found -- Seeding -- The Lincoln Index -- Summary -- CHAPTER 9: DEPLOYMENT -- Scope -- The Plan -- Cutover -- Staged Deployment -- Gradual Cutover -- Incremental Deployment -- Parallel Testing -- Deployment Tasks -- Deployment Mistakes -- Summary -- CHAPTER 10: METRICS -- Wrap Party -- Defect Analysis -- Kinds of Bugs -- Discoverer -- Severity -- Time Created -- Age at Fix -- Task Type -- Ishikawa Diagrams -- Software Metrics -- Qualities of Good Attributes and Metrics -- Using Metrics -- Process Metrics -- Project Metrics -- Things to Measure -- Size Normalization -- Function Point Normalization -- Count Function Point Metrics -- Multiply by Complexity Factors -- Calculate Complexity Adjustment Value -- Calculate Adjusted FP -- Summary -- CHAPTER 11: MAINTENANCE -- Maintenance Costs -- Task Categories -- Perfective Tasks -- Feature Improvements -- New Features -- The Second System Effect -- Adaptive Tasks -- Corrective Tasks -- Preventive Tasks -- Clarification -- Code Reuse -- Improved Flexibility -- Bug Swarms -- Bad Programming Practices -- Individual Bugs -- Not Invented Here -- Task Execution -- Summary -- PART II: PROCESS MODELS -- CHAPTER 12: PREDICTIVE MODELS -- Model Approaches -- Prerequisites -- Predictive and Adaptive -- Success and Failure Indicators -- Advantages and Disadvantages -- Waterfall -- Waterfall with Feedback -- Sashimi -- Incremental Waterfall.

V-Model -- Systems Development Life Cycle -- Summary -- CHAPTER 13: ITERATIVE MODELS -- Iterative Versus Predictive -- Iterative Versus Incremental -- Prototypes -- Types of Prototypes -- Pros and Cons -- Spiral -- Clarifications -- Pros and Cons -- Unified Process -- Pros and Cons -- Rational Unified Process -- Cleanroom -- Summary -- CHAPTER 14: RAD -- RAD Principles -- James Martin RAD -- Agile -- Self-Organizing Teams -- Agile Techniques -- Communication -- Incremental Development -- Focus on Quality -- XP -- XP Roles -- XP Values -- XP Practices -- Have a Customer On Site -- Play the Planning Game -- Use Standup Meetings -- Make Frequent Small Releases -- Use Intuitive Metaphors -- Keep Designs Simple -- Defer Optimization -- Refactor When Necessary -- Give Everyone Ownership of the Code -- Use Coding Standards -- Promote Generalization -- Use Pair Programming -- Test Constantly -- Integrate Continuously -- Work Sustainably -- Use Test-Driven and Test-First Development -- Scrum -- Scrum Roles -- Scrum Sprints -- Planning Poker -- Burndown -- Velocity -- Lean -- Lean Principles -- Crystal -- Crystal Clear -- Crystal Yellow -- Crystal Orange -- Feature-Driven Development -- FDD Roles -- FDD Phases -- Develop a Model -- Build a Feature List -- Plan by Feature -- Design by Feature -- Build by Feature -- FDD Iteration Milestones -- Agile Unified Process -- Disciplined Agile Delivery -- DAD Principles -- DAD Roles -- DAD Phases -- Dynamic Systems Development Method -- DSDM Phases -- DSDM Principles -- DSDM Roles -- Kanban -- Kanban Principles -- Kanban Practices -- Kanban Board -- Summary -- APPENDIX: SOLUTIONS TO EXERCISES -- GLOSSARY -- INDEX -- EULA.
Abstract:
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.
Local Note:
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2017. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
Electronic Access:
Click to View
Holds: Copies: