SWEBOK

  1. Software Requirements
    1. Software Requirements Fundamentals
      1. Definition of a Software Requirement
      2. Categories of Software Requirements
      3. Software Product Requirements and Software Project Requirements
      4. Functional Requirements
      5. Nonfunctional Requirements
      6. Technology Constraints
      7. Quality of Service Constraints
      8. Why Categorize Requirements This Way?
      9. System Requirements and Software Requirements
      10. Derived Requirements
      11. Software Requirements Activities
    2. Requirements Elicitation
      1. Requirements Sources
      2. Common Requirements Elicitation Techniques
    3. Requirements Analysis
      1. Basic Requirements Analysis
      2. Economics of Quality of Service Constraints
      3. Formal Analysis
      4. Addressing Conflict in Requirements
    4. Requirements Specification
      1. Unstructured Natural Language Requirements Specification
      2. Structured Natural Language Requirements Specification
      3. Acceptance Criteria-Based Requirements Specification
      4. Model-Based Requirements Specification
      5. Additional Attributes of Requirements
      6. Incremental and Comprehensive Requirements Specification
    5. Requirements Validation
      1. Requirements Reviews
      2. Simulation and Execution
      3. Prototyping
    6. Requirements Management Activities
      1. Requirements Scrubbing
      2. Requirements Change Control
      3. Scope Matching
    7. Practical Considerations
      1. Iterative Nature of the Requirements
      2. Requirements Prioritization
      3. Requirements Tracing
      4. Requirements Stability and Volatility
      5. Measuring Requirements
      6. Requirements Process Quality and Improvements
    8. Software Requirements Tools
      1. Requirements Management Tools
      2. Requirements Modeling Tools
      3. Functional Test Case Generation Tools

    Referenced books

  2. Software Architecture
    1. Software Architecture Fundamentals
      1. The Senses of "Architecture"
      2. Stakeholders and Concerns
      3. Uses of Architecture
    2. Software Architecture Description
      1. Architecture Views and Viewpoints
      2. Architecture Patterns, Styles and Reference Architectures
        1. Relation of Architecture to Design
      3. Architecture Description Languages and Architecture Frameworks
        1. Architecture Analysis
        2. Architecture Synthesis
        3. Architecture Evaluation
      4. Architecture as Significant Decisions
    3. Software Architecture Process
      1. Architecture in Context
      2. Architectural Design
      3. Architecture Practices, Methods, and Tactics
      4. Architecting in the Large
    4. Software Architecture Evaluation
      1. Goodness in Architecture
      2. Reasoning abouot Architecture
      3. Architecture Reviews
      4. Architecture Metrics

    Referenced books

  3. Software Design
    1. Software Design Fundamentals
      1. Design Thinking
      2. Context of Software Design
      3. Key Issues in Software Design
      4. Software Design Principles
    2. Software Design Process
      1. High-Level Design
      2. Detailed Design
    3. Software Design Qualities
      1. Concurrency
      2. Control and Event Handling
      3. Data Persistence
      4. Distribution of Components
      5. Errors and Exception Handling, Fault Tolerance
      6. Integration and Interoperability
      7. Assurance, Security, and Safety
      8. Variability
    4. Recording Software Designs
      1. Model-Based Design
      2. Structural Design Descriptions
      3. Behavioral Design Descriptions
      4. Design Patterns and Styles
      5. Specialized and Domain-Specific Languages
      6. Design Rationale
    5. Software Design Strategies and Methods
      1. General Strategies
      2. Function-Oriented (or Structured) Design
      3. Data-Centered Design
      4. Object-Oriented Design
      5. User-Centered Design
      6. Component-Based Design (CBD)
      7. Event-Driven Design
      8. Aspect-Oriented Design (AOD)
      9. Constraint-Based Design
      10. Domain-Driven Design
      11. Other Methods
    6. Software Design Quality Analysis and Evaluation
      1. Design Reviews and Audits
      2. Quality Attributes
      3. Quality Analysis and Evaluation Techniques
      4. Measures and Metrics
      5. Verification, Validation, and Certification

    Referenced books

  4. Software Construction
    1. Software Construction Fundamentals
      1. Minimizing Complexity
      2. Anticipating and Embracing Change
      3. Constructing for Verification
      4. Reusing Assets
      5. Applying Standards in Construction
    2. Managing Construction
      1. Construction in Life Cycle Models
      2. Construction Planning
      3. Construction Measurement
      4. Managing Dependencies
    3. Practical Considerations
      1. Construction Design
      2. Construction Languages
      3. Coding
      4. Construction Testing
      5. Reuse in Construction
      6. Construction Quality
      7. Integration
      8. Cross-Platform Development and Migration
    4. Construction Technologies
      1. API Design and Use
      2. Object-Oriented Runtime Issues
      3. Parameterization, Templates, and Generics
      4. Assertions, Design by Contract, and Defensive Programming
      5. Error Handling, Exception Handling, and Fault Tolerance
      6. Executable Models
      7. State-Based and Table-Driven Construction Technologies
      8. Runtime Configuration and Internationalization
      9. Grammar-Based Input Processing
      10. Concurrency Primitives
      11. Middleware
      12. Construction Methods for Distributed and Cloud-Based Services
      13. Constructing Heterogeneous Systems
      14. Performance Analysis and Tuning
      15. Platform Standards
      16. Test-First Programming
      17. Feedback Loop for Construction
    5. Software Construction Tools
      1. Development Environments
      2. Visual Programming and Low-Code/Zero-Code Platforms
      3. Unit Testing Tools
      4. Profiling, Performance Analysis, and Slicing Tools

    Referenced books

  5. Software Testing
    1. Software Testing Fundamentals
      1. Faults vs. Failures
      2. Key Issues
        1. Test Case Creation
        2. Test Selection and Adequacy Criteria
        3. Prioritization/Minimization
        4. Purpose of Testing
        5. Assessment and Certification
        6. Testing for Quality Assurance/Improvement
        7. The Oracle Problem
        8. Theoretical and Practical Limitations
        9. The Problem of Infeasible Paths
        10. Testability
        11. Test Execution and Automation
        12. Scalability
        13. Test Effectiveness
        14. Controllability, Replication, and Generalization
        15. Off-Line vs. Online Testing
      3. Relationship of Testing to Other Activities
    2. Test Levels
      1. The Target of the Test
        1. Unit Testing
        2. Integration Testing
        3. System Testing
        4. Acceptance Testing
      2. Objectives of Testing
        1. Conformance Testing
        2. Compliance Testing
        3. Installation Testing
        4. Alpha and Beta Testing
        5. Regression Testing
        6. Prioritization Testing
        7. Non-functional Testing
        8. Security Testing
        9. Privacy Testing
        10. Interface and Application Program Interface (API) Testing
        11. Configuration Testing
        12. Usability and Human-Computer Interaction Testing
    3. Test Techniques
      1. Specification-Based Techniques
        1. Equivalence Partitioning
        2. Boundary-Value Analysis
        3. Syntax Testing
        4. Combinatorial Test Techniques
        5. Decision Table
        6. Cause-Effect Graphing
        7. State Transition Testing
        8. Scenario-Based Testing
        9. Random Testing
        10. Evidence-Based
        11. Forcing Exception
      2. Structure-Based Test Techniques
        1. Control Flow Testing
        2. Data Flow Testing
        3. Reference Models for Structure-Based Test Techniques
      3. Experience-Based Techniques
        1. Error Guessing
        2. Exploratory Testing
        3. Further Experience-Based Techniques
      4. Fault-Based and Mutation Techniques
      5. Usage-Based Techniques
        1. Operational Profile
        2. User Observation Heuristics
      6. Techniques Based on the Nature of the Application
      7. Selecting and Combining Techniques
        1. Combining Functional and Structural
        2. Deterministic vs. Random
      8. Techniques Based on Derived Knowledge
    4. Test-Related Measures
      1. Evaluation of the SUT
        1. SUT Measurements that Aid in Planning and Designing Tests
        2. Fault Types, Classification and Statistics
        3. Fault Density
        4. Life Test, Reliability Evaluation
        5. Reliability Growth Models
      2. Evaluation of the Tests Performed
        1. Fault Injection
        2. Mutation Score
        3. Comparison and Relative Effectiveness of Different Techniques
    5. Test Process
      1. Practical Considerations
        1. Attitudes/Egoless Programming
        2. Test Guides and Organizational Process
        3. Test Management and Dynamic Test Processes
        4. Test Documentation
        5. Test Team
        6. Test Process Measures
        7. Test Monitoring and Control
        8. Test Completion
        9. Test Reusability
      2. Test Sub-Processes and Activities
        1. Test Planning Process
        2. Test Design and Implementation
        3. Test Environment Set-up and Maintenance
        4. Controlled Experiments and Test Execution
        5. Test Incident Reporting
      3. Staffing
    6. Software Testing in the Development Processes and the Application Domain
      1. Testing Inside Software Development Processes
        1. Testing in Traditional Processes
        2. Testing in Line with Shift-Left Movement
      2. Testing in the Application Domains
    7. Testing of and Testing Through Emerging Technologies
      1. Testing of Emerging Technologies
      2. Testing Through Emerging Technologies
    8. Software Testing Tools
      1. Testing Tool Support and Selection
      2. Categories of Tools
  6. Software Engineering Operations
    1. Software Engineering Operations Fundamentals
      1. Definition of Software Engineering Operations
      2. Software Engineering Operations Processes
      3. Software Installation
      4. Scripting and Automating
      5. Effective Testing and Troubleshooting
      6. Performance, Reliability and Load Balancing
    2. Software Engineering Operations Planning
      1. Operations Plan and Supplier Management
        1. Operations Plan
        2. Supplier Management
      2. Development and Operational Environments
      3. Software Availability, Continuity, and Service Levels
      4. Software Capacity Management
      5. Software Backup, Disaster Recovery, and Failover
      6. Software and Data Safety, Security, Integrity, Protection, and Controls
    3. Software Engineering Operations Delivery
      1. Operational Testing, Verification, and Acceptance
      2. Deployment/Release Engineering
      3. Rollback and Data Migration
      4. Change Management
      5. Problem Management
    4. Software Engineering Operations Control
      1. Incident Management
      2. Monitor, Measure, Track, and Review
      3. Operations Support
      4. Operations Service Reporting
    5. Practical Considerations
      1. Incident and Problem Prevention
      2. Operational Risk Management
      3. Automating Software Engineering Operations
      4. Software Engineering Operations for Small Organizations
    6. Software Engineering Operations Tools
      1. Containers and Virtualization
      2. Deployment
      3. Automated Test
      4. Monitoring and Telemetry
  7. Software Maintenance
    1. Software Maintenance Fundamentals
      1. Definitions and Terminology
      2. Nature of Software Maintenance
      3. Need for Software Maintenance
      4. Majority of Maintenance Costs
      5. Evolution of Software
      6. Categories of Software Maintenance
    2. Key Issues in Software Maintenance
      1. Technical Issues
        1. Limited Understanding
        2. Testing
        3. Impact Analysis
        4. Maintainability
      2. Management Issues
        1. Alignment with Organizational Objectives
        2. Staffing
        3. Process
        4. Supplier Management
        5. Organizational Aspects of Maintenance
      3. Software Maintenance Costs
        1. Technical Debt Cost Estimation
        2. Maintenance Cost Estimation
      4. Software Maintenance Measurement
    3. Software Maintenance Processes
      1. Software Maintenance Processes
      2. Software Maintenance Activities and Tasks
        1. Supporting and Monitoring Activities
        2. Planning Activities
        3. Configuration Management
        4. Software Quality
    4. Software Maintenance Techniques
      1. Program Comprehension
      2. Software Reengineering
      3. Reverse Engineering
      4. Continuous Integration, Delivery, Testing, and Deployment
      5. Visualizing Maintenance
    5. Software Maintenance Tools
  8. Software Configuration Management
    1. Management of the SCM Process
      1. Organizational Context for SCM
      2. Constraints and Guidance for the SCM Process
      3. Planning for SCM
        1. SCM Organization and Responsibilities
        2. SCM Resources and Schedules
        3. Tool Selection and Implementation
        4. Vendor/Subcontractor Control
        5. Interface Control
      4. SCM Plan
      5. Monitoring of Software Configuration Management
        1. SCM Measures and Measurement
        2. In-Process Audits of SCM
    2. Software Configuration Identification
      1. Identifying Items to Be Controlled
        1. Software Configuration
        2. Software Configuration Item
      2. Configuration Item Identifiers and Attributes
      3. Baseline Identification
      4. Baseline Attributes
      5. Relationships Scheme Definition
      6. Software Libraries
    3. Software Configuration Change Control
      1. Requesting, Evaluating, and Approving Software Changes
        1. Software Configuration Control Board
        2. Software Change Request Process
        3. Software Change Request Forms Definition
      2. Implementing Software Changes
      3. Deviations and Waivers
    4. Software Configuration Status Accounting
      1. Software Configuration Status Information
      2. Software Configuration Status Reporting
    5. Software Configuration Auditing
      1. Software Functional Configuration Audit
      2. Software Physical Configuration Audit
      3. In-Process Audits of a Software Baseline
    6. Software Release Management and Delivery
      1. Software Building
      2. Software Release Management
    7. Software Configuration Management Tools
  9. Software Engineering Management
    1. Initiation and Scope Definition
      1. Determination and Negotiation of Requirements
      2. Feasibility Analysis
      3. Process for the Review and Revision of Requirements
    2. Software Project Planning
      1. Process Planning
      2. Determine Deliverables
      3. Effort, Schedule, and Cost Estimation
      4. Resource Allocation
      5. Risk Management
      6. Quality Management
      7. Plan Management
    3. Software Project Execution
      1. Implementation of Plans
      2. Software Acquisition and Supplier Contract Management
      3. Implementation of Measurement Process
      4. Monitor Process
      5. Control Process
      6. Reporting
    4. Software Review and Evaluation
      1. Determining Satisfaction of Requirements
      2. Reviewing and Evaluating Performance
    5. Closure
      1. Determining Closure
      2. Closure Activities
    6. Software Engineering Measurement
      1. Establish and Sustain Measurement Commitment
      2. Plan the Measurement Process
      3. Perform the Measurement Process
      4. Evaluate the Measurement
    7. Software Engineering Management Tools
  10. Software Engineering Process
    1. Software Engineering Process Fundamentals
      1. Introduction
      2. Software Engineering Process Definition
    2. Life Cycles
      1. Life Cycle Definition, Process Categories, and Terminology
      2. Rationale for Life Cycles
      3. The Concepts of Process Models and Life Cycle Models
      4. Some Paradigms for Development Life Cycle Models
      5. Development Life Cycle Models and Their Engineering Dimension
      6. The Management of SLCPs
      7. Software Engineering Process Management
      8. Software Life Cycle Adaptation
      9. Practical Considerations
      10. Software Process Infrastructure, Tools, Methods
      11. Software Engineering Process Monitoring and its Relationship with the Software Product
    3. Software Process Assessment and Improvement
      1. Overview of Software Process Assessment and Improvement
      2. Goal-Question-Metric (GQM)
      3. Framework-Based Methods
      4. Process Assessment and Improvement in Agile
  11. Software Engineering Models and Methods
    1. Modeling
      1. Modeling Principles
      2. Properties and Expression of Models
      3. Syntax, Semantics, and Pragmatics
      4. Preconditions, Postconditions, and Invariants
    2. Types of Models
      1. Structural Modeling
      2. Behavioral Modeling
    3. Analysis of Models
      1. Analyzing for Completeness
      2. Analyzing for Consistency
      3. Analyzing for Correctness
      4. Analyzing for Traceability
      5. Analyzing for Interaction
    4. Software Engineering Methods
      1. Heuristic Methods
      2. Formal Methods
      3. Prototyping Methods
      4. Agile Methods
  12. Software Quality
    1. Software Quality Fundamentals
      1. Software Engineering Culture and Ethics
      2. Value and Costs of Quality
      3. Standards, Models, and Certifications
      4. Software Dependability and Integrity Levels
        1. Dependability
        2. Integrity Levels of Software
    2. Software Quality Management Process
      1. Software Quality Improvement
      2. Plan Quality Management
      3. Evaluate Quality Management
        1. Software Quality Measurement
      4. Perform Corrective and Preventative Actions
        1. Defect Characterization
    3. Software Quality Assurance Process
      1. Prepare for Quality Assurance
      2. Perform Process Assurance
      3. Perform Product Assurance
      4. V&V and Testing
        1. Static Analysis Techniques
        2. Dynamic Analysis Techniques
        3. Formal Analysis Techniques
        4. Software Quality Control and Testing
        5. Technical Reviews and Audits
    4. Software Quality Tools
  13. Software Security
    1. Software Security Fundamentals
      1. Software Security
      2. Information Security
      3. Cybersecurity
    2. Security Management and Organization
      1. Capability Maturity Model
      2. Information Security Management System
      3. Agile Practice for Software Security
    3. Software Security Engineering and Processes
      1. Security Engineering and Secure Development Life Cycle (SDLC)
      2. Common Criteria for Information Technology Security Evaluation
    4. Security Engineering for Software Systems
      1. Security Requirements
      2. Security Design
      3. Security Patterns
      4. Construction for Security
      5. Security Testing
      6. Vulnerability Management
    5. Software Security Tools
      1. Security Vulnerability Checking Tools
      2. Penetration Testing Tools
    6. Domain-Specific Software Security
      1. Security for Container and Cloud
      2. Security for IoT Software
      3. Security for Machine Learning-Based
  14. Software Engineering Professional Practice
    1. Professionalism
      1. Accreditation, Certification and Qualification, and Licensing
        1. Accreditation
        2. Certification and Qualification
        3. Licensing
      2. Codes of Ethics and Professional Conduct
      3. Nature and Role of Professional Societies
      4. Nature and Role of Software Engineering Standards
      5. Economic Impacts of Software
      6. Employment Contracts
      7. Legal Issues
        1. Standards
        2. Trademarks
        3. Patents
        4. Copyrights
        5. Trade Secrets
        6. Professional Liability
        7. Legal Requirements
        8. Trade Compliance
        9. Cybercrime
        10. Data Privacy
      8. Documentation
      9. Trade-Off Analysis
    2. Group Dynamics and Psychology
      1. Dynamics of Working in Teams/Groups
      2. Individual Cognition
      3. Dealing with Problem Complexity
      4. Interacting with Stakeholders
      5. Dealing with Uncertainty and Ambiguity
      6. Dealing with Equity, Diversity, and Inclusivity
    3. Communication Skills
      1. Reading, Understanding, and Summarizing
      2. Writing
      3. Team and Group Communication
      4. Presentation Skills
  15. Software Engineering Economics
    1. Software Engineering Economics Fundamentals
      1. Proposals
      2. Cash Flow
      3. Time-Value of Money
      4. Equivalence
      5. Bases for Comparison
      6. Alternatives
      7. Intangible Assets
      8. Business Model
    2. The Engineering Decision-Making Process
      1. Process Overview
      2. Understand the Real Problem
      3. Identify All Reasonable Technically Feasible Solutions
      4. Define the Selection Criteria
      5. Evaluate Each Alternative Against the Selection Criteria
      6. Select the Preferred Alternative
      7. Monitor the Performance of the Selected Alternative
    3. For-Profit Decision-Making
      1. Minimum Acceptable Rate of Return
      2. Economic Life
      3. Planning Horizon
      4. Replacement Decisions
      5. Retirement Decisions
      6. Advanced For-Profit Decision Considerations
    4. Nonprofit Decision-Making
      1. Benefit-Cost Analysis
      2. Cost-Effectiveness Analysis
    5. Present Economy Decision-Making
      1. Break-Even Analysis
      2. Optimization Analysis
    6. Multiple-Attribute Decision-Making
      1. Compensatory Techniques
      2. Non-Compensatory Techniques
    7. Identifying and Characterizing Intangible Assts
      1. Identify Processes and Define Business Goals
      2. Identify Intangible Assets Linked With Business Goals
      3. Identify Software Products that Support Intangible Assets
      4. Define and Measure Indicators
      5. Intangible Asset Characterization
      6. Link Specific Intangible Assets with the Business Model
      7. Decision-Making
    8. Estimation
      1. Expert Judgment
      2. Analogy
      3. Decomposition
      4. Parametric
      5. Multiple Estimates
    9. Practical Considerations
      1. Business Case
      2. Multiple-Currency Analysis
      3. Systems Thinking
    10. Related Concepts
      1. Accounting
      2. Cost and Costing
      3. Finance
      4. Controlling
      5. Efficiency and Effectiveness
      6. Productivity
      7. Product or Service
      8. Project
      9. Program
      10. Portfolio
      11. Product Life Cycle
      12. Project Life Cycle
      13. Price and Pricing
      14. Prioritization
  16. Computing Foundations
    1. Basic Concepts of a System or Solution
    2. Computer Architecture and Organization
      1. Computer Architecture
      2. Types of Computer Architectures
        1. Von Neumann Architecture
        2. Harvard Architecture
        3. Instruction Set Architecture
        4. Flynn's Architecture or Taxonomy
        5. System Architecture
      3. Microarchitecture or Computer Organization
        1. Arithmetic Logic Unit
        2. Memory Unit
        3. Input/Output Devices
        4. Control Unit
    3. Data Structures and Algorithms
      1. Types of Data Structures
      2. Operations on Data Structures
      3. Algorithms and Attributes of Algorithms
      4. Algorithm Complexity
      5. Measurement of Complexity
      6. Designing Algorithms
      7. Sorting Techniques
      8. Searching Techniques
      9. Hashing
    4. Programming Fundamentals and Languages
      1. Programming Language Types
      2. Programming Syntax, Semantics, Type Systems
      3. Subprograms and Coroutines
      4. Object-Oriented Programming
      5. Distributed Programming and Parallel Programming
      6. Debugging
      7. Standards and Guidelines
    5. Operating Systems
      1. Processor Management
      2. Memory Management
      3. Device Management
      4. Information Management
      5. Network Management
    6. Database Management
      1. Schema
      2. Data Models and Storage Models
      3. Database Management Systems
      4. Relational Database Management Systems and Normalization
      5. Structured Query Language
      6. Data Mining and Data Warehousing
      7. Database Backup and Recovery
    7. Computer Networks and Communications
      1. Types of Computer Networks
      2. Layered Architectures of Networks
      3. Open Systems Interconnection Model
      4. Encapsulation and Decapsulation
      5. Application Layer Protocols
      6. Design Techniques for Reliable and Efficient Networks
      7. Internet Protocol Suite
      8. Wireless and Mobile Networks
      9. Security and Vulnerabilities
    8. User and Developer Human Factors
      1. User Human Factors
      2. Developer Human Factors
    9. Artificial Intelligence and Machine Learning
      1. Reasoning
      2. Learning
      3. Models
      4. Perception and Problem Solving
      5. Natural Language Processing
      6. AI and Software Engineering
  17. Mathematical Foundations
    1. Basic Logic
      1. Propositional Logic
      2. Predicate Logic
    2. Proof Techniques
      1. Direct Proof
      2. Proof by Contradiction
      3. Proof by Induction
      4. Proof by Example
    3. Set, Relation, Function
      1. Set Operations
      2. Properties of Sets
      3. Relation and Function
    4. Graph and Tree
      1. Graph
      2. Tree
    5. Finite-State Machine
    6. Grammar
      1. Language Recognition
    7. Number Theory
      1. Types of Numbers
      2. Divisibility
      3. Prime Number
      4. Greatest Common Divisor
    8. Basics of Counting
    9. Discrete Probability
    10. Numerical Precision, Accuracy, and Error
    11. Algebraic Structures
      1. Group
      2. Ring
    12. Engineering Calculus
    13. New Advancements
      1. Computational Neurosciences
      2. Genomics
  18. Engineering Foundations
    1. The Engineering Process
    2. Engineering Design
      1. Engineering Design in Engineering Education
      2. Design as a Problem-Solving Activity
    3. Abstraction and Encapsulation
      1. Levels of Abstraction
      2. Encapsulation
      3. Hierarchy
      4. Alternate Abstractions
    4. Empirical Methods and Experimental Techniques
      1. Designed Experiment
      2. Observational Study
      3. Retrospective Study
    5. Statistical Analysis
      1. Unit of Analysis (Sampling Units), Population, and Sample
      2. Correlation and Regression
    6. Modeling, Simulation, and Prototyping
      1. Modeling
      2. Simulation
      3. Prototyping
    7. Measurement
      1. Levels (Scales) of Measurement
      2. Implication of Measurement Theory for Programming Languages
      3. Direct and Derived Measures
      4. Reliability and Validity
      5. Assessing Reliability
      6. Goal-Question-Metric Paradigm: Why Measure?
    8. Standards
    9. Root Cause Analysis
      1. Root Cause Analysis Techniques
      2. Root Cause-Based Improvement
    10. Industry 4.0 and Software Engineering