The Essence of Software Engineering : Applying the SEMAT Kernel

The Essence of Software Engineering : Applying the SEMAT Kernel

  • ただいまウェブストアではご注文を受け付けておりません。 ⇒古書を探す
  • 製本 Paperback:紙装版/ペーパーバック版/ページ数 300 p.
  • 言語 ENG
  • 商品コード 9780321885951
  • DDC分類 005.1

Full Description


SEMAT (Software Engineering Methods and Theory) is an international initiative designed toidentify a common ground, or universal standard, for software engineering. It is supported bysome of the most distinguished contributors to the field. Creating a simple language to describemethods and practices, the SEMAT team expresses this common ground as a kernel-orframework-of elements essential to all software development.The Essence of Software Engineering introduces this kernel and shows how to apply it whendeveloping 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 andchoose the best practices for their work, goes well beyond the description or application ofany 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 hardreality 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 andpractices that have stood the test of time and recognition."-Bertrand Meyer"The software development industry needs and demands a core kernel and language for definingsoftware development practices-practices that can be mixed and matched, brought on board fromother organizations; practices that can be measured; practices that can be integrated; and practicesthat can be compared and contrasted for speed, quality, and price. This thoughtful book gives agood grounding in ways to think about the problem, and a language to address the need,and every software engineer should read it."-Richard Soley

Contents

Foreword by Robert Martin xvii Foreword by Bertrand Meyer xxiForeword by Richard Soley xxiiiPreface xxviiAcknowledgments xliiiPart I: The Kernel Idea Explained 1Chapter 1: A Glimpse of How the Kernel Can Be Used 31.1 Why Is Developing Good Software So Challenging? 41.2 Getting to the Essence of Software Engineering: The Kernel 51.3 Using the Kernel to Address Specific Challenges: An Example 61.4 Learning How to Address Development Challenges with the Kernel 10Chapter 2: A Little More Detail about the Kernel 132.1 How to Use the Kernel to Address a Specific Challenge: An Example 132.2 Introducing the Alphas 142.3 Alphas Have States to Help a Team Achieve Progress 182.4 There Is More to the Kernel 21Chapter 3: A 10,000-Foot View of the Full Kernel 233.1 Organizing the Kernel 243.2 The Essential Things to Progress and Evolve: The Alphas 253.3 The Essential Things to Do: The Activities 323.4 Competencies 353.5 Finding Out More about the Kernel 36Chapter 4: The Kernel Alphas Made Tangible with Cards 374.1 Using Cards As Aids to Address a Specific Challenge: An Example 384.2 Making the Kernel Come Alive 41Chapter 5: Providing More Details to the Kernel through Practices 435.1 Making a Practice Explicit 445.2 How Explicit Should Practices Be? 455.3 Building Methods from Practices 475.4 Learning Methods and Practices 48Chapter 6: What the Kernel Can Do for You 516.1 Developing Great Software 526.2 Growing 546.3 Learning 556.4 Evolving 556.5 Further Reading 56Part II: Using the Kernel to Run an Iteration 59Chapter 7: Running Iterations with the Kernel: Plan-Do-Check-Adapt 617.1 Terminology Used 617.2 Plan-Do-Check-Adapt 627.3 Setting the Scene 647.4 The Focus for the Next Few Chapters 66Chapter 8: Planning an Iteration 698.1 Planning Guided by Alpha States 708.2 Determining the Current State in Our Story 738.3 Determining the Next State in Our Story 738.4 Determining How to Achieve the Next States in Our Story 738.5 How the Kernel Helps You in Planning Iterations 78Chapter 9: Doing and Checking the Iteration 799.1 Doing and Checking the Iteration with the Kernel 799.2 Doing and Checking the Iteration in Our Story 819.3 How the Kernel Helps You in Doing and Checking the Iteration 84Chapter 10: Adapting the Way of Working 8710.1 Adapting the Way of Working with the Kernel 8710.2 Adapting the Way of Working in the Story 8810.3 How the Kernel Helps You in Adapting the Way of Working 90Chapter 11: Running an Iteration with Explicit Requirement Item States 9311.1 Working with Explicit Requirement Items 9311.2 Planning an Iteration in Our Story 9511.3 Doing Another Iteration in Our Story 9711.4 Adapting the Way of Working in Our Story 10011.5 Discussion 10211.6 Further Reading 103Part III: Using the Kernel to Run a Software Endeavor 105Chapter 12: Running a Software Endeavor: From Idea to Production 10712.1 The People in Our Story and Challenges along the Way 10712.2 Understanding the Organizational Context 109Chapter 13: Building the Business Case 11113.1 Getting Ready to Start in Our Story 11113.2 Understanding the Opportunity and the Stakeholders 11513.3 Understanding the Solution 11713.4 Preparing to Do the Work 11913.5 Establishing a High-Level Plan 12113.6 Building the Schedule 12513.7 How the Kernel Helps You in Getting Started 128Chapter 14: Developing the System 13114.1 Building the Skinny System-Getting Things Working 13514.2 Engaging the Stakeholders 13614.3 Starting Development 13814.4 Establishing an Agreed-on Way of Working 13914.5 Making the Skinny System Usable-Getting Things Working Well 14314.6 Keeping the Stakeholders Involved 14414.7 Evolving a Usable System 14614.8 Getting to a Good Way of Working 14814.9 Evolving a Deployable Solution-Concluding the Work 14914.10 Gaining Acceptance 15114.11 Getting to Delivery 15214.12 Done! Completing Development Work 15414.13 How the Kernel Helps You Develop Great Software 156Chapter 15: Operating the Software 15715.1 Setting the Scene 15715.2 Going Live-Successfully Deploying the System 16115.3 Deploying the System 16215.4 Handing Over between the Two Teams 16415.5 Supporting the System until Retirement 16715.6 Our Story Ends 17015.7 Further Reading 170Part IV: Scaling Development with the Kernel 173Chapter 16: What Does It Mean to Scale? 175Chapter 17: Zooming In to Provide Details 17917.1 Making Practices Precise for Inexperienced Members 18017.2 An Example: A Requirements Elicitation Practice 18217.3 An Example: An Acceptance Testing Practice 18417.4 Understanding How Practices Work Together 18617.5 Value of Precise Practices 188Chapter 18: Reaching Out to Different Kinds of Development 19118.1 Agreeing on the Practices to Use 19218.2 Adapting to Your Development Life Cycle 19318.3 Building a Method Incrementally during Development 19418.4 Methods in Large Organizations 19718.5 Putting Teams in Control of Their Methods 198Chapter 19: Scaling Up to Large and Complex Development 20119.1 An Example of Large Development 20219.2 Organizing Work Using the Alphas 20419.3 Visualizing Development with the Alphas 20819.4 Coordinating the Development Teams through Alphas 21019.5 Empowering Teams to Scale 21219.6 Further Reading 213Part V: How the Kernel Changes the Way You Work with Methods 215Chapter 20: Thinking about Methods without Thinking about Methods 21720.1 You Think about Methods All the Time 21820.2 Doing Rather Than Discussing 219Chapter 21: Agile Working with Methods 22121.1 The Full Team Owns Their Method, Rather Than a Select Few 22221.2 Focus on Method Use Rather Than Comprehensive Method Description 22321.3 Evolve Your Team's Method, Rather Than Keeping Your Method Fixed 224Part VI: What's Really New Here? 227Chapter 22: Refounding Methods 22922.1 Not a Lack of Methods, but a Lack of a Foundation-a Kernel 22922.2 The Kernel Values Practicality 23022.3 The Kernel Is Actionable and Extensible 232Chapter 23: Separation of Concerns Applied to Methods 23523.1 Separating the Kernel from Practices 23623.2 Separating Alphas from WorkProducts 23723.3 Separating the Essence from the Details 238Chapter 24: The Key Differentiators 24124.1 Innovations with Methods 24124.2 Practical Tools for Software Teams and Professionals 242Part VII: Epilogue 245Chapter 25: This Is Not the End 247Chapter 26: . . . But Perhaps It Is the End of the Beginning 249Chapter 27: When the Vision Comes True 25327.1 The Software Professional 25327.2 The Industry 25427.3 The Academic World 25527.4 An Exciting Future 25627.5 Further Reading 257Appendix A: Concepts and Notation 261Appendix B: What Does This Book Cover with Respect to the Kernel? 263B.1 Inside the Kernel, and Inside This Book 263B.2 Outside the Kernel, but Inside This Book 264B.3 Inside the Kernel, but Outside This Book 265Appendix C Bibliography 267C.1 SEMAT Working Documents 267C.2 SEMAT: Other Documents and References 268C.3 Other References 270About the Authors 271What People Are Saying about This Book 275Index 287

最近チェックした商品