% $Id: intro.tex 3814 2006-09-13 18:00:27Z 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 described by XML-based%~\cite{XML:00}
standards) enable the construction of application functionality
by connecting individual services spread across distributed
resources. 

Several functional and non-functional concerns must be addressed
simultaneously when provisioning complex distributed applications on
these middleware platforms.  The non-functional provisioning concerns
comprise the problem of choosing the right set of configuration and
composition parameters of the middleware platforms and validating that
these meet the QoS requirements of the applications.   Traditional
approaches to middleware provisioning typically use low-level,
non-intuitive, and technology-specific mechanisms, which are not
reusable across 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 phase.
Moreover, the validation phase uses processes that do not leverage
decisions made at the configuration phase, which limits the
optimizations and 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.  

A solution to 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 thus hold promise for middleware provisioning
also.

A desirable visual tool for the provisioning problem is one that can
provide a clean separation of concerns~\cite{Tarr:99} between the
configuration and QoS validation phases, yet unifies the two phases
such that decisions at one phase can automate and optimize steps at
subsequent phases.  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,Gray_DSML_CRC: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.

The rest of the paper is organized as follows:
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:relwork} compares our work to existing
research; and Section~\ref{sec:conclusion} concludes with a
description of lessons learned and future work. 


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "hicss07-visa"
%%% End: 
