Emergent Design: The Evolutionary Nature of Professional Software Development

Front Cover
Pearson Education, Feb 27, 2008 - Computers - 448 pages

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.

 

What people are saying - Write a review

LibraryThing Review

User Review  - BenLinders - LibraryThing

There are not that many books who take a look at the software development profession. This book is one of them, it takes a look on how the profession has developed and is still developing. This ... Read full review

Contents

Series Foreword
Software as a Profession
Off to the Moon
We Fail Too Much
The Civil Engineering Analogy
Summary
Summary
Summary
Refactoring Legacy Code
TestDriven Development and Patterns
Testing the Decorator Pattern
Patterns and Forces
Summary
More Good News
The Adapter Pattern
The Abstract Factory Pattern

Coupling
Testability
The OpenClosed Principle
Consider What Should Be Variable in Your Design
Programming by Intention
The Singleton Pattern
CommonalityVariability Analysis
Unit Testing
Mock Objects
Summary
Structural Changes Versus Functional Changes
The Strategy Pattern
Implementation Forces
The Bridge Pattern
The Chain of Responsibility Pattern
The Composite Pattern
The Decorator Pattern
The Façade Pattern
The Proxy Pattern
The Template Method
Consequent Forces
An Alternate View

Other editions - View all

Common terms and phrases

About the author (2008)

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.

Bibliographic information