blob: 58c4dddc59f1a70ba6cba7e0c85f91bab4314782 [file] [log] [blame]
<html>
<head>
<title>Solving the Software Paradox with Tool Integration</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
&nbsp;
<table border=0 cellspacing=0 cellpadding=2 width="100%" >
<tr>
<td align=LEFT valign=TOP colspan="2" bgcolor="#0080C0"><b><font face="Arial,Helvetica"><font color="#FFFFFF">&nbsp;Eclipse
Corner Article</font></font></b></td>
</tr>
</table>
<h1> <img src="../images/Idea.jpg" height=86 width=120 align=CENTER></h1>
<center>
<h1> Solving the Software Paradox<br>
With Tool Integration</h1>
</center>
<center>
<h3> How a Workspace with integrated tools can facilitate<br>
application development of all resource types and for <br>
the whole team</h3>
</center>
<blockquote><b>Summary</b> <br>
Developing Web applications is difficult due to conflicting demands for high
quality applications built in Web time, and to immature, unintegrated, and constantly
changing technologies. Web application design patterns help manage this complexity
and indicate the required tools. Tools need to be integrated and manage the
relationships between their associated artifacts. A tool integration platform
provides the required &quot;integration-ware&quot; enabling the development
of products consisting of integrated, configurable, roles appropriate, and end-to-end
development tools based on best practice design patterns. To reduce acceptance
barriers, this integration-ware must be based on open standards as much as possible
and Open Source where standards don't exist. To be effective, tools need to
be integrated into a common workbench. The workbench and integration-ware must
support flexible tool integration appropriate to vendor business objectives
by providing various conformance levels of integration. Conformance levels define
what any vendor must do to integrate at a level, what technologies are required,
and any integration expectations.<br>
</blockquote>
<b>By: <a href="mailto:Jim_Amsden@oti.com">Jim Amsden</a></b>
<p>
<hr width="100%">
<h3>The Web is changing everything</h3>
<p>Customers are discovering the opportunities and challenges of e-business applications.
Current integrated suites of office tools like Microsoft Office and Lotus SmartSuite
set high expectations for integrated application development tools. The Internet
is changing the face of business integration resulting in rapidly changing business
models due to BPR in order to leverage the Web. These e-business applications
can be complex, difficult to maintain, and demand interoperability. Interoperable
applications consisting of highly integrated artifacts demand integrated tools
supporting a prescriptive methodology in order for application development to
be a rational, controllable, and repeatable process.</p>
<h3> Web Application development results in the need for layered tools<br>
</h3>
<p>The explosion of Web technologies including client display architectures, communication
protocols, application servers, and backend systems has resulted in rapidly
changing and complex application architectures. The Web represents a complex,
highly dynamic, rapidly changing application development problem space. A Web
application incorporates many resource types representing diverse, highly interrelated
components including: HTML, GIF, JPEG, DHTML, scripting, Java Applets, ActiveX
controls, servlets, EJBs, connectors to legacy systems, etc. In most cases,
these resources are never collectively compiled in order to validate the intended
relationships. This can result in applications that are fragile, difficult to
test, scale, and maintain. </p>
<p>Because of these diverse content types, and their contents, building a Web
application requires diverse, highly specialized development skills including:
GUI programmers, server programmers, graphic designers, database designers,
business experts, and document designers. Client web browsers and HTTP web servers
establish the overall architecture of Web applications. The resulting distributed
applications require compromises between accessibility, availability, integrity,
ease of use, performance, and footprint. Web applications are targeted at a
broad audience, which requires emphasis on ease of use, appealing look and feel,
and masking resource and distribution technologies. Web application development
is pushed from two conflicting directions: the need so support high quality
applications, and the need to develop them very fast on emerging and un-integrated
technologies.</p>
<p>The techniques for developing Web applications are changing fast. This often
results in new and immature technologies and many tools: new tools, new revisions
of old tools, and beta releases of emerging tools. As a result, there is a significant
opportunity for point tools supporting these new emerging technologies that
facilitate the development of Web applications. However, these tools must be
effectively integrated in order to speed Web application development, provide
end-to-end debugging, minimize gaps and overlaps between tools, and provide
a positive developer experience.<br>
</p>
<h3>Patterns help manage the complexity<br>
</h3>
<p>Fortunately, web application development choices tend to fit into patterns
based on application functionality and network, middleware, and runtime topologies.
Patterns help focus on customer needs, the technologies, tools, and techniques
that are used to build web applications. Each pattern is instantiated through
the creation or reuse of a number of web resources. Each resource requires a
tool to author the resource and a repository for storage. Resources are integrated
and linked together to support relationships existing in the target business
application. Tools must be integrated in order to facilitate development of
an application built from integrated artifacts. Otherwise the developer must
maintain these relationships manually. This is both tedious and error prone.
</p>
<p>Effective tool integration requires open standards, a component and programming
model, frameworks, APIs, file formats, etc., collectively called &quot;integration-ware&quot;.
Integration-ware provides the base platform in which extensions can be applied
to provide domain specific tooling. All these components must be integrated
with a central workbench that provides access and control of the entire site
across all resource types and application development roles. The benefits are
reduced gaps and overlaps between tools, elimination of repetitive, manual,
tedious, and expensive on-site tool integration, less redundant data input,
and a more positive user experience. <br>
</p>
<h3>Realizing the Tools Opportunity<br>
</h3>
<p>Web and e-business application development, and a tool integration platform
result in a significant opportunity for ISVs to develop application development
tools. In order to be successful, tool vendors need to focus on the value added
by their tools while minimizing their investment in infrastructure, porting
to other operating systems, browsers, and/or web servers. ISVs also need to
minimize the amount of ancillary functionality they must be develop in order
for their tools to be accessible and useful. Minimizing this investment involves
integrating tools with other complementary tools and IDEs in such a way that
the integrated result provides more value to the end user than the individual
tools by themselves. However, integrating tools can require a significant investment.
Each tool or IDE that is a candidate for integration provides its own set of
extensibility and integration mechanisms. In order to achieve maximum market
penetration, a tool vendor will want to integrate with as many other tools and
IDEs as possible, and in such a way that the tools compliment each other without
creating undue redundancies and coupling.</p>
<h3>Eclipse provides the required tool integration framework<br>
</h3>
<p>A tool integration platform is required to exploit this tooling opportunity
by providing a platform for deploying integrated, configurable, roles appropriate
tools for developing end-to-end, Web-based, e-business applications. As well
as enabling tool integration, a platform helps minimize the cost of tool integration
by providing a large number of reusable libraries, APIs, and frameworks that
enable provide common services. This minimizes the tool vendors development
costs and allows them to focus on their value add. <br>
Wherever possible, the platform must use open standards like WebDAV, XMI, JavaBeans,
etc. to remove barriers to acceptance, limit tool vendor investment, and reduce
time to market. In those cases where there either is no standard, or there are
multiple conflicting standards, Open Source can be exploited to establish momentum
within the development and tool communities to define defacto standards. <br>
</p>
<h3>A Workbench Provides Flexibility and Centralized Project Control<br>
</h3>
<p>The tools required to build an application must vary in order to match the
customer's preferred application patterns. There are three ways developers can
use tools to develop applications:<br>
</p>
<ol>
<li>Simple applications can be built using independent, specialized tools with
all component relationships and publication managed by the developer. <br>
</li>
<li>An IDE can be used to provide all the integrated tools required to build
the entire application. <br>
</li>
<li>Use a workbench to integrate tools matching customer needs.<br>
</li>
</ol>
<p>The first approach has the advantage that it provides hands on development
where the developer knows everything. Developers can choose any tool they want
to build any resources they want. However, this approach doesn't scale to larger,
more complex, highly linked projects requiring multiple versions, and a larger
development team. It becomes increasingly difficult for a single individual
to comprehend the complete project. Taking this approach can often result in
applications that are hard to understand, extend, validate, and maintain.<br>
</p>
<p>The second approach is appealing because all the tools required for building
and maintaining applications are incorporated into a single product. The developer
gets everything needed in a single product from a single vendor. This presumably
results in well-integrated tools. However, these IDEs are extremely difficult
to build because there are so many component types, and technologies are changing
too fast. IDEs can be sufficiently complex that they cannot keep up with changes
in application domains, deployment architectures, technologies, or development
processes. It is difficult for an IDE to match the features of a best-of-breed
point tool resulting in mediocre tools and poor user experience. Users do not
have the flexibility to choose and integrate the tools in a manner that best
matches their preferred development style and e-business application pattern.<br>
</p>
<p>The workbench approach solves these problems by providing a central integration
point for project control and an integration mechanism to include resource-specific
tools. This approach allows a user to build applications using any components
they want with any tools while at the same time providing a common view of the
complete application across all components and the entire team. This allows
flexibility and choice necessary to select and integrate tools that meet different
e-business patterns and developer roles but still keeps the application under
control. The workbench can provide services common to, or across tools including
reporting capabilities, managing relationships or dependencies between components,
component management, and publishing services. Using a workbench simplifies
tool integration by allowing tools to integrate with the central workbench instead
of each other. This may significantly reduce the number of integrations that
must be developed, and provides a more consistent environment for the end user.
The workbench can be configured with the tools that best map to the e-business
development patterns.<br>
</p>
<p>The combination of a workbench and integration-ware for developing integrated
tools is a win-win situation for platform vendors, ISVs, and application developers.
Platform vendor(s) provide integration-ware and services enabling the efficient
development of integrated tools. ISVs contribute to the portfolio of integrated
tools while minimizing their costs through reuse of the platform and complimentary
components produced by other ISVs. Business application developers have best-of-breed
tools integrated together supporting their development process.<br>
</p>
<h3>Integration Conformance Levels<br>
</h3>
<p>In order to provide flexible tool integration, a tool integration platform
must define a number of conformance levels that tool vendors can target based
on the desired level of investment, time to market, and specific tool needs.
Each level specifies what tool vendors must do to achieve that level of integration,
and the required technologies that must be employed. By defining these integration
conformance levels, tool vendors have choices while at the same time specific
rules for advertising conformance to a particular level. This makes it easier
for tool vendors to determine what they must do to integrate their tools with
the platform, what technologies have to be supported, and establishes a consistent,
deterministic end-user experience. The integration conformance levels are:<br>
</p>
<p>None: No integration, tools are separate and independent. This is fine for
situations where tools operate on independent resources that are not linked
or otherwise integrated. It is typical of tool integration today, and often,
no further integration is needed.</p>
<p>Invocation: Integration is through invocation of registered applications on
resource types. Most operating systems and IDE provide this level of integration.
A user or installation program can register an application on a particular resource
type, and when that resource is selected, the application is invoked on the
selected resource in a separate window. There is no further integration. Invocation
integration is better than none because it allows the user to browse a collection
of artifacts in a file browser, Web browser, or other tool and invoke the correct
application to author the resource.</p>
<p>Data: Integration is achieved through data sharing between tools. This is the
type of integration that was attempted in the past with technologies like IRDS,
PCTE+, and the IBM ADCycle program. In this level of integration, tools share
each other's data. This provides much better integration than simple tool invocation
because now the tools know about each other's resources and can manage relationships
between them. Data integration consists of there basic concepts: access, interchange,
and transformation. Access is the protocol or API used by the tool to physically
access the data. Interchange is the form the data takes once it is accessed,
i.e., its schema. Transformation is concerned with modifying the data to meet
the needs of the target tool when the interchange format or schema isn't in
the form the tool requires. Transformation can also be used to integrate date
from many tools into a new single data model meeting the needs of some new tool.
</p>
<p>Data integration between tools creates a combinatoric explosion of access,
interchange, and transformation protocols. In the past, we tried to solve this
problem by specifying a repository and schema for all tools to integrate with.
This turned out to be impossible because tool vendors couldn't let a single
vendor (often a competitor) control such strategic aspects of their infrastructure,
and no one repository or extensible schema was sufficient to meet all vendor
needs. A better solution is exploit open standards that isolate tools from each
other and their underlying repositories and schemas. Fortunately there are a
number of standards that exactly meet our needs. WebDAV (Web Distributed Authoring
and Versioning)</p>
<p> using WebDAV for data access, XML/XMI/MOF for data interchange, and XSLT for
data transformation and integration.<br>
API: Tools interact with other tools through JavaBeans that abstract tool behavior
and make it publicly available.<br>
UI: Tools and their user interfaces are dynamically integrated at runtime with
a common desktop.<br>
The Workbench Tool Integration Platform is Different<br>
Then we need to establish a set of patterns that describe typical architectures
used by ISV tools. These might include:</p>
<p>Java/Swing application using files in the file system for persistence<br>
OLE Document editor<br>
Java/Swing application using a non-file based repository (object repository
or relational, doesn't really matter which)<br>
C++ client/server application with proprietary client/server communication protocol
and proprietary repository<br>
etc.</p>
<p>Then we look at each one of these patterns and explore how they can transition
to Workbench technologies through the levels of integration. What we'll see
is that there are patterns here too. Things like:<br>
Launching the application client on a resource type<br>
File based tools can use the workbench resource management model versioning,
access control, synchronization, disconnected work, etc.<br>
OLE Document editors can easily integrate their UIs, but need to do additonal
adaptor work to integrated with the outline, properties, and task views.<br>
Java/Swing applications can run in the same JVM so they can access other plug-in
API (other tools' busines models). <br>
Java/Swing applications can be easily converted to Desktop editors by modifying
their menu contribution to use either Swing menus or desktop contribution depending
on who launches them. They can also put their top-level component in an SWT
container so they can easily integrate with the rest of the workbench, similar
to ActiveX controls.<br>
Tools with proprietary repositories can start by exporting data out of their
repositories as XMI document through queries that represent typical units of
work. These XMI documents can be consumed by new tools integrated with the workbench
while existing C++ based clients work on the same repository.<br>
The next step for these tools would be to provide an interfact to their tools
model in a Java plug-in. The Java model could use the XMI documents, the repository
directly, or both for persistence. Using the new editor extension-points, this
Java model could be used to develop new editors on the tool's model while maintaining
the same repository.<br>
The repository could implement a WebDAV interface to provide a standard protocol
for accessing the XMI documents.<br>
and so on.</p>
<p></p>
</body>
</html>