Beginning Software Engineering

Nicht lieferbar | Lieferzeit: Nicht lieferbar I
Alle Preise inkl. MwSt. | Versandkostenfrei
Nicht verfügbar Zum Merkzettel
Gewicht:
820 g
Format:
239x186x22 mm
Beschreibung:

About the authorRod Stephens started out as a mathematician, but while studying at MIT he discovered the joys of computer algorithms and has been programming professionally ever since. The author of more than 30 books, Rod is an award-winning instructor who speaks regularly at programming conferences and user's group meetings.Visit us at wrox.com where you have access to free code samples, Programmer to Programmer forums, and discussions on the latest happenings in the industry from around the world.
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.
INTRODUCTION xxiPART I: SOFTWARE ENGINEERING STEP-BY-STEPCHAPTER 1: SOFTWARE ENGINEERING FROM 20,000 FEET 3Requirements Gathering 4High-Level Design 5Low-Level Design 6Development 6Testing 6Deployment 8Maintenance 9Wrap-up 9Everything All at Once 10Summary 11CHAPTER 2: BEFORE THE BEGINNING 15Document Management 16Historical Documents 18E-mail 19Code 21Code Documentation 22Application Documentation 25Summary 25CHAPTER 3: PROJECT MANAGEMENT 29Executive Support 30Project Management 31PERT Charts 33Critical Path Methods 38Gantt Charts 41Scheduling Software 42Predicting Times 42Get Experience 44Break Unknown Tasks into Simpler Pieces 44Look for Similarities 45Expect the Unexpected 45Track Progress 46Risk Management 47Summary 49CHAPTER 4: REQUIREMENT GATHERING 53Requirements Defi ned 54Clear 54Unambiguous 55Consistent 56Prioritized 56Verifiable 60Words to Avoid 60Requirement Categories 61Audience-Oriented Requirements 61Business Requirements 61User Requirements 62Functional Requirements 63Nonfunctional Requirements 63Implementation Requirements 63FURPS 64FURPS+ 64Common Requirements 66Gathering Requirements 67Listen to Customers (and Users) 67Use the Five Ws (and One H) 68Who 68What 68When 69Where 69Why 69How 69Study Users 70Refining Requirements 71Copy Existing Systems 71Clairvoyance 73Brainstorm 74Recording Requirements 76UML 77User Stories 77Use Cases 78Prototypes 78Requirements Specification 80Validation and Verification 80Changing Requirements 80Summary 81CHAPTER 5: HIGH?]LEVEL DESIGN 87The Big Picture 88What to Specify 89Security 89Hardware 90User Interface 91Internal Interfaces 92External Interfaces 93Architecture 94Monolithic 94Client/Server 95Component-Based 96Service-Oriented 97Data-Centric 97Event-Driven 97Rule-Based 98Distributed 98Mix and Match 99Reports 101Other Outputs 102Database 102Audit Trails 103User Access 103Database Maintenance 104Configuration Data 104Data Flows and States 105Training 105UML 105Structure Diagrams 107Behavior Diagrams 109Activity Diagrams 110Use Case Diagram 111State Machine Diagram 112Interaction Diagrams 113Sequence Diagram 113Communication Diagram 114Timing Diagram 115Interaction Overview Diagram 115Summary 116CHAPTER 6: LOW?]LEVEL DESIGN 119OO Design 120Identifying Classes 121Building Inheritance Hierarchies 122Refinement 123Generalization 125Hierarchy Warning Signs 126Object Composition 127Database Design 127Relational Databases 128First Normal Form 130Second Normal Form 134Third Normal Form 135Higher Levels of Normalization 137Summary 138CHAPTER 7: DEVELOPMENT 143Use the Right Tools 144Hardware 144Network 145Development Environment 146Source Code Control 147Profilers 147Static Analysis Tools 147Testing Tools 147Source Code Formatters 147Refactoring Tools 148Training 148Selecting Algorithms 148Effective 149Efficient 149Predictable 151Simple 152Prepackaged 152Top-Down Design 153Programming Tips and Tricks 155Be Alert 155Write for People, Not the Computer 156Comment First 157Write Self-Documenting Code 159Keep It Small 160Stay Focused 161Avoid Side Effects 162Validate Results 163Practice Offensive Programming 165Use Exceptions 166Write Exception Handers First 167Don't Repeat Code 167Defer Optimization 167Summary 169CHAPTER 8: TESTING 173Testing Goals 175Reasons Bugs Never Die 175Diminishing Returns 175Deadlines 175Consequences 176It's Too Soon 176Usefulness 176Obsolescence 177It's Not a Bug 177It Never Ends 177It's Better Than Nothing 178Fixing Bugs Is Dangerous 178Which Bugs to Fix 179Levels of Testing 179Unit Testing 179Integration Testing 181Automated Testing 182Component Interface Testing 183System Testing 184Acceptance Testing 185Other Testing Categories 185Testing Techniques 186Exhaustive Testing 186Black-Box Testing 187White-Box Testing 188Gray-Box Testing 188Testing Habits 189Test and Debug When Alert 189Test Your Own Code 189Have Someone Else Test Your Code 190Fix Your Own Bugs 192Think Before You Change 193Don't Believe in Magic 193See What Changed 193Fix Bugs, Not Symptoms 194Test Your Tests 194How to Fix a Bug 194Estimating Number of Bugs 195Tracking Bugs Found 195Seeding 197The Lincoln Index 197Summary 198CHAPTER 9: DEPLOYMENT 203Scope 204The Plan 204Cutover 206Staged Deployment 206Gradual Cutover 206Incremental Deployment 208Parallel Testing 209Deployment Tasks 209Deployment Mistakes 210Summary 211CHAPTER 10: METRICS 215Wrap Party 216Defect Analysis 216Kinds of Bugs 217Discoverer 217Severity 217Time Created 218Age at Fix 218Task Type 218Ishikawa Diagrams 219Software Metrics 222Qualities of Good Attributes and Metrics 223Using Metrics 224Process Metrics 226Project Metrics 226Things to Measure 227Size Normalization 229Function Point Normalization 231Count Function Point Metrics 232Multiply by Complexity Factors 232Calculate Complexity Adjustment Value 233Calculate Adjusted FP 235Summary 235CHAPTER 11: MAINTENANCE 241Maintenance Costs 242Task Categories 243Perfective Tasks 244Feature Improvements 245New Features 245The Second System Effect 245Adaptive Tasks 247Corrective Tasks 248Preventive Tasks 251Clarification 252Code Reuse 253Improved Flexibility 254Bug Swarms 254Bad Programming Practices 255Individual Bugs 256Not Invented Here 256Task Execution 256Summary 257PART II: PROCESS MODELSCHAPTER 12: PREDICTIVE MODELS 265Model Approaches 266Prerequisites 267Predictive and Adaptive 267Success and Failure Indicators 268Advantages and Disadvantages 268Waterfall 270Waterfall with Feedback 271Sashimi 272Incremental Waterfall 273V-Model 275Systems Development Life Cycle 276Summary 280CHAPTER 13: ITERATIVE MODELS 283Iterative Versus Predictive 284Iterative Versus Incremental 286Prototypes 287Types of Prototypes 288Pros and Cons 289Spiral 290Clarifications 293Pros and Cons 294Unified Process 295Pros and Cons 296Rational Unified Process 297Cleanroom 298Summary 299CHAPTER 14: RAD 303RAD Principles 305James Martin RAD 308Agile 309Self-Organizing Teams 311Agile Techniques 313Communication 313Incremental Development 314Focus on Quality 316XP 317XP Roles 318XP Values 319XP Practices 319Have a Customer On Site 320Play the Planning Game 320Use Standup Meetings 321Make Frequent Small Releases 322Use Intuitive Metaphors 322Keep Designs Simple 322Defer Optimization 322Refactor When Necessary 323Give Everyone Ownership of the Code 323Use Coding Standards 324Promote Generalization 324Use Pair Programming 324Test Constantly 324Integrate Continuously 325Work Sustainably 325Use Test-Driven and Test-First Development 325Scrum 327Scrum Roles 327Scrum Sprints 328Planning Poker 329Burndown 330Velocity 331Lean 332Lean Principles 332Crystal 333Crystal Clear 335Crystal Yellow 336Crystal Orange 337Feature-Driven Development 338FDD Roles 338FDD Phases 340Develop a Model 340Build a Feature List 340Plan by Feature 341Design by Feature 341Build by Feature 342FDD Iteration Milestones 342Agile Unified Process 343Disciplined Agile Delivery 345DAD Principles 346DAD Roles 346DAD Phases 347Dynamic Systems Development Method 348DSDM Phases 348DSDM Principles 349DSDM Roles 350Kanban 351Kanban Principles 352Kanban Practices 353Kanban Board 353Summary 355APPENDIX: SOLUTIONS TO EXERCISES 361GLOSSARY 417INDEX 437
A complete introduction to building robust and reliable softwareBeginning 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

Kunden Rezensionen

Zu diesem Artikel ist noch keine Rezension vorhanden.
Helfen sie anderen Besuchern und verfassen Sie selbst eine Rezension.