% $Id: intro.tex 6421 2007-05-14 11:44:49Z gokhale $
\section{Introduction}
\label{sec:intro}

Rapid advances in hardware and networking technologies are fostering
an unprecedented growth in complex applications and services with
different quality of service (QoS) requirements.  Standardized
middleware technologies (e.g., J2EE~\cite{J2EE:01},
.NET~\cite{DotNet:02} and CORBA Component Model
(CCM)~\cite{CorbaComponents:02}) coupled with advances in integration
technologies (e.g., web services and XML-based standards)
enable the construction of application functionality by connecting
individual services that are deployed across distributed resources. 

Several non-functional or systemic concerns must be addressed
simultaneously when provisioning (i.e., configuring, optimizing
and validating) complex distributed applications on these middleware
platforms.  The non-functional provisioning concerns comprise the
problem of choosing the correct set of configuration and composition
parameters of the middleware platforms, optimizing the platforms for
the QoS needs, and validating that these decisions meet the QoS
requirements of the applications.   Traditional approaches to
middleware provisioning typically use low-level, non-intuitive, and
technology-specific mechanisms, which often end up being fixed-point
solutions that are not reusable across different applications and
multiple middleware technologies.

From our experience collaborating with industry
practitioners~\cite{Sharp:98}, we have seen approaches to provisioning
that required the manual configuration of XML files that are several
thousand lines long.  In traditional approaches to provisioning, often
the QoS validation phase is decoupled from the configuration or
optimization phase.  Moreover, the validation phase uses processes
that do not leverage decisions made at the configuration phase, which
limits the fidelity of the QoS validation phases.  Overall, this
results in an ad hoc, iterative process for middleware provisioning,
which may adversely impact application time-to-market and its quality.

A solution to address this problem is to provide a mechanism that
raises the level of abstraction at which system integrators can
provision middleware.  Visual aids are one of the best known
techniques to intuitively reason about any
system~\cite{Giese_VLHCC:05}.  Visual tools have been highly
successful in the domain of simulations (e.g., Matlab Simulink) and
design (e.g., Cadence tools for circuit design or AutoCAD).  Visual
tools also hold promise for middleware provisioning. 

A desirable visual tool for the provisioning problem is one that can
provide clean separation of concerns~\cite{Tarr:99} between the
configuration, optimization and QoS validation phases, yet unify the
three phases by allowing the intent and decisions in one phase
to seamlessly transfer to the next one where they can be used for
automation and optimization of the phase under consideration.  Having
these qualities largely eliminate the overhead of the trial-and-error,
iterative process incurred by traditional methodologies. 

This paper describes POSAML (Patterns-oriented Software Architecture
Modeling Language), which is a visual domain-specific modeling
language (DSML)~\cite{Janos:03,Gokhale_DSML_chap:06}, and an
associated set of generative programming
tools~\cite{Generative:Programming:00} that meet the desired
properties of a visual tool for middleware provisioning.  Fundamental
to POSAML is the notion of middleware building blocks that are viewed
as being made up of software patterns~\cite{Vlissides:94,Schmidt:00a}.
Reasoning about middleware systems in terms of visual models of
patterns not only raises the level of abstraction, but also offers a
technology-independent solution to middleware provisioning.
Furthermore, capturing the essence of the provisioning decisions in
visual models and using generative programming tools improves the
potential reuse capabilities that can be applied across contemporary
middleware platforms for different application contexts. 

The rest of the paper is organized as follows:
Section~\ref{sec:relwork} compares our work to existing
research;
Section~\ref{sec:challenges} introduces the challenges in designing a
visual framework for middleware provisioning; Section~\ref{sec:posaml}
describes the design of the POSAML visual framework for middleware
provisioning;  Section~\ref{sec:example} illustrates the steps to use
POSAML in middleware provisioning; and Section~\ref{sec:conclusion}
concludes with a description of lessons learned and future work. 


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "JVLC-2007"
%%% End: 
