|
Comments
|
Today's Top SOA Links
SOA Everything Should Start with a Model
Model-Driven SOA
By: Ian Thain
Jul. 9, 2007 01:00 PM
In this article I'll cover how a model-driven design and development process can pave the way to a Service Oriented Architecture that will in turn produce accurate applications that meet business needs and increase development team productivity.
SOA is a software architecture for building applications that implement business processes or services by using a set of loosely coupled components orchestrated to deliver a well-defined package. With SOA, existing software assets already in use are packaged in such a way that they're self-contained, loosely coupled, and can be called and executed by other new applications as a service. Any new computing modules would be created as services the first time around, and so would enter into the services library to be used over and over again. Well, to call a service, we have to know how to call it, where to call it, and what to expect back as a response; that is, a service must have a callable interface that's well defined, well published, and well secured. In short, not only should a service be good quality code, it must be well understood and well documented. How Many of You Have Done This or Seen It Happen in Your Organization? When the system comes back from development for testing, the analyst returns to his sketch and system tests the functionality of each feature, one feature at a time. Whenever a feature doesn't perform as the analyst thinks he defined it, he makes a note that goes back to the developers, who make changes to the code, and the whole thing starts again...all manual, all by hand. And remember the testing team isn't always made up of analysts who wrote the "sketch"...it's a perfect world assumption that the analyst and some business users are testers along with the testing professionals. How many understandings of the "system" are in that group and how many "notes" go back to development teams? How Neanderthal! We are no longer Neanderthals. We now have modeling tools. We now have iterative and prototyping development processes. Programming language technology has advanced such that all of our well-meaning attempts at good modular programming over the years can be expanded into bigger modules with more of a business meaning. We recognize the need to communicate and collaborate. It's taken us 40 years...but we're getting there. The idea of architecture implies a thoughtful plan using a standard set of guidelines and rules to construct a blueprint. A good software architecture will have the blueprints for how data is stored, how users interact, how blocks of functionality (services) are linked together to form programs, how programs communicate, the capacity needed of the hardware, and so forth. The idea behind SOA is that these blocks of functionality (services) are available to be used by many programs, and that, over time, when you have more and more services those programs can be compiled and put together more quickly. And since the services are already defined, their design can be reused too. Also, if a service implements a specific business function or rule, it's simpler, more cost-effective, and less time-consuming just to change the related service code rather than search through all the independent programs for code that may have implemented that business rule and then change all the programs using it like we used to. Of course, you still have to test it, but the actual design and development time to implement a change from the business is much less of an impact when you have models to work from, impact analysis reports to guide you, and independent services to change. A set of loosely coupled components does the same work that used to be done inside tightly structured programs. But now the components can be combined and recombined in many ways. This makes the overall infrastructure more flexible and agile. This way SOA can make it easier and faster to build and deploy IT systems that directly service the goals of a business and we can prove it because we have our models of the SOA architectures linked directly back to the model of our business goals, business requirements, and business processes. Not only do we reuse the code, we reuse the models. Model-Driven SOA Sybase's view of modeling (Figure 1) is that in an enterprise world your modeling environment has to be able to address the broader range of application classes and has to integrate them. You do not want a silo'd environment; a SOA environment is all about sharing and reuse. Your models have to be able to import, export, capture, forward generate, reverse engineer, and report between the common implementation techniques of service-driven, composite, event-driven, mobile, and federated systems using today's integration protocols. To Tie It All Together Requirements should be attached or linked to any elements of any models, with multiple requirements documents tied to multiple models simultaneously for complete requirements traceability and visible as a document or a matrix. Models should be used to round-trip engineer to process engines (BPEL engines), databases, application servers as well as object-oriented development languages including VB, .NET, C#, and Java. By using patterns and templates, you can take a model-driven approach to development on J2EE, .NET and Web Services. By using techniques like object/relational mapping and data source mapping as well as integrated metadata management, you can link and synchronize all the models together. Changes that occur in one model can be communicated effectively and easily as change requests to any other model type to ensure a complete, cohesive, and consistent response to change throughout the project team, and throughout the enterprise. With your common metadata repository, you have a secure environment to manage, share, and collaborate on modeling projects. SDLC
Where the real challenge comes in is when there's change: change in requirements, change in business model, change in technological capabilities (new hardware or software standards) - or change in understanding the existing requirements. If we can become more effective and more efficient in coordinating the communication of that change between business and IT professionals, we can increase the agility of our IT development efforts, and so increase the agility of our business. As the team moves through the software development lifecycle, the business system model becomes more and more detailed as each phase of design adds more to the information about what's to be built through adding more diagrams and more descriptive text to the "model"...and in some cases, the code to be generated. Reader Feedback: Page 1 of 1
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
|||||||||||||||||||||||||||