The Essence of Software Engineering

, ,

The Essence of Software Engineering

, ,

Wysyłka:
Niedostępna
Cena katalogowa 133,00 PLN brutto
Cena dostępna po zalogowaniu
Dodaj do Schowka
Zaloguj się
Przypomnij hasło
×
×
Cena 133,00 PLN
Dodaj do Schowka
Zaloguj się
Przypomnij hasło
×
×

Opis: The Essence of Software Engineering - Ian Spence, Pan-Wei Ng, Paul McMahon

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 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 Bjorner 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 Bjorner, 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 SoftwaForeword 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


Szczegóły: The Essence of Software Engineering - Ian Spence, Pan-Wei Ng, Paul McMahon

Tytuł: The Essence of Software Engineering
Autor: Ian Spence, Pan-Wei Ng, Paul McMahon
Producent: Addison Wesley Publishing Company
ISBN: 9780321885951
Rok produkcji: 2013
Ilość stron: 352
Oprawa: Miękka
Waga: 0.49 kg


Recenzje: The Essence of Software Engineering - Ian Spence, Pan-Wei Ng, Paul McMahon

Zaloguj się
Przypomnij hasło
×
×