Software Engineering Body of Knowledge (SWEBOK)
IEEE Blended Learning Program > SWEBOK
About SWEBoK
The Guide to the Software Engineering Body of Knowledge (SWEBOK Guide), published by the IEEE Computer Society (IEEE CS), reflects the current state of generally accepted, consensus-driven knowledge derived from the interaction between software engineering theory and practice. Its 18 knowledge areas (KAs) summarize key concepts and include a reference list for detailed information.
SWEBOK Guide V4.0 introduces new topics, updates existing ones, and retires outdated subjects. Agile and DevOps have been notably integrated into several KAs due to their widespread adoption since the previous edition. Additionally, three new knowledge areas—Software Architecture, Software Engineering Operations, and Software Security—have been added to enhance the foundational knowledge in software engineering. The new Guide also aims to better align related disciplines by reorganizing and renaming some content within different knowledge areas.
The SWEBOK Guide serves multiple purposes:
- Defines the contents of the software engineering discipline;
- Promotes a consistent understanding of software engineering worldwide;
- Clarifies the boundaries of software engineering in relation to other disciplines
- Provides a foundation for training materials and curriculum development
- Supports certification and licensing of software engineers
- Reflects current practices and integrates emerging technologies
The principles guiding the development of this project include
- Transparency: The development process is fully documented and publicly accessible.
- Consensus-building: The process is designed to gradually build consensus among industry professionals, academic institutions, and standards-setting bodies.
- Wide distribution: The Guide will remain freely accessible in at least one format to ensure it reaches a broad audience.
Core Objectives For SWEBOK V4.0
- Promoting a consistent view of software engineering worldwide
- Specifying the scope of, and clarifying the place of software engineering concerning other disciplines such as computer science, project management, computer engineering, and mathematics
- Characterizing the contents of the software engineering discipline
- Providing topical access to the Software Engineering Body of Knowledge
- Providing a foundation for curriculum development and individual certification and licensing material
Who Benefits From the SWEBOK Framework?
- Public and Private Organizations: Those aiming to establish and promote a consistent understanding of software engineering within their operations, particularly when setting education and training standards, job classifications, and performance evaluation policies
- Practicing Software Engineers: Individuals actively working in the field of software engineering who can use the Guide as a reference for best practices and professional development;
- Policymakers: Those involved in creating public policy related to software engineering, including the development of licensing rules and professional guidelines;
- Professional Societies: Organizations that define accreditation standards for university software engineering programs, as well as certification rules and guidelines for professionals in the field
- Software Engineering Students: Individuals studying software engineering who can use the Guide to deepen their understanding of the discipline
- Educators and Trainers: Those responsible for developing curricula and course content in software engineering programs
An Evolving Body of Knowledge
he committee responsible for the 2014 SWEBOK Guide recognized the need for future revisions and outlined a process for continuous updates. The reasons for this are:
- Evolving Practices: Software engineering practices are constantly changing due to the introduction of new tools, methods, and types of software. What was once considered experimental may now be accepted as standard practice. While the Guide emphasizes widely accepted, enduring practices, the software environment can shift dramatically due to changes in business and job requirements. For example, the importance of security in good software development has become increasingly clear in recent years. Economic factors can also influence which methods are recognized as best practices in software engineering.
- Emerging Viewpoints: Other IEEE Computer Society products, such as the Certified Software Development Professional (CSDP) exam and the Software Engineering 2004 curriculum guide, offer slightly different perspectives on the body of knowledge. It’s important to examine these differences and align SWEBOK Version 4 with them where appropriate. For instance, it would be logical to establish a core set of references that these products share. Comparing these efforts has also highlighted the need for new knowledge areas and revisions to existing ones.
- Expanding Knowledge: Since the first SWEBOK Guide was published in 2004, many of the books it cited have been updated, and new articles have been added to the body of knowledge. SWEBOK Version 4 reflects these changes.
SWEBOK Overview
Consensus on a Core Body of Knowledge Is Crucial
Despite the millions of software professionals worldwide and the ubiquitous presence of software in our society, software engineering has relatively recently reached the status of a legitimate engineering discipline and a recognized profession.
In engineering, the accreditation of university programs and the licensing and certification of professionals are regarded as essential. These processes are vital for the continuous development of professionals and the overall enhancement of the profession’s standards. Establishing a core body of knowledge is fundamental to the creation and accreditation of university curricula, as well as the licensing and certification of professionals.
Reaching a consensus on this core body of knowledge is a significant milestone in any discipline. The IEEE Computer Society has identified this as crucial for advancing software engineering towards full professional recognition. The SWEBOK Guide, developed under the Professional Activities Board, is part of a long-term project aimed at achieving this consensus. The ongoing SWEBOK project, with its upcoming milestone—SWEBOK Version 5.0—will continue to redefine “accepted knowledge” and introduce new areas of focus.
Focus on Generally Accepted Knowledge
The software engineering body of knowledge is an all-inclusive term that describes the sum of knowledge within the profession of software engineering. Since it is usually not possible to put the full body of knowledge of even an emerging discipline, such as software engineering, into a single document, there is a need for a Guide to the Software Engineering Body of Knowledge. This Guide will seek to identify and describe that subset of the body of knowledge that is generally accepted, even though software engineers must be knowledgeable not only in software engineering, but also, of course, in other related disciplines.
What do we mean by “generally accepted knowledge”?
To better illustrate what “generally accepted knowledge” is relative to other types of knowledge, the figure below proposes a draft three-category schema for classifying knowledge.
Categories of Knowledge
The Project Management Institute in its Guide to the Project Management Body of Knowledge defines “generally accepted” knowledge for project management in the following manner:
“Generally accepted” does not mean that the knowledge and practices described are or should be applied uniformly on all projects; the project management team is always responsible for determining what is appropriate for any given project.
The Guide to the Project Management Body of Knowledge is now an IEEE Standard, IEEE 1490-2003.
The Industrial Advisory Board of the SWEBOK Guide better defines “generally accepted” as knowledge to be included in the study material of a software engineering licensing exam that a graduate would pass after completing four years of work experience. These two definitions should be seen as complementary.
Knowledge Area Editors are also expected to be somewhat forward-looking in their interpretation by taking into consideration not only what is “generally accepted” today, but what they expect will be “generally accepted” in a 3 to 5 year timeframe.
Software Engineering Body of Knowledge and Curriculum are Not the Same
Software engineers must not only be knowledgeable in what is specific to their discipline, but they also, of course, must know a lot more. The goal of this initiative is not, however, to inventory everything that software engineers should know, but to identify what forms the core of software engineering. It is the responsibility of other organizations and initiatives involved in the licensing and certification of professionals and the development of accreditation criteria and curricula to define what a software engineer must know outside software engineering. We believe that a very clear distinction must be made between the software engineering body of knowledge and the contents of software engineering curricula.
Table of Content
Chapter 1: Software Requirements Fundamentals
1. Software Requirements Fundamentals
2. Requirements Elicitation
3. Requirements Analysis
4. Requirements Specification
5. Requirements Validation
6. Requirements Management Activities
7. Practical Considerations
8. Software Requirements Tools
Chapter 2. Software Architecture
1. Software Architecture Fundamentals
2. Software Architecture Description
3. Software Architecture Process
4. Software Architecture Evaluation
Chapter 3: Software Design
1. Software Design Fundamentals
2. Software Design Processes
3. Software Design Qualities
4. Recording Software Designs
5. Software Design Strategies and Methods
6. Software Design Quality Analysis and Evaluation
Chapter 4: Software Construction
1. Software Construction Fundamentals
2. Managing Construction
3. Practical Considerations
4. Construction Technologies
5. Software Construction Tools
Chapter 5: Software Testing Fundamentals
1. Software Testing Fundamentals
2. Test Levels
3. Test Techniques
4. Test-Related Measures
5. Test Process
6. Software Testing in the Development Processes and the Application Domains
7. Testing of and Testing Through Emerging Technologies
8. Software Testing Tools
Chapter 6: Software Engineering Operations
1. Software Engineering Operations Fundamentals
2. Software Engineering Operations Planning
3. Software Engineering Operations Delivery
4. Software Engineering Operations Control
5. Practical Considerations
6. Software Engineering Operations Tools
Chapter 7: Software Maintenance
1. Software Maintenance Fundamentals
2. Key Issues in Software Maintenance
3. Software Maintenance Processes
4. Software Maintenance Techniques
5. Software Maintenance Tools
Chapter 8: Software Configuration Management
1. Management of the SCM Process
2. Software Configuration Identification
3. Software Configuration Change Control
4. Software Configuration Status Accounting
5. Software Configuration Auditing
6. Software Release Management and Delivery
7. Software Configuration Management Tools
Chapter 9: Software Engineering Management
1. Initiation and Scope Definition
2. Software Project Planning
3. Software Project Execution
4. Review and Evaluation
5. Closure
6. Software Engineering Measurement
7. Software Engineering Management Tools
Chapter 10: Software Engineering Process
1. Software Engineering Process Fundamentals
2. Life Cycles
3. Software Process Assessment and Improvement
Chapter 11: Software Engineering Models and Methods
1. Modeling
2. Types of Models
3. Analysis of Models
4. Software Engineering Methods
Chapter 12: Software Quality
1. Software Quality Fundamentals
2. Software Quality Management Process
3. Software Quality Assurance Process
4. Software Quality Tools
Chapter 13: Software Security
1. Software Security Fundamentals
2. Security Management and Organization
3. Software Security Engineering and Processes
4. Security Engineering for Software Systems
5. Software Security Tools
6. Domain-Specific Software Security
Chapter 14: Software Engineering Professional Practice
1. Professionalism
2. Group Dynamics and Psychology
3. Communication Skills
Chapter 15: Software Engineering Economics
1. Software Engineering Economics Fundamentals
2. The Engineering Decision-Making Process
3. For-Profit Decision-Making
4. Nonprofit Decision-Making
5. Present Economy Decision-Making
6. Multiple-Attribute Decision-Making
7. Identifying and Characterizing Intangible Assets
8. Estimation
9. Practical Considerations
10. Related Concepts
Chapter 16: Computing Foundations
1. Basic Concepts of a System or Solution
2. Computer Architecture and Organization
3. Data Structures and Algorithms
4. Programming Fundamentals and Languages
5. Operating Systems
6. Database Management
7. Computer Networks and Communications
8. User and Developer Human Factors
9. Artificial Intelligence and Machine Learning
Chapter 17: Mathematical Foundations
1. Basic Logic
2. Proof Techniques
3. Set, Relation, Function
4. Graph and Tree
5. Finite-State Machine
6. Grammar
7. Number Theory
8. Basics of Counting
9. Discrete Probability
10. Numerical Precision, Accuracy, and Error
11. Algebraic Structures
12. Engineering Calculus
13. New Advancements
Chapter 18: Engineering Foundations
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.