6 The Kernel of Software Engineering
The goal of this chapter is to present the complete Essence kernel with its areas of concern, all its alphas with states and their relationships, its activity spaces, its competencies, and to show how the pattern construct can be used for different subjects. With the complete picture presented, we can go on to map the whole range of aspects of things to work with, things to do, and so on. As a map is always an abstraction from a whole set of details, this chapter will provide first a bird’s eye view. Specifically, we show here
- the basic organization of the kernel, based on three areas of concern;
- the way in which the various alphas are related to these areas of concern;
- all the alphas, activity spaces, and other elements in the kernel;
- the way in which activities relate to progress with respect to the alpha states;
- all the competencies in the kernel, plus insight on why competencies are important in software engineering; and
- how patterns can be used.
In Chapter 5, we introduced the Essence language of software engineering through a simple programming practice. In this chapter, we summarize the elements of software engineering as viewed through the lens of Essence.
After studying this chapter, you should be able to:
- explain the kernel and its three areas of concern;
- explain how the various alphas are related to each other and mapped onto the areas of concern;
- identify the relationship between alphas and alpha states;
- explain in principle how progress is made by performing activities;
- identify the competencies;
- explain how patterns can be used to express frequently occurring combinations of Essence elements (alphas, activities, etc.) in software engineering;
- explain what makes Essence dynamic and actionable;
- explain the concept of activity spaces; and
- give an example of a checkpoint.
Now the basic picture of software engineering has been sketched completely. More detail will come in later chapters of this book. The concrete “instantiation” of these elements in a particular software development endeavor will apply these.