The objectives of the Guide to the Software Engineering Body of Knowledge project are to
- characterize the contents of the Software Engineering Body of Knowledge;
- provide a topical access to the Software Engineering Body of Knowledge;
- promote a consistent view of software engineering worldwide;
- clarify the place of, and set the boundary of, software engineering with respect to other disciplines such as computer science, project management, computer engineering and mathematics;
- provide a foundation for curriculum development and individual certification and licensing material.
The intended audience for the Guide to the Software Engineering Body of Knowledge includes
- public and private organizations wishing to use and promote a consistent view of software engineering internally, notably when defining education and training, job classification and performance evaluation policies;
- practicing software engineers;
- makers of public policy engaged in defining software engineering licensing rules and guidelines for professionals;
- professional societies engaged in defining software engineering university program accreditation guidelines, and certification rules and guidelines for professionals;
- software engineering students learning the discipline;
- educators and trainers engaged in defining curricula and course content.
The following principles underlie the development approach for this project:
- transparency: the development process is itself published and fully documented;
- consensus-building: the development process is designed to build, over time, consensus in industry, professional societies and standards-setting bodies, among practicing software developers and in academia.
- wide distribution: the Guide will remain free at least in one format to ensure as wide a distribution and dissemination as possible.
Consensus on a Core Body Knowledge Is Crucial
In spite of 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 curricula and the licensing and certification of practicing professionals are taken very seriously. These activities are seen as critical to the constant upgrading of professionals and, hence, the improvement of the level of professional practice. Recognizing a core body of knowledge is pivotal to the development and accreditation of university curricula and the licensing and certification of professionals.
Achieving consensus by the profession on a core body of knowledge is a key milestone in all disciplines and has been identified by the IEEE Computer Society as crucial for the evolution of software engineering towards professional status. The 2004 Guide, written under the auspices of the Professional Activities Board, is part of a multiyear project designed to reach such a consensus. The ongoing SWEBOK project and its next milestone—the SWEBOK Version 3—will continue to redefine “accepted knowledge” and add new areas to the Guide.
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.
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, have to 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.