# Software Engineering Body of Knowledge

The Software Engineering Body of Knowledge (SWEBOK (/ˈswiːˌbɒk/ SWEE-bok)) refers to the collective knowledge, skills, techniques, methodologies, best practices, and experiences accumulated within the field of software engineering over time. A baseline for this body of knowledge is presented in the Guide to the Software Engineering Body of Knowledge, also known as the SWEBOK Guide, an ISO/IEC standard originally recognized as ISO/IEC TR 19759:2005 and later revised by ISO/IEC TR 19759:2015. The SWEBOK Guide serves as a compendium and guide to the body of knowledge that has been developing and evolving over the past decades.
The SWEBOK Guide has been created through cooperation among several professional bodies and members of industry and is published by the IEEE Computer Society (IEEE), from which it can be accessed for free. In late 2013, SWEBOK V3 was approved for publication and released. In 2016, the IEEE Computer Society began the SWEBOK Evolution effort to develop future iterations of the body of knowledge. The SWEBOK Evolution project resulted in the publication of SWEBOK Guide version 4 in October 2024.

## SWEBOK Version 3

The published version of SWEBOK V3 has the following 15 knowledge areas (KAs) within the field of software engineering:
* Software requirements
* Software design
* Software construction
* Software testing
* Software maintenance
* Software configuration management
* Software engineering management
* Software engineering process
* Software engineering models and methods
* Software quality
* Software engineering professional practice
* Software engineering economics
* Computing foundations
* Mathematical foundations
* Engineering foundations
It also recognized, but did not define, these related disciplines:
* Computer engineering
* Systems engineering
* Project management
* Quality management
* General management
* Computer science
* Mathematics

## 2004 edition of the SWEBOK

The 2004 edition of the SWEBOK Guide, known as SWEBOK 2004, defined ten knowledge areas (KAs) within the field of software engineering:
* Software requirements
* Software design
* Software construction
* Software testing
* Software maintenance
* Software configuration management
* Software engineering management (engineering management)
* Software engineering process
* Software engineering tools and methods
* Software quality
The following disciplines are also defined as being related to software engineering:
* Computer engineering
* Computer science
* Management
* Mathematics
* Project management
* Quality management
* Software ergonomics (cognitive ergonomics)
* Systems engineering

## Similar efforts

A similar effort to define a body of knowledge for software engineering is the "Computing Curriculum Software Engineering (CCSE)," officially named Software Engineering 2004 (SE2004). The curriculum largely overlaps with SWEBOK 2004 since the latter has been used as one of its sources, although it is more directed towards academia. Whereas the SWEBOK Guide defines the software engineering knowledge that practitioners should have after four years of practice, SE2004 defines the knowledge that an undergraduate software engineering student should possess upon graduation (including knowledge of mathematics, general engineering principles, and other related areas). SWEBOK V3 aims to address these intersections.