knowledge. Mandating a one-size-fits-all process for all projects does not support the need for continual learning and
adaptation, however, and suppresses
craftsmanship and creativity.
The move from craft to engineering
requires first freeing the practices, presenting them in an accessible, reusable
way that allows engineers confidently
and predictably to select the right engineering practices for their context and
the problems they are trying to solve.
Essence: A Hope for a Better Future
Software development is a multidimensional endeavor—where human ingenuity meets human need meets collective
endeavor meets codified knowledge—
that would benefit from the judicious
application of engineering practices.
The path from craft to engineering
progresses—from ad hoc practice to
codified professional engineering
practices—through scientific learning.
The key to this transformation is the
ability to readily capture, share, and
improve the practices.
Essence is a simple intuitive language and kernel of foundational elements for the capture, description,
and assembly of practices and methods. Work on Essence has been going
on for more than 10 years—for the last
six years within the SEMAT (Software
Engineering Method and Theory) community—resulting in a new international standard, adopted by OMG (
Object Management Group) in 2014.5 It
goes beyond just providing syntax and
notation for describing practices to establishing a solid common ground—a
kernel—that enables teams to:
˲ Describe their practices on top of a
universal, shared kernel.
˲ Easily share, adapt, and plug and
play with their practices to create the
innovative ways of working they need
to excel and continuously improve.
˲ Understand and visualize the progress and health of their endeavors, regardless of their way of working.
Essence has several roles to play in
the move from craft to engineering: It is
helping to achieve the right balance in
software engineering endeavors; helping to codify and capture engineering
practices; and acting as the basis for a
new kind of engineering community.
The use of Essence alone won’t
turn craftspeople into engineers, but
its adoption will help an organization
make this important transition and,
moreover, help the industry prepare
for the future.
Balancing progress and health. Es-
sence provides a kernel of elements
that establishes a common ground for
carrying out software engineering en-
deavors. This can be used in a number
of ways to increase the effectiveness of
software engineering teams.
Actively monitoring the health of an
endeavor. The kernel defines seven
aspects of concern for any software
engineering endeavor: opportunity,
stakeholders, requirements, team,
work, way of working, and the soft-
ware system itself. For each of these
elements Essence defines a series
of states, with checklists, represent-
ing healthy progress. As shown in
Figure 1, these can be used to create
practice-independent health moni-
tors that can be used to check that
the endeavor is on course and pro-
ceeding in a healthy manner. On the
top, the radar chart (an interactive,
online version complete with check-
lists is available1) represents progress
as growth from the center; and on the
bottom, on the milestone map (avail-
able from the App Store as the Alpha
State Explorer app by Ivar Jacobson
International), all the states are laid
out in order from top to bottom,
with achieved states shown filled
in. The second example also shows
the checklist used to confirm the
achievement of the Software System
Demonstrable state.
The kernel can also be used to create
lightweight governance and compli-
ance practices to help ensure the team
achieves the required level of engineer-
ing rigor. By basing the governance
and compliance on the kernel itself,
this can be achieved in a practice-inde-
pendent fashion allowing the teams to
safely innovate and own their own ways
of working. Figure 2 shows the four dif-
ferent governance life cycles that were
at the heart of Munich Re Essentials,
the modern practice-based software
development method created by Mu-
nich Reinsurance.
4 The four life cycles
are Exploratory, Feature Growth, Main-
tenance, and Support, and the check-
points (milestones) of each life cycle
are defined by the states to be achieved
for each alpha.
Assessing the effectiveness of methods.
Essence at its roots gives a detailed
definition of software engineering. In
the search for a GTSE (general theory
of software engineering),
6 several researchers use Essence as such a definition, and more is expected to come
out of this work. A key aspect provid-
Figure 3. Simple Essence-based activity map.
Cu
sto
m
e
r
So
lu
ti
on
E
n
d
ea
vou
r
Explore
Possibilities
Ensure Stakeholder
Satisfaction
Shape the
System
Implement
the System
Test the
System
Deploy the
System
Use the System
Operate
the System
Stakeholder Needs
Prepare to
do the Work
Coordinate
Activity
Support
the Team
Stop the
Work
Progress
Requirements