Process Maturity Models • Evaluation of the maturity of an organization development process – Benchmark for SQA practice • Breakdown of software process into process areas • Provides means of measuring maturity, of complete process and/or of separate process areas • Examples: – Capability Maturity Model (CMM), from the Software Engineering Institute (SEI), at Carnegie-Mellon University – ISO 9000 quality standard series, from the International Organization for Standardization CMM Maturity levels 1. Initial – chaotic unpredictable (cost, schedule, quality) 2. Repeatable - intuitive; cost/quality highly variable, some control of schedule, informal/ad hoc procedures. Level 5 Optimizing 3. Defined - qualitative; reliable costs and schedules, improving but unpredictable quality performance. 4. Managed – quantitative reasonable statistical control over product quality. Level 4 Managed Level 3 Defined Level 2 Repeatable Level 1 Initial 5. Optimizing - quantitative basis for continuous improvement. CMM Key Process Areas • Functions that must be present at a particular level • Level 1: Initial – Any organization that does not meet requirements of higher levels falls into this classification. • Level 2: Repeatable – Requirements management – Software project planning and oversight – Software subcontract management – Software quality assurance – Software configuration management CMM Key Process Areas • Level 3: Defined – Organizational process improvement – Organizational process definition – Training program – Integrated software management – Software product engineering – Inter group coordination – Peer reviews CMM Key Process Areas • Level 4: Managed – Process measurement and analysis – Statistics on software design/code/test defects – Defects projection – Measurement of test coverage – Analysis of defects process related causes – Analysis of review efficiency for each project – Quality management CMM Key Process Areas • Level 5: Optimizing – Defect prevention. – Mechanism for defect cause analysis to determine process changes required for prevention – Mechanism for initiating error prevention actions – Technology innovation – Process change management McCabe’s Cyclomatic Complexity • Based on a flow graph model of software. • Measures the number of linearly independent paths through a program. • Uses graph components: – E: Number of edges in flow graph – N: Number of nodes in flow graph • Cyclomatic complexity: M = E – N + 2 • Claim: if M > 10 for a module, it is “likely” to be error prone. Calculating Cyclomatic Complexity E2 E1 N1 N2 E3 E5 E4 N3 E11 E6 N4 E7 E9 E8 N5 N7 N6 N8 N9 E13 E10 N10 E14 E15 E12 M = 15 – 11 + 2 = 6 N11 Cyclomatic Complexity • With a cyclomatic complexity of 6, there are 6 independent paths through the flow graph: 1. E1-E2-E15 2. E1-E5-E3-E14-E15 3. E1-E5-E6-E4-E13-E14-E15 4. E1-E5-E6-E7-E12-E13-E14-E15 5. E1-E5-E6-E7-E8-E10-E11-E12-E13-E14-E15 6. E1-E5-E6-E7-E8-E9-E11-E12-E13-E14-E15 Reading • http://www.guru99.com/cyclomaticcomplexity.html