Conference Presentations

Getting Agile with Legacy Code

Applying agile methods to legacy code is challenging. You have to live with code that is not as testable or as modular as you'd like, and you have to manage support concerns that disrupt your iteration plan-all while trying to establish new build and testing practices. Even if your project is agile, you may have dependencies on legacy projects that are not delivering at iteration boundaries. Steve Berczuk explains how to be agile with a legacy code base using design, testing, build, and software configuration management practices so that you can be agile even when your code is not. You'll leave better understanding how to balance the requirements of working with an existing code base with the desire to have a more agile development environment.

Steve Berczuk, Cyrus Innovation
Test-Driven Development Takes On Embedded Software

Embedded software developers face the same challenges as other software developers-unpredictable schedules, poor quality, and the problems that follow. In addition, embedded software developers must overcome the realities of concurrent hardware/software development, scarce target hardware availability, long download times, high deployment costs, as well as the challenges of testing embedded C. Test-Driven Development (TDD), a key agile practice, helps software developers improve schedule predictability and product quality; but very few embedded software engineers apply TDD to their craft. James Grenning describes the problems addressed by TDD, as well as the additional challenges and benefits of applying TDD to embedded software. He provides valuable lessons for doing TDD in the hostile environment of C. After the class, get hands-on experience with James' independent study exercise, "TDD in C".

James Grenning, Renaissance Software Consulting, Co.
Behavior-Driven Database Design

Agile methods focus on creating executable code quickly and with fewer defects. But what about the database? The database is "the" component of the application that is thought to be the least agile and often excluded from agile development. Pramod Sadalage explains how the concepts of Behavior-Driven Development (BDD) can be applied to database development to drive the design of the database using executable specifications. Pramod describes how performing BDDD (Behavior-Driven Database Design) allows us to specify the behavior of the database as it is expected by the code running against the database, how BDDD allows us to easily refactor the database, and how BDDD provides an easy way to document the database design and behavior.

Pramod Sadalage, ThoughtWorks Inc
Agile Development Practices 2008: Refactoring: Where do I Start?

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. Rainsberger takes you deep inside the process of refactoring, including how to start reaping the benefits of refactoring while minimizing the disruption of learning a new practice, how to safely refactor code you don't know well, and the four key elements of simple design that should guide your refactoring. He explains the hazards of refactoring, when not to refactor, and how to refactor in such a way as not to upset your boss. After this presentation, you will be able to refactor your own code more confidently and effectively.

JB Rainsberger, Diaspar Software Services
Integrating Enterprise SOA Architecture with Scrum Development Methodology

Many processes used to implement an enterprise architecture are in conflict with the agile development approach. An effective enterprise architecture framework represents the organization as it is today and as it is envisioned in the future. However, a key agile concept is that we design and build for today-and worry about the future only when it arrives. Steven Driver has found that a small change to the Scrum process flow allows easy integration of an enterprise architecture into the agile development of new systems. The translation of enterprise architecture into application architecture requires critical touch points within the Scrum process to emphasize service-based development required within the sprints. By combining an enterprise architecture approach using SOA (service-oriented architecture) and the Scrum development methodology, an organization can achieve effective system development-in both the short and long term.

Steven Driver, Airlines Reporting Corporation
Transitioning from Analysis to Design

The step between specifying requirements to working on a system design can be tricky. Fortunately, the basis on which the step is made can be calculated. Paul Reed thoroughly explains how the transition should progress and offers some instructions on how to move properly through this phase.

Paul R. Reed, Jr.'s picture Paul R. Reed, Jr.
A Gram of Prevention

Following an "I-click-therefore-I-Program" methodology does not lead to quality software. Good code can and should evolve from clear, up-front descriptions of the solution to the problem at hand.

Chuck Allison's picture Chuck Allison
API Design for Testability

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. For those who are living with legacy code, he discusses special techniques for managing and implementing unit testing. In addition, Roy discusses the build life cycle and how continuous integration fits into the mix.

Roy Osherove, Team Agile
The Gentle Art of Pair Programming

Based on their experiences as software developers and the pair programming practices they use at Oxygen Media, Wendy Friedlander and Oksana Udovitska describe the principles of pair programming, explain why it is a worthwhile practice, and show you how to get started. They share ways to take full advantage of pairing and how to cope with its challenges. For those new to pair programming, this class serves as a good introduction and includes concrete first steps for getting into a new way of programming. For those already working in a pairing environment, Wendy and Oksana include some novel viewpoints and interesting discussions on familiar topics. Additionally, everyone will benefit from the interactive and fun games for improving and enhancing communication skills. Being women in a male-dominated profession gives Wendy and Oksana unique perspectives and insights into pairing which they are eager to share.

Wendy Friedlander, Oxygen Media
How to Fail Less and Enjoy More

The shiniest software application in the world, shipped on time and under budget, is a failure if it doesn't make someone's job easier. Failures cost us customers and money. How can we design software that our customers want to use and that will reduce our cost of failure?

Frédéric Boulanger


StickyMinds is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.