|
| The benefits of Service Oriented Architecture (SOA) are clear: greater business agility through loosely-coupled and transparent services that speed delivery of valued software by leveraging reusable and composable services. SOA promises to accommodate and isolate change to individual services with minimal disruption to service consumers, increase quality through independent testability and verification, ease integration through open standards and technology and minimize cost and risk by leveraging existing transport protocols and internet infrastructure. While SOA presents a different technological landscape and development climate, it is not the complexity of either that risks dooming SOA initiatives. Instead, SOA initiatives face the same challenge the software industry has been struggling to resolve for decades. Whether SOA be manifested using Web Services, messaging or some other technology stack, responding quickly to changing business demands is only achieved if the underlying service itself can easily accommodate change. Thus, there exists a natural synergy between agile methods that embrace change and SOA initiatives that encourage adaptable technology solutions.
With SOA, teams are no longer developing disparate and standalone applications that support individual disciplines within an organization. Instead, teams aim to integrate and consolidate the enterprise in hopes that the new generation of strategic business software minimizes redundancy, increases automation and approaches real-time responses. For example, instead of keying the same information into multiple systems, robust SOA implementations integrate back-end processes. In lieu of accessing multiple applications to complete a key business process, coarse-grained services are composed and invoked through well-defined service interfaces. Instead of running nightly batch jobs, critical business functions can be immediately invoked asynchronously to avoid processing delays.
Technologically, SOA makes solving each of these challenges easier. Realizing the benefits of SOA however, requires more than simply mastering the technology. We must also recognize that architecture, design and requirements are constantly evolving. Technologically, SOA does not solve these fundamental challenges inherent to software development. Compounding the problem with many SOA initiatives is the desire to transform the enterprise by building large scale and complex interconnected software systems.
SOA Challenge Software development is hard. The difficulty, however, is not writing code or applying a certain technology stack. The challenge lies in the specification and design of the software itself. Therein lies the essential complexity of software development, an idea introduced by {sidebar id=1} Frederick Brooks in his 1987 article titled "No Silver Bullet."[1] The difficult aspect of software development is deciding what, exactly, needs to be built. Deciding what to build is difficult when creating a standalone application. Yet with SOA, the challenge is even more pronounced as we strive to develop services that can be used in multiple contexts by a variety of consumers. Below are three factors contributing to the SOA challenge and not addressed by SOA technologies.
Let's explore the depth of these challenges with an example. Assume we have three services, with the possibility of a fourth (see Figure 1). The Policy Issuance service is responsible for various underwriting tasks, rating to calculate premium and generating policy declarations. The Claim Adjudication service is responsible for performing fraud prevention checks, coverage verification and final payment calculation. Both services use the workflow routing service in situations where breaks in processing require intervention or notification. Each also needs to access Customer Information. In the case of policy issuance, Customer Information might be searched to determine if the policyholder is already an insured and, if not, a new customer record is created. In the case of claim adjudication, Customer Information is accessed so the claimant can be contacted and personal information included on the final payment draft.
While each service depicted has deep semantic implications, it's the Customer Information module where we'll focus our discussion. Foremost, is Customer Information a service deployed to a central location and accessed remotely by Policy Issuance and Claim Adjudication? Or is Customer Information a component deployed with Policy Issuance and Claim Adjudication and invoked in-process by each? How do we manage versioning of the Customer Information module if it's a service? Or a reusable component? What about behavioral differences expected by the various consumers of Customer Information? Since Customer Information is used by multiple services, how can behavioral growth be managed, assuming we are not intimately aware of all present and future consumers?
Each of these are critical questions in the SOA puzzle. Even given this simple scenario, assuming we had detailed requirements, the questions have no clear and concise answers. Failure to adequately address such issues is magnified on SOA initiatives that attempt to integrate and consolidate the enterprise.
SOA And Agile Synergies
SOA initiatives must be built upon an organization's already established set of proven practices and guidelines. Failure to utilize proven techniques, such as design patterns and object-oriented design principles, will likely result in services that fail to realize the oft-cited benefits of SOA. Neglecting important underlying component relationships results in services that are difficult to test, build and deploy. There is, however, a natural synergy between agile practices, and the high risk associated with many SOA initiatives. Agile practices encourage growing an agile architecture and design that accommodate change, resulting in individual services that are maintainable, resilient, and extensible.
SOA is an architecture aimed at providing a loosely coupled, yet integrated enterprise software solution. Agile practices emphasize speeding software delivery. While neither is heavily entrenched in the other, there exists a natural synergy between the benefits of SOA and the ability to deliver reliable software quickly when using agile practices. [1] Brooks, Frederick P., "No Silver Bullet: Essence and Accidents of Software Engineering," Computer, Vol. 20, No. 4 (April 1987) pp. 10-19. [2] Component Software - Beyond Object-Oriented Programming - Second Edition, Clemens Szyperski with Dominik Gruntz and Stephan Murer, Addison-Wesley and ACM Press, 2002.
About the Author Kirk is Chief Technology Strategist at QWANtify, where he leads based on his firm belief in the pragmatic use of technology. In addition to his work on large development projects, Kirk shares his experiences through courseware development, teaching, writing, and speaking at seminars and conferences. Kirk has provided training to thousands of software professionals, teaching courses on UML, Java J2EE technology, object-oriented development, component based development, software architecture, and software process.
{mos_sb_discuss:10}
Set as favorite
Bookmark
Email this
Hits: 11843 Comments (0)
|
| Last Updated on Saturday, 20 October 2007 08:16 |
Agile Marketplace - Announcements and Special Offers
AgilePalooza - Serious Learning in a Fun Atmosphere
AgilePaloozas are community events sponsored by VersionOne and Agile Journal. These one day conferences provide serious learning in a fun atmosphere. Two tracks are included: Learning Agility and Advancing Agility. Speakers include internationally recognized agile coaches and trainers. The next seminar will be held August 27th in Dallas, TX – use discount code agilejournal and save $20!
Register Here
CollabNet Subversion Edge Improves Governance, Security, Administration
Quickly configure SVN, Apache, and ViewVC with one certified stack, fronted by a powerful UI.
Try our beta version and let us know what you think!
Virtual Conference: Agile ALM for Distributed Development
Learn how Agile technologies can create efficiencies for your business, hear from industry experts, and network with your peers. CollabNet and their technology business partners present two tracks of valuable information—business and technical. This environment will be available until July 20, 2010 at 3:30pm PDT, so please come back as often as you like to access the resources and presentations.
Register Today!



