Software Engineering - Guide to the software engineering body of knowledge (SWEBOK)

ISO/IEC TR 19759:2015 characterizes the boundaries of the software engineering discipline and provides topical access to the literature supporting that discipline.

Ingénierie du logiciel — Guide du corps de connaissance de l'ingénierie du logiciel (SWEBOK)

General Information

Status
Published
Publication Date
27-Sep-2015
Current Stage
6060 - International Standard published
Start Date
28-Sep-2015
Due Date
26-Dec-2015
Completion Date
27-Dec-2014

Relations

Effective Date
06-Jun-2022
Effective Date
11-Oct-2014

Overview

ISO/IEC TR 19759:2015 (SWEBOK V3.0) - Software Engineering: Guide to the Software Engineering Body of Knowledge - is a consensus-based technical report that characterizes the boundaries of the software engineering discipline and provides topical access to the literature that supports it. Published by ISO/IEC (adopted from the IEEE Computer Society SWEBOK Guide V3.0, corrected 2016), this Technical Report is a descriptive, non‑normative resource intended to organize and map the knowledge areas of software engineering.

Key topics

The Guide structures the software engineering body of knowledge into 15 Knowledge Areas (KAs) and includes foundation topics and a Software Engineering Professional Practices KA. Core technical topics explicitly covered include (examples drawn from the Guide):

  • Software Requirements - fundamentals, elicitation, analysis, specification, validation, and tools
  • Software Design - architectural styles, design patterns, UI design, quality analysis, notations
  • Software Construction - coding practices, reuse, integration, construction technologies and tools
  • Software Testing - test levels, techniques, process, measurement and automation tools
  • Software Maintenance - maintenance processes, reengineering, migration and measurement

The Guide also provides:

  • Annotated references and an appendix listing relevant standards for each KA
  • Specifications for KA descriptions to ensure consistent coverage across topics
  • A strong orientation to the normative literature (standards and consensus documents)

Note: as a Technical Report the document does not prescribe specific technical requirements; it catalogs topics, references, and widely accepted practices.

Applications

ISO/IEC TR 19759:2015 (SWEBOK) is practical for:

  • Defining education and training curricula and course content in software engineering
  • Helping professional societies and certification bodies set certification and accreditation criteria
  • Classifying job roles, designing performance evaluations, and specifying development tasks
  • Informing management, policy makers, and licensing bodies about the discipline’s scope
  • Serving as an indexed literature gateway for practitioners seeking authoritative references

Who should use it

  • Software engineers and technical managers seeking a comprehensive topical map
  • Educators, curriculum developers, and academic accreditors
  • Certification bodies, HR teams, and recruiters in software engineering domains
  • Standards committees and practitioners aligning organizational practices with accepted knowledge areas

Related standards

  • SWEBOK V3.0 is produced by the IEEE Computer Society and adopted as ISO/IEC TR 19759; it has close ties to software engineering standards maintained by ISO/IEC JTC 1/SC 7 and IEEE standards committees. For implementation or prescriptive requirements, consult relevant normative standards referenced in the Guide.
Technical report

ISO/IEC TR 19759:2015 - Software Engineering -- Guide to the software engineering body of knowledge (SWEBOK)

English language
336 pages
sale 15% off
Preview
sale 15% off
Preview
Technical report

ISO/IEC TR 19759:2015 - Software Engineering -- Guide to the software engineering body of knowledge (SWEBOK)

English language
336 pages
sale 15% off
Preview
sale 15% off
Preview

Frequently Asked Questions

ISO/IEC TR 19759:2015 is a technical report published by the International Organization for Standardization (ISO). Its full title is "Software Engineering - Guide to the software engineering body of knowledge (SWEBOK)". This standard covers: ISO/IEC TR 19759:2015 characterizes the boundaries of the software engineering discipline and provides topical access to the literature supporting that discipline.

ISO/IEC TR 19759:2015 characterizes the boundaries of the software engineering discipline and provides topical access to the literature supporting that discipline.

ISO/IEC TR 19759:2015 is classified under the following ICS (International Classification for Standards) categories: 35.080 - Software. The ICS classification helps identify the subject area and facilitates finding related standards.

ISO/IEC TR 19759:2015 has the following relationships with other standards: It is inter standard links to ISO 22125-2:2019, ISO/IEC TR 19759:2005. Understanding these relationships helps ensure you are using the most current and applicable version of the standard.

You can purchase ISO/IEC TR 19759:2015 directly from iTeh Standards. The document is available in PDF format and is delivered instantly after payment. Add the standard to your cart and complete the secure checkout process. iTeh Standards is an authorized distributor of ISO standards.

Standards Content (Sample)


TECHNICAL ISO/IEC TR
REPORT 19759
Second edition
2015-10-01
Software Engineering — Guide to
the software engineering body of
knowledge (SWEBOK)
Ingénierie du logiciel — Guide du corps de connaissance de
l’ingénierie du logiciel (SWEBOK)
Reference number
©
ISO/IEC 2015
© ISO/IEC 2015, Published in Switzerland
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form
or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior
written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of
the requester.
ISO copyright office
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2015 – All rights reserved

Contents Page
Foreword .iv

Introduction.v

1 Scope.1

2 Recommendations .1

3 Revision of the IEEE Computer Society Publication .1

4 Publication .1

© ISO/IEC 2015 – All rights reserved iii

Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are
members of ISO or IEC participate in the development of International Standards through technical
committees established by the respective organization to deal with particular fields of technical
activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other
international organizations, governmental and non‐governmental, in liaison with ISO and IEC, also
take part in the work. In the field of information technology, ISO and IEC have established a joint
technical committee, ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for
the different types of document should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject
of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent
rights. Details of any patent rights identified during the development of the document will be in the
Introduction and/or on the ISO list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does
not constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity
assessment, as well as information about ISO's adherence to the WTO principles in the Technical
Barriers to Trade (TBT), see the following URL: Foreword — Supplementary information.
This second edition cancels and replaces ISO/IEC TR 19759:2005 which has been technically
revised.
ISO/IEC TR 19759 was prepared by the IEEE Computer Society and was adopted, under a special
“fast‐track procedure”, by Joint Technical Committee ISO/IEC JTC 1, Information technology, in
parallel with its approval by national bodies of ISO and IEC.

iv © ISO/IEC 2015 – All rights reserved

Introduction
The purpose of the Guide to the Software Engineering Body of Knowledge is to provide a consensually validated
characterization of the bounds of the software engineering discipline and to provide a topical access to the Body of
Knowledge supporting that discipline. The Body of Knowledge is subdivided into fifteen software engineering
Knowledge Areas (KA) providing an outline of topics. The descriptions in the KAs are designed to discriminate
among the various important concepts, permitting readers to find their way quickly to subjects of interest. Upon
finding a subject, readers are referred to key papers or books selected because they succinctly present the
knowledge.
Publication of the 2004 version of this Guide to the Software Engineering Body of Knowledge (SWEBOK
2004)—adopted as ISO/IEC TR 19759:2005—was a major milestone in establishing software engineering as
a recognized engineering discipline. The goal in developing this update to SWEBOK is to improve the
currency, readability, consistency, and usability of the Guide. All knowledge areas (KAs) have been updated
to reflect changes in software engineering since publication of SWEBOK 2004. Four new foundation KAs and
a Software Engineering Professional Practices KA have been added. The Software Engineering Tools and
Methods KA has been revised as Software Engineering Models and Methods. Software engineering tools is
now a topic in each of the KAs. Three appendices provide the specifications for the KA description, an
annotated set of relevant standards for each KA, and a listing of the references cited in the Guide.
An emphasis on engineering practice leads the Guide toward a strong relationship with the normative
literature. Most of the computer science, information technology and software engineering literature provides
information useful to software engineers, but a relatively small portion is normative. A normative document
prescribes what an engineer should do in a specified situation rather than providing information that might be
helpful. The normative literature is validated by consensus formed among practitioners and is concentrated in
standards and related documents. From the beginning, the SWEBOK project was conceived as having a
strong relationship to the normative literature of software engineering. The two major standards bodies for
software engineering (IEEE Computer Society Software and Systems Engineering Standards Committee and
ISO/IEC JTC1/SC7) cooperated in the project.
The Guide is oriented toward a variety of audiences, all over the world. It aims to serve public and private
organizations in need of a consistent view of software engineering for defining education and training
requirements, classifying jobs, developing performance evaluation policies or specifying software
development tasks. It also addresses practicing, or managing, software engineers and the officials responsible
for making public policy regarding licensing and professional guidelines. In addition, professional societies and
educators defining the certification rules, accreditation policies for university curricula, and guidelines for
professional practice will benefit from the SWEBOK Guide, as well as the students learning the software
engineering profession and educators and trainers engaged in defining curricula and course content.
v
© ISO/IEC 2015 – All rights reserved

TECHNICAL REPORT ISO/IEC TR 19759:2015(E)
Software Engineering — Guide to the Software Engineering
Body of Knowledge (SWEBOK) — Version 3.0
1 Scope
This Technical report characterizes the boundaries of the software engineering discipline and provides topical
access to the literature supporting that discipline.
2 Recommendations
As a Technical Report, this document does not make technical recommendations. The information provided is
that contained in the following publication (reproduced on the following pages), which is adopted as a
Technical Report:
Guide to the Software Engineering Body of Knowledge (SWEBOK) V3.0, IEEE Computer Society
3 Revision of the IEEE Computer Society Publication
It has been agreed with the IEEE Computer Society that ISO/IEC JTC 1/SC 7 will be consulted in the event of
any revision or amendment of this IEEE Computer Society publication. Consultation will be accomplished by
the existing Category A liaison relationship between SC 7 and IEEE Computer Society.
4 Publication
The report of the IEEE Computer Society appears on the following pages.
© ISO/IEC 201� – All rights reserved 1

© ISO/IEC 2015 – All rights reserved

Guide to the Software Engineering
Body of Knowledge
Version 3.0 ®
SWEBOK
A Project of the IEEE Computer Society
© ISO/IEC 2015 – All rights reserved

Guide to the Software Engineering
Body of Knowledge
Version 3.0
Editors
Pierre Bourque, École de technologie supérieure (ÉTS)
Richard E. (Dick) Fairley, Software and Systems Engineering Associates (S2EA)
© ISO/IEC 2015 – All rights reserved

Copyright and Reprint Permissions. Educational or personal use of this material is permitted without fee provided such copies
1) are not made for profit or in lieu of purchasing copies for classes, and that this notice and a full citation to the original work
appear on the first page of the copy and 2) do not imply IEEE endorsement of any third-party products or services. Permission
to reprint/republish this material for commercial, advertising or promotional purposes or for creating new collective works for
resale or redistribution must be obtained from IEEE by writing to the IEEE Intellectual Property Rights Office, 445 Hoes Lane,
Piscataway, NJ 08854-4141 or pubs-permissions@ieee.org.
Reference to any specific commercial products, process, or service does not imply endorsement by IEEE. The views and opin-
ions expressed in this work do not necessarily reflect those of IEEE.
IEEE makes this document available on an “as is” basis and makes no warranty, express or implied, as to the accuracy, capabil-
ity, efficiency merchantability, or functioning of this document. In no event will IEEE be liable for any general, consequential,
indirect, incidental, exemplary, or special damages, even if IEEE has been advised of the possibility of such damages.
Paperback ISBN-10: 0-7695-5166-1
Paperback ISBN-13: 978-0-7695-5166-1
Digital copies of SWEBOK Guide V3.0 may be downloaded free of charge for personal and academic use via www.swebok.org.
IEEE Computer Society Staff for This Publication
Angela Burgess, Executive Director
Anne Marie Kelly, Associate Executive Director, Director of Governance
Evan M. Butterfield, Director of Products and Services
John Keppler, Senior Manager, Professional Education
Kate Guillemette, Product Development Editor
Dorian McClenahan, Education Program Product Developer
Michelle Phon, Professional Education & Certification Program Coordinator
Jennie Zhu-Mai, Editorial Designer
IEEE Computer Society Products and Services. The world-renowned IEEE Computer Society publishes, promotes, and dis-
tributes a wide variety of authoritative computer science and engineering journals, magazines, conference proceedings, and
professional education products. Visit the Computer Society at www.computer.org for more information.
© ISO/IEC 2015 – All rights reserved

TABLE OF CONTENTS
Foreword xvii
Foreword to the 2004 Edition xix
Editors xxi
Coeditors xxi
Contributing E ditors xxi
Change Control B oard xxi
Knowledge A rea Editors xxiii
Knowledge Area Editors of Previous SWEBOK Versions xxv
Review T eam xxvii
Acknow ledge ments xxix
Professional Activities Board, 2013 Membership xxix
Motions Regarding the Approval of SWEBOK Guide V3.0 xxx
Motions Regarding the Approval of SWEBOK Guide 2004 Version xxx
Introduction to the Guide xxxi
Chapter 1: Software Requirements 1-1
1. Software Requirements Fundamentals 1-1
1.1. DefinitionofaSoftwareRequirement 1-1
1.2. ProductandProcessRequirements 1-2
1.3. FunctionalandNonfunctionalRequirements 1-3
1.4. EmergentProperties 1-3
1.5. QuantifiableRequirements 1-3
1.6. SystemRequirementsandSoftwareRequirements 1-3
2. Requirements Process 1-3
2.1. ProcessModels 1-4
2.2. ProcessActors 1-4
2.3. ProcessSupportandManagement 1-4
2.4. ProcessQualityandImprovement 1-4
3. Requirements Elicitation 1-5
3.1. RequirementsSources 1-5
3.2. ElicitationTechniques 1-6
4. Requirements Analysis 1-7
4.1. RequirementsClassification 1-7
4.2. ConceptualModeling 1-8
4.3. ArchitecturalDesignandRequirementsAllocation 1-9
4.4. RequirementsNegotiation 1-9
4.5. FormalAnalysis 1-10
5. Requirements Specification 1-10
5.1. SystemDefinitionDocument 1-10
5.2. SystemRequirementsSpecification 1-10
5.3. SoftwareRequirementsSpecification 1-11
6. Requirements Validation 1-11
6.1. RequirementsReviews 1-11
6.2. Prototyping 1-12
v
© ISO/IEC 2015 – All rights reserved

vi SWEBOK® Guide V3.0
6.3. ModelValidation 1-12
6.4. AcceptanceTests 1-12
7. Practical Considerations 1-12
7.1. IterativeNatureoftheRequirementsProcess 1-13
7.2. ChangeManagement 1-13
7.3. RequirementsAttributes 1-13
7.4. RequirementsTracing 1-14
7.5. MeasuringRequirements 1-14
8. Software Requirements Tools 1-14
Matrix of Topics vs. Reference Material 1-15
Chapter 2: Software Design 2-1
1. Software Design Fundamentals 2-2
1.1. GeneralDesignConcepts 2-2
1.2. ContextofSoftwareDesign 2-2
1.3. SoftwareDesignProcess 2-2
1.4. SoftwareDesignPrinciples 2-3
2. Key Issues in Software Design 2-3
2.1. Concurrency 2-4
2.2. ControlandHandlingofEvents 2-4
2.3. DataPersistence 2-4
2.4. DistributionofComponents 2-4
2.5. ErrorandExceptionHandlingandFaultTolerance 2-4
2.6. InteractionandPresentation 2-4
2.7. Security 2-4
3. Software Structure and Architecture 2-4
3.1. ArchitecturalStructuresandViewpoints 2-5
3.2. ArchitecturalStyles 2-5
3.3. DesignPatterns 2-5
3.4. ArchitectureDesignDecisions 2-5
3.5. FamiliesofProgramsandFrameworks 2-5
4. User Interface Design 2-5
4.1. GeneralUserInterfaceDesignPrinciples 2-6
4.2. UserInterfaceDesignIssues 2-6
4.3. TheDesignofUserInteractionModalities 2-6
4.4. TheDesignofInformationPresentation 2-6
4.5. UserInterfaceDesignProcess 2-7
4.6. LocalizationandInternationalization 2-7
4.7. MetaphorsandConceptualModels 2-7
5. Software Design Quality Analysis and Evaluation 2-7
5.1. QualityAttributes 2-7
5.2. QualityAnalysisandEvaluationTechniques 2-8
5.3. Measures 2-8
6. Software Design Notations 2-8
6.1. StructuralDescriptions(StaticView) 2-8
6.2. BehavioralDescriptions(DynamicView) 2-9
7. Software Design Strategies and Methods 2-10
7.1. GeneralStrategies 2-10
7.2. Function-Oriented(Structured)Design 2-10
7.3. Object-OrientedDesign 2-10
© ISO/IEC 2015 – All rights reserved

Table of Contents vii
7.4. DataStructure-CenteredDesign 2-10
7.5. Component-BasedDesign(CBD) 2-10
7.6. OtherMethods 2-10
8. Software Design Tools 2-11
Matrix of Topics vs. Reference Material 2-12
Chapter 3: Software Construction 3-1
1. Software Construction Fundamentals 3-1
1.1. MinimizingComplexity 3-3
1.2. AnticipatingChange 3-3
1.3. ConstructingforVerification 3-3
1.4. Reuse 3-3
1.5. StandardsinConstruction 3-3
2. Managing Construction 3-4
2.1. ConstructioninLifeCycleModels 3-4
2.2. ConstructionPlanning 3-4
2.3. ConstructionMeasurement 3-4
3. Practical Considerations 3-5
3.1. ConstructionDesign 3-5
3.2. ConstructionLanguages 3-5
3.3. Coding 3-6
3.4. ConstructionTesting 3-6
3.5. ConstructionforReuse 3-6
3.6. ConstructionwithReuse 3-7
3.7. ConstructionQuality 3-7
3.8. Integration 3-7
4. Construction Technologies 3-8
4.1. APIDesignandUse 3-8
4.2. Object-OrientedRuntimeIssues 3-8
4.3. ParameterizationandGenerics 3-8
4.4. Assertions,DesignbyContract,andDefensiveProgramming 3-8
4.5. ErrorHandling,ExceptionHandling,andFaultTolerance 3-9
4.6. ExecutableModels 3-9
4.7. State-BasedandTable-DrivenConstructionTechniques 3-9
4.8. RuntimeConfigurationandInternationalization 3-10
4.9. Grammar-BasedInputProcessing 3-10
4.10. ConcurrencyPrimitives 3-10
4.11. Middleware 3-10
4.12. ConstructionMethodsforDistributedSoftware 3-11
4.13. ConstructingHeterogeneousSystems 3-11
4.14. PerformanceAnalysisandTuning 3-11
4.15. PlatformStandards 3-11
4.16. Test-FirstProgramming 3-11
5. Software Construction Tools 3-12
5.1. DevelopmentEnvironments 3-12
5.2. GUIBuilders 3-12
5.3. UnitTestingTools 3-12
5.4. Profiling,PerformanceAnalysis,andSlicingTools 3-12
Matrix of Topics vs. Reference Material 3-13
© ISO/IEC 2015 – All rights reserved

viii SWEBOK® Guide V3.0
Chapter 4: Software Testing 4-1
1. Software Testing Fundamentals 4-3
1.1. Testing-RelatedTerminology 4-3
1.2. KeyIssues 4-3
1.3. RelationshipofTestingtoOtherActivities 4-4
2. Test Levels 4-5
2.1. TheTargetoftheTest 4-5
2.2. ObjectivesofTesting 4-5
3. Test Techniques 4-7
3.1. BasedontheSoftwareEngineer’sIntuitionandExperience 4-8
3.2. InputDomain-BasedTechniques 4-8
3.3. Code-BasedTechniques 4-8
3.4. Fault-BasedTechniques 4-9
3.5. Usage-BasedTechniques 4-9
3.6. Model-BasedTestingTechniques 4-10
3.7. TechniquesBasedontheNatureoftheApplication 4-10
3.8. SelectingandCombiningTechniques 4-11
4. Test-Related Measures 4-11
4.1. EvaluationoftheProgramUnderTest 4-11
4.2. EvaluationoftheTestsPerformed 4-12
5. Test Process 4-12
5.1. PracticalConsiderations 4-13
5.2. TestActivities 4-14
6. Software Testing Tools 4-15
6.1. TestingToolSupport 4-15
6.2. CategoriesofTools 4-15
Matrix of Topics vs. Reference Material 4-17
Chapter 5: Software Maintenance 5-1
1. Software Maintenance Fundamentals 5-1
1.1. DefinitionsandTerminology 5-1
1.2. NatureofMaintenance 5-2
1.3. NeedforMaintenance 5-3
1.4. MajorityofMaintenanceCosts 5-3
1.5. EvolutionofSoftware 5-3
1.6. CategoriesofMaintenance 5-3
2. Key Issues in Software Maintenance 5-4
2.1. TechnicalIssues 5-4
2.2. ManagementIssues 5-5
2.3. MaintenanceCostEstimation 5-6
2.4. SoftwareMaintenanceMeasurement 5-7
3. Maintenance Process 5-7
3.1. MaintenanceProcesses 5-7
3.2. MaintenanceActivities 5-8
4. Techniques for Maintenance 5-10
4.1. ProgramComprehension 5-10
4.2. Reengineering 5-10
4.3. ReverseEngineering 5-10
4.4. Migration 5-10
4.5. Retirement 5-11
© ISO/IEC 2015 – All rights reserved

Table of Contents ix
5. Software Maintenance Tools 5-11
Matrix of Topics vs. Reference Material 5-12
Chapter 6: Software Configuration Management 6-1
1. Management of the SCM Process 6-2
1.1. OrganizationalContextforSCM 6-2
1.2. ConstraintsandGuidancefortheSCMProcess 6-3
1.3. PlanningforSCM 6-3
1.4. SCMPlan 6-5
1.5. SurveillanceofSoftwareConfigurationManagement 6-5
2. Software Configuration Identification 6-6
2.1. IdentifyingItemstoBeControlled 6-6
2.2. SoftwareLibrary 6-8
3. Software Configuration Control 6-8
3.1. Requesting,Evaluating,andApprovingSoftwareChanges 6-8
3.2. ImplementingSoftwareChanges 6-9
3.3. DeviationsandWaivers 6-10
4. Software Configuration Status Accounting 6-10
4.1. SoftwareConfigurationStatusInformation 6-10
4.2. SoftwareConfigurationStatusReporting 6-10
5. Software Configuration Auditing 6-10
5.1. SoftwareFunctionalConfigurationAudit 6-11
5.2. SoftwarePhysicalConfigurationAudit 6-11
5.3. In-ProcessAuditsofaSoftwareBaseline 6-11
6. Software Release Management and Delivery 6-11
6.1. SoftwareBuilding 6-11
6.2. SoftwareReleaseManagement 6-12
7. Software Configuration Management Tools 6-12
Matrix of Topics vs. Reference Material 6-13
Chapter 7: Software Engineering Management 7-1
1. Initiation and Scope Definition 7-4
1.1. DeterminationandNegotiationofRequirements 7-4
1.2. FeasibilityAnalysis 7-4
1.3. ProcessfortheReviewandRevisionofRequirements 7-5
2. Software Project Planning 7-5
2.1. ProcessPlanning 7-5
2.2. DetermineDeliverables 7-5
2.3. Effort,Schedule,andCostEstimation 7-6
2.4. ResourceAllocation 7-6
2.5. RiskManagement 7-6
2.6. QualityManagement 7-6
2.7. PlanManagement 7-7
3. Software Project Enactment 7-7
3.1. ImplementationofPlans 7-7
3.2. SoftwareAcquisitionandSupplierContractManagement 7-7
3.3. ImplementationofMeasurementProcess 7-7
3.4. MonitorProcess 7-7
3.5. ControlProcess 7-8
3.6. Reporting 7-8
© ISO/IEC 2015 – All rights reserved

x SWEBOK® Guide V3.0
4. Review and Evaluation 7-8
4.1. DeterminingSatisfactionofRequirements 7-8
4.2. ReviewingandEvaluatingPerformance 7-9
5. Closure 7-9
5.1. DeterminingClosure 7-9
5.2. ClosureActivities 7-9
6. Software Engineering Measurement 7-9
6.1. EstablishandSustainMeasurementCommitment 7-9
6.2. PlantheMeasurementProcess 7-10
6.3. PerformtheMeasurementProcess 7-11
6.4. EvaluateMeasurement 7-11
7. Software Engineering Management Tools 7-11
Matrix of Topics vs. Reference Material 7-13
Chapter 8: Software Engineering Process 8-1
1. Software Process Definition 8-2
1.1. SoftwareProcessManagement 8-3
1.2. SoftwareProcessInfrastructure 8-4
2. Software Life Cycles 8-4
2.1. CategoriesofSoftwareProcesses 8-5
2.2. SoftwareLifeCycleModels 8-5
2.3. SoftwareProcessAdaptation 8-6
2.4. PracticalConsiderations 8-6
3. Software Process Assessment and Improvement 8-6
3.1. SoftwareProcessAssessmentModels 8-7
3.2. SoftwareProcessAssessmentMethods 8-7
3.3. SoftwareProcessImprovementModels 8-7
3.4. ContinuousandStagedSoftwareProcessRatings 8-8
4. Software Measurement 8-8
4.1. SoftwareProcessandProductMeasurement 8-9
4.2. QualityofMeasurementResults 8-10
4.3. SoftwareInformationModels 8-10
4.4. SoftwareProcessMeasurementTechniques 8-11
5. Software Engineering Process Tools 8-12
Matrix of Topics vs. Reference Material 8-13
Chapter 9: Software Engineering Models and Methods 9-1
1. Modeling 9-1
1.1. ModelingPrinciples 9-2
1.2. PropertiesandExpressionofModels 9-3
1.3. Syntax,Semantics,andPragmatics 9-3
1.4. Preconditions,Postconditions,andInvariants 9-4
2. Types of Models 9-4
2.1. InformationModeling 9-5
2.2. BehavioralModeling 9-5
2.3. StructureModeling 9-5
3. Analysis of Models 9-5
3.1. AnalyzingforCompleteness 9-5
3.2. AnalyzingforConsistency 9-6
© ISO/IEC 2015 – All rights reserved

Table of Contents xi
3.3. AnalyzingforCorrectness 9-6
3.4. Traceability 9-6
3.5. InteractionAnalysis 9-6
4. Software Engineering Methods 9-7
4.1. HeuristicMethods 9-7
4.2. FormalMethods 9-7
4.3. PrototypingMethods 9-8
4.4. AgileMethods 9-9
Matrix of Topics vs. Reference Material 9-10
Chapter 10: Software Quality 10-1
1. Software Quality Fundamentals 10-2
1.1. SoftwareEngineeringCultureandEthics 10-2
1.2. ValueandCostsofQuality 10-3
1.3. ModelsandQualityCharacteristics 10-3
1.4. SoftwareQualityImprovement 10-4
1.5. SoftwareSafety 10-4
2. Software Quality Management Processes 10-5
2.1. SoftwareQualityAssurance 10-5
2.2. Verification&Validation 10-6
2.3. ReviewsandAudits 10-6
3. Practical Considerations 10-9
3.1. SoftwareQualityRequirements 10-9
3.2. DefectCharacterization 10-10
3.3. SoftwareQualityManagementTechniques 10-11
3.4. SoftwareQualityMeasurement 10-12
4. Software Quality Tools 10-12
Matrix of Topics vs. Reference Material 10-14
Chapter 11: Software Engineering Professional Practice 11-1
1. Professionalism 11-2
1.1. Accreditation,Certification,andLicensing 11-3
1.2. CodesofEthicsandProfessionalConduct 11-4
1.3. NatureandRoleofProfessionalSocieties 11-4
1.4. NatureandRoleofSoftwareEngineeringStandards 11-4
1.5. EconomicImpactofSoftware 11-5
1.6. EmploymentContracts 11-5
1.7. LegalIssues 11-5
1.8. Documentation 11-7
1.9. TradeoffAnalysis 11-8
2. Group Dynamics and Psychology 11-9
2.1. DynamicsofWorkinginTeams/Groups 11-9
2.2. IndividualCognition 11-9
2.3. DealingwithProblemComplexity 11-10
2.4. InteractingwithStakeholders 11-10
2.5. DealingwithUncertaintyandAmbiguity 11-10
2.6. DealingwithMulticulturalEnvironments 11-10
3. Communication Skills 11-11
3.1. Reading,Understanding,andSummarizing 11-11
© ISO/IEC 2015 – All rights reserved

xii SWEBOK® Guide V3.0
3.2. Writing 11-11
3.3. TeamandGroupCommunication 11-11
3.4. PresentationSkills 11-12
Matrix of Topics vs. Reference Material 11-13
Chapter 12: Software Engineering Economics 12-1
1. Software Engineering Economics Fundamentals 12-3
1.1. Finance 12-3
1.2. Accounting 12-3
1.3. Controlling 12-3
1.4. CashFlow 12-3
1.5. Decision-MakingProcess 12-4
1.6. Valuation 12-5
1.7. Inflation 12-6
1.8. Depreciation 12-6
1.9. Taxation 12-6
1.10. Time-ValueofMoney 12-6
1.11. Efficiency 12-6
1.12. Effectiveness 12-6
1.13. Productivity 12-6
2. Life Cycle Economics 12-7
2.1. Product 12-7
2.2. Project 12-7
2.3. Program 12-7
2.4. Portfolio 12-7
2.5. ProductLifeCycle 12-7
2.6. ProjectLifeCycle 12-7
2.7. Proposals 12-8
2.8. InvestmentDecisions 12-8
2.9. PlanningHorizon 12-8
2.10. PriceandPricing 12-8
2.11. CostandCosting 12-9
2.12. PerformanceMeasurement 12-9
2.13. EarnedValueManagement 12-9
2.14. TerminationDecisions 12-9
2.15. ReplacementandRetirementDecisions 12-10
3. Risk and Uncertainty 12-10
3.1. Goals,Estimates,andPlans 12-10
3.2. EstimationTechniques 12-11
3.3. AddressingUncertainty 12-11
3.4. Prioritization 12-11
3.5. DecisionsunderRisk 12-11
3.6. DecisionsunderUncertainty 12-12
4. Economic Analysis Methods 12-12
4.1. For-ProfitDecisionAnalysis 12-12
4.2. MinimumAcceptableRateofReturn 12-13
4.3. ReturnonInvestment 12-13
4.4. ReturnonCapitalEmployed 12-13
4.5. Cost-BenefitAnalysis 12-13
© ISO/IEC 2015 – All rights reserved

Table of Contents xiii
4.6. Cost-EffectivenessAnalysis 12-13
4.7. Break-EvenAnalysis 12-13
4.8. BusinessCase 12-13
4.9. MultipleAttributeEvaluation 12-14
4.10. OptimizationAnalysis 12-14
5. Practical Considerations 12-14
5.1. The“GoodEnough”Principle 12-14
5.2. Friction-FreeEconomy 12-15
5.3. Ecosystems 12-15
5.4. OffshoringandOutsourcing 12-15
Matrix of Topics vs. Reference Material 12-16
Chapter 13: Computing Foundations 13-1
1. Problem Solving Techniques 13-3
1.1. DefinitionofProblemSolving 13-3
1.2. FormulatingtheRealProblem 13-3
1.3. AnalyzetheProblem 13-3
1.4. DesignaSolutionSearchStrategy 13-3
1.5. ProblemSolvingUsingPrograms 13-3
2. Abstraction 13-4
2.1. LevelsofAbstraction 13-4
2.2. Encapsulation 13-4
2.3. Hierarchy 13-4
2.4. AlternateAbstractions 13-5
3. Programming Fundamentals 13-5
3.1. TheProgrammingProcess 13-5
3.2. ProgrammingParadigms 13-5
4. Programming Language Basics 13-6
4.1. ProgrammingLanguageOverview 13-6
4.2. SyntaxandSemanticsofProgrammingLanguages 13-6
4.3. Low-LevelProgrammingLanguages 13-7
4.4. High-LevelProgrammingLanguages 13-7
4.5. Declarativevs.ImperativeProgrammingLanguages 13-7
5. Debugging Tools and Techniques 13-8
5.1. TypesofErrors 13-8
5.2. DebuggingTechniques 13-8
5.3. DebuggingTools 13-8
6. Data Structure and Representation 13-9
6.1. DataStructureOverview 13-9
6.2. TypesofDataStructure 13-9
6.3. OperationsonDataStructures 13-9
7. Algorithms and Complexity 13-10
7.1. OverviewofAlgorithms 13-10
7.2. AttributesofAlgorithms 13-10
7.3. AlgorithmicAnalysis 13-10
7.4. AlgorithmicDesignStrategies 13-11
7.5. AlgorithmicAnalysisStrategies 13-11
8. Basic Concept of a System 13-11
8.1. EmergentSystemProperties 13-11
© ISO/IEC 2015 – All rights reserved

xiv SWEBOK® Guide V3.0
8.2. SystemsEngineering 13-12
8.3. OverviewofaComputerSystem 13-12
9. Computer Organization 13-13
9.1. ComputerOrganizationOverview 13-13
9.2. DigitalSystems 13-13
9.3. DigitalLogic 13-13
9.4. ComputerExpressionofData 13-13
9.5. TheCentralProcessingUnit(CPU) 13-14
9.6. MemorySystemOrganization 13-14
9.7. InputandOutput(I/O) 13-14
10. Compiler Basics 13-15
10.1. Compiler/InterpreterOverview 13-15
10.2. InterpretationandCompilation 13-15
10.3. TheCompilationProcess 13-15
11. Operating Systems Basics 13-16
11.1. OperatingSystemsOverview 13-16
11.2. TasksofanOperatingSystem 13-16
11.3. OperatingSystemAbstractions 13-17
11.4. OperatingSystemsClassification 13-17
12. Database Basics and Data Management 13-17
12.1. EntityandSchema 13-18
12.2. DatabaseManagementSystems(DBMS) 13-18
12.3. DatabaseQueryLanguage 13-18
12.4. TasksofDBMSPackages 13-18
12.5. DataManagement 13-19
12.6. DataMining 13-19
13. Network Communication Basics 13-19
13.1. TypesofNetwork 13-19
13.2. BasicNetworkComponents 13-19
13.3. NetworkingProtocolsandStandards 13-20
13.4. TheInternet 13-20
13.5. InternetofThings 13-20
13.6. VirtualPrivateNetwork(VPN) 13-21
14. Parallel and Distributed Computing 13-21
14.1. ParallelandDistributedComputingOverview 13-21
14.2. DifferencebetweenParallelandDistributedComputing 13-21
14.3. ParallelandDistributedComputingModels 13-21
14.4. MainIssuesinDistributedComputing 13-22
15. Basic User Human Factors 13-22
15.1. InputandOutput 13-22
15.2. ErrorMessages 13-23
15.3. SoftwareRobustness 13-23
16. Basic Developer Human Factors 13-23
16.1. Structure 13-24
16.2. Comments 13-24
17. Secure Software Development and Maintenance 13-24
17.1. SoftwareRequirementsSecurity 13-24
17.2. SoftwareDesignSecurity 13-25
17.3. SoftwareConstructionSecurity 13-25
17.4. SoftwareTestingSecurity 13-25
© ISO/IEC 2015 – All rights reserved

Table of Contents xv
17.5. BuildSecurityintoSoftwareEngineeringProcess 13-25
17.6. SoftwareSecurityGuidelines 13-25
Matrix of Topics vs. Reference Material 13-27
Chapter 14: Mathematical Foundations 14-1
1. Set, Relations, Functions 14-1
1.1. SetOperations 14-2
1.2. PropertiesofSet 14-3
1.3. RelationandFunction 14-4
2. Basic Logic 14-5
2.1. PropositionalLogic 14-5
2.2. PredicateLogic 14-5
3. Proof Techniques 14-6
3.1. MethodsofProvingTheorems 14-6
4. Basics of Counting 14-7
5. Graphs and Trees 14-8
5.1. Graphs 14-8
5.2. Trees 14-10
6. Discrete Probability 14-13
7. Finite State Machines 14-14
8. Grammars 14-15
8.1. LanguageRecognition 14-16
9. Numerical Precision, Accuracy, and Errors 14-17
10. Number Theory 14-18
10.1. Divisibility 14-18
10.2. PrimeNumber,GCD 14-19
11. Algebraic Structures 14-19
11.1. Group 14-19
11.2. Rings 14-20
Matrix of Topics vs. Reference Material 14-21
Chapter 15: Engineering Foundations 15-1
1. Empirical Methods and Experimental Techniques 15-1
1.1. DesignedExperiment 15-1
1.2. ObservationalStudy 15-2
1.3. RetrospectiveStudy 15-2
2.Statistical A nalys is 15-2
2.1. UnitofAnalysis(SamplingUnits),Population,andSample 15-2
2.2. ConceptsofCorrelationandRegression 15-5
3. Measurement 15-5
3.1. Levels(Scales)ofMeasurement 15-6
3.2. DirectandDerivedMeasures 15-7
3.3. ReliabilityandValidity 15-8
3.4. AssessingReliability 15-8
4. Engineering Design 15-8
4.1. EngineeringDesigninEngineeringEducation 15-8
4.2. DesignasaProblemSolvingActivity 15-9
4.3. StepsInvolvedinEngineeringDesign 15-9
5. Modeling, Simulation, and Prototyping 15-10
5.1. Modeling 15-10
© ISO/IEC 2015 – All rights reserved

xvi SWEBOK® Guide V3.0
5.2. Simulation 15-11
5.3. Prototyping 15-11
6. Standards 15-12
7. Root Cause Analysis 15-12
7.1. TechniquesforConductingRootCauseAnalysis 15-13
Matrix of Topics vs. Reference Material 15-14
Appendix A: Knowledge Area Description Specifications A-1
Appendix B: IEEE and ISO/IEC Standards Supporting the Software Engineering
Body of Knowledge (SWEBOK) B-1
Appendix C: Consolidated Reference List C-1
© ISO/IEC 2015 – All rights reserved

FOREWORD
Every profession is based on a body of know l- In 1958, John Tukey, the world-renowned stat-
edge , although that know ledge is not always istician, coined the term software. The term soft-
defined in a concise manner. In cases where no ware engineering was used in the title of a NATO
formality exists, the body of knowledge is “gen- conference held in Germany in 1968. The IEEE
erally recognized” by practitioners and may Computer Society first published its Transactions
be codified in a variety of ways for a variety of onSoftwareEngineering in 1972, and a commit-
different uses. But in many cases, a gui de to a tee for developing software engi neering stan-
body of know ledge is formally documented, usu- dards was established within the IEEE Computer
ally in a form that permits it to be used for such Society in 1976.
purposes as development and accreditation of In 1990, planning was begun for an interna-
academic and training programs, certification of tional standard to provide an overall view of soft-
specialists, or professional licensing. Generally, ware engi neering. The standard was completed in
a professional society or similar body maintains 1995 with designation ISO/IEC 12207 and given
stewardship of the formal definition of a body of the title of StandardforSoftwareLifeCyclePro-
knowledge.cesses. The IEEE version of 12207 was published
During the past forty-five years, software engi- in 1996 and provided a major foundation for the
neering has evolved from a conference catch- body of knowledge captured in SWEBOK 2004.
phrase into an engi neering profession, character- The current version of 12207 is designated as
iz ed by 1) a professional society , 2) standards that ISO/IEC 12207:2008 and IEEE 12207-2008; it
specify ge nerally accepted professional practices, provides the basis for this SWEBOK V3.
3) a code of ethics, 4) conference proceedings, This GuidetotheSoftwareEngineeringBody
5) textbooks, 6) curriculum guidelines and cur- ofKnowledge is presented to you, the reader, as
ricula, 7) accreditation criteria and accredited a mechanism for acqui ring the know ledge you
degree programs, 8) certification and licensing, need in your lifelong career development as a
and 9) this Guide to the Body of Knowledge. software engi neering pr ofessional.
In this GuidetotheSoftwareEngineeringBody
ofKnowledge, the IEEE Computer Society pres-
ents a revised and updated version of the body of Dick Fairley, Chair
knowledge formerly documented as SWEBOK SoftwareandSystemsEngineeringCommittee
2004; this revised and updated version is denoted IEEEComputerSociety
SWEBOK V3. This work is in partial fulfillment
of the S ociety’ s responsibility to promote the
advancement of both theory and practice for the Don Shafer, Vice President
profession of software engi neering. ProfessionalActivitiesBoard
It should be noted that this Guide does not IEEEComputerSociety
present the entire the body of know ledge for soft-
ware engi neering but rather serves as a gui de to
the body of know ledge that has been developed
over more than four decades. The software engi -
neering body of know ledge is constantly evolv-
ing. Nevertheless, this Guide constitutes a valu-
able characteriz ation of the software engi neering
profession.
xvii
© ISO/IEC 2015 – All rights reserved

FOREWORD TO THE 2004 EDITION
In this Guide, the IEEE Computer Society estab- standards. These works hops involved practitio-
lishes for the first time a baseline for the body ners sharing their experiences with existing stan-
of knowledge for the field of software engineer- dards. The works hops also held sessions on plan-
ing, and the work partially fulfills the Society’s ning for future standards, including one involving
responsibility to promote the advancement of measures and metrics for software engi neer-
both theory and practice in this field. In so doing, ing products and processes. The planning also
the S ociety has been gui ded by the experience resulted in IEEE Std. 1002, TaxonomyofSoftware
of disciplines with longe r histories but was not EngineeringStandards (1986), which provided a
bound either by t heir problems or their solutions. new, holistic view of software engi neering. The
It should be noted that the Guide does not pur- standard describes the form and content of a soft-
port to define the body of knowledge but rather to ware engineering standards taxonomy. It explains
serve as a compendium and gui de to the body of the various type s of software engi neering stan-
knowledge that has been developing and evolv- dards, their functional and external relationships,
ing over the past four decades. Furthermore, and the role of various functions participating in
this body of know ledge is not static. The Guide the software life cyc le.
must, necessarily , develop and evolve as software In 1990, planning for an international stan-
engineering matures. It nevertheless constitutes dard with an overall view was begun. The plan-
a valuable element of the software eng ineering ning focused on reconciling the software process
infrastructure. views from IEEE Std. 1074 and the revised US
In 1958, John Tukey, the world-renowned stat- DoD standard 2167A. The revision was eventu-
istician, coined the term software. The term soft- ally published as DoD Std. 498. The international
wareengineering was used in the title of a NATO standard was completed in 1995 with designa-
conference held in Germany in 1968. The IEEE tion, ISO/IEC 12207, and given the title of Stan-
Computer Society first published its Transactions dardforSoftwareLifeCycleProcesses. Std. ISO/
onSoftwareEngineering in 1972. The committee IEC 12207 provided a major point of departure
established within the IEEE Computer Society for the body of know ledge captured in this book.
for developing software engi neering standards It was the IEEE Computer Society Board of
was founded in 1976. Governors’ approval of the motion put forward
The first holistic view of software engineer- in May 1993 by Fletcher Buckley which resulted
ing to emerge from the IEEE Computer Society in the writing of this book. The Association for
resulted from an effort led by Fletcher Buckl ey Computing Machinery (ACM) Council approved
to develop IEEE standard 730 for software qual- a related motion in August 1993. The two motions
ity assurance, which was completed in 1979. led to a j oint committee under the leadership of
The purpose of IEEE Std. 730 was to provide Mario Barbacci and Stuart Zweben who served as
uniform, minimum acceptable requi rements for cochairs. The mission statement of the j oint com-
preparation and content of software qua lity assur- mittee was “To establish the appropriate sets(s)
ance plans. This standard was influential in com- of criteria and norms for professional practice of
pleting the developing standards in the following software engi neering upon which industrial deci-
topics: configuration management, software test- sions, professional certification, and educational
ing, software requi rements, software design, and curricula can be based.” The steering committee
software verification and validation. organized task forces in the following areas:
During the period 1981–1985, the IEEE Com-
puter S ociety held a series of works hops con- 1. Define Required Body of Knowledge and
cerning the application of software eng ineering Recommended P ractices.
xix
© ISO/IEC 2015 – All rights reserved

xx SWEBOK® Guide V3.0
2.Define Ethics and Professional Standards. It is hoped that readers will find this book use-
3. Define Educational Curricula for undergradu- ful in gui ding them toward the know ledge and
ate, g raduate, and continuing education. resources they need in their lifelong career devel-
opment as software engi neering pr ofessionals.
This book supplies the first component: required The book is dedicated to Fletcher B uckl ey in
body of k nowledg e and recommend practices. recogni tion of his commitment to promoting soft-
The code of ethics and professional practice ware engi neering as a professional discipline and
for software engineering was completed in 1998 his excellence as a software engi neering practi-
and approved by both the ACM Council and the tioner in radar applications.
IEEE Computer Society Board of Governors. It
has been adopted by numerous corporations and
other orga niz ations and is included in several Leonard L. Tripp, IEEE Fellow 2003
recent textbooks.Chair,ProfessionalPracticesCommittee,IEEE
The educational curriculum for undergr aduates ComputerSociety(2001–2003)
is being completed by a joint effort of the IEEE
Computer Society and the ACM and is expected Chair,JointIEEEComputerSocietyandACM
to be completed in 2004. SteeringCommitteefortheEstablishmentof
Every profession is based on a body of k nowl- SoftwareEngineeringasaProfession(1998–1999)
edge and recommended practices, although they
are not always defined in a precise manner. In Chair,SoftwareEngineeringStandardsCommittee,
many cases, these are formally documented, usu- IEEEComputerSociety(1992–1998)
ally in a form that permits them to be used for
such purposes as accreditation of academic pro-
gr ams, development of education and training
programs, certification of specialists, or profes-
sional licensing. Generally, a professional society
or related body maintains custody of such a for-
mal definition. In cases where no such formality
exists, the body of know ledge and recommended
practices are “generally recognized” by practitio-
ners and may be codified in a variety of ways for
different uses.
© ISO/IEC 2015 – All rights reserved

EDITORS
Pierre Bourque, Department of Software and IT Engineering, École de technologie supérieure (ÉTS),
Canada, pierre.bourque@etsmtl.ca
Richard E. (Dick) Fairley, Software and Systems Engineering Associates (S2EA), USA,
dickfairley@gmail.com
COEDITORS
Alain Abran, Department of Software and IT Engineering, École de technologie supérieure (ÉTS),
Canada, alain.abran@etsmtl.ca
Juan Garbajosa, Universidad Politecnica de Madrid (Technical University of Madrid, UPM), Spain,
juan.garbajosa@upm.es
Gargi Keeni, Tata Consultancy Services, India, gargi@ieee.org
Beijun Shen, School of Software, Shanghai Jiao Tong University, China, bjshen@sjtu.edu.cn
CONTRIBUTING EDITORS
The following persons contributed to editing the SWEBOK Guide V3:
Don Shafer
Linda Shafer
Mary Jane Willshire
Kate Guillemette
CHANGE CONTROL BOARD
The following persons served on the SWEBOK Guide V3 Change Control Board:
Pierre Bourque
Richard E. (Dick) Fairley, Chair
Dennis Frailey
Michael Gayle
Thomas Hilburn
Paul Joannou
James W. Moore
Don Shafer
Steve Tockey
xxi
© ISO/IEC 2015 – All rights reserved

KNOWLEDGE AREA EDITORS
Software Requirements
Gerald Kotonya, School of Computing and Communications, Lancaster University, UK,
gerald@comp.lancs.ac.uk
Peter Sawyer, School of Computing and Communications, Lancaster University, UK,
sawyer@comp.lancs.ac.uk
Software Design
Yanchun Sun, School of Electronics Engineering and Computer Science, Peking University, China,
sunyc@pku.edu.cn
Software Construction
Xin Peng, Software School, Fudan University, China, pengxin@fudan.edu.cn
Software Testing
Antonia Bertolino, ISTI-CNR, Italy, antonia.bertolino@isti.cnr.it
Eda Marchetti, ISTI-CNR, Italy, eda.marchetti@isti.cnr.it
Software Maintenance
Alain April, É cole de technologi e supé rieure (ÉTS), C anada, alain.april@etsmtl.ca
Mira Kajko-Mattsson, School of Information and Communication Technology,
KTH Royal Institute of Technology, mekm2@kth.se
Software Configuration Management
Roge r Champagne , É cole de technologi e supé rieure (ÉTS), C anada, roger.champagne@etsmtl.ca
Alain April, É cole de technologi e supé rieure (ÉTS), C anada, alain.april@etsmtl.ca
Software Engineering Management
James McDonald, Department of Computer Science and So
...


TECHNICAL ISO/IEC TR
REPORT 19759
Second edition
2015-10-01
Corrected version
2016-06-01
Software Engineering — Guide to
the Software Engineering Body of
Knowledge (SWEBOK)
Ingénierie du logiciel — Guide du corps de connaissance de
l’ingénierie du logiciel (SWEBOK)
Reference number
ISO/IEC TR 19759:2016(E)
©
ISO/IEC 2016
ISO/IEC TR 19759:2016(E)
© ISO/IEC 2016, Published in Switzerland
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form
or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior
written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of
the requester.
ISO copyright office
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Contents Page
Foreword .iv

Introduction.v

1 Scope.1

2 Recommendations .1

3 Revision of the IEEE Computer Society Publication .1

4 Publication .1

© ISO/IEC 2016 – All rights reserved iii

Foreword
ISO (the International Organization for Standardization) and IEC (the
International Electrotechnical Commission) form the specialized system for
worldwide standardization. National bodies that are members of ISO or IEC participate in
the development of International Standards through technical committees established by
the respective organization to deal with particular fields of technical activity. ISO and IEC
technical committees collaborate in fields of mutual interest. Other international
organizations, governmental and non-governmental, in liaison with ISO and IEC, also
take part in the work. In the field of information technology, ISO and IEC have established
a joint technical committee, ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further
maintenance are described in the ISO/IEC Directives, Part 1. In particular the different
approval criteria needed for the different types of document should be noted. This
document was drafted in accordance with the editorial rules of the
ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be
the subject of patent rights. ISO and IEC shall not be held responsible for identifying any or
all such patent rights. Details of any patent rights identified during the development of the
document will be in the Introduction and/or on the ISO list of patent
declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users
and does not constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to
conformity assessment, as well as information about ISO's adherence to the WTO
principles in the Technical Barriers to Trade (TBT), see the following URL: Foreword —
Supplementary information.
This corrected version of ISO/IEC TR 19759:2015 incorporates the following corrections:
- corrupted paragraphs of text within the document have been replaced.
ISO/IEC TR 19759 was prepared by the IEEE Computer Society and was adopted, under a
special “fast-track procedure”, by Joint Technical Committee ISO/IEC JTC 1,
Information technology, in parallel with its approval by national bodies of ISO and IEC.
© ISO/IEC 2016 – All rights reserved iv

ISO/IEC TR 19759:2016(E)
Introduction
The purpose of the Guide to the Software Engineering Body of Knowledge is to provide a consensually validated
characterization of the bounds of the software engineering discipline and to provide a topical access to the Body of
Knowledge supporting that discipline. The Body of Knowledge is subdivided into fifteen software engineering
Knowledge Areas (KA) providing an outline of topics. The descriptions in the KAs are designed to discriminate
among the various important concepts, permitting readers to find their way quickly to subjects of interest. Upon
finding a subject, readers are referred to key papers or books selected because they succinctly present the
knowledge.
Publication of the 2004 version of this Guide to the Software Engineering Body of Knowledge (SWEBOK
2004)—adopted as ISO/IEC TR 19759:2005—was a major milestone in establishing software engineering as
a recognized engineering discipline. The goal in developing this update to SWEBOK is to improve the
currency, readability, consistency, and usability of the Guide. All knowledge areas (KAs) have been updated
to reflect changes in software engineering since publication of SWEBOK 2004. Four new foundation KAs and
a Software Engineering Professional Practices KA have been added. The Software Engineering Tools and
Methods KA has been revised as Software Engineering Models and Methods. Software engineering tools is
now a topic in each of the KAs. Three appendices provide the specifications for the KA description, an
annotated set of relevant standards for each KA, and a listing of the references cited in the Guide.
An emphasis on engineering practice leads the Guide toward a strong relationship with the normative
literature. Most of the computer science, information technology and software engineering literature provides
information useful to software engineers, but a relatively small portion is normative. A normative document
prescribes what an engineer should do in a specified situation rather than providing information that might be
helpful. The normative literature is validated by consensus formed among practitioners and is concentrated in
standards and related documents. From the beginning, the SWEBOK project was conceived as having a
strong relationship to the normative literature of software engineering. The two major standards bodies for
software engineering (IEEE Computer Society Software and Systems Engineering Standards Committee and
ISO/IEC JTC1/SC7) cooperated in the project.
The Guide is oriented toward a variety of audiences, all over the world. It aims to serve public and private
organizations in need of a consistent view of software engineering for defining education and training
requirements, classifying jobs, developing performance evaluation policies or specifying software
development tasks. It also addresses practicing, or managing, software engineers and the officials responsible
for making public policy regarding licensing and professional guidelines. In addition, professional societies and
educators defining the certification rules, accreditation policies for university curricula, and guidelines for
professional practice will benefit from the SWEBOK Guide, as well as the students learning the software
engineering profession and educators and trainers engaged in defining curricula and course content.
v
© ISO/IEC 2016 – All rights reserved

TECHNICAL REPORT ISO/IEC TR 19759:2016(E)
Software Engineering — Guide to the Software Engineering
Body of Knowledge (SWEBOK) — Version 3.0
1 Scope
This Technical report characterizes the boundaries of the software engineering discipline and provides topical
access to the literature supporting that discipline.
2 Recommendations
As a Technical Report, this document does not make technical recommendations. The information provided is
that contained in the following publication (reproduced on the following pages), which is adopted as a
Technical Report:
Guide to the Software Engineering Body of Knowledge (SWEBOK) V3.0, IEEE Computer Society
3 Revision of the IEEE Computer Society Publication
It has been agreed with the IEEE Computer Society that ISO/IEC JTC 1/SC 7 will be consulted in the event of
any revision or amendment of this IEEE Computer Society publication. Consultation will be accomplished by
the existing Category A liaison relationship between SC 7 and IEEE Computer Society.
4 Publication
The report of the IEEE Computer Society appears on the following pages.
© ISO/IEC 2016 – All rights reserved 1

ISO/IEC TR 19759:2016(E)

••
• • •


II
···)
Guide to the Software
Engineering Body of Knowledge
Editors
Pierre Bourque
Richard E. (Dick) Fairley
+.IEEE
IEEE�computer society
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Guide to the Software Engineering
Body of Knowledge
Version 3.0 ®
SWEBOK
A Project of the IEEE Computer Society
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Guide to the Software Engineering
Body of Knowledge
Version 3.0
Editors
Pierre Bourque, École de technologie supérieure (ÉTS)
Richard E. (Dick) Fairley, Software and Systems Engineering Associates (S2EA)
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Copyright and Reprint Permissions. Educational or personal use of this material is permitted without fee provided such copies
1) are not made for profit or in lieu of purchasing copies for classes, and that this notice and a full citation to the original work
appear on the first page of the copy and 2) do not imply IEEE endorsement of any third-party products or services. Permission
to reprint/republish this material for commercial, advertising or promotional purposes or for creating new collective works for
resale or redistribution must be obtained from IEEE by writing to the IEEE Intellectual Property Rights Office, 445 Hoes Lane,
Piscataway, NJ 08854-4141 or pubs-permissions@ieee.org.
Reference to any specific commercial products, process, or service does not imply endorsement by IEEE. The views and opin-
ions expressed in this work do not necessarily reflect those of IEEE.
IEEE makes this document available on an “as is” basis and makes no warranty, express or implied, as to the accuracy, capabil-
ity, efficiency merchantability, or functioning of this document. In no event will IEEE be liable for any general, consequential,
indirect, incidental, exemplary, or special damages, even if IEEE has been advised of the possibility of such damages.
Paperback ISBN-10: 0-7695-5166-1
Paperback ISBN-13: 978-0-7695-5166-1
Digital copies of SWEBOK Guide V3.0 may be downloaded free of charge for personal and academic use via www.swebok.org.
IEEE Computer Society Staff for This Publication
Angela Burgess, Executive Director
Anne Marie Kelly, Associate Executive Director, Director of Governance
Evan M. Butterfield, Director of Products and Services
John Keppler, Senior Manager, Professional Education
Kate Guillemette, Product Development Editor
Dorian McClenahan, Education Program Product Developer
Michelle Phon, Professional Education & Certification Program Coordinator
Jennie Zhu-Mai, Editorial Designer
IEEE Computer Society Products and Services. The world-renowned IEEE Computer Society publishes, promotes, and dis-
tributes a wide variety of authoritative computer science and engineering journals, magazines, conference proceedings, and
professional education products. Visit the Computer Society at www .computer.org for more information.
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
TABLE OF CONTENTS
Foreword xvii
Foreword to the 2004 Edition xix
Editors xxi
Coeditors xxi
Contributing Editors xxi
Change Control Board xxi
Knowledge Area Editors xxiii
Knowledge Area Editors of Previous SWEBOK Versions xxv
Review Team xxvii
Acknowledgements xxix
Professional Activities Board, 2013 Membership xxix
Motions Regarding the Approval of SWEBOK Guide V3.0 xxx
Motions Regarding the Approval of SWEBOK Guide 2004 Version xxx
Introduction to the Guide xxxi
Chapter 1: Software Requirements 1-1
1. Software Requirements Fundamentals 1-1
1.1. Definition of a Software Requirement 1-1
1.2. Product and Process Requirements 1-2
1.3. Functional and Nonfunctional Requirements 1-3
1.4. Emergent Properties 1-3
1.5. Quantifiable Requirements 1-3
1.6. System Requirements and Software Requirements 1-3
2. Requirements Process 1-3
2.1. Process Models 1-4
2.2. Process Actors 1-4
2.3. Process Support and Management 1-4
2.4. Process Quality and Improvement 1-4
3. Requirements Elicitation 1-5
3.1. Requirements Sources 1-5
3.2. Elicitation Techniques 1-6
4. Requirements Analysis 1-7
4.1. Requirements Classification 1-7
4.2. Conceptual Modeling 1-8
4.3. Architectural Design and Requirements Allocation 1-9
4.4. Requirements Negotiation 1-9
4.5. Formal Analysis 1-10
5. Requirements Specification 1-10
5.1. System Definition Document 1-10
5.2. System Requirements Specification 1-10
5.3. Software Requirements Specification 1-11
6. Requirements Validation 1-11
6.1. Requirements Reviews 1-11
6.2. Prototyping 1-12
v
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
vi SWEBOK® Guide V3.0
6.3. Model Validation  1-12
6.4. Acceptance Tests  1-12
7. Practical Considerations 1-12
7.1. Iterative Nature of the Requirements Process 1-13
7.2. Change Management 1-13
7.3. Requirements Attributes 1-13
7.4. Requirements Tracing 1-14
7.5. Measuring Requirements 1-14
8. Software Requirements Tools 1-14
Matrix of Topics vs. Reference Material 1-15
Chapter 2: Software Design 2-1
1. Software Design Fundamentals 2-2
1.1. General Design Concepts 2-2
1.2. Context of Software Design 2-2
1.3. Software Design Process 2-2
1.4. Software Design Principles 2-3
2. Key Issues in Software Design 2-3
2.1. Concurrency 2-4
2.2. Control and Handling of Events 2-4
2.3. Data Persistence 2-4
2.4. Distribution of Components 2-4
2.5. Error and Exception Handling and Fault Tolerance 2-4
2.6. Interaction and Presentation 2-4
2.7. Security 2-4
3. Software Structure and Architecture 2-4
3.1. Architectural Structures and Viewpoints 2-5
3.2. Architectural Styles 2-5
3.3. Design Patterns 2-5
3.4. Architecture Design Decisions 2-5
3.5. Families of Programs and Frameworks 2-5
4. User Interface Design 2-5
4.1. General User Interface Design Principles 2-6
4.2. User Interface Design Issues 2-6
4.3. The Design of User Interaction Modalities 2-6
4.4. The Design of Information Presentation 2-6
4.5. User Interface Design Process 2-7
4.6. Localization and Internationalization 2-7
4.7. Metaphors and Conceptual Models 2-7
5. Software Design Quality Analysis and Evaluation 2-7
5.1. Quality Attributes 2-7
5.2. Quality Analysis and Evaluation Techniques 2-8
5.3. Measures 2-8
6. Software Design Notations 2-8
6.1. Structural Descriptions (Static View) 2-8
6.2. Behavioral Descriptions (Dynamic View) 2-9
7. Software Design Strategies and Methods 2-10
7.1. General Strategies 2-10
7.2. Function-Oriented (Structured) Design 2-10
7.3. Object-Oriented Design 2-10
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Table of Contents vii
7.4. Data Structure-Centered Design  2-10
7.5. Component-Based Design (CBD)  2-10
7.6. Other Methods  2-10
8. Software Design Tools 2-11
Matrix of Topics vs. Reference Material 2-12
Chapter 3: Software Construction 3-1
1. Software Construction Fundamentals 3-1
1.1. Minimizing Complexity 3-3
1.2. Anticipating Change 3-3
1.3. Constructing for Verification 3-3
1.4. Reuse 3-3
1.5. Standards in Construction 3-3
2. Managing Construction 3-4
2.1. Construction in Life Cycle Models 3-4
2.2. Construction Planning 3-4
2.3. Construction Measurement 3-4
3. Practical Considerations 3-5
3.1. Construction Design 3-5
3.2. Construction Languages 3-5
3.3. Coding 3-6
3.4. Construction Testing 3-6
3.5. Construction for Reuse 3-6
3.6. Construction with Reuse 3-7
3.7. Construction Quality 3-7
3.8. Integration 3-7
4. Construction Technologies 3-8
4.1. API Design and Use 3-8
4.2. Object-Oriented Runtime Issues 3-8
4.3. Parameterization and Generics 3-8
4.4. Assertions, Design by Contract, and Defensive Programming 3-8
4.5. Error Handling, Exception Handling, and Fault Tolerance 3-9
4.6. Executable Models 3-9
4.7. State-Based and Table-Driven Construction Techniques 3-9
4.8. Runtime Configuration and Internationalization 3-10
4.9. Grammar-Based Input Processing 3-10
4.10. Concurrency Primitives 3-10
4.11. Middleware 3-10
4.12. Construction Methods for Distributed Software 3-11
4.13. Constructing Heterogeneous Systems 3-11
4.14. Performance Analysis and Tuning 3-11
4.15. Platform Standards 3-11
4.16. Test-First Programming 3-11
5. Software Construction Tools 3-12
5.1. Development Environments 3-12
5.2. GUI Builders 3-12
5.3. Unit Testing Tools 3-12
5.4. Profiling, Performance Analysis, and Slicing Tools 3-12
Matrix of Topics vs. Reference Material 3-13
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
viii SWEBOK® Guide V3.0
Chapter 4: Software Testing 4-1
1. Software Testing Fundamentals 4-3
1.1. Testing-Related Terminology 4-3
1.2. Key Issues 4-3
1.3. Relationship of Testing to Other Activities 4-4
2. Test Levels 4-5
2.1. The Target of the Test 4-5
2.2. Objectives of Testing 4-5
3. Test Techniques 4-7
3.1. Based on the Software Engineer’s Intuition and Experience 4-8
3.2. Input Domain-Based Techniques 4-8
3.3. Code-Based Techniques 4-8
3.4. Fault-Based Techniques 4-9
3.5. Usage-Based Techniques 4-9
3.6. Model-Based Testing Techniques 4-10
3.7. Techniques Based on the Nature of the Application 4-10
3.8. Selecting and Combining Techniques 4-11
4. Test-Related Measures 4-11
4.1. Evaluation of the Program Under Test 4-11
4.2. Evaluation of the Tests Performed 4-12
5. Test Process 4-12
5.1. Practical Considerations 4-13
5.2. Test Activities 4-14
6. Software Testing Tools 4-15
6.1. Testing Tool Support 4-15
6.2. Categories of Tools 4-15
Matrix of Topics vs. Reference Material 4-17
Chapter 5: Software Maintenance 5-1
1. Software Maintenance Fundamentals 5-1
1.1. Definitions and Terminology 5-1
1.2. Nature of Maintenance 5-2
1.3. Need for Maintenance 5-3
1.4. Majority of Maintenance Costs 5-3
1.5. Evolution of Software 5-3
1.6. Categories of Maintenance 5-3
2. Key Issues in Software Maintenance 5-4
2.1. Technical Issues 5-4
2.2. Management Issues 5-5
2.3. Maintenance Cost Estimation 5-6
2.4. Software Maintenance Measurement 5-7
3. Maintenance Process 5-7
3.1. Maintenance Processes 5-7
3.2. Maintenance Activities 5-8
4. Techniques for Maintenance 5-10
4.1. Program Comprehension 5-10
4.2. Reengineering 5-10
4.3. Reverse Engineering 5-10
4.4. Migration 5-10
4.5. Retirement 5-11
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Table of Contents ix
5. Software Maintenance Tools 5-11
Matrix of Topics vs. Reference Material 5-12
Chapter 6: Software Configuration Management 6-1
1. Management of the SCM Process 6-2
1.1. Organizational Context for SCM 6-2
1.2. Constraints and Guidance for the SCM Process 6-3
1.3. Planning for SCM 6-3
1.4. SCM Plan 6-5
1.5. Surveillance of Software Configuration Management 6-5
2. Software Configuration Identification 6-6
2.1. Identifying Items to Be Controlled 6-6
2.2. Software Library 6-8
3. Software Configuration Control 6-8
3.1. Requesting, Evaluating, and Approving Software Changes 6-8
3.2. Implementing Software Changes 6-9
3.3. Deviations and Waivers 6-10
4. Software Configuration Status Accounting 6-10
4.1. Software Configuration Status Information 6-10
4.2. Software Configuration Status Reporting 6-10
5. Software Configuration Auditing 6-10
5.1. Software Functional Configuration Audit 6-11
5.2. Software Physical Configuration Audit 6-11
5.3. In-Process Audits of a Software Baseline 6-11
6. Software Release Management and Delivery 6-11
6.1. Software Building 6-11
6.2. Software Release Management 6-12
7. Software Configuration Management Tools 6-12
Matrix of Topics vs. Reference Material 6-13
Chapter 7: Software Engineering Management 7-1
1. Initiation and Scope Definition 7-4
1.1. Determination and Negotiation of Requirements 7-4
1.2. Feasibility Analysis 7-4
1.3. Process for the Review and Revision of Requirements 7-5
2. Software Project Planning 7-5
2.1. Process Planning 7-5
2.2. Determine Deliverables 7-5
2.3. Effort, Schedule, and Cost Estimation 7-6
2.4. Resource Allocation 7-6
2.5. Risk Management 7-6
2.6. Quality Management 7-6
2.7. Plan Management 7-7
3. Software Project Enactment 7-7
3.1. Implementation of Plans 7-7
3.2. Software Acquisition and Supplier Contract Management 7-7
3.3. Implementation of Measurement Process 7-7
3.4. Monitor Process 7-7
3.5. Control Process 7-8
3.6. Reporting 7-8
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
x SWEBOK® Guide V3.0
4. Review and Evaluation 7-8
4.1. Determining Satisfaction of Requirements 7-8
4.2. Reviewing and Evaluating Performance 7-9
5. Closure 7-9
5.1. Determining Closure 7-9
5.2. Closure Activities 7-9
6. Software Engineering Measurement 7-9
6.1. Establish and Sustain Measurement Commitment 7-9
6.2. Plan the Measurement Process 7-10
6.3. Perform the Measurement Process 7-11
6.4. Evaluate Measurement 7-11
7. Software Engineering Management Tools 7-11
Matrix of Topics vs. Reference Material 7-13
Chapter 8: Software Engineering Process 8-1
1. Software Process Definition 8-2
1.1. Software Process Management 8-3
1.2. Software Process Infrastructure 8-4
2. Software Life Cycles 8-4
2.1. Categories of Software Processes 8-5
2.2. Software Life Cycle Models 8-5
2.3. Software Process Adaptation 8-6
2.4. Practical Considerations 8-6
3. Software Process Assessment and Improvement 8-6
3.1. Software Process Assessment Models 8-7
3.2. Software Process Assessment Methods 8-7
3.3. Software Process Improvement Models 8-7
3.4. Continuous and Staged Software Process Ratings 8-8
4. Software Measurement 8-8
4.1. Software Process and Product Measurement 8-9
4.2. Quality of Measurement Results 8-10
4.3. Software Information Models 8-10
4.4. Software Process Measurement Techniques 8-11
5. Software Engineering Process Tools 8-12
Matrix of Topics vs. Reference Material 8-13
Chapter 9: Software Engineering Models and Methods 9-1
1. Modeling 9-1
1.1. Modeling Principles 9-2
1.2. Properties and Expression of Models 9-3
1.3. Syntax, Semantics, and Pragmatics 9-3
1.4. Preconditions, Postconditions, and Invariants 9-4
2. Types of Models 9-4
2.1. Information Modeling 9-5
2.2. Behavioral Modeling 9-5
2.3. Structure Modeling 9-5
3. Analysis of Models 9-5
3.1. Analyzing for Completeness 9-5
3.2. Analyzing for Consistency 9-6
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Table of Contents xi
3.3. Analyzing for Correctness  9-6
3.4. Traceability  9-6
3.5. Interaction Analysis  9-6
4. Software Engineering Methods 9-7
4.1. Heuristic Methods 9-7
4.2. Formal Methods 9-7
4.3. Prototyping Methods 9-8
4.4. Agile Methods 9-9
Matrix of Topics vs. Reference Material 9-10
Chapter 10: Software Quality 10-1
1. Software Quality Fundamentals 10-2
1.1. Software Engineering Culture and Ethics 10-2
1.2. Value and Costs of Quality 10-3
1.3. Models and Quality Characteristics 10-3
1.4. Software Quality Improvement 10-4
1.5. Software Safety 10-4
2. Software Quality Management Processes 10-5
2.1. Software Quality Assurance 10-5
2.2. Verification & Validation 10-6
2.3. Reviews and Audits 10-6
3. Practical Considerations 10-9
3.1. Software Quality Requirements 10-9
3.2. Defect Characterization 10-10
3.3. Software Quality Management Techniques 10-11
3.4. Software Quality Measurement 10-12
4. Software Quality Tools 10-12
Matrix of Topics vs. Reference Material 10-14
Chapter 11: Software Engineering Professional Practice 11-1
1. Professionalism 11-2
1.1. Accreditation, Certification, and Licensing 11-3
1.2. Codes of Ethics and Professional Conduct 11-4
1.3. Nature and Role of Professional Societies 11-4
1.4. Nature and Role of Software Engineering Standards 11-4
1.5. Economic Impact of Software 11-5
1.6. Employment Contracts 11-5
1.7. Legal Issues 11-5
1.8. Documentation 11-7
1.9. Tradeoff Analysis 11-8
2. Group Dynamics and Psychology 11-9
2.1. Dynamics of Working in Teams/Groups 11-9
2.2. Individual Cognition 11-9
2.3. Dealing with Problem Complexity 11-10
2.4. Interacting with Stakeholders 11-10
2.5. Dealing with Uncertainty and Ambiguity 11-10
2.6. Dealing with Multicultural Environments 11-10
3. Communication Skills 11-11
3.1. Reading, Understanding, and Summarizing 11-11
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
xii SWEBOK® Guide V3.0
3.2. Writing   11-11
3.3. Team and Group Communication   11-11
3.4. Presentation Skills   11-12
Matrix of Topics vs. Reference Material 11-13
Chapter 12: Software Engineering Economics 12-1
1. Software Engineering Economics Fundamentals 12-3
1.1. Finance 12-3
1.2. Accounting 12-3
1.3. Controlling 12-3
1.4. Cash Flow 12-3
1.5. Decision-Making Process 12-4
1.6. Valuation 12-5
1.7. Inflation 12-6
1.8. Depreciation 12-6
1.9. Taxation 12-6
1.10. Time-Value of Money 12-6
1.11. Efficiency 12-6
1.12. Effectiveness 12-6
1.13. Productivity 12-6
2. Life Cycle Economics 12-7
2.1. Product 12-7
2.2. Project 12-7
2.3. Program 12-7
2.4. Portfolio 12-7
2.5. Product Life Cycle 12-7
2.6. Project Life Cycle 12-7
2.7. Proposals 12-8
2.8. Investment Decisions 12-8
2.9. Planning Horizon 12-8
2.10. Price and Pricing 12-8
2.11. Cost and Costing 12-9
2.12. Performance Measurement 12-9
2.13. Earned Value Management 12-9
2.14. Termination Decisions 12-9
2.15. Replacement and Retirement Decisions 12-10
3. Risk and Uncertainty 12-10
3.1. Goals, Estimates, and Plans 12-10
3.2. Estimation Techniques 12-11
3.3. Addressing Uncertainty 12-11
3.4. Prioritization 12-11
3.5. Decisions under Risk 12-11
3.6. Decisions under Uncertainty 12-12
4. Economic Analysis Methods 12-12
4.1. For-Profit Decision Analysis 12-12
4.2. Minimum Acceptable Rate of Return 12-13
4.3. Return on Investment 12-13
4.4. Return on Capital Employed 12-13
4.5. Cost-Benefit Analysis 12-13
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Table of Contents xiii
4.6. Cost-Effectiveness Analysis  12-13
4.7. Break-Even Analysis  12-13
4.8. Business Case  12-13
4.9. Multiple Attribute Evaluation  12-14
4.10. Optimization Analysis  12-14
5. Practical Considerations 12-14
5.1. The “Good Enough” Principle 12-14
5.2. Friction-Free Economy 12-15
5.3. Ecosystems 12-15
5.4. Offshoring and Outsourcing 12-15
Matrix of Topics vs. Reference Material 12-16
Chapter 13: Computing Foundations 13-1
1. Problem Solving Techniques 13-3
1.1. Definition of Problem Solving 13-3
1.2. Formulating the Real Problem 13-3
1.3. Analyze the Problem 13-3
1.4. Design a Solution Search Strategy 13-3
1.5. Problem Solving Using Programs 13-3
2. Abstraction 13-4
2.1. Levels of Abstraction 13-4
2.2. Encapsulation 13-4
2.3. Hierarchy 13-4
2.4. Alternate Abstractions 13-5
3. Programming Fundamentals 13-5
3.1. The Programming Process 13-5
3.2. Programming Paradigms 13-5
4. Programming Language Basics 13-6
4.1. Programming Language Overview 13-6
4.2. Syntax and Semantics of Programming Languages 13-6
4.3. Low-Level Programming Languages 13-7
4.4. High-Level Programming Languages 13-7
4.5. Declarative vs. Imperative Programming Languages 13-7
5. Debugging Tools and Techniques 13-8
5.1. Types of Errors 13-8
5.2. Debugging Techniques 13-8
5.3. Debugging Tools 13-8
6. Data Structure and Representation 13-9
6.1. Data Structure Overview 13-9
6.2. Types of Data Structure 13-9
6.3. Operations on Data Structures 13-9
7. Algorithms and Complexity 13-10
7.1. Overview of Algorithms 13-10
7.2. Attributes of Algorithms 13-10
7.3. Algorithmic Analysis 13-10
7.4. Algorithmic Design Strategies 13-11
7.5. Algorithmic Analysis Strategies 13-11
8. Basic Concept of a System 13-11
8.1. Emergent System Properties 13-11
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
xiv SWEBOK® Guide V3.0
8.2. Systems Engineering  13-12
8.3. Overview of a Computer System  13-12
9. Computer Organization 13-13
9.1. Computer Organization Overview 13-13
9.2. Digital Systems 13-13
9.3. Digital Logic 13-13
9.4. Computer Expression of Data 13-13
9.5. The Central Processing Unit (CPU) 13-14
9.6. Memory System Organization 13-14
9.7. Input and Output (I/O) 13-14
10. Compiler Basics 13-15
10.1. Compiler/Interpreter Overview 13-15
10.2. Interpretation and Compilation 13-15
10.3. The Compilation Process 13-15
11. Operating Systems Basics 13-16
11.1. Operating Systems Overview 13-16
11.2. Tasks of an Operating System 13-16
11.3. Operating System Abstractions 13-17
11.4. Operating Systems Classification 13-17
12. Database Basics and Data Management 13-17
12.1. Entity and Schema 13-18
12.2. Database Management Systems (DBMS) 13-18
12.3. Database Query Language 13-18
12.4. Tasks of DBMS Packages 13-18
12.5. Data Management 13-19
12.6. Data Mining 13-19
13. Network Communication Basics 13-19
13.1. Types of Network 13-19
13.2. Basic Network Components 13-19
13.3. Networking Protocols and Standards 13-20
13.4. The Internet 13-20
13.5. Internet of Things 13-20
13.6. Virtual Private Network (VPN) 13-21
14. Parallel and Distributed Computing 13-21
14.1. Parallel and Distributed Computing Overview 13-21
14.2. Difference between Parallel and Distributed Computing 13-21
14.3. Parallel and Distributed Computing Models 13-21
14.4. Main Issues in Distributed Computing 13-22
15. Basic User Human Factors 13-22
15.1. Input and Output 13-22
15.2. Error Messages 13-23
15.3. Software Robustness 13-23
16. Basic Developer Human Factors 13-23
16.1. Structure 13-24
16.2. Comments 13-24
17. Secure Software Development and Maintenance 13-24
17.1. Software Requirements Security 13-24
17.2. Software Design Security 13-25
17.3. Software Construction Security 13-25
17.4. Software Testing Security 13-25
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
Table of Contents xv
17.5. Build Security into Software Engineering Process  13-25
17.6. Software Security Guidelines  13-25
Matrix of Topics vs. Reference Material 13-27
Chapter 14: Mathematical Foundations 14-1
1. Set, Relations, Functions 14-1
1.1. Set Operations 14-2
1.2. Properties of Set 14-3
1.3. Relation and Function 14-4
2. Basic Logic 14-5
2.1. Propositional Logic 14-5
2.2. Predicate Logic 14-5
3. Proof Techniques 14-6
3.1. Methods of Proving Theorems 14-6
4. Basics of Counting 14-7
5. Graphs and Trees 14-8
5.1. Graphs 14-8
5.2. Trees 14-10
6. Discrete Probability 14-13
7. Finite State Machines 14-14
8. Grammars 14-15
8.1. Language Recognition 14-16
9. Numerical Precision, Accuracy, and Errors 14-17
10. Number Theory 14-18
10.1. Divisibility 14-18
10.2. Prime Number, GCD 14-19
11. Algebraic Structures 14-19
11.1. Group 14-19
11.2. Rings 14-20
Matrix of Topics vs. Reference Material 14-21
Chapter 15: Engineering Foundations 15-1
1. Empirical Methods and Experimental Techniques 15-1
1.1. Designed Experiment 15-1
1.2. Observational Study 15-2
1.3. Retrospective Study 15-2
2. Statistical Analysis 15-2
2.1. Unit of Analysis (Sampling Units), Population, and Sample 15-2
2.2. Concepts of Correlation and Regression 15-5
3. Measurement 15-5
3.1. Levels (Scales) of Measurement 15-6
3.2. Direct and Derived Measures 15-7
3.3. Reliability and Validity 15-8
3.4. Assessing Reliability 15-8
4. Engineering Design 15-8
4.1. Engineering Design in Engineering Education 15-8
4.2. Design as a Problem Solving Activity 15-9
4.3. Steps Involved in Engineering Design 15-9
5. Modeling, Simulation, and Prototyping 15-10
5.1. Modeling 15-10
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
xvi SWEBOK® Guide V3.0
5.2. Simulation   15-11
5.3. Prototyping  15-11
6. Standards 15-12
7. Root Cause Analysis 15-12
7.1. Techniques for Conducting Root Cause Analysis 15-13
Matrix of Topics vs. Reference Material 15-14
Appendix A: Knowledge Area Description Specifications A-1
Appendix B: IEEE and ISO/IEC Standards Supporting the Software Engineering
Body of Knowledge (SWEBOK) B-1
Appendix C: Consolidated Reference List C-1
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
FOREWORD
Every profession is based on a body of knowl- In 1958, John Tukey, the world-renowned stat-
edge, although that knowledge is not always istician, coined the term software. The term soft-
defined in a concise manner. In cases where no ware engineering was used in the title of a NATO
formality exists, the body of knowledge is “gen- conference held in Germany in 1968. The IEEE
erally recognized” by practitioners and may Computer Society first published its Transactions
be codified in a variety of ways for a variety of on Software Engineering in 1972, and a commit-
different uses. But in many cases, a guide to a tee for developing software engineering stan-
body of knowledge is formally documented, usu- dards was established within the IEEE Computer
ally in a form that permits it to be used for such Society in 1976.
purposes as development and accreditation of In 1990, planning was begun for an interna-
academic and training programs, certification of tional standard to provide an overall view of soft-
specialists, or professional licensing. Generally, ware engineering. The standard was completed in
a professional society or similar body maintains 1995 with designation ISO/IEC 12207 and given
stewardship of the formal definition of a body of the title of Standard for Software Life Cycle Pro-
knowledge. cesses. The IEEE version of 12207 was published
During the past forty-five years, software engi- in 1996 and provided a major foundation for the
neering has evolved from a conference catch- body of knowledge captured in SWEBOK 2004.
phrase into an engineering profession, character- The current version of 12207 is designated as
ized by 1) a professional society, 2) standards that ISO/IEC 12207:2008 and IEEE 12207-2008; it
specify generally accepted professional practices, provides the basis for this SWEBOK V3.
3) a code of ethics, 4) conference proceedings, This Guide to the Software Engineering Body
5) textbooks, 6) curriculum guidelines and cur- of Knowledge is presented to you, the reader, as
ricula, 7) accreditation criteria and accredited a mechanism for acquiring the knowledge you
degree programs, 8) certification and licensing, need in your lifelong career development as a
and 9) this Guide to the Body of Knowledge. software engineering professional.
In this Guide to the Software Engineering Body
of Knowledge, the IEEE Computer Society pres-
ents a revised and updated version of the body of Dick Fairley, Chair
knowledge formerly documented as SWEBOK Software and Systems Engineering Committee
2004; this revised and updated version is denoted IEEE Computer Society
SWEBOK V3. This work is in partial fulfillment
of the Society’s responsibility to promote the
advancement of both theory and practice for the Don Shafer, Vice President
profession of software engineering. Professional Activities Board
It should be noted that this Guide does not IEEE Computer Society
present the entire the body of knowledge for soft-
ware engineering but rather serves as a guide to
the body of knowledge that has been developed
over more than four decades. The software engi-
neering body of knowledge is constantly evolv-
ing. Nevertheless, this Guide constitutes a valu-
able characterization of the software engineering
profession.
xvii
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
FOREWORD TO THE 2004 EDITION
In this Guide, the IEEE Computer Society estab- standards. These workshops involved practitio-
lishes for the first time a baseline for the body ners sharing their experiences with existing stan-
of knowledge for the field of software engineer- dards. The workshops also held sessions on plan-
ing, and the work partially fulfills the Society’s ning for future standards, including one involving
responsibility to promote the advancement of measures and metrics for software engineer-
both theory and practice in this field. In so doing, ing products and processes. The planning also
the Society has been guided by the experience resulted in IEEE Std. 1002, Taxonomy of Software
of disciplines with longer histories but was not Engineering Standards (1986), which provided a
bound either by their problems or their solutions. new, holistic view of software engineering. The
It should be noted that the Guide does not pur- standard describes the form and content of a soft-
port to define the body of knowledge but rather to ware engineering standards taxonomy. It explains
serve as a compendium and guide to the body of the various types of software engineering stan-
knowledge that has been developing and evolv- dards, their functional and external relationships,
ing over the past four decades. Furthermore, and the role of various functions participating in
this body of knowledge is not static. The Guide the software life cycle.
must, necessarily, develop and evolve as software In 1990, planning for an international stan-
engineering matures. It nevertheless constitutes dard with an overall view was begun. The plan-
a valuable element of the software engineering ning focused on reconciling the software process
infrastructure. views from IEEE Std. 1074 and the revised US
In 1958, John Tukey, the world-renowned stat- DoD standard 2167A. The revision was eventu-
istician, coined the term software. The term soft- ally published as DoD Std. 498. The international
ware engineering was used in the title of a NATO standard was completed in 1995 with designa-
conference held in Germany in 1968. The IEEE tion, ISO/IEC 12207, and given the title of Stan-
Computer Society first published its Transactions  dard for Software Life Cycle Processes. Std. ISO/
on Software Engineering in 1972. The committee IEC 12207 provided a major point of departure
established within the IEEE Computer Society for the body of knowledge captured in this book.
for developing software engineering standards It was the IEEE Computer Society Board of
was founded in 1976. Governors’ approval of the motion put forward
The first holistic view of software engineer- in May 1993 by Fletcher Buckley which resulted
ing to emerge from the IEEE Computer Society in the writing of this book. The Association for
resulted from an effort led by Fletcher Buckley Computing Machinery (ACM) Council approved
to develop IEEE standard 730 for software qual- a related motion in August 1993. The two motions
ity assurance, which was completed in 1979. led to a joint committee under the leadership of
The purpose of IEEE Std. 730 was to provide Mario Barbacci and Stuart Zweben who served as
uniform, minimum acceptable requirements for cochairs. The mission statement of the joint com-
preparation and content of software quality assur- mittee was “To establish the appropriate sets(s)
ance plans. This standard was influential in com- of criteria and norms for professional practice of
pleting the developing standards in the following software engineering upon which industrial deci-
topics: configuration management, software test- sions, professional certification, and educational
ing, software requirements, software design, and curricula can be based.” The steering committee
software verification and validation. organized task forces in the following areas:
During the period 1981–1985, the IEEE Com-
puter Society held a series of workshops con- 1. Define Required Body of Knowledge and
cerning the application of software engineering Recommended Practices.
xix
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
xx SWEBOK® Guide V3.0
2. Define Ethics and Professional Standards. It is hoped that readers will find this book use-
3. Define Educational Curricula for undergradu- ful in guiding them toward the knowledge and
ate, graduate, and continuing education. resources they need in their lifelong career devel-
opment as software engineering professionals.
This book supplies the first component: required The book is dedicated to Fletcher Buckley in
body of knowledge and recommend practices. recognition of his commitment to promoting soft-
The code of ethics and professional practice ware engineering as a professional discipline and
for software engineering was completed in 1998 his excellence as a software engineering practi-
and approved by both the ACM Council and the tioner in radar applications.
IEEE Computer Society Board of Governors. It
has been adopted by numerous corporations and
other organizations and is included in several Leonard L. Tripp, IEEE Fellow 2003
recent textbooks. Chair, Professional Practices Committee, IEEE
The educational curriculum for undergraduates Computer Society (2001–2003)
is being completed by a joint effort of the IEEE
Computer Society and the ACM and is expected Chair, Joint IEEE Computer Society and ACM
to be completed in 2004. Steering Committee for the Establishment of
Every profession is based on a body of knowl- Software Engineering as a Profession (1998–1999)
edge and recommended practices, although they
are not always defined in a precise manner. In Chair, Software Engineering Standards  Committee,
many cases, these are formally documented, usu- IEEE Computer Society (1992–1998)
ally in a form that permits them to be used for
such purposes as accreditation of academic pro-
grams, development of education and training
programs, certification of specialists, or profes-
sional licensing. Generally, a professional society
or related body maintains custody of such a for-
mal definition. In cases where no such formality
exists, the body of knowledge and recommended
practices are “generally recognized” by practitio-
ners and may be codified in a variety of ways for
different uses.
© ISO/IEC 2016 – All rights reserved

ISO/IEC TR 19759:2016(E)
EDITORS
Pierre Bourque, Department of Software and IT Engineering, École de technologie supérieure (ÉTS),
Canada, pierre.bourque@etsmtl.ca
Richard E. (Dick) Fairley, Software and Systems Engineering Associates (S2EA), USA,
dickfairley@gmail.com
COEDITORS
Alain Abran, Department of Software and IT Engineering, École de technologie supérieure (ÉTS),
Canada, alain.abran@etsmtl.ca
Juan Garbajosa, Universidad Politecnica de Madrid (Technical University of Madrid, UPM), Spain,
juan.garbajosa@upm.es
Gargi Keeni, Tata Consultancy Services, India, gargi@ieee.org
Beijun Shen, School of Software, Shanghai Jiao Tong University, China, bjshen@sjtu.edu.cn
CONTRIBUTING EDITORS
The following persons contributed to editing the SWEBOK Guide V3:
Don Shafer
Linda Shafer
Mary Jane Willshire
Kate Guillemette
CHANGE CONTROL BOARD
The following persons served on the SWEBOK Guide V3 Change Control Board:
Pierre Bourque
Richard E. (Dick) Fairley, Chair
Dennis Frailey
Michael Gayle
Thomas Hilburn
Paul Joannou
James W. Moore
Don Shafer
Steve Tockey
© ISO/IEC 2016 – All rights reserved
xxi
ISO/IEC TR 19759:2016(E)
KNOWLEDGE AREA EDITORS
Software Requirements
Gerald Kotonya, School of Computing and Communications
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.

Loading comments...