Hello there! Welcome to the first entry in this blog dedicated to all things related to Software Engineering. Today’s topic, fittingly, is foundational to this area.

The SWEBOK, or Software Engineering Body of Knowledge are the generally accepted principles that govern the practice of Software Engineering worldwide. It is published as a guide or technical report by the IEEE Computer Society and has become an ISO standard. In 2013 version 3 of the guide was published and can be downloaded for free.

A total of 15 knowledge areas are found on the guide:

  • Software Requirements Elicitation, analysis, specification, validation and management of software requirements in the whole lifecylce of a software product.
  • Software Design The process of defining the architecture, components, interfaces and other characteristics of a system.
  • Software Consruction The creation of software through coding, verification, unit testing, integration testing and debugging.
  • Software Testing The verification that a program provides expected behaviors on a finite set of test cases.
  • Software Maintenance Planning for postdelivery operations, ensuring maintainability of code and documentation and logistics for transition activities.
  • Software Configuration Management The functional and physical characteristics of hardware and software that are documented and achieved in a software product.
  • Software Engineering Management Planning, coordinating, measuring, monitoring, controlling and reporting to ensure effective and efficient software delivery.
  • Software Engineering Process Requirements, design, construction, testing and configuration management processes for development, maintenance and operation of software.
  • Software Engineering Models and Methods Structures to make software engineering systematic, repeatable and success-oriented.
  • Software Quality Capability of software product to satisfy its requirements, for this to happen, the requirements must accurately represent the needs, wants and expectations of stakeholders.
  • Software Engineering Professional Practice Knowledge, skills and attitudes that software engineers must possess to practice software engineering in a professional, responsible and ethical manner.
  • Software Engineering Economics Aligning software technical decisions with the business goals of the organization, to ensure sustainably staying in business.
  • Computing Foundations All software engineers must have a good underderstanding of the computer and its underliying principles of hardware and software.
  • Mathematical Foundations Mathematics helps engineers understand the formal logic that computers and programs use to work.
  • Engineering Foundations The application of systematic, disciplined, quantifiable approach to structures, machines, products, systems or procesess.

All the above summaries have been adapted or copied from the introduction section of each chapter in the SWEBOK.

It should be noted that the SWEBOK should be used as a guide and a reference, and that each of the knowledge areas described above have a vast ammount of published literature, and each topic has many subtopics that will be explored in future entries to this blog. All of these topics are also active areas of research.

Finally, it should also be noted that the SWEBOK makes no asumptions about the specifics of types of processors, operating systems, programming languages, development methodologies and practices, etc, because its objective is to be as general as possible.

That’s about it for today’s topic, if you would like to add or correct anything on this blog feel free to send an email (or even better, fork the GitHub repository and make a pull request with your changes!). Peace.