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