% $Id: intro.tex,v 1.4 2006/02/12 17:38:39 gokhale Exp $
\section{Introduction}

Advances in hardware and networking technologies, and availability of
sophisticated tools for different stages of software development
lifecycle are pushing the limits on the capabilities of the next
generation of large-scale, distributed software systems.  Recent
trends in software design indicate that the use of prefabricated 
artifacts for software development is on the rise.  A paradigm called
{\em Software Factories}~\cite{Greenfield:04} is emerging that
envisions the {\em industrialization} of software development, similar
to industrialization in other domains, such as the housing, avionics
and automotive industry.  The prefabricated artifacts are the
off-the-shelf (COTS) software components that one can acquire from
different vendors and assemble them to deploy large-scale
applications. 

Component middleware technologies, such as J2EE~\cite{J2EE:01},
.NET~\cite{DotNet:02} and CORBA Component Model
(CCM)~\cite{CorbaComponents:02}, coupled with advances in
technologies, such as SOAP~\cite{SOAP:00}, WSDL~\cite{WSDL:01} and
XML~\cite{XML:00}, are increasingly being used to provision such
applications since they enable the construction of application
functionality dynamically by connecting individual component
functionalities spread across distributed resources.

Several functional and non functional concerns must be addressed
simultaneously when designing these applications.  Software for such
applications often must deal with significant {\em variability} caused
by the need to address multiple simultaneous challenges, including:
(1) integrating several individual subsystems using different
technologies and platforms, (2) supporting a diverse set of {\em
  software attributes} including functional properties, such as the
algorithms used to achieve the goals, and QoS properties,
such as predictable latency/jitter, throughput guarantees,
scalability, 24x7 availability, dependability, and security that must
be satisfied simultaneously, (3) adaptation and constant
fine tuning of the system required due to changing customer needs and
operating conditions, and (4) ensuring that investments in these
applications are safeguarded from technology obsolescence.

Aspect- and Feature-Oriented Design
methodologies~\cite{gregor:97,AOSD:04,Batory:04} 
have shown promise in terms of managing the complexity of large-scale
software design through explicit {\em separation of concerns}
(SoC)~\cite{Tarr:99}.  Most earlier work on SoC has been applied at
the programming language level.  In this paper, we focus on designing and
implementing visual domain-specific modeling languages
(DSMLs)~\cite{Janos:03} that enable the application of feature and
aspect oriented principles to address the sources of variability in
large-scale distributed service-oriented systems described above.  In
particular we focus on DSML design issues that illustrate the
separation of concerns in the middleware that hosts application
components.  These concerns include the basic building blocks used for 
middleware composition, their configurations, and their performance
characteristics.  Our DSML is called POSAML (Patterns-oriented
Software Architecture Modeling Language), which incorporates the
patterns~\cite{Schmidt:00a} for building network-centric software
systems. 

The rest of the paper is organized as follows: Section~\ref{sec:plop}
describes the variability challenges in service oriented middleware
and describes the need for visual modeling languages to address these
challenges; Section~\ref{sec:posa} describes the pattern language
modeling details of the POSAML language; Section~\ref{sec:soc}
illustrates the separation of concerns capabilities of POSAML;
Section~\ref{sec:relwork} compares our work to existing research; and
finally Section~\ref{sec:conclusion} describes lessons learned and
future work.
