\section{Overview of Scribble}
\label{sec:overview}

% \axm{redundant in the view of the last par in sec2}\sout{At present
%   communication interactions are specified predominantly by informal
%   means employing natural language descriptions and ad-hoc
%   diagrammatic presentations, such as UML sequence diagrams and
%   Message Sequence Charts. Although such informal practices are
%   effective in communicating intentions of protocol designers, with
%   the increase in the size and complexity of communication behaviour
%   they inevitably lead to ambiguities, omissions and error-prone
%   implementations.}

The goal of {\scribble} is to provide a
formal and yet intuitive language and tools for specifying and
reasoning about communication protocols and their implementations,
based upon the theory of multiparty session types
\cite{HYC08,yoshida.denielou.bejleri.hu10,BettiniCDLDY08}.
%%
Figure~\ref{fig:scribble-overview} gives an overview of this software
framework, which we call the {\scribbleIt} {\em framework}.

\begin{figure}
  \centering
  \includegraphics[scale=0.27]{diagram2.eps}
\caption{Scribble framework overview.}
\label{fig:scribble-overview}
\end{figure}

% Here, a {\scribble} protocol specification 
% can be used for both static and runtime
% validation of communication applications.
Applications can implement interaction behaviour through the
conversation API, %% as well as the generated template code, 
%% using
%%%%% changed the meaning a bit ... anyway no illustration
%%%%% of template, and we cannot tell all
a high-level 
language-independent
message-passing interface,
%% . The conversation API is
%%which is intended 
to be realized in various
high-level programming languages (such as ML, Java, 
Python, C$\sharp$, 
C++ and others). Static validation is carried out with the aid of a
conversation API.
%% and a code generated from
%% the {\scribble} protocols.
%% , which contains message type,
%% label and role definitions of the protocol.
In place of the conversation API, we can also use language
extensions with intrinsic type checking capability, as studied
in \cite{HU07TYPE-SAFE,event}. The protocol type-checker
inspects the application code and decides whether its
communication behaviour in a conversation 
follows the prescribed protocol.
%%%
Dynamic validation is performed by a monitor that reads in a
{\scribble} protocol specification
%% converts it into an internal form, 
and inspects runtime communication behaviour of
an application. %%'s executable.
The monitor checks that its 
interaction follows the behaviour of the corresponding role(s)
prescribed by the protocol. For further discussions,
see Section 5. 

The {\scribble} framework is currently a work in progress. In the
following we present an overview of its underlying protocol
specification language, \scribble.

 
% Henceforth we shall use ``{\scribble}'' to mean
% either the description language itself or the framework based on this
% language, which should be clear from the context.


% {\scribble} together with examples taken from
% real-world use cases.

\input{scrib-helloworld}
\input{scrib-endpoints}
\input{scrib-structure}


