The essence of software engineering : applying the SEMAT kernel

Author(s)

Bibliographic Information

The essence of software engineering : applying the SEMAT kernel

Ivar Jacobson ... [et al.]

Addison-Wesley, 2013

Available at  / 5 libraries

Search this Book/Journal

Note

Includes bibliographical references (p.267-270) and index

Other authors: Pan-Wei Ng, Paul E. McMahon, Ian Spence, Svante Lidman

Description and Table of Contents

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

by "Nielsen BookData"

Details

  • NCID
    BB1232361X
  • ISBN
    • 9780321885951
  • LCCN
    2012041460
  • Country Code
    us
  • Title Language Code
    eng
  • Text Language Code
    eng
  • Place of Publication
    Upper Saddle River, N.J. ; Tokyo
  • Pages/Volumes
    xliii, 300 p.
  • Size
    24 cm
  • Classification
  • Subject Headings
Page Top