Product Cover Image

Essence of Software Engineering, The: Applying the SEMAT Kernel

By Ivar Jacobson, Pan-Wei Ng, Paul E. McMahon, Ian Spence, Svante Lidman

Published by Addison-Wesley Professional

Published Date: Jan 11, 2013

Description

 

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

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

Purchase Info

ISBN-10: 0-13-315317-7

ISBN-13: 978-0-13-315317-0

Format: eBook (Watermarked)?

This eBook includes the following formats, accessible from your Account page after purchase:

ePubEPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

MOBIMOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

Adobe ReaderPDFThe popular standard, used most often with the free Adobe® Reader® software.

This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.

Includes EPUB, MOBI, and PDF

$31.99

Add to Cart