PREFACE Chapter 1 THE PERSONAL SOFTWARE PROCESS STRATEGY 1.1 The Logic for a Software Engineering Discipline 1.2 What is s Software Process? 1.3 Process Maturity 1.4 Your Personal Responsibilities 1.5 The Personal Software Process(PSP)Strategy 1.6 The Logic for the PSP 1.7 Productivity and the PSP 1.8 Caveats 1.9 Summary References Chapter 2 THE BASELINE PERSONAL PROCESS 2.1 The Baseline Process 2.2 Why Forms Are Helpful 2.3 The PSP Process Elements 2.4 The PSPO Process 2.5 PSPO Measures 2.6 Time Recording Log 2.7 Defect Recording Log 2.8 PSPO Project Plan Summary 2.9 Customizing the Initial Process 2.10 Summary 2.11 Exercises References Chapter 3 PLANNING I-THE PLANNING PROCESS 3.1 Why Make Plans 3.2 What Is a Plan 3.3 Contents of a Software Plan 3.4 Planning a Software Project 3.5 Producing a Quality Plan 3.6 Summary 3.7 Exercises References Chapter 4 PLANNING II-MEASURING SOFTWARE SIZE 4.1 Size Measures 4.2 A Size Measurement Framework 4.3 Establishing a Counting Standard 4.4 Using LOC Counts 4.5 Reuse Considerations 4.6 Line of Code Accounting 4.7 Calculating Productivity 4.8 LOC Counters 4.9 Summary 4.10 Exercises References Chapter 5 PLANNING III-ESTIMATING SOFTWARE SIZE 5.1 Background 5.2 Popular Estimating Methods 5.3 Proxy-based Estimating 5.4 The PROBE Size Estimating Method 5.5 Object Categories 5.6 Estimating Considerations 5.7 Summary 5.8 Exercises References Chapter 6 PLANNING IV-RESOURCE AND SCHEDULE ESTIMATING 6.1 Resource Planning 6.2 Estimating Development Time 6.3 Estimating Task Time 6.4 Combining Multiple Estimates 6.5 Using Multiple Regression 6.6 Schedule Estimating 6.7 Earned Value Tracking 6.8 Estimating Accuracy 6.9 Summary 6.10 Exercises References Chapter 7 MEASUREMENTS IN THE PERSONAL SOFTWARE PROCESS 7.1 Measurement Overview 7.2 Fundamental Process Measures 7.3 Goal-Question-Metric Paradigm 7.4 General PSP Objectives,Goals,and Questions 7.5 A GQM Example 7.6 Gathering Data 7.7 The Impact of Data Gathering 7.8 Establishing a Baseline for Your Personal Process 7.9 Summary 7.10 Exercises References Chapter 8 DESIGN AND CODE REVIEWS 8.1 What Are Reviews 8.2 Why Review Programs 8.3 Personal Reviews 8.4 Review Principles 8.5 Separate Design and Code Reviews 8.6 Design Review Principles 8.7 Review Measures 8.8 Checklists 8.9 Reviewing before of after You Compile 8.10 The Relationship between Reviews and Inspections 8.11 Summary 8.12 Exercises References Chapter 9 SOFTWARE QUALITY MANAGEMENT 9.1 What Is Software Quality? 9.2 The Economics of Software Quality 9.3 Developing a Quality Strategy 9.4 Process Benchmarking 9.5 Yield Management 9.6 Defect Removal Strategies 9.7 Defect Provention Strategies 9.8 Summary 9.9 Exercises References Chapter 10 SOFTWARE DESIGN 10.1 The Design Process 10.2 Design Quality 10.3 Structuring the Design Process 10.4 Design Notation 10.5 Design Templates 10.6 The Functional Specification Template 10.7 The State Specification Template 10.8 The Logic Specification Template 10.9 The Operational Scenario Template 10.10 Using Templates in Design 10.11 Design Guidelines 10.12 Summary 10.13 Exercises References Chapter 11 SCALING UP THE PERSONAL SOFTWARE PROCESS 11.1 Using Abstractions 11.2 The Stages of Product Size 11.3 Developing Large-scale Programs 11.4 A Potential Problem with Abstractions 11.5 The Development Strategy 11.6 PSP3 11.7 Summary 11.8 Exercises References Chapter 12 DESIGN VERIFICATION 12.1 Selecting Verfication Methods 12.2 Design Standards 12.3 Verfication Methods 12.4 Verifying the Object State Machine 12.5 Program Tracing 12.6 Verifying Program Correctness 12.7 Comments on Verfication Methods 12.8 Summary 12.9 Exercises References Chapter 13 DEFINING THE SOFTWARE PROCESS 13.1 Why Define Processes 13.2 Software Process Basics 13.3 Process Definition 13.4 Defining Process Phases 13.5 Process Development Considerations 13.6 Process Evolution 13.7 The Process-development Process 13.8 Summary 13.9 Exercises References Chapter 14 USING THE PERSONAL SOFTWARE PROCESS 14.1 Making Personal Commitments 14.2 Using the PSP in and Organization 14.3 The Personal Costs of a PSP 14.4 The Personal Benefits of a PSP 14.5 Coaching 14.6 The Responsible Software Professional 14.7 Your Future in Software Engineering References Appendix A STATISTICAL METHODS FOR THE PERSONAL SOFTWARE PROCESS A1 Statistical Distributions A2 Variance and Standard Deviation A3 Correlation A4 The Significance of a Correlation A5 Numerical Integration A6 Tests for Normality A7 Linear Regression A8 Linear Regression Prediction Interval A9 Multiple Regression A10 Multiple Regression Prodiction Interval A11 Gauss's Method A12 The Pareto Distribution References Appendix B SOFTWARE DESIGN NOTATION B1 The Algebra of Sets B2 Simplifying Boolean Expressions B3 Karnaugh Maps B4 Describing Program Functions B5 The Elevator Example B6 Function Completeness and Orthogonality B7 Formally Describing Designs B8 Answers to B2 Exercises References Appendix C THE PERSONAL SOFTWARE PROCESS CONTENTS C1 PSP0 Process Contents C2 PSP0 Process Contents C3 PSP1 Process Contents C4 PSP1 Process Contents C5 PSP2 Process Contents C6 PSP2 Process Contents C7 PSP3 Process Contents Appendix D THE PERSONAL SOFTWARE PROCESS EXERCISES D1 Guidelines for Doing the Exercises D2 The Programming Exercises D3 Program Development Specifications D4 Report Exercises D5 Assignment Plans-Suggestions for the Instructor INDEX PSP SUPORT MATERIALS AVAILABLE ON DISKETTE(ORDER FORM)