ally new here? This can be summed up
in its founding principles (see Figure
3), which really bring out three unique
features of the kernel: it is actionable;
it is extensible; and it is practical.
The kernel is actionable. A unique
feature of the kernel is the way that
it handles the “things to work with.”
These are captured as alphas rather
than work products (such as documents). An alpha is an essential element of the software-engineering
endeavor—one that is relevant to an
assessment of its progress and health.
As shown in Figure 1, SEMAT has identified seven alphas: opportunity, stakeholders, requirements, software system, work, way of working, and team.
The alphas are characterized by a
simple set of states that represent their
progress and health. As an example,
the software system moves through the
states of architecture selected: demonstrable, usable, ready, operational, and
retired. Each state has a checklist that
specifies the criteria needed to reach
the state. These states make the kernel actionable and enable it to guide
the behavior of software-development
The kernel presents software development not as a linear process but as a
network of collaborating elements that
need to be balanced and maintained so
teams can make effective and efficient
progress, eliminate waste, and develop great software. The alphas in the
kernel provide an overall framework
for driving and progressing software-development efforts, regardless of the
practices applied or the philosophy followed.
figure 3. Guiding principles behind
As practices are added to the kernel,
alphas will be added to represent the
things that either drive the progress of
the kernel alphas or inhibit their progress. For example, the requirements
alpha will not be addressed as a whole
but will move forward item by item.
The progress of the individual requirement items will either drive or inhibit
the progress and health of the requirements alpha. The requirements items
could be of many different types: for
example, features, user stories, or use-case slices, all of which can be represented as alphas and have their states
tracked. The benefit of relating these
smaller items to the coarser-grained
kernel elements is that it allows the
tracking of the health of the endeavor
as a whole. This provides a necessary
balance to the lower-level tracking of
the individual items, enabling teams
to understand and optimize their ways
The kernel is extensible. Another
unique feature of the kernel is the way
it can be extended to support different
projects (for example, new development, legacy enhancements, in-house
development, offshore development,
software product lines, and so on). The
kernel allows you to add practices, such
as user stories, use cases, component-based development, architecture, pair-programming, daily stand-up meetings, self-organizing teams, and so on
to build the methods you need. For example, different methods could be assembled for in-house and outsourced
development or for the development of
safety-critical embedded systems and
back-office reporting systems.
figure 4. cards make the kernel tangible.
Practice separation is the key idea
here. While the term practice has been
widely used in the industry for many
years, the kernel has a specific approach to the handling and sharing
of practices. Practices are presented
as distinct, separate, modular units,
which a team can choose to use or not
to use. This contrasts with traditional
approaches that treat software development as a soup of indistinguishable
practices and lead teams to dump the
good with the bad when they move
from one method to another.
The kernel is practical. Perhaps the
most important feature of the kernel is
the way it is used in practice. Traditional approaches to software-development
methods tend to focus on supporting
process engineers or quality engineers.
The kernel, in contrast, is a hands-on,
tangible thinking framework focused
on supporting software professionals
as they carry out their work.
For example, the kernel can be
touched and used through cards (see
Figure 4). 7, 10 The cards provide concise
reminders and cues for team members as they go about their daily tasks.
By providing practical checklists and
prompts, as opposed to conceptual
discussions, the kernel becomes something the team uses on a daily basis.
This is a fundamental difference from
traditional approaches, which tend to
overemphasize method description
as opposed to method use and tend to
be consulted only by people new to the
Cards provide concise descriptions that serve as reminders for team
members. They can keep the kernel as