An agile approach can deliver recognizable value to organizations. Using examples from recent projects, David Garmus demonstrates that software development projects can benefit from using the agile methodology when appropriate. Delivering a project in an organization that is following an agile implementation methodology can be faster and more productive than the same project in an organization that is using the traditional waterfall approach. David provides actual delivery (project performance)
Agile Development Practices 2007
Test automation is like exercise. We know both are great ideas, but most of us don't do much of either. Although we know that creating a solid automated test suite is critical to any agile testing strategy, we are often just told to "Do it" without much support-money or people. Jared Richardson examines the infrastructure and tools you need for your automated testing to succeed and prosper.
Agile processes work better if developers and customers have specific aptitudes and attitudes, such as the ability and willingness to handle rapid change. Members of an agile product team cannot always be selected to ensure that they innately possess these capabilities. Developers may not appreciate the need for unit testing. Customers may not be able to interact easily to create just-in-time requirements. You must adapt your agile implementation so that team members can work effectively within their capabilities.
Since Martin Fowler completed his now-classic work Refactoring: Improving the Design of Existing Code, few programming practices have been more effective-and more controversial-than refactoring. Refactoring is effective when you study and practice it diligently. It remains controversial because many development managers think developers should be adding features, not reworking old code. J.B.
Developer practices for traditional and agile Java development are well understood and documented. But dynamic languages--Groovy, Ruby, and others--change the ground rules. Many of the common practices, refactoring techniques, and design patterns we have been taught either no longer apply or should be applied differently. In addition, some new techniques can come into play to improve your development.
Many who try to unit test their applications-whether using agile or traditional methods-quickly find that doing a thorough job can be difficult if the code was not designed with testability in mind. Roy Osherove describes dependency injection methods for designing APIs so that they are easier to test. He explains how design patterns can help and how to implement applications with interface-based programming. Roy shares his insight on what "evolving a design" really means in the context of test-driven development.
The phrase "working together" is based on a team collaboration metaphor. However, Stacia Broderick and Lee Devin have found that most teams don't actually collaborate-rather, they consist of modular parts that are steeped in competition and oriented to reward the "stars." Stacia and Lee use a metaphor drawn from theatre art, a form of group work that requires collaboration, encourages interdependency, eschews competition, and emphasizes the project rather than any particular member of the group.
Many software teams do not have continuous visibility into the ongoing quality of their software releases. Although agile practices emphasize the value of bringing testing forward in the development process, many teams lack the infrastructure required to make this a reality. Testers often depend on development or operations to produce, install, or deploy builds. Zach Nies discusses how build automation provides an effective platform to bring quality and testing earlier into the development process.
Big Design Up Front (BDUF) is a design technique that has been part of the development cycle for decades. Unfortunately, fully specifying a software design in the presence of change without a crystal ball is rarely effective.
In Behavior Driven Development (BDD), you write behavioral tests of an application just-in-time, one test at a time to express its design. You can take a BDD approach to a database schema in the same way. Scott Ambler presents the Behavior Driven Database Design (BDDD) technique. He explains its relationship to Agile Model Driven Development (AMDD) and how it fits into agile software development in general. Find out how to refactor a database by applying simple changes that improve the design without changing its semantics.