Home > Store > Process Improvement

larger cover

Add To My Wish List

Emergent Design: The Evolutionary Nature of Professional Software Development

Register your product to gain access to bonus material or receive a coupon.

  • Description
  • Extras
  • Reviews
  • Sample Content

Product Author Bios

Scott L. Bain is a thirty-year veteran in computer technology, with a background in development, engineering, and design. He has also designed, delivered, and managed training programs for certification and end-user skills, both in traditional classrooms and via distance learning. For the past eight years, Scott has been working for Net Objectives in Puget Sound, teaching courses and consulting on design patterns, refactoring, unit testing, and test-driven development. Along with Net Objectives CEO Alan Shalloway, he has contributed significantly to the integration of design patterns in Agile environments. Scott is a frequent speaker at developer conferences such as JavaOne and SDWest.

For software to consistently deliver promised results, software development must mature into a true profession. Emergent Design points the way. As software continues to evolve and mature, software development processes become more complicated, relying on a variety of methodologies and approaches. This book illuminates the path to building the next generation of software. Author Scott L. Bain integrates the best of today’s most important development disciplines into a unified, streamlined, realistic, and fully actionable approach to developing software. Drawing on patterns, refactoring, and test-driven development, Bain offers a blueprint for moving efficiently through the entire software lifecycle, smoothly managing change, and consistently delivering systems that are robust, reliable, and cost-effective.

 

Reflecting a deep understanding of the natural flow of system development, Emergent Design helps developers work with the flow, instead of against it. Bain introduces the principles and practices of emergent design one step at a time, showing how to promote the natural evolution of software systems over time, making systems work better and provide greater value. To illuminate his approach, Bain presents code examples wherever necessary and concludes with a complete project case study.

 

This book provides developers, project leads, and testers powerful new ways to collaborate, achieve immediate goals, and build systems that improve in quality with each iteration.

 

Coverage includes 

  • How to design software in a more natural, evolutionary, and professional way
  • How to use the “open-closed” principle to mitigate risks and eliminate waste
  • How and when to test your design throughout the development process
  • How to translate design principles into practices that actually lead to better code
  • How to determine how much design is enough
  • How refactoring can help you reduce over-design and manage change more effectively

The book’s companion Web site, www.netobjectives.com/resources, provides updates, links to related materials, and support for discussions of the book’s content.

Author's Site

Please visit the author's website at www.netobjectives.com

Customer Reviews

45 of 47 people found the following review helpful
3.0 out of 5 stars Good practices but does not live up to its title, July 16, 2008
By 
This review is from: Emergent Design: The Evolutionary Nature of Professional Software Development (Hardcover)
Emergent Design by Scott Bain is a interesting book. The title is very promising, when I first heard about it, I got very excited! Finally a book about how designs emerge, how designs emerge from multiple people and how designs evolve over time compared to specifying. After reading the book, I felt the book was good, but disappointing. It did not cover the topics I would like to have seen.

The general idea of the book is that software should grow better over time instead of decay over time and that the optimal design will emerge. An idea I strongly agree with. The author links this to software development needing to change to become a profession. If SW development is a profession, then people will use proper practices and design will emerge. The practices (in a broad sense) are principles of design, patterns and disciplines. After the first couple of chapters the book was having a good start, though I started wondering if the author didn't bite of more than he could chew... Read more
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


19 of 23 people found the following review helpful
5.0 out of 5 stars lots of commonsense advice, March 6, 2008
By 
W Boudville (Terra, Sol 3) - See all my reviews
(VINE VOICE)    (TOP 500 REVIEWER)    (HALL OF FAME REVIEWER)    (REAL NAME)   
This review is from: Emergent Design: The Evolutionary Nature of Professional Software Development (Hardcover)
Bain's book is a graceful read. At least compared to some texts on "heavy" methodologies like CMMI. He addresses the professional programmer. At some level, there is an introspective feel to parts of it. Can the profession be more professional, in reducing bugs and bad coding practices? More pertinently, can you do this? In expanding on the possible answers, he takes us on a recap of decades of progress in programming.

One big innovation was the rise of object oriented programming, compared to earlier procedural efforts. Hence C++, Java and other OO languages. Another key idea to remember is that of patterns. Even if you can't remember all the patterns he discusses, at least being aware that such exist is a good step forward in your abilities.

There is also lots of advice about littler details. Like having names for classes, methods and variables that are as descriptive as possible. Doesn't matter what language you're using. You should always strive here, so that... Read more
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


13 of 15 people found the following review helpful
5.0 out of 5 stars A Gold Mine of Wisdom, April 1, 2008
By 
T. Anderson (PA USA) - See all my reviews
(VINE VOICE)    (TOP 1000 REVIEWER)    (REAL NAME)   
Amazon Verified Purchase(What's this?)
This review is from: Emergent Design: The Evolutionary Nature of Professional Software Development (Hardcover)
This book is a gold mine of wisdom.

This book contains a ton of wisdom that has come out of the software engineering field over the years. It brings together a lot of software development best practices that can be found in other resources and puts them together under the umbrella of Emergent Design.

He covers patterns, principles, processes, and practices by presenting the best of each that has been proven to work again and again. The common sense communicated out of this book is priceless.

The author has a presentation that touches on a lot of the content found in the book. It can be viewed by Googling for "EmergentDesign_12_11_2007".

Forward thinking is something that I find lacking in a lot of the environments I am exposed too, especially development environments. This book nails how to do forward thinking when it comes to software design and development. You will end up making your solutions more valuable with each change, instead of... Read more
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


Share your thoughts with other customers:
 See all 13 customer reviews...

Online Sample Chapter

The Nature of Software Development

Table of Contents

Series Foreword xvii

Preface xxiii

Acknowledgments xxix

About the Author xxxi

 

Chapter 1: Software as a Profession 1

How Long Have Human Beings Been Making Software? 1

What Sort of Activity Is Software Development? 2

What Is Missing? 6

Who Is Responsible? 8

Uniqueness 9

 

Chapter 2: Out of the Closet, Off to the Moon 11

Patterns and Professionalism in Software Development 11

Andrea’s Closet 12

Off to the Moon 18

The Value of Patterns 26

Summary 27

 

Chapter 3: The Nature of Software Development 29

We Fail Too Much 30

Definitions of Success 31

The Standish Group 32

Doing the Wrong Things 34

Doing the Things Wrong 35

Time Goes By, Things Improve 38

One Reason: The Civil Engineering Analogy 38

Giving Up Hope 41

Ignoring Your Mother 42

Bridges Are Hard, Software Is Soft 43

We Swim in an Ocean of Change 43

Accept Change 44

Embrace Change 45

Capitalize on Change 46

A Better Analogy: Evolving Systems 49

Summary 52

 

Chapter 4: Evolution in Code: Stage 1 55

Procedural Logic Replaced with Object Structure 56

The Origins of Object Orientations and Patterns 56

An Example: Simple Conditionals and the Proxy Pattern 58

The Next Step: Either This or That 62

Why Bother? 65

One Among Many66

Summary 67

 

Chapter 5: Using and Discovering Patterns 69

Design from Context: More Carpentry from Scott 70

Patterns Lead to Another Cognitive Perspective 79

Patterns Help Give Us a Language for Discussing Design 79

Patterns in This Book 80

Summary 81

 

Chapter 6: Building a Pyramid 83

Elements of the Profession 83

A Visual Representation 85

Summary 86

 

Chapter 7: Paying Attention to Qualities and Pathologies 89

Encapsulation 91

Cohesion 91

Coupling 99

Redundancy 106

Testability 112

Readability 114

Pathologies 114

Summary 119

 

Chapter 8: Paying Attention to Principles and Wisdom 121

Separating Use from Creation 122

The Open-Closed Principle 129

The Dependency Inversion Principle 133

Advice from the Gang of Four 135

GoF: Consider What Should Be Variable in Your Design and Encapsulate the Concept That Varies 143

Summary 146

 

Chapter 9: Paying Attention to Practices 147

Consistent Coding Style 148

Programming by Intention 153

Encapsulating the Constructor 155

Commonality-Variability Analysis 161

Practices and Freedom 166

Summary 167

 

Chapter 10: Paying Attention to Disciplines: Unit Testing 169

Economies of Testing 169

JUnit Framework 175

Mock Objects 204

Summary 212

 

Chapter 11: Paying Attention to Disciplines: Refactoring 213

Refactoring Bad Code 215

Refactoring Good Code 216

Structural Changes Versus Functional Changes 218

Refactoring Helps You Choose Your Battles 219

Patterns Can Be Targets of Refactoring 220

Avoiding Refactoring: Prefactoring 220

The Mechanics of Refactoring 221

Refactoring Legacy Code 231

Summary 233

 

Chapter 12: Test-Driven Development 235

What Makes Development Test-Driven? 235

Testing and Quality 238

Test-Driven Development and Patterns 241

Mock Objects 244

Mock Turtles 248

Testing the Decorator Pattern 248

Summary 253

 

Chapter 13: Patterns and Forces 255

Making Decisions in an Evolving Design 255

Christopher Alexander and Forces 256

More Choices, More Forces 266

Summary 271

 

Chapter 14: Emergent Design: A Case Study 273

The Problem Domain: The MWave Corporation 273

The Teams 275

The Simplest Thing That Could Possibly Work 277

A New Requirement: Complex Machines 281

Oh, By the Way 283

More Good News 285

Summary: What a Long, Strange Trip It Has Been 287

 

Chapter 15: A Conclusion: 2020 289

 

Appendix A: Evolutionary Paths 291

 

Appendix B: Overview of Patterns Used in the Examples 301

 

Appendix C: The Principle of the Useful Illusion 385

 

Bibliography 393

Index 395

Sample Pages

Download the sample pages

 
Best Value

Book + eBook Bundle  $98.98  $59.39

Book Price $43.99
eBook Price $15.40
eBook formats included

Buy

This book is temporarily out of stock, but will ship for free when in stock.

Buy

Book  $54.99  $43.99

We're temporarily out of stock, but order now and we'll send it to you later.

This book is temporarily out of stock, but will ship for free when in stock.

Buy

eBook (Watermarked)  $43.99  $35.19

Includes EPUB, MOBI, and PDF
About eBook Formats

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.

Purchase Reward: One Month Free Subscription
By completing any purchase on InformIT, you become eligible for an unlimited access one-month subscription to Safari Books Online.

Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.