Guide to the Software Engineering Body of Knowledge Version 3.0 SWEBOK Editors Pierre Bourque,Ecole de technologie superieure (ETS) Richard E.(Dick)Fairley,Software and Systems Engineering Associates(S2EA) ⊕EEE IEEEcomputer society
Guide to the Software Engineering Body of Knowledge Version 3.0 Editors Pierre Bourque, École de technologie supérieure (ÉTS) Richard E. (Dick) Fairley, Software and Systems Engineering Associates (S2EA)
Copyright and Reprint Permissions.Educational or personal use of this material is permitted without fee provided such copies 1)are not made for profit or in lieu of purchasing copies for classes,and that this notice and a full citation to the original work appear on the first page of the copy and 2)do not imply IEEE endorsement of any third-party products or services.Permission to reprint/republish this material for commercial,advertising or promotional purposes or for creating new collective works for resale or redistribution must be obtained from IEEE by writing to the IEEE Intellectual Property Rights Office,445 Hoes Lane, Piscataway,NJ 08854-4141 or pubs-permissions@ieee.org. Reference to any specific commercial products,process,or service does not imply endorsement by IEEE.The views and opin- ions expressed in this work do not necessarily reflect those of IEEE. IEEE makes this document available on an"as is"basis and makes no warranty,express or implied,as to the accuracy,capabil- ity,efficiency merchantability,or functioning of this document.In no event will IEEE be liable for any general,consequential, indirect,incidental,exemplary,or special damages,even if IEEE has been advised of the possibility of such damages. Copyright 2014 IEEE.All rights reserved. Paperback ISBN-10:0-7695-5166-1 Paperback ISBN.-13:978-0-7695-5166-1 Digital copies of SWEBOK Guide V3.0 may be downloaded free of charge for personal and academic use via www.swebok.org. IEEE Computer Society Staff for This Publication Angela Burgess,Executive Director Anne Marie Kelly,Associate Executive Director,Director of Govemance Evan M.Butterfield.Director of Products and Services John Keppler,Senior Manager,Professional Education Kate Guillemette,Product Development Editor Dorian McClenahan,Education Program Product Developer Michelle Phon,Professional Education Certification Program Coordinator Jennie Zhu-Mai,Editorial Designer IEEE Computer Society Products and Services.The world-renowned IEEE Computer Society publishes,promotes,and dis- tributes a wide variety of authoritative computer science and engineering joumals,magazines,conference proceedings,and professional education products.Visit the Computer Society at www.computerorg for more information
Copyright and Reprint Permissions. Educational or personal use of this material is permitted without fee provided such copies 1) are not made for profit or in lieu of purchasing copies for classes, and that this notice and a full citation to the original work appear on the first page of the copy and 2) do not imply IEEE endorsement of any third-party products or services. Permission to reprint/republish this material for commercial, advertising or promotional purposes or for creating new collective works for resale or redistribution must be obtained from IEEE by writing to the IEEE Intellectual Property Rights Office, 445 Hoes Lane, Piscataway, NJ 08854-4141 or pubs-permissions@ieee.org. Reference to any specific commercial products, process, or service does not imply endorsement by IEEE. The views and opinions expressed in this work do not necessarily reflect those of IEEE. IEEE makes this document available on an “as is” basis and makes no warranty, express or implied, as to the accuracy, capability, efficiency merchantability, or functioning of this document. In no event will IEEE be liable for any general, consequential, indirect, incidental, exemplary, or special damages, even if IEEE has been advised of the possibility of such damages. Copyright © 2014 IEEE. All rights reserved. Paperback ISBN-10: 0-7695-5166-1 Paperback ISBN-13: 978-0-7695-5166-1 Digital copies of SWEBOK Guide V3.0 may be downloaded free of charge for personal and academic use via www.swebok.org. IEEE Computer Society Staff for This Publication Angela Burgess, Executive Director Anne Marie Kelly, Associate Executive Director, Director of Governance Evan M. Butterfield, Director of Products and Services John Keppler, Senior Manager, Professional Education Kate Guillemette, Product Development Editor Dorian McClenahan, Education Program Product Developer Michelle Phon, Professional Education & Certification Program Coordinator Jennie Zhu-Mai, Editorial Designer IEEE Computer Society Products and Services. The world-renowned IEEE Computer Society publishes, promotes, and distributes a wide variety of authoritative computer science and engineering journals, magazines, conference proceedings, and professional education products. Visit the Computer Society at www.computer.org for more information
TABLE OF CONTENTS Foreword XVIl Foreword to the 2004 Edition Editors Coeditors Contributing Editors Change Control Board Knowledge Area Editors xxiii Knowledge Area Editors of Previous SWEBOK Versions XXV Review Team XXVii Acknowledgements XXIX Professional Activities Board,2013 Membership XXIX Motions Regarding the Approval of SWEBOK Guide V3.0 XXX Motions Regarding the Approval of SWEBOK Guide 2004 Version XCXX Introduction to the Guide XXXI Chapter 1:Software Requirements 1-1 1.Software Requirements Fundamentals 1-1 1.1.Definition of a Software Requirement 1-1 1.2.Product and Process Requirements 1-2 1.3.Functional and Nonfunctional Requirements 1-3 1.4.Emergent Properties 1-3 1.5.Quantifiable Requirements 1.6.System Requirements and Software Requirements 2.Requirements Process 2.1.Process Models 2.2.Process Actors 2.3.Process Support and Management 2.4.Process Quality and Improvement 3211119 3.Requirements Elicitation 3.1.Requirements Sources 3.2.Elicitation Techniques 1-6 4.Requirements Analysis 1-7 4.1.Requirements Classification 1-7 4.2.Conceptual Modeling 1-8 4.3.Architectural Design and Requirements Allocation 1-9 4.4.Requirements Negotiation 1-9 4.5.Formal Analysis 1-10 5.Requirements Specification 1-10 5.1.System Definition Document 1-10 5.2.System Requirements Specification 1-10 5.3.Software Requirements Specification 1-11 6.Requirements Validation 1-11 6.1.Requirements Reviews 1-11 6.2.Prototyping 1-12
v TABLE OF CONTENTS Foreword xvii Foreword to the 2004 Edition xix Editors xxi Coeditors xxi Contributing Editors xxi Change Control Board xxi Knowledge Area Editors xxiii Knowledge Area Editors of Previous SWEBOK Versions xxv Review Team xxvii Acknowledgements xxix Professional Activities Board, 2013 Membership xxix Motions Regarding the Approval of SWEBOK Guide V3.0 xxx Motions Regarding the Approval of SWEBOK Guide 2004 Version xxx Introduction to the Guide xxxi Chapter 1: Software Requirements 1-1 1. Software Requirements Fundamentals 1-1 1.1. Definition of a Software Requirement 1-1 1.2. Product and Process Requirements 1-2 1.3. Functional and Nonfunctional Requirements 1-3 1.4. Emergent Properties 1-3 1.5. Quantifiable Requirements 1-3 1.6. System Requirements and Software Requirements 1-3 2. Requirements Process 1-3 2.1. Process Models 1-4 2.2. Process Actors 1-4 2.3. Process Support and Management 1-4 2.4. Process Quality and Improvement 1-4 3. Requirements Elicitation 1-5 3.1. Requirements Sources 1-5 3.2. Elicitation Techniques 1-6 4. Requirements Analysis 1-7 4.1. Requirements Classification 1-7 4.2. Conceptual Modeling 1-8 4.3. Architectural Design and Requirements Allocation 1-9 4.4. Requirements Negotiation 1-9 4.5. Formal Analysis 1-10 5. Requirements Specification 1-10 5.1. System Definition Document 1-10 5.2. System Requirements Specification 1-10 5.3. Software Requirements Specification 1-11 6. Requirements Validation 1-11 6.1. Requirements Reviews 1-11 6.2. Prototyping 1-12
vi SWEBOK Guide V3.0 6.3.Model Validation 1-12 6.4.Acceptance Tests 1-12 7.Practical Considerations 1-12 7.1.Iterative Nature of the Requirements Process 1-13 7.2.Change Management 1-13 7.3.Requirements Attributes 1-13 7.4.Requirements Tracing 1-14 7.5.Measuring Requirements 1-14 8.Software Requirements Tools 1-14 Matrix of Topics vs.Reference Material 1-15 Chapter 2:Software Design 2-1 1.Software Design Fundamentals 2-2 1.1.General Design Concepts 2-2 1.2.Context of Software Design 2-2 1.3.Software Design Process 2-2 1.4.Software Design Principles 2-3 2.Key Issues in Software Design 2-3 2.1.Concurrency 2-4 2.2.Control and Handling of Events 2-4 2.3.Data Persistence 2-4 2.4.Distribution of Components 2-4 2.5.Error and Exception Handling and Fault Tolerance 24 2.6.Interaction and Presentation 2-4 2.7.Security 2-4 3.Software Structure and Architecture 2-4 3.1.Architectural Structures and Viewpoints 25 3.2.Architectural Styles 25 3.3.Design Patterns 25 3.4.Architecture Design Decisions 25 3.5.Families of Programs and Frameworks 2-5 4.User Interface Design 2-5 4.1.General User Interface Design Principles 2-6 4.2.User Interface Design Issues 2-6 4.3.The Design of User Interaction Modalities 2-6 4.4.The Design of Information Presentation 2-6 4.5.User Interface Design Process 2-7 4.6.Localization and Internationalization 2-7 4.7.Metaphors and Conceptual Models 2-7 5.Software Design Quality Analysis and Evaluation 2-7 5.1.Ouality Attributes 2-7 5.2.Quality Analysis and Evaluation Techniques 2-8 5.3.Measures 2-8 6.Software Design Notations 2-8 6.1.Structural Descriptions (Static View) 2-8 6.2.Behavioral Descriptions (Dynamic View) 2-9 7.Software Design Strategies and Methods 2-10 7.1.General Strategies 2-10 7.2.Function-Oriented (Structured)Design 2-10 7.3.Object-Oriented Design 2-10
vi SWEBOK® Guide V3.0 6.3. Model Validation 1-12 6.4. Acceptance Tests 1-12 7. Practical Considerations 1-12 7.1. Iterative Nature of the Requirements Process 1-13 7.2. Change Management 1-13 7.3. Requirements Attributes 1-13 7.4. Requirements Tracing 1-14 7.5. Measuring Requirements 1-14 8. Software Requirements Tools 1-14 Matrix of Topics vs. Reference Material 1-15 Chapter 2: Software Design 2-1 1. Software Design Fundamentals 2-2 1.1. General Design Concepts 2-2 1.2. Context of Software Design 2-2 1.3. Software Design Process 2-2 1.4. Software Design Principles 2-3 2. Key Issues in Software Design 2-3 2.1. Concurrency 2-4 2.2. Control and Handling of Events 2-4 2.3. Data Persistence 2-4 2.4. Distribution of Components 2-4 2.5. Error and Exception Handling and Fault Tolerance 2-4 2.6. Interaction and Presentation 2-4 2.7. Security 2-4 3. Software Structure and Architecture 2-4 3.1. Architectural Structures and Viewpoints 2-5 3.2. Architectural Styles 2-5 3.3. Design Patterns 2-5 3.4. Architecture Design Decisions 2-5 3.5. Families of Programs and Frameworks 2-5 4. User Interface Design 2-5 4.1. General User Interface Design Principles 2-6 4.2. User Interface Design Issues 2-6 4.3. The Design of User Interaction Modalities 2-6 4.4. The Design of Information Presentation 2-6 4.5. User Interface Design Process 2-7 4.6. Localization and Internationalization 2-7 4.7. Metaphors and Conceptual Models 2-7 5. Software Design Quality Analysis and Evaluation 2-7 5.1. Quality Attributes 2-7 5.2. Quality Analysis and Evaluation Techniques 2-8 5.3. Measures 2-8 6. Software Design Notations 2-8 6.1. Structural Descriptions (Static View) 2-8 6.2. Behavioral Descriptions (Dynamic View) 2-9 7. Software Design Strategies and Methods 2-10 7.1. General Strategies 2-10 7.2. Function-Oriented (Structured) Design 2-10 7.3. Object-Oriented Design 2-10
Table of Contents vii 7.4.Data Structure-Centered Design 2-10 7.5.Component-Based Design (CBD) 2-10 7.6.Other Methods 2-10 8.Software Design Tools 2-11 Matrix of Topics vs.Reference Material 2-12 Chapter 3:Software Construction 3-1 1.Software Construction Fundamentals 3-1 1.1.Minimizing Complexity 3-3 1.2.Anticipating Change 3-3 1.3.Constructing for Verification 3-3 1.4.Reuse 3-3 1.5.Standards in Construction 3-3 2.Managing Construction 3-4 2.1.Construction in Life Cycle Models 2.2.Construction Planning 2.3.Construction Measurement 3.Practical Considerations 445 3.1.Construction Design 3.2.Construction Languages 35 3.3.Coding 3.4.Construction Testing 36 3.5.Construction for Reuse 3.6.Construction with Reuse 3-7 3.7.Construction Quality 3-7 3.8.Integration 3-7 4.Construction Technologies 3-8 4.1.API Design and Use 38 4.2.Object-Oriented Runtime Issues 3-8 4.3.Parameterization and Generics 3-8 4.4.Assertions,Design by Contract,and Defensive Programming 3-8 4.5.Error Handling,Exception Handling,and Fault Tolerance 3-9 4.6.Executable Models 3-9 4.7.State-Based and Table-Driven Construction Techniques 3-9 4.8.Runtime Configuration and Internationalization 3-10 4.9.Grammar-Based Input Processing 3-10 4.10.Concurrency Primitives 3-10 4.11.Middleware 3-10 4.12.Construction Methods for Distributed Software 3-11 4.13.Constructing Heterogeneous Systems 3-11 4.14.Performance Analysis and Tuning 3-11 4.15.Platform Standards 3-11 4.16.Test-First Programming 3-11 5.Software Construction Tools 3-12 5.1.Development Environments 3-12 5.2.GUl Builders 3-12 5.3.Unit Testing Tools 3-12 5.4.Profiling,Performance Analysis,and Slicing Tools 3-12 Matrix of Topics vs.Reference Material 3-13
Table of Contents vii 7.4. Data Structure-Centered Design 2-10 7.5. Component-Based Design (CBD) 2-10 7.6. Other Methods 2-10 8. Software Design Tools 2-11 Matrix of Topics vs. Reference Material 2-12 Chapter 3: Software Construction 3-1 1. Software Construction Fundamentals 3-1 1.1. Minimizing Complexity 3-3 1.2. Anticipating Change 3-3 1.3. Constructing for Verification 3-3 1.4. Reuse 3-3 1.5. Standards in Construction 3-3 2. Managing Construction 3-4 2.1. Construction in Life Cycle Models 3-4 2.2. Construction Planning 3-4 2.3. Construction Measurement 3-4 3. Practical Considerations 3-5 3.1. Construction Design 3-5 3.2. Construction Languages 3-5 3.3. Coding 3-6 3.4. Construction Testing 3-6 3.5. Construction for Reuse 3-6 3.6. Construction with Reuse 3-7 3.7. Construction Quality 3-7 3.8. Integration 3-7 4. Construction Technologies 3-8 4.1. API Design and Use 3-8 4.2. Object-Oriented Runtime Issues 3-8 4.3. Parameterization and Generics 3-8 4.4. Assertions, Design by Contract, and Defensive Programming 3-8 4.5. Error Handling, Exception Handling, and Fault Tolerance 3-9 4.6. Executable Models 3-9 4.7. State-Based and Table-Driven Construction Techniques 3-9 4.8. Runtime Configuration and Internationalization 3-10 4.9. Grammar-Based Input Processing 3-10 4.10. Concurrency Primitives 3-10 4.11. Middleware 3-10 4.12. Construction Methods for Distributed Software 3-11 4.13. Constructing Heterogeneous Systems 3-11 4.14. Performance Analysis and Tuning 3-11 4.15. Platform Standards 3-11 4.16. Test-First Programming 3-11 5. Software Construction Tools 3-12 5.1. Development Environments 3-12 5.2. GUI Builders 3-12 5.3. Unit Testing Tools 3-12 5.4. Profiling, Performance Analysis, and Slicing Tools 3-12 Matrix of Topics vs. Reference Material 3-13
viii SWEBOK®Guide V3.0 Chapter 4:Software Testing 4-1 1.Software Testing Fundamentals 4-3 1.1.Testing-Related Terminology 43 1.2.Key Issues 4-3 1.3.Relationship of Testing to Other Activities 44 2.Test Levels 4-5 2.1.The Target of the Test 45 2.2.Objectives of Testing 45 3.Test Techniques 47 3.I.Based on the Software Engineer's Intuition and Experience 4-8 3.2.Input Domain-Based Techniques 4-8 3.3.Code-Based Techniques 4-8 3.4.Fault-Based Techniques 4-9 3.5.Usage-Based Techniques 49 3.6.Model-Based Testing Techniques 4-10 3.7.Techniques Based on the Nature of the Application 4-10 3.8.Selecting and Combining Techniques 4-11 4.Test-Related Measures 4-11 4.1.Evaluation of the Program Under Test 4-11 4.2.Evaluation of the Tests Performed 4-12 5.Test Process 4-12 5.1.Practical Considerations 4-13 5.2.Test Activities 4-14 6.Software Testing Tools 4-15 6.1.Testing Tool Support 4-15 6.2.Categories of Tools 4-15 Matrix of Topics vs.Reference Material 4-17 Chapter 5:Software Maintenance 5-1 1.Software Maintenance Fundamentals 5-1 1.1.Definitions and Terminology 5-1 1.2.Nature of Maintenance 5-2 1.3.Need for Maintenance 5-3 1.4.Majority of Maintenance Costs 5-3 1.5.Evolution of Software 5-3 1.6.Categories of Maintenance 5-3 2.Key Issues in Software Maintenance 5-4 2.1.Technical Issues 5-4 2.2.Management Issues 5-5 2.3.Maintenance Cost Estimation 5-6 2.4.Software Maintenance Measurement 5-7 3.Maintenance Process 5-7 3.1.Maintenance Processes 5-7 3.2.Maintenance Activities 5-8 4.Techniques for Maintenance 5-10 4.1.Program Comprehension 5-10 4.2.Reengineering 5-10 4.3.Reverse Engineering 5-10 4.4.Migration 5-10 4.5.Retirement 5-11
viii SWEBOK® Guide V3.0 Chapter 4: Software Testing 4-1 1. Software Testing Fundamentals 4-3 1.1. Testing-Related Terminology 4-3 1.2. Key Issues 4-3 1.3. Relationship of Testing to Other Activities 4-4 2. Test Levels 4-5 2.1. The Target of the Test 4-5 2.2. Objectives of Testing 4-5 3. Test Techniques 4-7 3.1. Based on the Software Engineer’s Intuition and Experience 4-8 3.2. Input Domain-Based Techniques 4-8 3.3. Code-Based Techniques 4-8 3.4. Fault-Based Techniques 4-9 3.5. Usage-Based Techniques 4-9 3.6. Model-Based Testing Techniques 4-10 3.7. Techniques Based on the Nature of the Application 4-10 3.8. Selecting and Combining Techniques 4-11 4. Test-Related Measures 4-11 4.1. Evaluation of the Program Under Test 4-11 4.2. Evaluation of the Tests Performed 4-12 5. Test Process 4-12 5.1. Practical Considerations 4-13 5.2. Test Activities 4-14 6. Software Testing Tools 4-15 6.1. Testing Tool Support 4-15 6.2. Categories of Tools 4-15 Matrix of Topics vs. Reference Material 4-17 Chapter 5: Software Maintenance 5-1 1. Software Maintenance Fundamentals 5-1 1.1. Definitions and Terminology 5-1 1.2. Nature of Maintenance 5-2 1.3. Need for Maintenance 5-3 1.4. Majority of Maintenance Costs 5-3 1.5. Evolution of Software 5-3 1.6. Categories of Maintenance 5-3 2. Key Issues in Software Maintenance 5-4 2.1. Technical Issues 5-4 2.2. Management Issues 5-5 2.3. Maintenance Cost Estimation 5-6 2.4. Software Maintenance Measurement 5-7 3. Maintenance Process 5-7 3.1. Maintenance Processes 5-7 3.2. Maintenance Activities 5-8 4. Techniques for Maintenance 5-10 4.1. Program Comprehension 5-10 4.2. Reengineering 5-10 4.3. Reverse Engineering 5-10 4.4. Migration 5-10 4.5. Retirement 5-11
Table of Contents ix 5.Software Maintenance Tools 5-11 Matrix of Topics vs.Reference Material 5-12 Chapter 6:Software Configuration Management 6-1 1.Management of the SCM Process 6-2 1.1.Organizational Context for SCM 6-2 1.2.Constraints and Guidance for the SCM Process 6-3 1.3.Planning for SCM 6-3 1.4.SCM Plan 6-5 1.5.Surveillance of Software Configuration Management 6-5 2.Software Configuration Identification 6-6 2.1.Identifying Items to Be Controlled 6-6 2.2.Software Library 6-8 3.Software Configuration Control 6-8 3.1.Requesting,Evaluating,and Approving Software Changes 6-8 3.2.Implementing Software Changes 6-9 3.3.Deviations and Waivers 6-10 4.Software Configuration Status Accounting 6-10 4.1.Software Configuration Status Information 6-10 4.2.Software Configuration Status Reporting 6-10 5.Software Configuration Auditing 6-10 5.1.Software Functional Configuration Audit 6-11 5.2.Software Physical Configuration Audit 6-11 5.3.In-Process Audits of a Software Baseline 6-11 6.Software Release Management and Delivery 6-11 6.1.Software Building 6-11 6.2.Software Release Management 6-12 7.Software Configuration Management Tools 6-12 Matrix of Topics vs.Reference Material 6-13 Chapter 7:Software Engineering Management 7-1 1.Initiation and Scope Definition 7-4 1.1.Determination and Negotiation of Requirements 7-4 1.2.Feasibility Analysis 7-4 1.3.Process for the Review and Revision of Requirements 7-5 2.Software Project Planning 2.1.Process Planning 2.2.Determine Deliverables 2.3.Effort,Schedule,and Cost Estimation 2.4.Resource Allocation 2.5.Risk Management 2.6.Quality Management 2.7.Plan Management 3.Software Project Enactment 3.1.Implementation of Plans 7-7 3.2.Software Acquisition and Supplier Contract Management 7-7 3.3.Implementation of Measurement Process 3.4.Monitor Process 3.5.Control Process 7-8 3.6.Reporting 7-8
Table of Contents ix 5. Software Maintenance Tools 5-11 Matrix of Topics vs. Reference Material 5-12 Chapter 6: Software Configuration Management 6-1 1. Management of the SCM Process 6-2 1.1. Organizational Context for SCM 6-2 1.2. Constraints and Guidance for the SCM Process 6-3 1.3. Planning for SCM 6-3 1.4. SCM Plan 6-5 1.5. Surveillance of Software Configuration Management 6-5 2. Software Configuration Identification 6-6 2.1. Identifying Items to Be Controlled 6-6 2.2. Software Library 6-8 3. Software Configuration Control 6-8 3.1. Requesting, Evaluating, and Approving Software Changes 6-8 3.2. Implementing Software Changes 6-9 3.3. Deviations and Waivers 6-10 4. Software Configuration Status Accounting 6-10 4.1. Software Configuration Status Information 6-10 4.2. Software Configuration Status Reporting 6-10 5. Software Configuration Auditing 6-10 5.1. Software Functional Configuration Audit 6-11 5.2. Software Physical Configuration Audit 6-11 5.3. In-Process Audits of a Software Baseline 6-11 6. Software Release Management and Delivery 6-11 6.1. Software Building 6-11 6.2. Software Release Management 6-12 7. Software Configuration Management Tools 6-12 Matrix of Topics vs. Reference Material 6-13 Chapter 7: Software Engineering Management 7-1 1. Initiation and Scope Definition 7-4 1.1. Determination and Negotiation of Requirements 7-4 1.2. Feasibility Analysis 7-4 1.3. Process for the Review and Revision of Requirements 7-5 2. Software Project Planning 7-5 2.1. Process Planning 7-5 2.2. Determine Deliverables 7-5 2.3. Effort, Schedule, and Cost Estimation 7-6 2.4. Resource Allocation 7-6 2.5. Risk Management 7-6 2.6. Quality Management 7-6 2.7. Plan Management 7-7 3. Software Project Enactment 7-7 3.1. Implementation of Plans 7-7 3.2. Software Acquisition and Supplier Contract Management 7-7 3.3. Implementation of Measurement Process 7-7 3.4. Monitor Process 7-7 3.5. Control Process 7-8 3.6. Reporting 7-8
x SWEBOK®Guide V3.0 4.Review and Evaluation 7-8 4.1.Determining Satisfaction of Requirements 7-8 4.2.Reviewing and Evaluating Performance 7-9 5.Closure 7-9 5.1.Determining Closure 7-9 5.2.Closure Activities 7-9 6.Software Engineering Measurement 7-9 6.1.Establish and Sustain Measurement Commitment 7-9 6.2.Plan the Measurement Process 7-10 6.3.Perform the Measurement Process 7-11 6.4.Evaluate Measurement 7-11 7.Software Engineering Management Tools 7-11 Matrix of Topics vs.Reference Material 7-13 Chapter 8:Software Engineering Process 8-1 1.Software Process Definition 8-2 1.1.Software Process Management 8-3 1.2.Software Process Infrastructure 84 2.Software Life Cycles 8-4 2.1.Categories of Software Processes 8-5 2.2.Software Life Cycle Models 8-5 2.3.Software Process Adaptation 8-6 2.4.Practical Considerations 8-6 3.Software Process Assessment and Improvement 8-6 3.1.Software Process Assessment Models 8-7 3.2.Software Process Assessment Methods 8-7 3.3.Software Process Improvement Models 8-7 3.4.Continuous and Staged Software Process Ratings 8-8 4.Software Measurement 8-8 4.1.Software Process and Product Measurement 8-9 4.2.Ouality of Measurement Results 8-10 4.3.Software Information Models 8-10 4.4.Software Process Measurement Techniques 8-11 5.Software Engineering Process Tools 8-12 Matrix of Topics vs.Reference Material 8-13 Chapter 9:Software Engineering Models and Methods 9-1 1.Modeling 9-1 1.1.Modeling Principles 9-2 1.2.Properties and Expression of Models 9-3 1.3.Syntax,Semantics,and Pragmatics 9-3 1.4.Preconditions,Postconditions,and Invariants 9-4 2.Types of Models 9-4 2.1.Information Modeling 9-5 2.2.Behavioral Modeling 9-5 2.3.Structure Modeling 95 3.Analysis of Models 9-5 3.1.Analyzing for Completeness 9-5 3.2.Analyzing for Consistency 9-6
x SWEBOK® Guide V3.0 4. Review and Evaluation 7-8 4.1. Determining Satisfaction of Requirements 7-8 4.2. Reviewing and Evaluating Performance 7-9 5. Closure 7-9 5.1. Determining Closure 7-9 5.2. Closure Activities 7-9 6. Software Engineering Measurement 7-9 6.1. Establish and Sustain Measurement Commitment 7-9 6.2. Plan the Measurement Process 7-10 6.3. Perform the Measurement Process 7-11 6.4. Evaluate Measurement 7-11 7. Software Engineering Management Tools 7-11 Matrix of Topics vs. Reference Material 7-13 Chapter 8: Software Engineering Process 8-1 1. Software Process Definition 8-2 1.1. Software Process Management 8-3 1.2. Software Process Infrastructure 8-4 2. Software Life Cycles 8-4 2.1. Categories of Software Processes 8-5 2.2. Software Life Cycle Models 8-5 2.3. Software Process Adaptation 8-6 2.4. Practical Considerations 8-6 3. Software Process Assessment and Improvement 8-6 3.1. Software Process Assessment Models 8-7 3.2. Software Process Assessment Methods 8-7 3.3. Software Process Improvement Models 8-7 3.4. Continuous and Staged Software Process Ratings 8-8 4. Software Measurement 8-8 4.1. Software Process and Product Measurement 8-9 4.2. Quality of Measurement Results 8-10 4.3. Software Information Models 8-10 4.4. Software Process Measurement Techniques 8-11 5. Software Engineering Process Tools 8-12 Matrix of Topics vs. Reference Material 8-13 Chapter 9: Software Engineering Models and Methods 9-1 1. Modeling 9-1 1.1. Modeling Principles 9-2 1.2. Properties and Expression of Models 9-3 1.3. Syntax, Semantics, and Pragmatics 9-3 1.4. Preconditions, Postconditions, and Invariants 9-4 2. Types of Models 9-4 2.1. Information Modeling 9-5 2.2. Behavioral Modeling 9-5 2.3. Structure Modeling 9-5 3. Analysis of Models 9-5 3.1. Analyzing for Completeness 9-5 3.2. Analyzing for Consistency 9-6
Table of Contents xi 3.3.Analyzing for Correctness 9-6 3.4.Traceability 9-6 3.5.Interaction Analysis 9-6 4.Software Engineering Methods 9-7 4.1.Heuristic Methods 9-7 4.2.Formal Methods 9-7 4.3.Prototyping Methods 9-8 4.4.Agile Methods 9-9 Matrix of Topics vs.Reference Material 9-10 Chapter 10:Software Quality 10-1 1.Software Quality Fundamentals 10-2 1.1.Software Engineering Culture and Ethics 10-2 1.2.Value and Costs of Ouality 10-3 1.3.Models and Quality Characteristics 10-3 1.4.Software Ouality Improvement 10-4 1.5.Software Safety 10-4 2.Software Quality Management Processes 10-5 2.1.Software Ouality Assurance 10-5 2.2.Verification Validation 10-6 2.3.Reviews and Audits 10-6 3.Practical Considerations 10-9 3.1.Software Ouality Requirements 10-9 3.2.Defect Characterization 10-10 3.3.Software Ouality Management Techniques 10-11 3.4.Software Ouality Measurement 10-12 4.Software Quality Tools 10-12 Matrix of Topics vs.Reference Material 10-14 Chapter 11:Software Engineering Professional Practice 11-1 1.Professionalism 11-2 1.1.Accreditation,Certification,and Licensing 11-3 1.2.Codes of Ethics and Professional Conduct 11-4 1.3.Nature and Role of Professional Societies 11-4 1.4.Nature and Role of Software Engineering Standards 11-4 1.5.Economic Impact of Software 11-5 1.6.Employment Contracts 11-5 1.7.Legal Issues 11-5 1.8.Documentation 11-7 1.9.Tradeoff Analysis 11-8 2.Group Dynamics and Psychology 11-9 2.1.Dynamics of Working in Teams/Groups 11-9 2.2.Individual Cognition 11-9 2.3.Dealing with Problem Complexity 11-10 2.4.Interacting with Stakeholders 11-10 2.5.Dealing with Uncertainty and Ambiguity 11-10 2.6.Dealing with Multicultural Environments 11-10 3.Communication Skills 11-11 3.1.Reading,Understanding,and Summarizing 11-11
Table of Contents xi 3.3. Analyzing for Correctness 9-6 3.4. Traceability 9-6 3.5. Interaction Analysis 9-6 4. Software Engineering Methods 9-7 4.1. Heuristic Methods 9-7 4.2. Formal Methods 9-7 4.3. Prototyping Methods 9-8 4.4. Agile Methods 9-9 Matrix of Topics vs. Reference Material 9-10 Chapter 10: Software Quality 10-1 1. Software Quality Fundamentals 10-2 1.1. Software Engineering Culture and Ethics 10-2 1.2. Value and Costs of Quality 10-3 1.3. Models and Quality Characteristics 10-3 1.4. Software Quality Improvement 10-4 1.5. Software Safety 10-4 2. Software Quality Management Processes 10-5 2.1. Software Quality Assurance 10-5 2.2. Verification & Validation 10-6 2.3. Reviews and Audits 10-6 3. Practical Considerations 10-9 3.1. Software Quality Requirements 10-9 3.2. Defect Characterization 10-10 3.3. Software Quality Management Techniques 10-11 3.4. Software Quality Measurement 10-12 4. Software Quality Tools 10-12 Matrix of Topics vs. Reference Material 10-14 Chapter 11: Software Engineering Professional Practice 11-1 1. Professionalism 11-2 1.1. Accreditation, Certification, and Licensing 11-3 1.2. Codes of Ethics and Professional Conduct 11-4 1.3. Nature and Role of Professional Societies 11-4 1.4. Nature and Role of Software Engineering Standards 11-4 1.5. Economic Impact of Software 11-5 1.6. Employment Contracts 11-5 1.7. Legal Issues 11-5 1.8. Documentation 11-7 1.9. Tradeoff Analysis 11-8 2. Group Dynamics and Psychology 11-9 2.1. Dynamics of Working in Teams/Groups 11-9 2.2. Individual Cognition 11-9 2.3. Dealing with Problem Complexity 11-10 2.4. Interacting with Stakeholders 11-10 2.5. Dealing with Uncertainty and Ambiguity 11-10 2.6. Dealing with Multicultural Environments 11-10 3. Communication Skills 11-11 3.1. Reading, Understanding, and Summarizing 11-11
xii SWEBOK®Guide V3.0 3.2.Writing 11-11 3.3.Team and Group Communication 1-11 3.4.Presentation Skills 11-12 Matrix of Topics vs.Reference Material 11-13 Chapter 12:Software Engineering Economics 12-1 1.Software Engineering Economics Fundamentals 12-3 1.1.Finance 12-3 1.2.Accounting 12-3 1.3.Controlling 12-3 1.4.Cash Flow 12-3 1.5.Decision-Making Process 12-4 1.6.Valuation 12-5 1.7.Inflation 12-6 1.8.Depreciation 12-6 1.9.Taxation 12-6 1.10.Time-Value of Money 12-6 1.11.Efficiency 12-6 1.12.Effectiveness 12-6 1.13.Productivity 12-6 2.Life Cycle Economics 12-7 2.1.Product 12-7 2.2.Project 12-7 2.3.Program 12-7 2.4.Portfolio 12-7 2.5.Product Life Cycle 12-7 2.6.Project Life Cycle 12-7 2.7.Proposals 12-8 2.8.Investment Decisions 12-8 2.9.Planning Horizon 12-8 2.10.Price and Pricing 12-8 2.11.Cost and Costing 12-9 2.12.Performance Measurement 12-9 2.13.Earned Value Management 12-9 2.14.Termination Decisions 12-9 2.15.Replacement and Retirement Decisions 12-10 3.Risk and Uncertainty 12-10 3.1.Goals,Estimates,and Plans 12-10 3.2.Estimation Technigues 12-11 3.3.Addressing Uncertainty 12-11 3.4.Prioritization 12-11 3.5.Decisions under Risk 12-11 3.6.Decisions under Uncertainty 12-12 4.Economic Analysis Methods 12-12 4.1.For-Profit Decision Analysis 12-12 4.2.Minimum Acceptable Rate of Return 12-13 4.3.Return on Investment 12-13 4.4.Return on Capital Employed 12-13 4.5.Cost-Benefit Analysis 12-13
xii SWEBOK® Guide V3.0 3.2. Writing 11-11 3.3. Team and Group Communication 11-11 3.4. Presentation Skills 11-12 Matrix of Topics vs. Reference Material 11-13 Chapter 12: Software Engineering Economics 12-1 1. Software Engineering Economics Fundamentals 12-3 1.1. Finance 12-3 1.2. Accounting 12-3 1.3. Controlling 12-3 1.4. Cash Flow 12-3 1.5. Decision-Making Process 12-4 1.6. Valuation 12-5 1.7. Inflation 12-6 1.8. Depreciation 12-6 1.9. Taxation 12-6 1.10. Time-Value of Money 12-6 1.11. Efficiency 12-6 1.12. Effectiveness 12-6 1.13. Productivity 12-6 2. Life Cycle Economics 12-7 2.1. Product 12-7 2.2. Project 12-7 2.3. Program 12-7 2.4. Portfolio 12-7 2.5. Product Life Cycle 12-7 2.6. Project Life Cycle 12-7 2.7. Proposals 12-8 2.8. Investment Decisions 12-8 2.9. Planning Horizon 12-8 2.10. Price and Pricing 12-8 2.11. Cost and Costing 12-9 2.12. Performance Measurement 12-9 2.13. Earned Value Management 12-9 2.14. Termination Decisions 12-9 2.15. Replacement and Retirement Decisions 12-10 3. Risk and Uncertainty 12-10 3.1. Goals, Estimates, and Plans 12-10 3.2. Estimation Techniques 12-11 3.3. Addressing Uncertainty 12-11 3.4. Prioritization 12-11 3.5. Decisions under Risk 12-11 3.6. Decisions under Uncertainty 12-12 4. Economic Analysis Methods 12-12 4.1. For-Profit Decision Analysis 12-12 4.2. Minimum Acceptable Rate of Return 12-13 4.3. Return on Investment 12-13 4.4. Return on Capital Employed 12-13 4.5. Cost-Benefit Analysis 12-13