Comparison of six core processes of SA&D to the ten knowledge areas of the SWEBOK

By | January 18, 2012

This blog is about Software Engineering and different approaches that one may take to develop software. There are many ways to go through system development life cycle. Among all, I can name, the waterfall model, agile methods, the rational unified process or RUP, model-driven architecture, intermezzo (maintenance or evolution), software product lines, process modeling and so on. No matter what approach we choose to use in our development, we go through identifying problems, requirement and specification gathering, designing and implementing the specification, make the program and testing them and eventually maintaining the working program and improve it. I won’t elaborate on each method, just wanted to name them for the interested party and if you like can search the web to learn more about each approach.

According to the book of System Analysis and Design in a changing world by Satzinger, there are six core process of the Systems Development life Cycle (SDLC) and the idea is each system gets evolved over several iterations and each iteration consists of the following six core processes:

  1. Identify the problem or need and obtain approval to proceed.
  2. Plan and monitor the project- what to do, how to do it, and who does it.
  3. Discover and understand the details of the problem or the need.
  4. Design the system components that solve the problem or satisfy the need.
  5. Build, test, and integrate system components.
  6. Complete system tests and then deploy the solution.

This is how iterative Agile project might be built. Core components are built first and then additional components are added. This method is called iterative development because the six core processes are repeated over and over, in another word there is one big project that consists of many mini-projects.

There is also a defined process known as The Software Engineering Body of Knowledge (SWEBOK) that promotes a consistent view of Software Engineering and is a guide to the main broken Knowledge Areas. According to SWEBOK, there are 10 Knowledge Areas that each contains a reasonable topic list presenting sound information about Software Engineering.

The first 5 Knowledge Areas cover the repeatable processes (Requirement, Design, Construction, Testing, and Maintenance) and the following image displays some of the details of each process:

 

And there are five more knowledge areas that are about managed processes including (Software Configuration Management, Software Engineering Management, Software Engineering Process, Software Engineering Tools and Methods, Software Quality)

According to SWEBOK, the above Knowledge Areas are applicable to the following Disciplines: Computer Science, Mathematics, Project Management, Computer Engineering, Cognitive Science and Human Factors, System Engineering, and Management and Management Science.

By looking at the two concepts, we can see the SWEBOK contains the first six core process in the first knowledge areas, plus SCM (System Configuration Management).

Additionally to the six processes, SWEBOK defined the following Knowledge Areas which is not covered by SA&D as core processes:

  • Software Engineering Management which is mostly about Organization Management, Process/Project Management and Software Engineering Measurement.
  • Software Engineering Process concepts which is about Process Infrastructure, Process Measurement, Process Definition, Qualitative Process Analysis and Process Implementation and change
  • Software Engineering Tools and Methods which Software Tools are requirement tools, design tools, construction tools, testing tools, maintenance tools, engineering process tools, quality tools, configuration tools, management tools, engineering management tools, infrastructure support tools, Miscellaneous tools issues and Software Methods are Heuristic, Formal, Prototyping, Miscellaneous
  • Software Quality concepts are for the purpose and planning of SQA and about the activities and techniques that is applied in SQA and Measurement applied to Software Quality Assurance.

This shows a very high level comparison of the two approaches and the difference of them. Hope it helps in identifying each approach and see the usefulness of each.