SWEBOK

The Software Engineering Body of Knowledge (SWEBOK) is an effort, led by the IEEE Computer Society, to catalogue the established knowledge that constitutes the software engineering discipline. Its product is a reference work, the SWEBOK Guide, that names and bounds the knowledge areas a competent software engineer is expected to know and that other standards, curricula, and certification schemes can refer to. The Guide is intended as a map of the discipline rather than a textbook or a method: it points to the topics a practice rests on, and to the literature that develops each, without itself teaching them.

Origin and purpose

The project began in 1998 with the appointment of a steering committee by the IEEE Computer Society, prompted by two concerns. The first was the long-running question of whether software engineering is a genuine engineering discipline, and if so what its body of knowledge is – a question that acquired practical weight as jurisdictions began to license software engineers and universities sought accreditation for software engineering programmes. The second was the need for a stable reference that certification bodies, curriculum designers, and industry could cite, in place of the ad hoc reading lists each had been maintaining. The Guide was to make the discipline’s scope explicit and consensual, the way a body of knowledge does for the established engineering professions.

The first edition of the SWEBOK Guide was published in 2004. It was adopted as ISO/IEC Technical Report 19759 in 2005, the form in which it is referenced by other ISO/IEC software lifecycle standards. Revised editions followed in 2014 (V3) and 2024 (V4), each expanding and restructuring the knowledge areas in response to how the field had moved.

The knowledge areas

V3 of the Guide organizes software engineering into fifteen knowledge areas (KAs). Each is a coherent slice of the discipline, with its own literature and specialists, and each is the subject of a chapter that defines its scope, decomposes it into topics, and gives references. The KAs are grouped into the discipline’s own core, the cross-cutting management and economics areas, and the underlying foundations drawn from computer science and engineering.

  • Software requirements, covering requirements engineering – elicitation, analysis, specification, and validation of requirements – and the production of a system requirements specification (SRS).
  • Software design, the part of architecture and design concerned with the structure of the software itself – software architecture at the system level, system design down to detailed design.
  • Software construction, the activity of writing code – coding, refactoring, unit testing, and the low-level decisions that turn a design into a working system.
  • Software testing, the testing disciplines – test design, test levels, test types, and the related measurement.
  • Software maintenance, the post-delivery activities of correction, adaptation, and enhancement that keep a system useful as its environment moves on.
  • Software configuration management, the configuration management of artifacts and their changes, built on version control.
  • Software engineering management, the project-level activities – planning, estimation, risk management, and control – that frame an engineering effort.
  • Software engineering process, the definition, measurement, and improvement of the process itself, the concern of frameworks such as the Capability Maturity Model.
  • Software engineering models and methods, the modeling notations and development methods, from structured analysis through spiral and agile approaches.
  • Software quality, the software quality disciplines and the quality assurance activities that pursue them.
  • Software engineering economics, the decision techniques – cost estimation, return on investment, valuation of options – used to make engineering choices under budget and schedule constraints.

The remaining four areas are the foundations the discipline draws on: computing foundations, mathematical foundations, engineering foundations, and (in V3) a separate area on professional practice and economics. V4 reorganizes the list – merging, splitting, and renaming areas to reflect how the field is now taught – but the intent is unchanged: to enumerate the knowledge a software engineer is expected to command.

Use and reception

The SWEBOK Guide is most cited as a reference rather than read end to end. It underpins the IEEE Computer Society’s Certified Software Development Associate and Professional credentials, is used by accreditation bodies such as ABET to evaluate software engineering programmes, and is referenced by ISO/IEC standards that need a stable definition of the discipline’s scope. Its taxonomy has been adopted, with local variations, by national bodies and by the SEMAT initiative’s effort to give the discipline a shared kernel.

The Guide has its critics. The knowledge areas are drawn conservatively, from what was already established when each edition was drafted, so the catalogue trails the frontier of practice – agile methods, DevOps, and machine-learning engineering arrived in the discipline well before they arrived in the SWEBOK KAs. The area boundaries are also contestable: the split between requirements, design, and construction maps a waterfall-shaped lifecycle onto work that, in practice, is interleaved and iterative, and several areas overlap with their neighbours in ways the Guide acknowledges but does not fully resolve. The software craftsmanship movement makes the deeper criticism that cataloguing knowledge misses the point: that the quality of software is set by the skill and judgement of the people who make it, which a body of knowledge can list prerequisites for but cannot substitute for.

See also

References

  • Bourque, P. and Fairley, R. E., eds. (2014). SWEBOK V3.0: Guide to the Software Engineering Body of Knowledge. IEEE Computer Society.
  • ISO/IEC (2005). ISO/IEC TR 19759:2005 — Software Engineering Body of Knowledge (SWEBOK). International Organization for Standardization.
  • Wahyudin, D., Ramler, R., and Biffl, S. (2008). "A Framework for the Assessment of Software Engineering Body of Knowledge (SWEBOK) Coverage in ISO/IEC Software Life Cycle Process Standards". EUROMICRO Conference on Software Engineering and Advanced Applications.