The Essence of Software Engineering: Applying the SEMAT Kernel

Front Cover

SEMAT (Software Engineering Methods and Theory) is an international initiative designed to

identify a common ground, or universal standard, for software engineering. It is supported by

some of the most distinguished contributors to the field. Creating a simple language to describe

methods and practices, the SEMAT team expresses this common ground as a kernel–or

framework–of elements essential to all software development.

The Essence of Software Engineering introduces this kernel and shows how to apply it when

developing software and improving a team’s way of working. It is a book for software professionals,

not methodologists. Its usefulness to development team members, who need to evaluate and

choose the best practices for their work, goes well beyond the description or application of

any single method.

“Software is both a craft and a science, both a work of passion and a work of principle.

Writing good software requires both wild flights of imagination and creativity, as well as the hard

reality of engineering tradeoffs. This book is an attempt at describing that balance.”

—Robert Martin (unclebob)


“The work of Ivar Jacobson and his colleagues, started as part of the SEMAT initiative,

has taken a systematic approach to identifying a ‘kernel’ of software engineering principles and

practices that have stood the test of time and recognition.”

—Bertrand Meyer


“The software development industry needs and demands a core kernel and language for defining

software development practices—practices that can be mixed and matched, brought on board from

other organizations; practices that can be measured; practices that can be integrated; and practices

that can be compared and contrasted for speed, quality, and price. This thoughtful book gives a

good grounding in ways to think about the problem, and a language to address the need,

and every software engineer should read it.”

—Richard Soley

 

What people are saying - Write a review

LibraryThing Review

User Review  - BenLinders - LibraryThing

Since the first time that I heard about the Software Engineering Method and Theory (SEMAT) initiative in 2010, I have been interested to see what would be the result. The publications of the first ... Read full review

User Review - Flag as inappropriate

I am a bit confused. I had the notion that this was about improving software quality through the application of a rigorous set of rules. Section 1.1 "Why is developing good software so challenging?" seems like we're on the right track. But I find that it has not that much to do with Software, nor Engineering. It seems it is a method for applying rules and visual indications for the progress of tasks by people for people. Which means that to me at least, this book is more about general project management than anything near software or engineering.
I found the tone of the book to be rather preaching and praising of this new found holy grail, the Kernel, all praise the Kernel, apply it to anything and everything. A common phase throughout is: "How can the kernel help you." The kernel consist of just about 57 cards, but can be extended. Seems like the marketing managers choice for gamification Yu-gi-oh!-style.
I'm all for simple and concise ways of working. I do believe that visual aids can support collaboration and communication as well as bring a quick overview, and that these are needed for projects to succeed, but they are not all which is needed.
I believe in the "as simple as possible, but no simpler." - as Einstein put it. As well as Antoine de Saint-Exupéry's "You have achieved perfection not when there is nothing left to add, but when there is nothing left to take away."
Throughout the book the Kernel will simply help do everything, it's a veritable Swiss Army knife. I don't think I've seen any professional choose the Swiss Army knife above their own set of tools. While the Kernel is lightweight - at least compared to RUP - then there are alternatives, which are even more lightweight, e.g. Impact Mapping.
To me it seems that applying the Kernel kind of looks like Kanban with a "work in progress"-board. But then it also looks a bit like a concurrent waterfall, which could be due to the fact that I read RUP and UML into the stuff that Ivar writes. Both of which were praised. In my opinion wrongly so. UML is great for back of the napkin illustration of concepts, a variant worked wonders in the Design Patterns book, but UML in the latest incarnation seems overly verbose as a modelling language - under the notion that a model is a simplified abstraction of the real thing.
Perhaps Ivar is biased from electronic engineering with all their symbols and glyphs (Try looking for IEC 60617 on Google). But what he fails to realize is that those symbols are really their programming language. For software development, we have our own programming languages, and we don't need a modelling language to go into minute details - at least not as a document. If you generate the model from the source code you can apply as much details as you want, but believing that a change is applied both to the model and to the source code is betting against the DRY principle: Don't Repeat Yourself.
Why do have a sense of concurrent waterfall? Well, the cards follow 7 aspects, called alphas: Opportunity, Stakeholders, Requirements, Software System, Team, Work, and Way of Working. While I agree to these, and their connections noted in the graphs, e.g. Figure 2-1 on page 15 (not shown here), then there is a notion of the 5 or 6 steps, and seemingly you can only progress, e.g. from Opportunity :: Identified to Opportunity :: Solution Needed. And while that might be true for opportunities, then I don't see why Way of Working :: Working Well will stay there until the project is done.
Some of the praise in the book is from academia, and while it is easier to teach a rigorous system, it may still not be the right thing to do - at least it hasn't helped adding UML, RUP, etc. to the curriculum.
In the praise section, Ed Seymour notes that: "This book represents a significant milestone in the progression of software engineering." I'm sure that any book is a milestone in its domain, I just feel that this book is a milestone along a
 

Contents

Foreword by Robert Martin
Preface
Acknowledgments
A Little More Detail about the Kernel
A 10000Foot View of the Full Kernel
The Kernel Alphas Made Tangible with Cards
Providing More Details to the Kernel through
Using the Kernel to Run an Iteration
Using the Kernel to Run a Software Endeavor
Developing the System
Operating the Software
Further Reading
Scaling Up to Large and Complex Development
How the Kernel Changes the Way You Work with Methods
Whats Really New Here?
Epilogue

Planning an Iteration
Doing and Checking the Iteration
Adapting the Way of Working
Appendix A Concepts and Notation
Copyright

Other editions - View all

Common terms and phrases

About the author (2013)

Dr. Ivar Jacobson, one of the prime movers behind SEMAT, is the principal author of six books, including, with Pan-Wei Ng, Aspect-Oriented Software Development with Use Cases (Addison-Wesley, 2005).

Dr. Pan-Wei Ng is the Asia Pacific CTO and chief scientist at IvarJacobson International and coaches large-scale development extensively.

Paul E. McMahon, principal of PEM Systems, is the author of Integrating CMMI® and Agile Development (Addison-Wesley, 2011).

Ian Spence, chief scientist and principal consultant at Ivar Jacobson International, is the coauthor of Managing Iterative Software Development Projects (Addison-Wesley, 2007).

Svante Lidman is a senior productivity expert at Hansoft and has been leading and coaching software development teams for twenty years.

Bibliographic information