TABLE OF CONTENTS 0 22.1.4 Software Configuration Items 441 2215 Management of Dependencies and Changes 442 22.2 The SCM Repository 443 22.2.1 General Features and Content 444 22.2.2 SCM Features 444 22.3 Version Control Systems 445 22.4 Continuous Integration 446 22.5 The Change Management Process 447 2251 Change Control 448 2252 Impact Management 451 22.5.3 Configuration Audit 452 22.5.4 Status Reporting 452 22.6 Mobility and Agile Change Manag 22.6. e-Change Control 453 22.6.2 Content Management 455 2263 Integration and Publishing 455 2264 sion Control 457 22.6.5 Auditing and Reporting 458 22.7 Summary 458 CHAPTER 23 SOFTWARE METRICS AND ANALYTICS 460 23.1 Software Measurement 461 23.1.1 Measures,Metrics,and Indicators 461 23.1.2 Attributes of Effective Software Metrics 462 23.2 Software Analytics 462 23.3 Product Metrics 463 2331 Metrics for the Requirements Model 464 23.3.2 Design Metrics for Conventional Software 466 23.3.3 Design Metrics for Object-Oriented Software 468 23.3.4 User Interface Design Metrics 471 2335 Metrics for Source Code 473 23.4 Metrics for Testing 474 23.5 Metrics for Maintenance 476 23.6 Process and Project Metrics 476
TABLE OF CONTENTS xxi 22.1.4 Software Configuration Items 441 22.1.5 Management of Dependencies and Changes 442 22.2 The SCM Repository 443 22.2.1 General Features and Content 444 22.2.2 SCM Features 444 22.3 Version Control Systems 445 22.4 Continuous Integration 446 22.5 The Change Management Process 447 22.5.1 Change Control 448 22.5.2 Impact Management 451 22.5.3 Configuration Audit 452 22.5.4 Status Reporting 452 22.6 Mobility and Agile Change Management 453 22.6.1 e-Change Control 453 22.6.2 Content Management 455 22.6.3 Integration and Publishing 455 22.6.4 Version Control 457 22.6.5 Auditing and Reporting 458 22.7 Summary 458 CHAPTER 23 SOFTWARE METRICS AND ANALYTICS 460 23.1 Software Measurement 461 23.1.1 Measures, Metrics, and Indicators 461 23.1.2 Attributes of Effective Software Metrics 462 23.2 Software Analytics 462 23.3 Product Metrics 463 23.3.1 Metrics for the Requirements Model 464 23.3.2 Design Metrics for Conventional Software 466 23.3.3 Design Metrics for Object-Oriented Software 468 23.3.4 User Interface Design Metrics 471 23.3.5 Metrics for Source Code 473 23.4 Metrics for Testing 474 23.5 Metrics for Maintenance 476 23.6 Process and Project Metrics 476
TABLE OF CONTENTS 23.7 Software Measurement 479 23.8 Metrics for Software Quality 482 23.9 Establishing Software Metrics Programs 485 23.10 Summary 487 PART FOUR MANAGING SOFTWARE PROJECTS 489 CHAPTER 24 PROJECT MANAGEMENT CONCEPTS 490 24.1 The Management Spectrum 491 24.1. The People 491 241.2 The Product 491 24.13 The Process 492 24.1.4 The Projec 492 24.2 People 493 24.21 The Stakeholders 493 24.2.2 Team Leaders 493 24.2.3 The Software Team 494 2424 Coordination and Communications Issues 496 24.3 Product 497 24.3.1 Software Scope 497 24.3.2 Problem Decomposition 497 24.4 Process 498 24.4.1 Melding the Product and the Process 498 2442 Process Decomposition 498 24.5 Project 500 246 The W5HH Principle 501 24.7 Critical Practices 502 24.8 Summary 502 CHAPTER 25 CREATING A VIABLE SOFTWARE PLAN 504 25.1 Comments on Estimation 505 25.2 The Project Planning Process 506
xxii TABLE OF CONTENTS 23.7 Software Measurement 479 23.8 Metrics for Software Quality 482 23.9 Establishing Software Metrics Programs 485 23.10 Summary 487 PART FOUR MANAGING SOFTWARE PROJECTS 489 CHAPTER 24 PROJECT MANAGEMENT CONCEPTS 490 24.1 The Management Spectrum 491 24.1.1 The People 491 24.1.2 The Product 491 24.1.3 The Process 492 24.1.4 The Project 492 24.2 People 493 24.2.1 The Stakeholders 493 24.2.2 Team Leaders 493 24.2.3 The Software Team 494 24.2.4 Coordination and Communications Issues 496 24.3 Product 497 24.3.1 Software Scope 497 24.3.2 Problem Decomposition 497 24.4 Process 498 24.4.1 Melding the Product and the Process 498 24.4.2 Process Decomposition 498 24.5 Project 500 24.6 The W5 HH Principle 501 24.7 Critical Practices 502 24.8 Summary 502 CHAPTER 25 CREATING A VIABLE SOFTWARE PLAN 504 25.1 Comments on Estimation 505 25.2 The Project Planning Process 506
TABLE OF CONTENTS xxi甜 25.3 Software Scope and Feasibility 507 25.4 Resources 507 25.4. Human Resources 508 25.4.2 Reusable Software Resources 509 25.4.3 Environmental Resources 509 25.5 Data Analytics and Software Project Estimation 509 25.6 Decomposition and Estimation Techniques 511 25.6.1 Software Sizing 511 25.6.2 Problem-Based Estimation 512 25.6.3 An Example of LOC-Based Estimation 512 25.6.4 An Example of FP-Based Estimation 514 25.6.5 An Example of Process-Based Estimation 515 25.6.6 An Example of Estimation Using Use Case Points 517 25.6.7 Reconciling Estimates 518 25.6.8 Estimation for Agile Development 519 25.7 Project Scheduling 520 25.71 Basic Principles 521 25.7.2 The Relationship Between People and Effort 522 25.8 Defining a Project Task Set 523 2581 A Task Set Example 524 25.82 Refinement of Major Tasks 524 25.9 Defining a Task Network 525 25.10 Scheduling 226 25.10. Time-Line Charts 526 25.10.2 Tracking the Schedule 528 25.11 Summary 530 CHAPTER 26 RISK MANAGEMENT 532 26.1 Reactive Versus Proactive Risk Strategies 533 26.2 Software Risks 534 26.3 Risk Identification 535 26.3.1 Assessing Overall Project Risk 536 26.3.2 Risk Components and Drivers 537 26.4 Risk Projection 538
TABLE OF CONTENTS xxiii 25.3 Software Scope and Feasibility 507 25.4 Resources 507 25.4.1 Human Resources 508 25.4.2 Reusable Software Resources 509 25.4.3 Environmental Resources 509 25.5 Data Analytics and Software Project Estimation 509 25.6 Decomposition and Estimation Techniques 511 25.6.1 Software Sizing 511 25.6.2 Problem-Based Estimation 512 25.6.3 An Example of LOC-Based Estimation 512 25.6.4 An Example of FP-Based Estimation 514 25.6.5 An Example of Process-Based Estimation 515 25.6.6 An Example of Estimation Using Use Case Points 517 25.6.7 Reconciling Estimates 518 25.6.8 Estimation for Agile Development 519 25.7 Project Scheduling 520 25.7.1 Basic Principles 521 25.7.2 The Relationship Between People and Effort 522 25.8 Defining a Project Task Set 523 25.8.1 A Task Set Example 524 25.8.2 Refinement of Major Tasks 524 25.9 Defining a Task Network 525 25.10 Scheduling 226 25.10.1 Time-Line Charts 526 25.10.2 Tracking the Schedule 528 25.11 Summary 530 CHAPTER 26 RISK MANAGEMENT 532 26.1 Reactive Versus Proactive Risk Strategies 533 26.2 Software Risks 534 26.3 Risk Identification 535 26.3.1 Assessing Overall Project Risk 536 26.3.2 Risk Components and Drivers 537 26.4 Risk Projection 538
TABLE OF CONTENTS 2641 Developing a Risk Table 538 26.4.2 Assessing Risk Impact 540 26.5 Risk Refinement 542 26.6 Risk Mitigation,Monitoring.and Management 543 26.7 The RMMM Plan 546 26.8 Summary 547 CHAPTER 27 A STRATEGY FOR SOFTWARE SUPPORT 549 27.1 Software Support 550 27.2 Software Maintenance 552 2721 Maintenance Types 553 27.2.2 Maintenance Tasks 554 27.2.3 Reverse Engineering 555 27.3 Proactive Software Support 557 27.3. Use of Software Analytics 558 27.3.2 Role of Social Media 559 2733 Cost of Support 559 27.4 Refactoring 560 27.4. Data Refactoring 561 24.4.2 Code Refactoring 561 2743 Architecture Refactoring 561 27.5 Software Evolution 562 27.5.1 Inventory Analysis 563 2752 Document Restructuring 564 27.5.3 Reverse Engineering 564 27.5.4 Code Refactoring 564 27.75 Data Refactoring 564 27.5.6 Forward Engineering 565 27.6 Summary 565 PART FIVE ADVANCED TOPICS 567 CHAPTER 28 SOFTWARE PROCESS IMPROVEMENT 568 28.1 What Is SPI?569 28.1.1 Approaches to SPI 569 2812 Maturity Models 570 28.1.3 Is SPI for Everyone?571
xxiv TABLE OF CONTENTS 26.4.1 Developing a Risk Table 538 26.4.2 Assessing Risk Impact 540 26.5 Risk Refinement 542 26.6 Risk Mitigation, Monitoring, and Management 543 26.7 The RMMM Plan 546 26.8 Summary 547 CHAPTER 27 A STRATEGY FOR SOFTWARE SUPPORT 549 27.1 Software Support 550 27.2 Software Maintenance 552 27.2.1 Maintenance Types 553 27.2.2 Maintenance Tasks 554 27.2.3 Reverse Engineering 555 27.3 Proactive Software Support 557 27.3.1 Use of Software Analytics 558 27.3.2 Role of Social Media 559 27.3.3 Cost of Support 559 27.4 Refactoring 560 27.4.1 Data Refactoring 561 24.4.2 Code Refactoring 561 27.4.3 Architecture Refactoring 561 27.5 Software Evolution 562 27.5.1 Inventory Analysis 563 27.5.2 Document Restructuring 564 27.5.3 Reverse Engineering 564 27.5.4 Code Refactoring 564 27.7.5 Data Refactoring 564 27.5.6 Forward Engineering 565 27.6 Summary 565 PART FIVE ADVANCED TOPICS 567 CHAPTER 28 SOFTWARE PROCESS IMPROVEMENT 568 28.1 What Is SPI? 569 28.1.1 Approaches to SPI 569 28.1.2 Maturity Models 570 28.1.3 Is SPI for Everyone? 571
TABLE OF CONTENTS XXY 28.2 The SPl Process 571 2821 Assessment and GAP Analysis 572 2822 Education and Training 573 28.2.3 Selection and Justifica 573 28.2.4 Installation/Migration 574 28.2.5 Evaluation 575 28.2.6 Risk Management for SPI 575 28.3 The CMMI 576 28.4 Other SPI Frameworks 579 28.4. SPICE 579 28.4.2 TickIT Plus 579 28.5 SPI Return on Investment 580 28.6 SPI Trends 580 28.7 Summary 581 CHAPTER 29 EMERGING TRENDS IN SOFTWARE ENGINEERING 583 291 Technology Evolution 584 29.2 Software Engineering as a Discipline 585 29.3 Observing Software Engineering Trends 586 29.4 Identifying "Soft Trends"587 29.4.1 Managing Complexity 589 29.4.2 Open-World Software 589 29.4.3 Emergent Requirements 590 2944 The Talent Mix 591 2945 Software Building Blocks 591 29.4.6 Changing Perceptions of"Value"592 29.4.7 Open Source 592 29.5 Technology Directions 593 29.5 Process Trends 593 29.5.1 The Grand Challenge 594 2953 Collaborative Development 595 2954 Requirements Engineering 596 29.55 Model-Driven Software Development 596 29.5.6 Search-Based Software Engineering 597 29.5.7 Test-Driven Development 598 29.6 Tools-Related Trends 599 29.7 Summary 600
TABLE OF CONTENTS xxv 28.2 The SPI Process 571 28.2.1 Assessment and GAP Analysis 572 28.2.2 Education and Training 573 28.2.3 Selection and Justification 573 28.2.4 Installation/Migration 574 28.2.5 Evaluation 575 28.2.6 Risk Management for SPI 575 28.3 The CMMI 576 28.4 Other SPI Frameworks 579 28.4.1 SPICE 579 28.4.2 TickIT Plus 579 28.5 SPI Return on Investment 580 28.6 SPI Trends 580 28.7 Summary 581 CHAPTER 29 EMERGING TRENDS IN SOFTWARE ENGINEERING 583 29.1 Technology Evolution 584 29.2 Software Engineering as a Discipline 585 29.3 Observing Software Engineering Trends 586 29.4 Identifying “Soft Trends” 587 29.4.1 Managing Complexity 588 29.4.2 Open-World Software 589 29.4.3 Emergent Requirements 590 29.4.4 The Talent Mix 591 29.4.5 Software Building Blocks 591 29.4.6 Changing Perceptions of “Value” 592 29.4.7 Open Source 592 29.5 Technology Directions 593 29.5.1 Process Trends 593 29.5.2 The Grand Challenge 594 29.5.3 Collaborative Development 595 29.5.4 Requirements Engineering 596 29.5.5 Model-Driven Software Development 596 29.5.6 Search-Based Software Engineering 597 29.5.7 Test-Driven Development 598 29.6 Tools-Related Trends 599 29.7 Summary 600