A knowledge collection for software engineering
The development of software is a broad field. The Guide to the Software Engineering Body of Knowledge – abbreviated SWEBOK – is a collection of software engineering knowledge that attempts to unify the discipline of software engineering. The Guide is published by the IEEE Computer Society, a society of the IEEE (Institute of Electrical and Electronics Engineers). Currently SWEBOK version 3.0 is available. It was published in 2014 and considers more than 1,500 submissions from about 150 reviewers from 33 countries.
Compared to other knowledge or best practice collections such as the Project Management Body of Knowledge (PMBOK) or the Business Analysis Body of Knowledge (BABOK), SWEBOK is less well known. One reason – especially in contrast to the PMBOK – could be the acceptance of the knowledge collection: PMBOK is approved as a standard by ANSI and also the IEEE has recognised the work as a standard (IEEE Std 1490-2003). The SWEBOK Guide on the other hand has “only” gained recognition as ISO Technical Report 19759.
As a guideline, the SWEBOK has the following objectives:
- Presentation, structuring and unification of the discipline Software Engineering
- Promotion of a globally uniform view of software development
- Differentiation of software engineering from other disciplines
- Creating a foundation for training materials, curriculum development, and certification of software engineers
These goals are at least considered very ambitious, if not unattainable. Software technology is developing rapidly. Every day there are new techniques, tools or devices; it is almost impossible to establish a worldwide uniform view.
SWEBOK knowledge areas
In the current version, the two authors Pierre Bourque of the École de technologie supérieure (ÉTS) and Richard E. (Dick) Fairley of Software and Systems Engineering Associates (S2EA) list a total of 15 knowledge areas:
- Software Requirements including software requirements fundamentals, requirements process, requirements elicitation, analysis, specification, validation, and practical considerations and tools.
- Software Design including software design fundamentals, key issues, software structure and architecture, user interface design, design notations as well as strategies and methods, …
- Software Construction with fundamentals, technologies and practical considerations …
- Software Testing with fundamentals, test levels and techniques, measures, process and tools.
- Software Maintenance with fundamentals, key issues, process, techniques and tools.
- Software Configuration Management including process, identification, control, auditing etc.
- Software Engineering Management with initiation and scope definition, project planning, enactment, review and evaluation …
- Software Engineering Process including definition, life cycles, assessment and improvement, as well as measurement and tools.
- Software Engineering Models and Methods including modeling, types of models, analysis and methods.
- Software Quality with fundamentals, processes, tools and practical considerations …
- Software Engineering Professional Practice with certification, code of ethics, group dynamics, etc.
- Software Engineering Economics with fundamentals, risks and uncertainties, outsourcing, etc.
- Computing Foundations
- Mathematical Foundations
- Engineering Foundations