The Essence of Software Engineering: Applying the SEMAT Kernel [NOOK Book]



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 ...

See more details below
The Essence of Software Engineering: Applying the SEMAT Kernel

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac

Want a NOOK? Explore Now

NOOK Book (eBook)
$25.59 price
(Save 20%)$31.99 List Price



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

Read More Show Less

Editorial Reviews

From the Publisher

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

Read More Show Less

Product Details

  • ISBN-13: 9780133153132
  • Publisher: Pearson Education
  • Publication date: 1/25/2013
  • Sold by: Barnes & Noble
  • Format: eBook
  • Edition number: 1
  • Pages: 352
  • Sales rank: 919,682
  • File size: 17 MB
  • Note: This product may take a few minutes to download.

Meet 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.

Read More Show Less

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

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)