|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TODAY'S TOP SOA & WEBSERVICES LINKS XML Protocols Development Tools for XML Applications
Development Tools for XML Applications
By: Jim Gabriel
Jan. 25, 2002 12:00 AM
XML is object without source. There can be no development tools for XML until we find a way of creating source code. "There's no such thing as an XML application." A strong statement, perhaps, but what do we mean when we talk about an XML application? Is a publishing system that relies on XML to do its work an XML application? Can we apply the term to a B2B marketplace where all the processes in a transaction can be defined by DTDs and all data flowing around the system is in XML? Is a content syndication system an XML application? Or a foreign exchange business line in an investment bank? Typically, all of the above use XML extensively. But what do they have in common? And how do we "develop" these systems? Do we "develop" the XML parts, or do they fall out of the development of other parts? After all, XML isn't a programming language. XML applications are built in C++, Java, or Visual Basic (for example).
The Common Ingredient
For example, XML is the glue in EAI (enterprise application integration), gluing together pieces of software that probably have nothing to do with XML. Publishing systems use XML to provide single-source to multiple-output formats, but the systems themselves aren't "developed" in XML, nor do they care very much how the XML has been defined. Publishing systems are usually built using a combination of technologies that can store, communicate, and manipulate XML, but that aren't intrinsically XML technologies.
Why Do We Need XML Application Development Tools?
Explosion of Complexity
This is denormalization to a dangerous degree. The Transaction ID will find its way into schema fragments, be passed to Java classes, be described in stylesheets, be transformed by XSLT, and so on. Clearly, unless you get it right the first time (and I assure you that never happens), you need development tools to help manage the complexity.
Adding Value
Another value-add is the ability to present a visual representation of something that's obscure in a clearer context, such as a file full of XSLT declarations. If you can present a source schema on one side of the screen, a result schema on the other, and in the middle display all the links relating source elements and attributes to result elements and attributes, you have a powerful representation of what the resulting XSLT will achieve for you. (You also don't need to learn XSLT to an expert level before attempting some fairly complicated transformations.)
Subliminal Education
Surely these are all very good reasons for using XML development tools.
What Should a Development Environment for XML Contain?
Essential Ingredients
Essential Tools
Essential Infrastructure
Essential Standards
'Nice-to-Haves'
We're rapidly arriving at an extremely complex picture of the requirements for an XML development tool, yet the picture is murky. Is it actually possible to combine all of the above into one tool? And if so, would anybody buy it or use it? What are we going to develop with these tools?
IDE
We've been conditioned by such products to interpret XML development as a means of creating DTDs, documents, stylesheets, and transformations. Yet when I create a DTD, then write a document that validates against that DTD, then store that document in a content management system, have I developed XML? Arguably, yes. But to what end? The XML does nothing without an infrastructure to use, publish, process, and communicate it. Furthermore, as soon as I want to use an element in various places and for various purposes, I have a problem. Powerful software development environments provide the functionality to support true object reuse, inheritance, versioning, backups, and a permission system. The XML IDEs on the market at the moment don't. If I create an XML-driven system that relies on a Transaction ID element (as described earlier), an XML IDE will help me put it into dozens of schema fragments, XSLT files, stylesheets, and so on. But the IDE won't manage the fact that the Transaction ID is actually one object that has been used in all these different places. This is very disturbing from a software developer's perspective, especially if you're used to an object-oriented development environment and accustomed to the notions of, for example, single source and extension of object classes.
XML as a 'Language' Is Weird
No Source Code
Compared with third-generation programming languages (3GL) such as C, COBOL, or Fortran, XML is very strange. Of course, comparing XML with 3GL isn't entirely fair. XML isn't a language in the traditional sense of programming languages. XML lets you use words that describe your business and apply constraints to those words. XML has no source code in the way that C++ or Java can be said to have source code, so we can't store and manage source code for XML. There are no XML compilers and development studios that provide the kind of functionality that, say, a Java developer would expect from an Enterprise version of Borland's JBuilder product. However, it's this very inability to treat XML as we treat traditional programming languages that gives us so many management challenges in mission-critical environments. XML needs source, it needs powerful development environments and compiler-type technology, and it needs infrastructure to manage the development environment.
XML Is Impossible to Model
XML Is a Runtime Expression of Something Else
Serious Problems
A Model of the Document Is Not a Solution
However, having a schema simply isn't sufficient. Think back to the Transaction ID object mentioned earlier. I care about transaction IDs because I'm building a software system for a commercial application - an insurance claims system, say, or a foreign exchange business line application for an investment bank. The Transaction ID isn't something that starts life in XML - it's probably there because of gigabytes of legacy data, existing software applications, and a UML model on somebody's desktop. It turns into XML because I'm using XML to glue all the different pieces of my system together with XML. And my transaction ID travels around and touches every system, every program, every database.... My company acquires another company and we start to integrate our IT infrastructures. My transaction ID is an integer. The other company's transaction ID is an integer plus a timestamp. I've built my system using XML; my transaction ID occurs in thousands of different places and I have no way of knowing where. I don't have a model of my XML. The upside of XML when I built the system was the phenomenally short time-to-market for a highly sophisticated system. The downside is that the result is difficult to maintain and there are inherent risks.
A Document-centric Example
One of my attributes is a piece of text describing a certain warning in a certain set of circumstances for pregnant women at a certain stage in their pregnancy. By the time I've rolled out my product in 130 countries and 30 languages, a complex authoring and publishing environment will have been built to process the attribute, and the attribute itself will have been used or referred to in potentially millions of places. There's no way of knowing where, or what the impact will be if a related property needs to change. Not only is this dangerous (if an error in my publishing system causes a life to be lost, is this XML-induced death?), but you can't forecast budgets for unpredictable outgoings. How can I manage the complexity of such a system? This is where a 3GL-like XML development environment could significantly reduce the risks and costs involved.
Creating Source Code for XML Environments
Enabling Object Reuse and Inheritance
The structures we assemble are like contexts in which an object is used. In context one, A contains B followed by C, which contains D followed by E. In context two G contains A, which contains H followed by B. If I know that A in any particular context is actually a reused object from a model where it occurs as one and only one object, I can apply true object reuse and inheritance. The next hurdle is versioning of objects. This is where the underlying technology becomes very important. In any sophisticated source control environment, developers can check out an object, work on it, and check it back in again. This activity is controlled by a versioning mechanism that allows updates to happen on a branch of the parent code line. Full permissions and transaction support needs to be applied. Multiple variants of a code line are possible. Published versions are identified by a time line that essentially picks up the relevant pieces and freezes them into a state that cannot be violated. The only technology that can support this level of control over source code is repository technology. In other words, everything about the model of the model of the model of the document needs to be captured and managed in a database, which requires a very sophisticated approach to metadata. Get this piece of the puzzle right and XML development will take a quantum leap forward! To my (admittedly biased) mind, only one product anywhere in the world is capable of providing such support - CorteXML from Barbadosoft, which was designed to enable high-speed change in complex XML-based environments.
Conclusion
YOUR FEEDBACK
XML JOURNAL LATEST STORIES . . .
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 BREAKING XML NEWS |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||