Synopses & Reviews
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
Review
Scott W. Ambler
In early 2006, Ivar told me about his ideas around the essentials of the software process and about how to describe them with alphas and work products. At the time, I knew he had some work to do but clearly had important insights to share. This work eventually dovetailed into SEMAT, which I was honored to be involved with at its inception. This book reflects the hard-earned experiences of a host of people, and it is destined to become a classic in the field of software engineering.
–Scott W. Ambler, Founder, AmbySoft Inc.
Dines Bjørner
This book is the result of an intensive effort, SEMAT, originated by Ivar Jacobson. In close collaboration with a string of software engineering consultants, researchers, and practitioners, the authors suggest a basis for software engineering that ties together a number of issues heretofore not adequately covered in the literature. An aim of this book is to provide a basis for both a comprehensive methodology and a theory for software engineering. The book powerfully provides cogent arguments and proposes a number of solutions. I most sincerely hope that this timely book will be studied by many academic researchers and that it will spur widespread discussions and even debates, while at the same time influencing current software engineering and programming methodology research and teaching.
–Dines Bjørner, Ph.D., Dr.h.c., Prof. Emeritus DTU Informatics, Denmark
Barry Boehm
There is an increasing need for software process approaches that are sufficiently flexible to fit the variety of development situations that projects will encounter, but that have sufficient integrity to serve as a basis for developing trustable software systems. Having tried to do this by evolving the spiral model and finding how hard it is, I salute the SEMAT developers for converging on a flexible but gently prescriptive approach to cover the full range of software engineering concerns with its kernel of key process, product, and people elements. Its key principles of value-driven system definition and evolution; balancing of near-term agility and architecting for the long term; and attacking risks early and continuously, are critical success factors for coping with software’s increasing complexity, dynamism, and enterprise-criticality.
–Barry Boehm, USC, Los Angeles, CA, USA
Capers Jones
This book is not just another surface view of software engineering, but rather an attempt to distill the fundamental concepts of software engineering into an effective model that can be used as a guide for any size and kind of software project. The book considers and addresses all factors that influence software applications, including the need or opportunity that initiates a software project, stakeholders, requirements, and the team who will construct it. The book is not all theory, but includes a number of useful examples based on real problems that many readers will recognize.
–Capers Jones, Vice President and Chief Technology Officer, Namcook Analytics LLC
Thomas Atwood
A brilliant approach to bring focus back to the fundamentals in making software projects actually work. I’ve been most recently involved with websites built using dynamic object programming languages like Ruby, cutting edge app servers like Rails, and a new generation of semantic databases. Agile programming, test-driven development, and powerful application frameworks have made tremendous strides on the technology side. Yet the fundamentals of clearly understanding the objectives of a project, and building development teams that work, has lagged behind. SEMAT’s alphas lay it out in a simple, cohesive, and practical fashion. They help everyone who has a stake in the effort, including the customer and the development team, understand the scope and state of the project. Bravo! The distilled wisdom of some of the truly great thinkers who have shaped the software development landscape.
–Thomas Atwood, Ph.D., Director, CloudSuite Media, San Francisco, CA, USA
Arne J. Berre
The SEMAT community should be commended for addressing the identification of a common ground for a much-needed, practice-oriented and adaptive framework for software engineering. It is encouraging to see that the SEMAT Language and kernel also has been contributed as input to a new standard development by the Object Management Group (OMG). This book is an excellent introduction for both practitioners and academics to the principles of this emerging standard and its approach of working with software engineering methods in an agile and lean way.
–Arne J. Berre, Chief Scientist and Associate Professor II, SINTEF and University of Oslo, Norway
Kari Brey
The Essence of Software Engineering: Applying the SEMAT Kernel is what we all have been waiting for. Being a practitioner, and leading organizational transformation in software development for more than ten years, I am often asked why there isn’t something written that guides teams on how to be flexible with their approach to delivering software solutions. This book does just that. The book isn’t about a new methodology. It is about the essentials! It is about figuring out which essentials will be needed for each type of effort, whether it be a small team building a small solution or a large distributed team with several interdependencies building large, complex solutions. One size does not fit all and The Essence of Software Engineering provides the examples for readers to relate to. The book also stresses the importance of collaborating with the stakeholders, understanding their needs, starting out with building a skinny system and building on the skinny system. I am excited to be a part of SEMAT and even more excited in applying the kernel and sharing those learnings with the software community.
–Kari Brey, Office of the CTO, WellPoint, Inc.
Zhong Chen
Simple is beautiful. You won’t be able to imagine how simple and effective the SEMAT way is to address the tough problems of software engineering that have surrounded us for more than forty years, until you read this book— The Essence of Software Engineering. The book clearly presents the concise notation, the elegant kernel elements, and the great thought behind the grand vision of “refounding software engineering based on a solid theory, proven principles and best practices.” It is a good start to establishing a common ground for practitioners and scholars in the software engineering community, as well as a solid foundation for software engineering education. The SEMAT initiative, like a fresh breeze, is blowing from west to east, and from north to south over the continents. We can see the new era of software engineering is coming.
–Dr. Zhong Chen, Chairman of SEMAT Chapter in China; Professor and Chairman, Department of Computer Science and Technology, School of EECS, Peking University, China; Deputy-Chair of Software Engineering Teaching Guidance Committee, Ministry of Education, China
Leo Crawford
For too long, software engineers have been embroiled in ideological battles. Initially these were on the placement of braces and the method of indentation. Those battles are mostly behind us, but there are new ones on how we run our software projects–the process and practices we use. I’m delighted to finally see a text that gives us a framework for discussing and comparing the approaches we use–hopefully moving us from religion to science.
–Leo Crawford, FBCS CEng CITP, Cirencester, UK
Barry Dwolatzky
Teaching software engineering within a university curriculum has always been a difficult task. In most other engineering disciplines, one begins by developing a deep understanding of the theory–the foundational principles that hold true over long periods of time. Only once the student has mastered the theory does one introduce specific methods, practices, and applications. The challenge in software engineering is to separate out the foundational principles–the “theory”–from the practice. In The Essence of Software Engineering, Ivar Jacobson and his coauthors have tackled the ambitious task of distilling out those essential elements, the “kernel,” that lie at the heart of all software engineering methods and practices. This work holds out the promise of giving those of us engaged in teaching software engineering a “theory” upon which to build a coherent and successful curriculum.
–Barry Dwolatzky, Chairman of SEMAT Chapter in South Africa; Professor of Software Engineering and Director, Joburg Centre for Software Engineering (JCSE), Johannesburg, South Africa
Michael Goedicke
The SEMAT initiative provides a range of important possibilities in terms of teaching software engineering. This is a strong motivation for me to engage myself in this activity. The kernel, with its essential notions of software engineering, will enable a systematic and structured teaching. The potential to compare and to assess practices and entire methods will not only be instrumental in teaching and training activities. It also has the potential to identify and categorize new research questions in softwar engineering!
–Prof. Dr. Michael Goedicke, Specification of Software Systems, Paluno, The Ruhr Institute for Software Technology, University of Duisburg-Essen, Germany; Associate Dean, College of Engineering, Carnegie Mellon University
Martin Griss
This book presents an exciting new way of looking at software development and software engineering. What motivates me as a teacher, researcher, and practitioner of software engineering and software reuse is that for the first time we have a robust basis for a solid product-line approach to describing, analyzing, and running software development processes.
• SEMAT provides a kernel and well-founded building blocks, the essential elements of software development. These elements can be composed, adapted, and extended to describe a variety of well-known methods, such as Scrum, XP, and RUP, as well as newer methods, such as for software services, embedded systems, and systematic reuse. The reusable kernel elements can be enhanced with specific practices to describe details of the method you need.
• Not only can you define and describe your method with precision, but you can also use the selected elements to plan and manage your project. Each element defines specific states that can be used to track progress as the method proceeds through its lifecycle, iterations, or sprints. The state of each element tells you exactly where you are in the project and provides an indication of when you will be done. In particular, laying out the color-coded “state cards” on a table or board can give you an effective dashboard.
• The SEMAT approach can revolutionize the way we teach software development in the future. Students will learn the kernel and how to analyze, measure, and extend different methods. Then students will have a framework to quickly compare the completeness and effectiveness of different methods. They will know how to select and customize a method for a particular situation, and be prepared to perform effectively in a variety of industrial situations.
Jacobson’s previous books have led to industry-transforming contributions such as the Unified Modeling Language (UL) and the Unified Process, and so I expect this book too will have an equally profound impact.
–Martin Griss, Ph.D., Director, Silicon Valley Campus
Shihong Huang
As a software engineering professor, I often feel puzzled by how to recognize and convey the core concepts of software engineering, which I can give my students so they are equipped to cope with an ever-changing industry. This book provides a systematic and easy to understand description of the essence of software engineering. The examples in the book are intuitive, the text is easy to follow, and the topics are relevant to industry. We are in dire need of such a textbook in academia. This book is not only a good choice for software engineering courses, but also for general practitioners who wish to excel in their careers. This book will stand as one of the ever-lasting classic software engineering textbooks on the bookshelf.
–Shihong Huang, Florida Atlantic University
Pontus Johnson
The goal of this book is very important: to describe a sound, common foundation for software development. Reaching beyond the hype, the kernel represents the most important elements of any software engineering endeavor and their relation to each other. From a practical perspective, this allows developers to break free of methodological dogmas and tailor their methods according to their own needs. From a theoretical perspective, the kernel is a frame for a comprehensive theory of software engineering. Such a theory is a Holy Grail of software engineering, elevating the discipline from the travails of trial and error tthe province of premeditated design.
–Professor Pontus Johnson, Ph.D., Industrial Information and Control Systems, KTH—Royal Institute of Technology, Stockholm, Sweden
Chao Liu
What is the essence of software engineering? Why should we bother with fundamentals while we study new approaches for solving the problems of software engineering? For a long time, we have not only been faced with a variety of tough problems, but have also been bogged down by the continuously growing number of methods, techniques, and approaches in the field. This book introduces a kernel as a base to understanding software engineering, as well as managing it effectively. It is a unique and very valuable book for anyone with an interest in software engineering. Actually, I have introduced the SEMAT approach in my software engineering courses and also to engineers and managers from the industry where the interest for SEMAT is high.
–Chao Liu, Professor, School of Computer Science and Engineering; Director of Software Engineering Institute, Beihang University, Beijing, China
Barry Myburgh
This book describes a practical and adaptable approach for software engineering. It succeeds where previous attempts at defining adaptable approaches have failed. Instead of starting with a heavyweight process framework and tailoring it for lightweight use, it starts with a common kernel on top of which essential practices can be added to meet the demands of the software engineering situation at hand. We have known for decades that management of software engineering is one of the most difficult things to do, and I am convinced that the SEMAT approach described in this book will be of great help to anyone involved in the management of software engineering!
–Barry Myburgh, M.D. and Principal Consultant, Insyte Information Systems Engineering, Johannesburg, South Africa
Meilir Page-Jones
The SEMAT initiative is a welcome effort to skim away the methodological froth that has long bedeviled us and to reveal the true common core under all software approaches–new and old, fashionable and unfashionable. In this way, managers, practitioners, and academics will be able to compare like with like and therefore make more reasoned discrimination among the smorgasbord of practices and methodologies on offer. I welcome this book, among several other endeavors that seek to promote the SEMAT approach.
–Meilir Page-Jones, Senior Consulting Methodologist, Wayland Systems Inc., Renton, WA, USA
June Sung Park
SEMAT, I believe, will make a landmark contribution to the history of software engineering, which was started back in the 1960s. Its main contribution is to generalize and simplify the core principles of human endeavors that lead to high-quality software in a predictable and controlled manner. The kernel and the language are what the software engineering community needed to have as a common base. This common base will allow countless extensions to address specific contexts and goals of software development and software project management, while making those extensions possible to compare and combine to create better and better combinations.
–Dr. June Sung Park, Professor, Industrial and Systems Engineering, KAIST; Joint Professor, Computer Science, KAIST; Adjunct Professor, School of Management, University of Texas at Dallas
Ed Seymour
Fujitsu became involved with the SEMAT initiative because we recognised how the SEMAT vision aligned with our own strategy for reusable software methods and can help us provide consistent, verifiable points of reference without impeding innovation. This book introduces the SEMAT kernel, which promises to deliver consistency, improved reuse, and a scalable approach to suit all delivery models. I believe it can potentially also help businesses improve their governance, in particular when working with third parties and partners, and even their recruitment processes. This book represents a significant milestone in the progression of software engineering.
–Ed Seymour, Principal Solution Architect, UK & Ireland, Fujitsu
Anders Sjögren
Do you see “the light at the end of the tunnel” or “the forest for all the trees”? After reading this book, and discussing the distillation of software engineering the SEMAT initiative provides with my students, I do see “the forest.” It feels like the SEMAT approach cleans up and lets us organize what has grown in the field of software engineering over many decades. I also hope that the SEMAT approach will prove valuable, not only to pure “software” endeavors, but also more broadly to ICT engineering projects since we rapidly are moving into “software everywhere” and “Internet of things” where hardware plays an equal role as software. This book is worth reading and adopting for a wide range of students and engineers. A bright star, like SEMAT, may illuminate a lot in a tunnel.
–Anders Sjögren, School of ICT, Royal Institute of Technology (KTH), Stockholm, Sweden; President, Korea Software Technology Training Institution, Korea Software Technology Association
Carlos Mario Zapata
For many years, software engineers have been empirically searching for the “essence” of their discipline. Scholars are also searching for this “Holy Grail” of software engineering. I strongly support the ideas behind SEMAT and especially the idea of a “kernel” as envisioned by SEMAT. This book does not mean that the search is over, but I think it presents the best possible candidate we have for evolving towards our Holy Grail.
–Carlos Mario Zapata J., Ph.D., Chairman of SEMAT Chapter in Latin America; School of Systems, National University of Colombia
Synopsis
Using the proposed SEMAT Object Management Group standard, development organizations can "re-found" software engineering based on solid theory, proven principles, and best practices that have earned wide support. Using SEMAT, they can address both technology and human issues, while achieving easy extensibility to support diverse uses, changing requirements, and new technologies. In The Essence of Software Engineering, a team of key SEMAT pioneers introduce this new standard, explaining how it defines a common ground for more agile and effective software development. Led by Ivar Jacobson, one of this generation's most influential software innovators, they fully introduce both elements of SEMAT: the kernel, encompassing Requirements, Software System, Team, Work, other key elements of software projects, and their states, and can be used by practitioners to make better choices about how they develop software systems; ahe language, defining syntax and semantics for organizing and composing practices and methods. For all software engineering practitioners, including architects, designers, developers, testers, requirements engineers, process engineers, and project managers.
Synopsis
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 communicating among teams and team members. It is a book for software professionals, not methodologists. Its usefulness to developers, who need to evaluate and choose the best practices for their particular projects, goes well beyond the description or application of any single methodology.
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, 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
About the Author
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.
Table of Contents
Foreword by Robert Martin xvii Foreword by Bertrand Meyer xxi
Foreword by Richard Soley xxiii
Preface xxvii
Acknowledgments xliii
Part I: The Kernel Idea Explained 1
Chapter 1: A Glimpse of How the Kernel Can Be Used 3
1.1 Why Is Developing Good Software So Challenging? 4
1.2 Getting to the Essence of Software Engineering: The Kernel 5
1.3 Using the Kernel to Address Specific Challenges: An Example 6
1.4 Learning How to Address Development Challenges with the Kernel 10
Chapter 2: A Little More Detail about the Kernel 13
2.1 How to Use the Kernel to Address a Specific Challenge: An Example 13
2.2 Introducing the Alphas 14
2.3 Alphas Have States to Help a Team Achieve Progress 18
2.4 There Is More to the Kernel 21
Chapter 3: A 10,000-Foot View of the Full Kernel 23
3.1 Organizing the Kernel 24
3.2 The Essential Things to Progress and Evolve: The Alphas 25
3.3 The Essential Things to Do: The Activities 32
3.4 Competencies 35
3.5 Finding Out More about the Kernel 36
Chapter 4: The Kernel Alphas Made Tangible with Cards 37
4.1 Using Cards As Aids to Address a Specific Challenge: An Example 38
4.2 Making the Kernel Come Alive 41
Chapter 5: Providing More Details to the Kernel through Practices 43
5.1 Making a Practice Explicit 44
5.2 How Explicit Should Practices Be? 45
5.3 Building Methods from Practices 47
5.4 Learning Methods and Practices 48
Chapter 6: What the Kernel Can Do for You 51
6.1 Developing Great Software 52
6.2 Growing 54
6.3 Learning 55
6.4 Evolving 55
6.5 Further Reading 56
Part II: Using the Kernel to Run an Iteration 59
Chapter 7: Running Iterations with the Kernel: Plan-Do-Check-Adapt 61
7.1 Terminology Used 61
7.2 Plan-Do-Check-Adapt 62
7.3 Setting the Scene 64
7.4 The Focus for the Next Few Chapters 66
Chapter 8: Planning an Iteration 69
8.1 Planning Guided by Alpha States 70
8.2 Determining the Current State in Our Story 73
8.3 Determining the Next State in Our Story 73
8.4 Determining How to Achieve the Next States in Our Story 73
8.5 How the Kernel Helps You in Planning Iterations 78
Chapter 9: Doing and Checking the Iteration 79
9.1 Doing and Checking the Iteration with the Kernel 79
9.2 Doing and Checking the Iteration in Our Story 81
9.3 How the Kernel Helps You in Doing and Checking the Iteration 84
Chapter 10: Adapting the Way of Working 87
10.1 Adapting the Way of Working with the Kernel 87
10.2 Adapting the Way of Working in the Story 88
10.3 How the Kernel Helps You in Adapting the Way of Working 90
Chapter 11: Running an Iteration with Explicit Requirement Item States 93
11.1 Working with Explicit Requirement Items 93
11.2 Planning an Iteration in Our Story 95
11.3 Doing Another Iteration in Our Story 97
11.4 Adapting the Way of Working in Our Story 100
11.5 Discussion 102
11.6 Further Reading 103
Part III: Using the Kernel to Run a Software Endeavor 105
Chapter 12: Running a Software Endeavor: From Idea to Production 107
12.1 The People in Our Story and Challenges along the Way 107
12.2 Understanding the Organizational Context 109
Chapter 13: Building the Business Case 111
13.1 Getting Ready to Start in Our Story 111
13.2 Understanding the Opportunity and the Stakeholders 115
13.3 Understanding the Solution 117
13.4 Preparing to Do the Work 119
13.5 Establishing a High-Level Plan 121
13.6 Building the Schedule 125
13.7 How the Kernel Helps You in Getting Started 128
Chapter 14: Developing the System 131
14.1 Building the Skinny System—Getting Things Working 135
14.2 Engaging the Stakeholders 136
14.3 Starting Development 138
14.4 Establishing an Agreed-on Way of Working 139
14.5 Making the Skinny System Usable—Getting Things Working Well 143
14.6 Keeping the Stakeholders Involved 144
14.7 Evolving a Usable System 146
14.8 Getting to a Good Way of Working 148
14.9 Evolving a Deployable Solution—Concluding the Work 149
14.10 Gaining Acceptance 151
14.11 Getting to Delivery 152
14.12 Done! Completing Development Work 154
14.13 How the Kernel Helps You Develop Great Software 156
Chapter 15: Operating the Software 157
15.1 Setting the Scene 157
15.2 Going Live—Successfully Deploying the System 161
15.3 Deploying the System 162
15.4 Handing Over between the Two Teams 164
15.5 Supporting the System until Retirement 167
15.6 Our Story Ends 170
15.7 Further Reading 170
Part IV: Scaling Development with the Kernel 173
Chapter 16: What Does It Mean to Scale? 175
Chapter 17: Zooming In to Provide Details 179
17.1 Making Practices Precise for Inexperienced Members 180
17.2 An Example: A Requirements Elicitation Practice 182
17.3 An Example: An Acceptance Testing Practice 184
17.4 Understanding How Practices Work Together 186
17.5 Value of Precise Practices 188
Chapter 18: Reaching Out to Different Kinds of Development 191
18.1 Agreeing on the Practices to Use 192
18.2 Adapting to Your Development Life Cycle 193
18.3 Building a Method Incrementally during Development 194
18.4 Methods in Large Organizations 197
18.5 Putting Teams in Control of Their Methods 198
Chapter 19: Scaling Up to Large and Complex Development 201
19.1 An Example of Large Development 202
19.2 Organizing Work Using the Alphas 204
19.3 Visualizing Development with the Alphas 208
19.4 Coordinating the Development Teams through Alphas 210
19.5 Empowering Teams to Scale 212
19.6 Further Reading 213
Part V: How the Kernel Changes the Way You Work with Methods 215
Chapter 20: Thinking about Methods without Thinking about Methods 217
20.1 You Think about Methods All the Time 218
20.2 Doing Rather Than Discussing 219
Chapter 21: Agile Working with Methods 221
21.1 The Full Team Owns Their Method, Rather Than a Select Few 222
21.2 Focus on Method Use Rather Than Comprehensive Method Description 223
21.3 Evolve Your Team’s Method, Rather Than Keeping Your Method Fixed 224
Part VI: What’s Really New Here? 227
Chapter 22: Refounding Methods 229
22.1 Not a Lack of Methods, but a Lack of a Foundation—a Kernel 229
22.2 The Kernel Values Practicality 230
22.3 The Kernel Is Actionable and Extensible 232
Chapter 23: Separation of Concerns Applied to Methods 235
23.1 Separating the Kernel from Practices 236
23.2 Separating Alphas from WorkProducts 237
23.3 Separating the Essence from the Details 238
Chapter 24: The Key Differentiators 241
24.1 Innovations with Methods 241
24.2 Practical Tools for Software Teams and Professionals 242
Part VII: Epilogue 245
Chapter 25: This Is Not the End 247
Chapter 26: . . . But Perhaps It Is the End of the Beginning 249
Chapter 27: When the Vision Comes True 253
27.1 The Software Professional 253
27.2 The Industry 254
27.3 The Academic World 255
27.4 An Exciting Future 256
27.5 Further Reading 257
Appendix A: Concepts and Notation 261
Appendix B: What Does This Book Cover with Respect to the Kernel? 263
B.1 Inside the Kernel, and Inside This Book 263
B.2 Outside the Kernel, but Inside This Book 264
B.3 Inside the Kernel, but Outside This Book 265
Appendix C Bibliography 267
C.1 SEMAT Working Documents 267
C.2 SEMAT: Other Documents and References 268
C.3 Other References 270
About the Authors 271
What People Are Saying about This Book 275
Index 287