Sunday, November 16, 2008

Agile and SOA: Careful Planning is Essential

Agile software development and Service Oriented Architecture are two of the most passionately promoted software development concepts in the last few years. While it is certainly possible to implement them together, careful planning is essential.

In its essence, agile software development is a process whereby business owners, designers, programmers, and testers all work together in an iterative process. The idea is that in applications where business requirements change frequently, it helps to be able to adapt current development efforts quickly instead of waiting for the next development cycle to begin. It's kind of like the "Can you hear me now?" ads applied to writing programs.

Service Oriented Architecture is an overarching design concept that focuses on segmenting software systems into loosely-coupled, independently implemented, remotely callable software modules with clearly defined interfaces and behavior. Basically, the approach is to build a whole bunch of little programs, each of which do specific tasks, and plug them together to create complex applications; sort of a software Erector Set.

In case you skipped over the vaguely technical buzzwords in the middle of that SOA description, let me call attention to the phrase "clearly defined interfaces and behavior". Every service needs to adhere strictly to its Service Contract, which says "if you call me with these inputs, you can expect this output". There's not much room in that Service Contract concept for the sort of iterative change effect resulting from an agile development method.

Clearly, agile software development does not fit well with creating services. However, agile methods can be applied extensively to the consumers of those services. In fact, through the creative process inherent in agile software development, an organization can identify new types of useful services that can be provided. It is probably wise, however, to use a more systematic, design-oriented approach in their implementations than agile methods provide.

No comments: