Cover image for Software engineering measurement
Title:
Software engineering measurement
Author:
Munson, John C.
Personal Author:
Publication Information:
Boca Raton : Auerbach Publicaitons, [2003]

©2003
Physical Description:
xx, 443 pages : illustrations ; 25 cm
Language:
English
Subject Term:
ISBN:
9780849315039
Format :
Book

Available:*

Library
Call Number
Material Type
Home Location
Status
Central Library QA76.76.S65 M86 2003 Adult Non-Fiction Non-Fiction Area-Reference
Searching...

On Order

Summary

Summary

The product of many years of practical experience and research in the software measurement business, this technical reference helps you select what metrics to collect, how to convert measurement data to management information, and provides the statistics necessary to perform these conversions. The author explains how to manage software development measurement systems, how to build software measurement tools and standards, and how to construct controlled experiments using standardized measurement tools.

There are three fundamental questions that this book seeks to answer. First, exactly how do you get the measurement data? Second, how do you convert the data from the measurement process to information that you can use to manage the software development process? Third, how do you manage all of the data?

Millions of dollars are being spent trying to secure software systems. When suitable instrumentation is placed into the systems that we develop, their activity can be monitored in real time. Measurement based automatic detection mechanisms can be designed into systems. This will permit the detection of system misuse and detect incipient reliability problems.

By demonstrating how to develop simple experiments for the empirical validation of theoretical research and showing how to convert measurement data into meaningful and valuable information, this text fosters more precise use of software measurement in the computer science and software engineering literature. Software Engineering Measurement shows you how to convert your measurement data to valuable information that can be used immediately for software process improvement.


Author Notes

John C. Munson Ph.D. is Professor of Computer Science at the University of Idaho and is the founder and Chief Scientist of Cylant


Table of Contents

Chapter 1 The Goals of Software Engineering Measurementp. 1
1.1 Software Engineering Measurementp. 1
1.1.1 The Measurement Processp. 1
1.1.2 We Tried Measurement and It Did Not Workp. 3
1.1.3 Problems in Software Measurementp. 3
1.1.4 The Logistics of Software Measurementp. 5
1.2 The Rationale for Effective Measurementp. 5
1.2.1 Achieving Software Qualityp. 6
1.2.1.1 Software Quality Objectivesp. 6
1.2.1.2 Control of the Software Development Environmentp. 7
1.2.2 Deming and the Software Development Processp. 8
1.2.3 The Role of Statistics in Software Engineeringp. 9
1.3 Measurement across the Life-Cycle Modelp. 10
1.3.1 Operational Requirements Specificationp. 11
1.3.2 Designp. 12
1.3.3 Codingp. 13
1.3.4 Testp. 13
1.3.5 Maintenancep. 14
1.4 Reasonable and Attainable Goals for Software Measurementp. 14
1.5 Summaryp. 18
Chapter 2 The Conduct of Scientific Investigationsp. 21
2.1 The Principles of Scientific Investigationp. 21
2.2 Measurementp. 22
2.2.1 Primitive and Derived Measurementsp. 23
2.2.2 Scalesp. 25
2.2.2.1 Qualitative Measurement Scalesp. 25
2.2.2.2 Quantitative Measurement Scalesp. 27
2.3 Measurement Issuesp. 27
2.3.1 Accuracy and Precisionp. 28
2.3.2 Measurement Errorp. 28
2.4 Measurement Standardsp. 30
2.4.1 Sources of Noise in the Measurement of Datap. 32
2.4.2 Reproducibility of Measurementsp. 34
2.5 Principles of Experimentationp. 36
2.5.1 Hypothesis Formulationp. 38
2.5.2 Hypothesis Testingp. 38
2.5.3 Type I and Type II Errorsp. 39
2.5.4 Design of Experimentsp. 40
2.5.5 Data Browsing: Ex post facto Researchp. 41
Chapter 3 Measuring Software Developmentp. 43
3.1 Measurement Domainsp. 43
3.1.1 People Metricsp. 45
3.1.2 Process Metricsp. 51
3.1.3 Product Metricsp. 52
3.1.4 Environment Metricsp. 52
3.2 Modeling: Mapping among Measurement Domainsp. 53
3.3 The Process of Software Measuremenp. 53
3.4 Summaryp. 54
Chapter 4 Validation of Software Measuresp. 55
4.1 Understanding What Is Being Measuredp. 55
4.2 Criterion-Oriented Validityp. 56
4.2.1 Predictive Validityp. 57
4.2.2 Concurrent Validityp. 58
4.3 Content Validityp. 58
4.4 Construct Validityp. 59
4.5 Empirical Validityp. 60
4.6 Reliabilityp. 61
Chapter 5 Static Software Measurementp. 65
5.1 Introductionp. 65
5.2 Primitive Measures of Source Codep. 67
5.2.1 Measures of Program Sizep. 69
5.2.1.1 Compiler Directivesp. 69
5.2.1.2 Style and Statement Metricsp. 70
5.2.2 Lexical Metricsp. 74
5.2.3 Control Flowgraph Metricsp. 77
5.2.4 Data Structures Complexityp. 88
5.2.5 Coupling Metricsp. 94
5.3 Measures of Software Qualityp. 96
5.3.1 Software Faultsp. 96
5.3.2 Software Maintainabilityp. 104
5.3.2.1 Traceabilityp. 104
5.3.2.2 Couplingp. 105
5.4 Summaryp. 106
Chapter 6 Derived Software Measuresp. 109
6.1 Introductionp. 109
6.2 Software Science Metricsp. 110
6.3 Sources of Variationp. 112
6.4 The Principal Components of Measurementp. 116
6.5 Principal Components Analysis as a Validation Toolp. 122
6.6 Discovering New Sources of Variationp. 124
6.7 Domain Metricsp. 126
6.8 A Unitary Measure of Software Complexityp. 131
6.9 Summaryp. 133
Chapter 7 Modeling with Metricsp. 137
7.1 Introductionp. 137
7.2 Simple Linear Regressionp. 139
7.2.1 Examination of the Datap. 140
7.2.2 The Regression ANOVAp. 146
7.2.3 Residual Analysisp. 150
7.2.4 Multiple Linear Regressionp. 154
7.2.5 Model Predictive Validityp. 159
7.2.6 Selecting the Best Regression Modelp. 161
7.2.7 Regression with Dummy Variatesp. 161
7.3 Nonlinear Modelsp. 163
7.4 Problems Associated with Multicollinearityp. 165
7.5 Regression as a Metric Validation Toolp. 167
7.6 Canonical Correlationp. 168
Chapter 8 Measuring Software Evolutionp. 175
8.1 Introductionp. 175
8.2 Measuring Evolving Softwarep. 175
8.2.1 Baselining the Systemp. 176
8.2.2 System Evolutionp. 177
8.2.3 Establishing a Software Measurement Baselinep. 182
8.2.4 Measuring Changes to the Systemp. 189
8.2.5 Evaluating Changes across Builds: An Example from PASSp. 192
8.2.6 Examining the Specific Changes in the Evolution of PASSp. 195
8.3 Measuring Changes to Modules across Buildsp. 198
8.3.1 Measures of Code Module Evolutionp. 199
8.3.2 Obtaining Average Build Valuesp. 200
8.3.3 Software Evolution and the Fault Introduction Processp. 202
8.3.4 The Cassini System: A Case Studyp. 204
8.3.4.1 The Relationship between Faults and Code Changesp. 206
8.3.4.2 Estimation of the Proportionality Constant: An Example from Cassinip. 207
8.4 Summaryp. 211
Chapter 9 Software Specification and Designp. 215
9.1 Introductionp. 215
9.2 Software Operational Requirements Specificationp. 216
9.2.1 Operational System Overviewp. 216
9.2.2 Operational System Metaphorp. 217
9.2.3 Operationsp. 217
9.3 Software Functional Requirements Specificationp. 218
9.3.1 Functional System Overviewp. 218
9.3.2 Functional System Metaphorp. 219
9.3.3 Functionalitiesp. 220
9.4 Software Module Requirements Specificationp. 221
9.4.1 Module Specificationsp. 222
9.4.2 Module Call Graph Structurep. 224
9.5 A Formal Description of Program Operationp. 224
9.6 Configuration Control for the Requirementsp. 230
9.7 Measuring Software Design Alternativesp. 236
9.7.1 Design Module Complexityp. 236
9.7.2 Design Functional Complexityp. 237
9.7.3 Testabilityp. 239
9.8 Maintainabilityp. 240
9.8.1 Requirements Traceabilityp. 241
9.8.2 Operational Specificationp. 242
9.8.3 Functional Specificationp. 242
9.8.4 Module Specificationp. 243
9.8.5 First-Order Mappingp. 243
9.8.6 Second-Order Mappingp. 244
9.8.7 Call Graph Structurep. 244
9.8.8 Module Flowgraph Structurep. 244
9.8.9 Measuring Maintainability Attributesp. 244
Chapter 10 Dynamic Software Measurementp. 247
10.1 Introductionp. 247
10.2 A Stochastic Description of Program Operationp. 248
10.2.1 The Concept of an Epochp. 248
10.2.2 Program Execution as a Stochastic Procesp. 249
10.3 The Profiles of Software Dynamicp. 249
10.3.1 Operational Profilep. 250
10.3.2 Functional Profilep. 251
10.3.3 Module Profilesp. 252
10.3.4 Test Profilesp. 253
10.4 Estimates for Profilesp. 254
10.5 Code Instrumentationp. 257
10.5.1 Source Code Instrumentation Processp. 258
10.5.2 Binary Code Instrumentationp. 261
10.6 Instrumenting for the Profilesp. 261
10.6.1 Module Profilesp. 262
10.6.2 Functional Profilep. 262
10.6.3 Operational Profilesp. 264
10.7 Partial Complexityp. 265
10.8 A Measure of Cohesionp. 269
10.9 Entropyp. 270
10.10 Testability Revisitedp. 271
Chapter 11 The Measurement of Software Testing Activityp. 273
11.1 Introductionp. 273
11.2 Static and Dynamic Measurementp. 274
11.3 A Metaphor for Test Activityp. 275
11.4 Measurement-Based Testingp. 276
11.4.1 Simple Measures for the Test Processp. 277
11.4.2 Cumulative Measure of Testingp. 279
11.4.3 Delta Testingp. 281
11.4.4 Delta Test Results: A Case Studyp. 283
11.5 Fractional Measuresp. 291
11.5.1 The FI of the XC Modulep. 291
11.5.2 Fractional Complexityp. 293
11.6.3 Operational Complexityp. 298
11.6.4 Fractional and Operational Complexity of XC Testsp. 298
11.6 Introduction to Statistical Testingp. 302
11.6.1 The Goal of Statistical Testingp. 303
11.6.2 Estimating the Functional Parametersp. 303
11.6.3 The Optimal Allocation of Test Resourcesp. 305
Chapter 12 Software Availabilityp. 307
12.1 Introductionp. 307
12.2 Software Reliabilityp. 309
12.2.1 Understanding Softwarep. 313
12.2.2 Software Reliability Modelingp. 314
12.2.3 Software Module Reliabilityp. 315
12.2.4 Data Collection for Reliability Estimationp. 319
12.3 Availabilityp. 325
12.4 Securityp. 328
12.5 Maintainabilityp. 330
Chapter 13 Implementing a Software Measurement Planp. 331
13.1 The Software Measurement Processp. 331
13.2 Building a Measurement Processp. 334
13.2.1 Building an Initial Measurement Systemp. 335
13.2.2 Building a Measurement Reporting Systemp. 337
13.2.3 Measurement for Testingp. 341
13.2.4 Requirements Tracking Systemp. 343
13.2.5 Software Test Systemp. 343
13.2.5.1 Delta Testingp. 343
13.2.5.2 Functional Testingp. 344
13.2.5.3 Operational Testingp. 345
13.2.5.4 Software Cerificationp. 345
13.2.6 Program Trouble Reporting Systemp. 346
13.2.7 Program Change Request Systemp. 348
13.2.8 Measuring Peoplep. 348
13.3 Measurement Process Improvementp. 349
13.3.1 Tools Refinementp. 349
13.3.2 Measurement Process Enhancementp. 351
13.4 Institutionalizing Measurement Process Improvementp. 351
13.5 A Network-Based Measurement Systemp. 353
13.5.1 Network Appliancep. 354
13.5.2 The Measurement Infrastructurep. 354
13.5.3 The Software Engineering Maintenance Problemp. 356
13.5.4 The Darwin Reporting Systemp. 357
13.5.5 The Darwin Databasep. 358
Chapter 14 Implementing a Software Research Planp. 363
14.1 What Is Software Research?p. 363
14.1.1 How We Got this Wayp. 364
14.1.2 Empirical Researchp. 365
14.2 Implementing a Research Planp. 367
14.2.1 Software Research Training Programp. 367
14.2.2 Research and the Decision-Making Processp. 368
14.2.3 Institutional Research Reporting Mechanismp. 369
14.2.4 Institutionalize the Research Review Processp. 369
14.2.5 Provide Kudos for Research Investigationsp. 370
14.3 Defining Software Research Objectivesp. 371
14.4 Budgeting for Software Researchp. 371
14.4.1 Basic Researchp. 371
14.4.2 Product Development Researchp. 372
14.5 Research Paysp. 373
Appendix 1 Review of Mathematical Fundamentalsp. 375
A1.1 Matrix Algebrap. 375
A1.1.1 Determinantsp. 376
A1.1.2 Matrix Inversesp. 377
A1.1.3 Eigenproblemsp. 377
A1.1.4 Spectral Decompositionp. 377
A1.2 Some Notions of Probabilityp. 378
A1.2.1 Discrete Random Variablesp. 378
A1.2.2 Continuous Random Variablesp. 379
A1.3 Discrete Probability Distributionsp. 379
A1.3.1 The Binomial Distributionp. 380
A1.3.2 The Multinomial Distributionp. 380
A1.3.3 The Poisson Distributionp. 381
A1.4 Continuous Probability Distributionsp. 382
A1.4.1 The Normal Distributionp. 382
A1.4.2 The x[superscript 2] Distributionp. 383
A1.4.3 The t Distributionp. 383
A1.4.4 The F Distributionp. 384
A1.4.5 The Beta Distributionp. 384
A1.4.6 The Dirichlet Distributionp. 385
A1.5 Statisticsp. 385
A1.5.1 Measures of Central Tendencyp. 385
A1.5.1.1 Meanp. 385
A1.5.1.2 Medianp. 386
A1.5.1.3 Modep. 386
A1.5.2 Measures of Momentp. 387
A1.5.2.1 Variancep. 388
A1.5.2.2 Standard Error of the Meanp. 389
A1.6 Tests of Hypothesesp. 390
A1.6.1 Basic Principlesp. 390
A1.6.2 Test on Meansp. 392
A1.7 Introduction to Modelingp. 394
A1.7.1 Linear Regressionp. 394
A1.7.1.1 The Regression Analysis of Variancep. 397
A1.7.1.2 Standard Error of the Estimatesp. 399
A1.7.1.3 Confidence Intervals for the Estimatesp. 401
Appendix 2 A Standard for the Measurement of C Programming Language Attributesp. 403
A2.1 Introductionp. 403
A2.2 Compiler Directivesp. 404
A2.3 Style and Statement Metricsp. 404
A2.3.1 Commentsp. 404
A2.3.2 Executable Statementsp. 405
A2.3.3 Nonexecutable Statementsp. 405
A2.4 Lexical Metricsp. 406
A2.4.1 N[subscript 1]p. 407
A2.4.2 [eta subscript 1]p. 407
A2.4.3 [eta subscript 3]p. 408
A2.4.4 N[subscript 2]p. 409
A2.4.5 [eta subscript 2]p. 410
A2.5 Control Flowgraph Metricsp. 411
A2.5.1 Nodesp. 412
A2.5.2 Edgesp. 413
A2.5.3 Pathsp. 413
A2.5.4 Maximum Path Lengthp. 414
A2.5.5 Average Path Lengthp. 414
A2.5.6 Cyclesp. 414
A2.6 Coupling Metricsp. 415
A2.6.1 F[subscript 1]p. 416
A2.6.2 f[subscript 1]p. 416
A2.6.3 F[subscript 2]p. 416
A2.6.4 f[subscript 2]p. 416
A2.7 Definitionsp. 416
A2.7.1 Definition of a String Constantp. 416
A2.7.2 Definition of a Character Constantp. 416
A2.7.3 Definition of a for Structurep. 417
A2.8 Tokensp. 417
A2.8.1 Operand Tokensp. 417
A2.8.2 Operator Tokensp. 417
A2.8.2.1 Keywordsp. 417
A2.8.2.2 Punctuationp. 418
A2.8.2.3 Blocksp. 418
A2.8.2.4 Unary Operatorsp. 418
A2.8.2.5 Function Calls as Operatorsp. 418
A2.8.2.6 Array Operatorsp. 419
A2.8.2.7 Structure Operatorsp. 419
A2.8.2.8 Primary Operatorsp. 419
A2.8.2.9 Assignment Operatorsp. 419
A2.8.2.10 Conditional Operatorsp. 420
A2.8.2.11 Logical Operatorsp. 420
A2.8.2.12 Relational Operatorsp. 420
A2.8.2.13 Shift Operatorsp. 420
A2.8.2.14 Addition Operatorsp. 420
A2.8.2.15 Multiplying Operatorsp. 420
A2.8.3 Compiler Directivesp. 421
A2.8.4 C Functionsp. 421
A2.8.4.1 Mathp. 421
A2.8.4.2 Memory Allocationp. 422
A2.8.4.3 Input/Outputp. 422
A2.8.4.4 Type and Conversionp. 422
A2.8.4.5 Stringp. 423
A2.8.4.6 Miscellaneousp. 423
Indexp. 425

Google Preview