SOA and Agile Development: Continuous Integration And Testing

[article]
Summary:
IT organizations view the adoption of agile development methods as a way of bringing an "integrated team" approach to the product development lifecycle where everyone is focused on early, frequent demonstrated results. The second shared goal is service-oriented architecture (SOA). SOA is an approach to deliver integrated component-based ecosystems that are assembled to efficiently execute critical business processes. The goal of SOA is to be flexible and adaptive to the constantly changing business climate. These two productive approaches, when applied concurrently, are setting the stage for the next evolution in the deployment of technology to enhance business performance and results.

IT organizations view the adoption of agile development methods as a way of bringing an "integrated team" approach to the product development lifecycle where everyone is focused on early, frequent demonstrated results. The second shared goal is service-oriented architecture (SOA). SOA is an approach to deliver integrated component-based ecosystems that are assembled to efficiently execute critical business processes. The goal of SOA is to be flexible and adaptive to the constantly changing business climate. These two productive approaches, when applied concurrently, are setting the stage for the next evolution in the deployment of technology to enhance business performance and results.

Agile Development Community Growing
The challenges that development teams face today are extremely complex. New techniques, emerging technologies, globally dispersed teams and tremendous pressure from the business units to create an environment where failure is not an option have made projects increasingly harder to complete. {sidebar id=1} Successful teams will need to master new approaches and techniques in order to remain competitive. Many companies are working within their organizations to implement agile development techniques. We have to re-train our organizations to work closer together to deliver quality solutions to the business as quickly as possible. Teams now must make critical decisions on a daily basis and adapt to the changing nature of the business processes. 

Today's development teams are cross-organizational and capable of changing rapidly to meet the critical needs of the enterprise. Continuous integration and testing is a key success factor in agile development projects. Teams using agile methods such as Extreme Programming (XP), Scrum and others deploy work in short iterations to "grow" a system. The agile methods require the whole team to focus on quality throughout each iteration, which ensures the system is built on a sound foundation. Testing is no longer a phase in the development cycle that begins when development is "frozen." The system under development must be kept in a high-quality, working condition at all times. With software builds and integration taking place on an hourly basis, there is just no time to perform extensive manual tests. To accomplish this goal, the team must commit to automating as much of the testing process as possible. This testing must be done at various levels of the system underdevelopment. Relying solely on testing the GUI level can provide the team with a false sense of security. 

Push To Integrate Through SOA
The enabling feature in today's corporate environment is integration. After years of building and buying systems to help the corporation remain competitive, the focus is now on improving how these systems work together to effectively support a myriad of business processes. SOA has emerged as the new language that both business and IT are using to address these challenges. For example, Jon Bachman offers a model for SOA success in February's Network World (see http://www.networkworld.com/news/tech/2006/021306-soa.html) and Ali Arsanjani describes a maturity model approach to SOA on the IBM developerWorks website (see http://www-128.ibm.com/developerworks/webservices/library/ws-soa-simm/). These models provide a framework for an incremental, value-driven approach to achieving a SOA where investments show ROI along each step towards maturity. 

Agile Helps To Achieve SOA Maturity
Many of the projects using agile methods today are SOA-based projects. Agile methods provide the structure for teams to tackle these challenges by keeping them focused on short-term wins and ensuring the integration of IT with its business counterpart. By tackling the challenges in increments and delivering working functionality more frequently to the project stakeholders, the team begins to gain confidence as they see the solution emerge. 

Producing working functionality in steps within complex integration projects may seem impossible. Automation is a critical component in the agile development success. The component-orientation of these projects requires testing at the integration level. In a sense, SOA is gaining success for its ability to provide "agility" to the business. The very nature of SOA is to quickly deliver IT supported change in processes as the business needs and priorities change; a goal similar to agile development methodologies. Iterative, incremental processes are focused on delivering true value to the business in fixed increments of time which creates a culture of success and confidence. 

Continuous Integration And Testing In Agile SOA Projects
The success of an SOA project also depends on the ability to continuously test the system under development. During SOA projects, testing can easily be pushed to the end as teams are consumed with simply finding a solution to the complexity. The knowledge of how the system actually operates comes too late. The goal of an agile development project is to validate where you are at short intervals of the project. By sticking with an agile approach, a much stronger, high-quality solution will emerge. 

Through the use of short iterations, teams will begin delivering value to the enterprise immediately. Quality solutions and adaptable architectures will emerge and be delivered with confidence. The working component solutions can be demonstrated to project stakeholders. Tools that support project management, system development and customer support, including JUnit, ANT, CruiseControl and VersionOne, are available to suit the needs of various team and technology environments. The key value of the tools should be to provide visibility and demonstrate system integrity as it emerges. 

The focus on integration and SOA has identified the need for an enterprise tool that provides for the recording and automation of integration-based tests, which can also simulate components that are still under development or unavailable. Through the adoption of this tool, the complexity and distributed nature of organizations building SOA is supported by allowing both visibility and the reduction of risk from concept through delivery and will continue driving quality and compliance as business processes change in operations. Tools of this type can support an iterative and incremental development approach necessary to increase the chance of success on these types of complex initiatives. 

In high-transaction systems, even small processing errors can result in a significant percentage of failures. Quality Assurance (QA) organizations and Integration Competency Centers will need to find tools that allow these complex integration architectures to be tested effectively. This means automated and intuitive access to integration infrastructure. Business process analysts and QA staff must be provided with a better view of the SOA. The complexity of data in message-based integrations and Enterprise Service Bus technology must be extracted to a higher level for testing and analysis. A tool that helps these people understand the underlying infrastructure and keeps them focused on looking at the business process steps will contribute to a successful integration implementation. Organizations that invest in the people, processes and tools to make their SOA initiatives successful will certainly reap the benefits of speed-to-value moving their organizations up the SOA maturity scale with the confidence of a strong foundation.


About the Author
Bob Schatz is the VP and Chief Development Officer for Solstice Software and is responsible for leading the software development of all Solstice products. Prior to this, Schatz served as VP of Development for Primavera Systems, Inc. Before joining Primavera, Schatz spent seven years at Liquent, Inc. As a 23-year veteran in the IT industry and a recognized leader in agile software development, Schatz is a frequent speaker at industry conferences on the subject of successfully implementing agile development techniques in organizations.  He holds a bachelor's degree in Computer Science from Temple University and is currently pursuing a Masters degree in Organizational Dynamics from the University of Pennsylvania.

About the author

CMCrossroads is a TechWell community.

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