Difference between revisions of "An Overview of the SWEBOK Guide"

From SEBoK
Jump to navigation Jump to search
m (Removed protection from "An Overview of the SWEBOK Guide")
Line 94: Line 94:
 
[[Category: Part 6]][[Category:Topic]]
 
[[Category: Part 6]][[Category:Topic]]
 
[[Category:Systems Engineering and Software Engineering]]
 
[[Category:Systems Engineering and Software Engineering]]
 +
{{DISQUS}}

Revision as of 12:42, 23 May 2012

Systems engineers are fortunate that the software community has developed its own body of knowledge, which is currently under revision. The Preface to the 2004 version of the Guide to the Software Engineering Body of Knowledge states:

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. (Abran et al. 2004, preface)

SWEBOK Guide Version 3

The purposes of the Guide to the Software Engineering Body of Knowledge, Version 3 (SWEBOK Guide V3) are: to characterize the contents of the software engineering discipline; to promote a consistent view of software engineering worldwide; to clarify the place of, and set the boundary of, software engineering with respect to other disciplines; to provide a foundation for training materials and curriculum development; and to provide a basis for certification and licensing of software engineers.

The SWEBOK Guide V3 contains three chapters: • Knowledge Areas Characterizing the Practice of Software Engineering • Knowledge Areas Characterizing the Educational Requirements of Software Engineering • Related Disciplines

Version 3 of the SWEBOK Guide is being developed and will be completed in 2012 or 2013. It will replace the present 2004 version (Guide to the Software Engineering Body of Knowledge). A public review copy of the SWEBOK Version 3 Knowledge Areas is available at: SWEBOK Version 3 Knowledge Areas

As the SWEBOK V3 knowledge areas become ready for review they will be made available to the public; all knowledge areas may not be available for review at the same time.

SWEBOK Guide Version 3 Knowledge Areas

Each knowledge area (KA) in Version 3 of the SWEBOK Guide includes an introduction, a descriptive breakdown of topics and sub-topics, recommended references, references for further reading, and a list of standards most relevant to the knowledge area. Version 3 contains 15 knowledge areas. An overview of the individual KAs presented in the guide are provided in the next subsection.

Knowledge Areas Characterizing the Practice of Software Engineering

Software Requirements KA

The Software Requirements Knowledge Area is concerned with the elicitation, negotiation, analysis, specification, and validation of software requirements. It is widely acknowledged within the software industry that software engineering projects are critically vulnerable when these activities are performed poorly. Software requirements express the needs and constraints placed on a software product that contribute to the solution of some real-world problems.

Software Design KA

Design is defined in [IEEE610.12-90] as both “the process of defining the architecture, components, interfaces, and other characteristics of a system or component” and “the result of [that] process.” The Software Design Knowledge Area covers the design process and the resulting product. Viewed as a process, software design is the software engineering life cycle activity in which software requirements are analyzed in order to produce a description of the software’s internal structure and its behavior that will serve as the basis for its construction. A software design (the result) must describe the software architecture -that is, how software is decomposed and organized into components and the interfaces between those components. It must also describe the components at a level of detail that enables their construction.

Software Construction KA

Software construction refers to the detailed creation of working software through a combination of detailed design, coding, unit testing, integration testing, debugging, and verification. The Software Construction Knowledge Area includes topics related to development of software programs that will satisfy their requirements and design constraints. This KA covers software construction fundamentals; managing software construction; construction technologies; practical considerations; and software construction tools.

Software Testing KA

Testing is an activity performed to evaluate product quality and improve it by identifying defects. Software testing involves dynamic verification of the behavior of a program against expected behavior on a finite set of test cases suitably selected from the (usually very large) execution domain. The Software Testing Knowledge Area includes the fundamental of software testing; test techniques; human-computer-user interface testing and evaluation; test-related measures; and practical considerations.

Software Maintenance KA

Software maintenance involves enhancing existing capabilities, adapting software to operate in new and modified operating environments, and correcting defects. These categories are referred to as perfective, adaptive, and corrective software maintenance. The Software Maintenance Knowledge Area includes fundamentals of software maintenance (nature of and need for maintenance, categories of maintenance, maintenance costs); key issues in software maintenance (technical issues, management issues, maintenance cost estimation, measurement of software maintenance); the maintenance process; software maintenance techniques (program comprehension, re-engineering, reverse engineering, refactoring, software retirement); disaster recovery techniques, and software maintenance tools.

Software Configuration Management KA

The configuration of a system is the functional and/or physical characteristics of hardware, firmware, or software, or a combination of these. It can also be thought of as a collection of specific versions of hardware, firmware, or software items combined according to specific build procedures to serve a particular purpose. Software configuration management (SCM) is thus the discipline of identifying the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration throughout the software life cycle. The Software Configuration Management Knowledge Area covers management of the SCM process; software configuration identification, control, status accounting, auditing; software release management and delivery; and software configuration management tools.

Software Engineering Management KA

Software engineering management involves planning, coordinating, measuring, reporting, and controlling a project or program to ensure that development and maintenance of software is systematic, disciplined, and quantified. The Software Engineering Management Knowledge Area covers initiation and scope definition (determining and negotiating requirements, feasibility analysis, and review and revision of requirements); software project planning (process planning, estimation of effort, cost, and schedule, resource allocation, risk analysis, planning for quality); software project enactment (measuring, reporting, and controlling; acquisition and supplier contract management); product acceptance; review and analysis of project performance; project closure; and software management tools.

Software Engineering Process KA

The Software Engineering Knowledge Area is concerned with definition, implementation, assessment, measurement, management, and improvement of software life cycle processes. Topics covered by the Software Engineering Process KA include process implementation and change (process infrastructure, models for process implementation and change, and software process management); process definition (software life cycle models and processes, notations for process definition, process adaptation, and process automation); process assessment models and methods; measurement (process measurement, products measurement, measurement techniques, and quality of measurement results); and software process tools.

Software Engineering Methods KA

The Software Engineering Methods Knowledge Area addresses methods that encompass multiple life cycle stages; methods specific to particular life cycle stages are covered by other KAs. Topics covered include modeling (principles and properties of software engineering models; syntax vs semantics vs invariants; preconditions, post-conditions, and invariants); types of models (information, structural, and behavioral models); analysis (analyzing for correctness, completeness, consistency, quality and interactions; traceability; and tradeoff analysis); and software development methods (heuristic methods, formal methods, prototyping methods, and agile methods).

Software Quality KA

Software quality is a pervasive software life cycle concern that is addressed in many of the SWEBOK V3 KAs. In addition, the Software Quality Knowledge Area includes fundamentals of software quality (software engineering cultures, software quality characteristics, the value and cost of software quality, and software quality improvement); software quality management processes (software quality assurance, verification and validation, reviews and audits); and practical considerations (defect characterization, software quality measurement, and software quality tools).

Software Engineering Professional Practice KA

Software engineering professional practice is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice software engineering in a professional, responsible, and ethical manner. The Software Engineering Professional Practice Knowledge Area covers professionalism (professional conduct; professional societies, software engineering standards, employment contracts, and legal issues); codes of ethics; group dynamics (working in teams, cognitive problem complexity, interacting with stakeholders, dealing with uncertainty and ambiguity; dealing with multicultural environments); and communication skills.

Knowledge Areas Characterizing the Educational Requirements of Software Engineering

Software Engineering Economics KA

The Software Engineering Economics KA is concerned with making decisions within the business context to align technical decisions with the business goals of an organization. Topic covered by this KA include fundamentals of software engineering economics (proposals, cash flow, the time-value of money, planning horizons, inflation, depreciation, replacement and retirement decisions); not for-profit decision-making (cost-benefit analysis, optimization analysis); estimation, economic risk and uncertainty (estimation techniques, decisions under risk and uncertainty); multiple attribute decision making (value and measurement scales, compensatory and non-compensatory techniques).

Computing Foundations KA

The Computing Foundations Knowledge Area covers fundamental topics that provide the computing background necessary for the practice of software engineering. Some of the topics covered in the computing foundations KA are: problem solving techniques, abstraction, algorithms and complexity, programming fundamentals, and the basics of parallel and distributed computing, computer organization, operating systems, and network communication.

Mathematical Foundations KA

The Mathematical Foundations Knowledge Area covers fundamental topics that provide the mathematical background necessary for the practice of software engineering. Some of the topics covered in the Mathematical Foundations KA are: sets, relations, and functions; basic propositional and predicate logic; proof techniques; graphs and trees; discrete probability; grammars and finite state machines; and number theory.

Engineering Foundations KA

The Engineering Foundations Knowledge Area covers fundamental topics that provide the engineering background necessary for the practice of software engineering. Some of the topics covered in the engineering foundations KA are: empirical methods and experimental techniques; statistical analysis; measurements and metrics; engineering design; simulation and modeling; and root cause analysis.

Related Disciplines

The SWEBOK Guide also contains a chapter on related disciplines. The related disciplines are those that share a boundary, and often a common intersection, with software engineering. The SWEBOK Guide Version 3 does not characterize the knowledge of the related disciplines but rather indicates how those disciplines interact with the software engineering discipline. The Related Disciplines include:

  • Computer Engineering
  • Business Management
  • Project Management
  • Quality Management
  • Systems Engineering

References

Works Cited

Abran, A. and J.W. Moore (exec. eds); P. Borque and R. Dupuis (eds.). 2004. SWEBOK: Guide to the Software Engineering Body of Knowledge. Piscataway, NJ, USA: The Institute of Electrical and Electronic Engineers, Inc. (IEEE). Available at: http://www.computer.org/portal/web/swebok

Primary References

Abran, A. and J.W. Moore (exec. eds); P. Borque and R. Dupuis (eds.). 2004. SWEBOK: Guide to the Software Engineering Body of Knowledge. Piscataway, NJ, USA: The Institute of Electrical and Electronic Engineers, Inc. (IEEE). Available at: http://www.computer.org/portal/web/swebok

Additional References

No additional references have been identified for version 0.75. Please provide any recommendations on additional references in your review.


< Previous Article | Parent Article | Next Article >

Comments from SEBok 0.5 Wiki

No comments were logged for this article in the SEBoK 0.5 wiki. Because of this, it is especially important for reviewers to provide feedback on this article. Please see the discussion prompts below.


SEBoK v. 1.9.1 released 30 September 2018

SEBoK Discussion

Please provide your comments and feedback on the SEBoK below. You will need to log in to DISQUS using an existing account (e.g. Yahoo, Google, Facebook, Twitter, etc.) or create a DISQUS account. Simply type your comment in the text field below and DISQUS will guide you through the login or registration steps. Feedback will be archived and used for future updates to the SEBoK. If you provided a comment that is no longer listed, that comment has been adjudicated. You can view adjudication for comments submitted prior to SEBoK v. 1.0 at SEBoK Review and Adjudication. Later comments are addressed and changes are summarized in the Letter from the Editor and Acknowledgements and Release History.

If you would like to provide edits on this article, recommend new content, or make comments on the SEBoK as a whole, please see the SEBoK Sandbox.

blog comments powered by Disqus

SEBoK v. 1.9.1 released 30 September 2018

SEBoK Discussion

Please provide your comments and feedback on the SEBoK below. You will need to log in to DISQUS using an existing account (e.g. Yahoo, Google, Facebook, Twitter, etc.) or create a DISQUS account. Simply type your comment in the text field below and DISQUS will guide you through the login or registration steps. Feedback will be archived and used for future updates to the SEBoK. If you provided a comment that is no longer listed, that comment has been adjudicated. You can view adjudication for comments submitted prior to SEBoK v. 1.0 at SEBoK Review and Adjudication. Later comments are addressed and changes are summarized in the Letter from the Editor and Acknowledgements and Release History.

If you would like to provide edits on this article, recommend new content, or make comments on the SEBoK as a whole, please see the SEBoK Sandbox.

blog comments powered by Disqus