Now Available: A New SWEBOK Guide

Volunteers have refreshed the Guide to the Software Engineering Body of Knowledge (SWEBOK(R) Guide), adding new knowledge areas (KAs) and revising others. SWEBOK Guide V3.0 builds upon SWEBOK 2004 to refresh and add new reviewed content. An international team of KA Editors produced or refreshed the content of each knowledge area. A team of overall editors directed the entire effort, and a Change Control Board approved all major requested changes. Executed under the auspices of the IEEE Computer Society Professional Activities Board, more than 1,500 changes were submitted and duly adjudicated.

To download your copy of SWEBOK V3.0, please visit the SWEBOK V3.0 download portal. Resolution of collected comments have been posted, and members, the Professional Activities Board, and the Board of Governors of the IEEE Computer Society voted to move the revised document forward to publication.

The SWEBOK Guide:

  • characterizes the contents of the software engineering discipline
  • promotes a consistent view of software engineering worldwide
  • clarifies software engineering's place with respect to other disciplines
  • provides a foundation for training materials and curriculum development, and
  • provides a basis for certification and licensing of software engineers.

SWEBOK Guide V3.0 Topics

Chapter 1: Software Requirements

1. Software Requirements Fundamentals

1.1. Definition of a Software Requirement
1.2. Product and Process Requirements
1.3. Functional and Nonfunctional Requirements
1.4. Emergent Properties
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

3. Requirements Elicitation

3.1. Requirements Sources
3.2. Elicitation Techniques

4. Requirements Analysis

4.1. Requirements Classification
4.2. Conceptual Modeling
4.3. Architectural Design and Requirements Allocation
4.4. Requirements Negotiation
4.5. Formal Analysis

5. Requirements Specification

5.1. System Definition Document
5.2. System Requirements Specification
5.3. Software Requirements Specification

6. Requirements Validation

6.1. Requirements Reviews
6.2. Prototyping
6.3. Model Validation
6.4. Acceptance Tests

7. Practical Considerations

7.1. Iterative Nature of the Requirements Process
7.2. Change Management
7.3. Requirements Attributes
7.4. Requirements Tracing
7.5. Measuring Requirements

8. Software Requirements Tools

Chapter 2: Software Design

1. Software Design Fundamentals

1.1. General Design Concepts
1.2. Context of Software Design
1.3. Software Design Process
1.4. Software Design Principles

2. Key Issues in Software Design

2.1. Concurrency
2.2. Control and Handling of Events
2.3. Data Persistence
2.4. Distribution of Components
2.5. Error and Exception Handling and Fault Tolerance
2.6. Interaction and Presentation
2.7. Security

3. Software Structure and Architecture

3.1. Architectural Structures and Viewpoints
3.2. Architectural Styles
3.3. Design Patterns
3.4. Architecture Design Decisions
3.5. Families of Programs and Frameworks

4. User Interface Design

4.1. General User Interface Design Principles
4.2. User Interface Design Issues
4.3. The Design of User Interaction Modalities
4.4. The Design of Information Presentation
4.5. User Interface Design Process
4.6. Localization and Internationalization
4.7. Metaphors and Conceptual Models

5. Software Design Quality Analysis and Evaluation

5.1. Quality Attributes
5.2. Quality Analysis and Evaluation Techniques
5.3. Measures

6. Software Design Notations

6.1. Structural Descriptions (Static View)
6.2. Behavioral Descriptions (Dynamic View)

7. Software Design Strategies and Methods

7.1. General Strategies
7.2. Function-Oriented (Structured) Design
7.3. Object-Oriented Design
7.4. Data Structure-Centered Design
7.5. Component-Based Design (CBD)
7.6. Other Methods

8. Software Design Tools

Chapter 3: Software Construction

1. Software Construction Fundamentals

1.1. Minimizing Complexity
1.2. Anticipating Change
1.3. Constructing for Verification
1.4. Reuse
1.5. Standards in Construction

2. Managing Construction

2.1. Construction in Life Cycle Models
2.2. Construction Planning
2.3. Construction Measurement

3. Practical Considerations

3.1. Construction Design
3.2. Construction Languages
3.3. Coding
3.4. Construction Testing
3.5. Construction for Reuse
3.6. Construction with Reuse
3.7. Construction Quality
3.8. Integration

4. Construction Technologies

4.1. API Design and Use
4.2. Object-Oriented Runtime Issues
4.3. Parameterization and Generics
4.4. Assertions, Design by Contract, and Defensive Programming
4.5. Error Handling, Exception Handling, and Fault Tolerance
4.6. Executable Models
4.7. State-Based and Table-Driven Construction Techniques
4.8. Runtime Configuration and Internationalization
4.9. Grammar-Based Input Processing
4.10. Concurrency Primitives
4.11. Middleware
4.12. Construction Methods for Distributed Software
4.13. Constructing Heterogeneous Systems
4.14. Performance Analysis and Tuning
4.15. Platform Standards
4.16. Test-First Programming

5. Software Construction Tools

5.1. Development Environments
5.2. GUI Builders
5.3. Unit Testing Tools
5.4. Profiling, Performance Analysis, and Slicing Tools

Chapter 4: Software Testing

1. Software Testing Fundamentals

1.1. Testing-Related Terminology
1.2. Key Issues
1.3. Relationship of Testing to Other Activities

2. Test Levels

2.1. The Target of the Test
2.2. Objectives of Testing

3. Test Techniques

3.1. Based on the Software Engineer's Intuition and Experience
3.2. Input Domain-Based Techniques
3.3. Code-Based Techniques
3.4. Fault-Based Techniques
3.5. Usage-Based Techniques
3.6. Model-Based Testing Techniques
3.7. Techniques Based on the Nature of the Application
3.8. Selecting and Combining Techniques

4. Test-Related Measures

4.1. Evaluation of the Program Under Test
4.2. Evaluation of the Tests Performed

5. Test Process

5.1. Practical Considerations
5.2. Test Activities

6. Software Testing Tools

6.1. Testing Tool Support
6.2. Categories of Tools

Chapter 5: Software Maintenance

1. Software Maintenance Fundamentals

1.1. Definitions and Terminology
1.2. Nature of Maintenance
1.3. Need for Maintenance
1.4. Majority of Maintenance Costs
1.5. Evolution of Software
1.6. Categories of Maintenance

2. Key Issues in Software Maintenance

2.1. Technical Issues
2.2. Management Issues
2.3. Maintenance Cost Estimation
2.4. Software Maintenance Measurement

3. Maintenance Process

3.1. Maintenance Processes
3.2. Maintenance Activities

4. Techniques for Maintenance

4.1. Program Comprehension
4.2. Reengineering
4.3. Reverse Engineering
4.4. Migration
4.5. Retirement

5. Software Maintenance Tools

Chapter 6: Software Configuration Management

1. Management of the SCM Process

1.1. Organizational Context for SCM
1.2. Constraints and Guidance for the SCM Process
1.3. Planning for SCM
1.4. SCM Plan
1.5. Surveillance of Software Configuration Management

2. Software Configuration Identification

2.1. Identifying Items to Be Controlled
2.2. Software Library

3. Software Configuration Control

3.1. Requesting, Evaluating, and Approving Software Changes
3.2. Implementing Software Changes
3.3. Deviations and Waivers

4. Software Configuration Status Accounting

4.1. Software Configuration Status Information
4.2. Software Configuration Status Reporting

5. Software Configuration Auditing

5.1. Software Functional Configuration Audit
5.2. Software Physical Configuration Audit
5.3. In-Process Audits of a Software Baseline

6. Software Release Management and Delivery

6.1. Software Building
6.2. Software Release Management

7. Software Configuration Management Tools

Chapter 7: Software Engineering Management

1. Initiation and Scope Definition

1.1. Determination and Negotiation of Requirements
1.2. Feasibility Analysis
1.3. Process for the Review and Revision of Requirements

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
3.2. Software Acquisition and Supplier Contract Management
3.3. Implementation of Measurement Process
3.4. Monitor Process
3.5. Control Process
3.6. Reporting

4. Review and Evaluation

4.1. Determining Satisfaction of Requirements
4.2. Reviewing and Evaluating Performance

5. Closure

5.1. Determining Closure
5.2. Closure Activities

6. Software Engineering Measurement

6.1. Establish and Sustain Measurement Commitment
6.2. Plan the Measurement Process
6.3. Perform the Measurement Process
6.4. Evaluate Measurement

7. Software Engineering Management Tools

Chapter 8: Software Engineering Process

1. Software Process Definition

1.1. Software Process Management
1.2. Software Process Infrastructure

2. Software Life Cycles

2.1. Categories of Software Processes
2.2. Software Life Cycle Models
2.3. Software Process Adaptation
2.4. Practical Considerations

3. Software Process Assessment and Improvement

3.1. Software Process Assessment Models
3.2. Software Process Assessment Methods
3.3. Software Process Improvement Models
3.4. Continuous and Staged Software Process Ratings

4. Software Measurement

4.1. Software Process and Product Measurement
4.2. Quality of Measurement Results
4.3. Software Information Models
4.4. Software Process Measurement Techniques

5. Software Engineering Process Tools

Chapter 9: Software Engineering Models and Methods

1. Modeling

1.1. Modeling Principles
1.2. Properties and Expression of Models
1.3. Syntax, Semantics, and Pragmatics
1.4. Preconditions, Postconditions, and Invariants

2. Types of Models

2.1. Information Modeling
2.2. Behavioral Modeling
2.3. Structure Modeling

3. Analysis of Models

3.1. Analyzing for Completeness
3.2. Analyzing for Consistency
3.3. Analyzing for Correctness
3.4. Traceability
3.5. Interaction Analysis

4. Software Engineering Methods

4.1. Heuristic Methods
4.2. Formal Methods
4.3. Prototyping Methods
4.4. Agile Methods

Chapter 10: Software Quality

1. Software Quality Fundamentals

1.1. Software Engineering Culture and Ethics
1.2. Value and Costs of Quality
1.3. Models and Quality Characteristics
1.4. Software Quality Improvement
1.5. Software Safety

2. Software Quality Management Processes

2.1. Software Quality Assurance
2.2. Verification & Validation
2.3. Reviews and Audits

3. Practical Considerations

3.1. Software Quality Requirements
3.2. Defect Characterization
3.3. Software Quality Management Techniques
3.4. Software Quality Measurement

4. Software Quality Tools

Chapter 11: Software Engineering Professional Practice

1. Professionalism

1.1. Accreditation, Certification, and Licensing
1.2. Codes of Ethics and Professional Conduct
1.3. Nature and Role of Professional Societies
1.4. Nature and Role of Software Engineering Standards
1.5. Economic Impact of Software
1.6. Employment Contracts
1.7. Legal Issues
1.8. Documentation
1.9. Tradeoff Analysis

2. Group Dynamics and Psychology

2.1. Dynamics of Working in Teams/Groups
2.2. Individual Cognition
2.3. Dealing with Problem Complexity
2.4. Interacting with Stakeholders
2.5. Dealing with Uncertainty and Ambiguity
2.6. Dealing with Multicultural Environments

3. Communication Skills

3.1. Reading, Understanding, and Summarizing
3.2. Writing
3.3. Team and Group Communication
3.4. Presentation Skills

Chapter 12: Software Engineering Economics

1. Software Engineering Economics Fundamentals

1.1. Finance
1.2. Accounting
1.3. Controlling
1.4. Cash Flow
1.5. Decision-Making Process
1.6. Valuation
1.7. Inflation
1.8. Depreciation
1.9. Taxation
1.10. Time-Value of Money
1.11. Efficiency
1.12. Effectiveness
1.13. Productivity

2. Life Cycle Economics

2.1. Product
2.2. Project
2.3. Program
2.4. Portfolio
2.5. Product Life Cycle
2.6. Project Life Cycle
2.7. Proposals
2.8. Investment Decisions
2.9. Planning Horizon
2.10. Price and Pricing
2.11. Cost and Costing
2.12. Performance Measurement
2.13. Earned Value Management
2.14. Termination Decisions
2.15. Replacement and Retirement Decisions

3. Risk and Uncertainty

3.1. Goals, Estimates, and Plans
3.2. Estimation Techniques
3.3. Addressing Uncertainty
3.4. Prioritization
3.5. Decisions under Risk
3.6. Decisions under Uncertainty

4. Economic Analysis Methods

4.1. For-Profit Decision Analysis
4.2. Minimum Acceptable Rate of Return
4.3. Return on Investment
4.4. Return on Capital Employed
4.5. Cost-Benefit Analysis
4.6. Cost-Effectiveness Analysis
4.7. Break-Even Analysis
4.8. Business Case
4.9. Multiple Attribute Evaluation
4.10. Optimization Analysis

5. Practical Considerations

5.1. The "Good Enough" Principle
5.2. Friction-Free Economy
5.3. Ecosystems
5.4. Offshoring and Outsourcing

Chapter 13: Computing Foundations

1. Problem Solving Techniques

1.1. Definition of Problem Solving
1.2. Formulating the Real Problem
1.3. Analyze the Problem
1.4. Design a Solution Search Strategy
1.5. Problem Solving Using Programs

2. Abstraction

2.1. Levels of Abstraction
2.2. Encapsulation
2.3. Hierarchy
2.4. Alternate Abstractions

3. Programming Fundamentals

3.1. The Programming Process
3.2. Programming Paradigms

4. Programming Language Basics

4.1. Programming Language Overview
4.2. Syntax and Semantics of Programming Languages
4.3. Low-Level Programming Languages
4.4. High-Level Programming Languages
4.5. Declarative vs. Imperative Programming Languages

5. Debugging Tools and Techniques

5.1. Types of Errors
5.2. Debugging Techniques
5.3. Debugging Tools

6. Data Structure and Representation

6.1. Data Structure Overview
6.2. Types of Data Structure
6.3. Operations on Data Structures

7. Algorithms and Complexity

7.1. Overview of Algorithms
7.2. Attributes of Algorithms
7.3. Algorithmic Analysis
7.4. Algorithmic Design Strategies
7.5. Algorithmic Analysis Strategies

8. Basic Concept of a System

8.1. Emergent System Properties
8.2. Systems Engineering
8.3. Overview of a Computer System

9. Computer Organization

9.1. Computer Organization Overview
9.2. Digital Systems
9.3. Digital Logic
9.4. Computer Expression of Data
9.5. The Central Processing Unit (CPU)
9.6. Memory System Organization
9.7. Input and Output (I/O)

10. Compiler Basics

10.1. Compiler/Interpreter Overview
10.2. Interpretation and Compilation
10.3. The Compilation Process

11. Operating Systems Basics

11.1. Operating Systems Overview
11.2. Tasks of an Operating System
11.3. Operating System Abstractions
11.4. Operating Systems Classification

12. Database Basics and Data Management

12.1. Entity and Schema
12.2. Database Management Systems (DBMS)
12.3. Database Query Language
12.4. Tasks of DBMS Packages
12.5. Data Management
12.6. Data Mining

13. Network Communication Basics

13.1. Types of Network
13.2. Basic Network Components
13.3. Networking Protocols and Standards
13.4. The Internet
13.5. Internet of Things
13.6. Virtual Private Network (VPN)

14. Parallel and Distributed Computing

14.1. Parallel and Distributed Computing Overview
14.2. Difference between Parallel and Distributed Computing
14.3. Parallel and Distributed Computing Models
14.4. Main Issues in Distributed Computing

15. Basic User Human Factors

15.1. Input and Output
15.2. Error Messages
15.3. Software Robustness

16. Basic Developer Human Factors

16.1. Structure
16.2. Comments

17. Secure Software Development and Maintenance

17.1. Software Requirements Security
17.2. Software Design Security
17.3. Software Construction Security
17.4. Software Testing Security
17.5. Build Security into Software Engineering Process
17.6. Software Security Guidelines

Chapter 14: Mathematical Foundations

1. Set, Relations, Functions

1.1. Set Operations
1.2. Properties of Set
1.3. Relation and Function

2. Basic Logic

2.1. Propositional Logic
2.2. Predicate Logic

3. Proof Techniques

3.1. Methods of Proving Theorems

4. Basics of Counting

5. Graphs and Trees

5.1. Graphs
5.2. Trees

6. Discrete Probability

7. Finite State Machines

8. Grammars

8.1. Language Recognition

9. Numerical Precision, Accuracy, and Errors

10. Number Theory

10.1. Divisibility
10.2. Prime Number, GCD

11. Algebraic Structures

11.1. Group
11.2. Rings

Chapter 15: Engineering Foundations

1. Empirical Methods and Experimental Techniques

1.1. Designed Experiment
1.2. Observational Study
1.3. Retrospective Study

2. Statistical Analysis

2.1. Unit of Analysis (Sampling Units), Population, and Sample
2.2. Concepts of Correlation and Regression

3. Measurement

3.1. Levels (Scales) of Measurement
3.2. Direct and Derived Measures
3.3. Reliability and Validity
3.4. Assessing Reliability

4. Engineering Design

4.1. Engineering Design in Engineering Education
4.2. Design as a Problem Solving Activity
4.3. Steps Involved in Engineering Design

5. Modeling, Simulation, and Prototyping

5.1. Modeling
5.2. Simulation
5.3. Prototyping

6. Standards

7. Root Cause Analysis

7.1. Techniques for Conducting Root Cause Analysis
 

 

Get the SWEBOK Guide

SWEBOK News

SWEBOK V3.0 Now Available
Version 3.0 of the SWEBOK(R) Guide has received all necessary approvals and is now available .PDF and paperback formats.

» Read more

More information
This field is mandatory.
This field is mandatory.
This field is mandatory.
This field is mandatory.