 % Project: ECONET 
% Document: Prague07 Workshop Report
% Last writer: Andre Pascal 
% creation: 14/09/07 
% modification PA 18/09/07 
% *********************************** 
%\chapter{Introduction}
%\label{introduction}
%\input{introduction}

In this part we remind the context of the workshop, its preparation, organization and the program.

\section{The \texttt{16293RG} ECONET Project}
\label{econet:project}

The activity described in this report is supported by Egide in the context of ECONET Projects\footnote{\url{http://www.egide.asso.fr/fr/programmes/econet/}}.
This section gathers the main features of the \texttt{16293RG} ECONET project.

\begin{itemize}
    \item Title: \textcolor{BrickRed}{Behaviour Abstraction from Code}
    \item Subtitle: \textcolor{BrickRed}{Filling the Gap between Component Specification and Implementation}
    \item Type: \textcolor{BrickRed}{Research and Technology Development Project}
    \item Duration: \textcolor{BrickRed}{2 years}
    \item Domain: \textcolor{BrickRed}{Sciences and Information Technology}
    \item Partners: \textcolor{BrickRed}{COLOSS (French) - DSRG (Czech) - LCI (Romanian) - OBASCO (French)}
\end{itemize}

\subsection{Motivations}

The project takes place in a specific domain of Information Technology, called Component Based Software Engineering whose goal is to provide languages, methods, techniques and tools for software developpers.
The field of component-based software engineering (CBSE) became
increasingly important in software construction approaches because
it promotes the (re)use of components, also called Components Off
The Shelf (COTS), coming from third party developers to build new
large systems. The components are scalable software modules
(bigger units than objects in object-oriented programming) that
can be used at the high levels of abstraction (software
architectures, design) and the low levels (programs, frameworks).

The goal of the project is to contribute to the reverse engineering way by developing techniques for extraction of abstractions from code (including some component interface description) and for verification of the abstractions against the code, \textit{e.g.} to check an in-line bank service with no available code, to check that a client component is compatible with an implemented component.

The core project is to establish a link between component code and
component specifications. The advantages of abstraction are to
check the conformance of component code and component
specifications, to statically check various properties of the
components such as safety and liveness. To be pragmatic we have to
restrict this huge mapping according to the partner's experience.

\begin{enumerate}
\item The source model (implementation level) is limited to Java code.
As regarding the problem of obtaining an abstract specification of a component using as input the component code, this problem cannot be solved in a satisfactory manner if the code does not contains appropriate comments, inserted in a well defined pattern, or if the code is not limited to a consistent subset of concepts.
%
\item The target model(s) (specification level) are abstract component models inspired from the ones of the partners.
Instead of studying only the structural features of the system, we
plan to work on \textit{behavioural} abstraction from Java code.
Behaviour \cite{plasil02behavior,coloss:AAA:2006:sc,obasco:spavel-all05a} is related to the dynamic and functional features of the
components and services. In particular, dynamic behaviours
describe the dynamic evolution of components, connectors or
services. The mechanisms used for component specifications are
grounded on different formalisms:
design by contract (realized by
using assertions), algebraic specifications, statemachines,
regular expressions and so on. Each above mentioned formalism
offers a set of advantages and has some drawbacks. Design by
contract, a declarative specification, supports just an
"incomplete" behavior specification.  Algebraic specification is,
in most cases, difficult to understand by people working in the
industry and not all kind of components can be specified.  The
statemachines and regular expressions formalisms are suited for
dynamic descriptions.
\end{enumerate}

\subsection{Partners}

The partners are four research teams which have competences on the project topics.
\begin{itemize}
\item \textbf{COLOSS}: COmposants et LOgiciels SűrS\\
\textcolor{Gray}{Safe Component and Software $\leadsto$ Component System Verification} \\
\footnotesize
\url{http://www.lina.sciences.univ-nantes.fr/coloss/}
\normalsize
\item \textbf{DSRG}: Distributed Systems Research Group\\
\textcolor{Gray}{SOFA model $\leadsto$ previous work = basis for the project}\\
\footnotesize
\url{http://dsrg.mff.cuni.cz/}
\normalsize
\item \textbf{LCI}: Laboratorul de Cercetare in Informatica\\
\textcolor{Gray}{Computer Science Research Laboratory $\leadsto$ OCL, MDD, Tools}\\
\footnotesize
\url{http://lci.cs.ubbcluj.ro/}
\normalsize
\item \textbf{OBASCO}: OBjects, ASpects and COmponents\\
\textcolor{Gray}{Previous work on Java and Components}\\
\footnotesize
\url{http://www.emn.fr/x-info/obasco/}
\normalsize
%Laboratorul de Cercetare Stiintifica In Informatica
%Praha Ceská Republika 
\end{itemize}

The four teams have complementary knowledge and background on the
project domain.
The goal is therefore to compare and exchange the
point of view, and to integrate the new ideas and techniques in the current
proposal.

\subsection{Initial Plan}

The project is established for two years.
The initial planning was organised as follow:

\noindent
{\em First year:}
  \begin{itemize}
  \item Determination the field of application (boundaries of Java concepts and idioms).
  \item Settings of the major principles to abstract behaviours for software components (into \kmelia, SOFA and STS) from Java code.
  \item Experimentations on existing code.
  \item Studying and proposing a pattern for annotating EJB components in order to better support RE (behavior abstraction from code).
  \item Integration of the verification of guards using OCL (and OCLE).
  \item Documentation, research report and workshop
preparation.
  \end{itemize}

\noindent
{\em Second year:}
  \begin{itemize}
  \item Refinement and classification of the principle and techniques.
  \item Study of the verification of assertions with OCL.
  \item Reverse engineering from EJB code to EJB specification realized in JML or OCL.
  \item Experimentation with larger case studies.
  \item Documentation, research report and workshop
preparation.
  \end{itemize}

Once the context has been introduced, we present now the workshop itself.

\section{The Workshop at Charles University of Prague}
\label{workshop}

The workshop is a major milestone for the first year of the project.
This section presents the project evolution until the workshop helds.

\subsection{Preparation}

Since the project has been accepted by Egide in march 2007, the exchanges between the partners became more frequent and precise at this date. 
Some of the exchanges are stored in the Project Wiki.

This wiki was installed at LINA (University of Nantes) in april 2007.
%\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:start}\\
It includes discussions, a repository for project and workshop material, etc.

\begin{figure}[h]
\centerline{\epsfig{figure=\repFIGURES/wikiStart.eps,width=16cm}}
\caption[wikiStart]{Project Wiki}
\label{wikiStart}
\end{figure}

\noindent
\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:start}\\

The workshop was initially planned on the end of june, possibly joinly to the TOOLS conference.
Actually this was not possible and it has been delayed to the first week of september.

A special group of pages have been writtent for the Workshop (figure \ref{wikiWork}).
The URL address is:\\
\small
\textcolor{BrickRed}{\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:pragues2007}}
\normalsize
\begin{figure}[ht]
\centerline{\epsfig{figure=\repFIGURES/wikiWork.eps,width=16cm}}
\caption[wikiWork]{Workshop on the Wiki}
\label{wikiWork}
\end{figure}

%\noindent
%\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:pragues2007}\\

\subsection{Organisation}

The workshop organisation was handled by Pascal André and Ondrej Sery.
The local organization committee included Ondrej Sery, Frantisek Plasil, Petr Hnetynka and Jan Kofron.

Detailed informations are given on the wiki site (figure \ref{wikiOrga}).

%+++contenu et adresse+++
\begin{figure}[ht]
\centerline{\epsfig{figure=\repFIGURES/wikiOrga.eps,width=16cm}}
\caption[wikiOrga]{Workshop Organization on the Wiki}
\label{wikiOrga}
\end{figure}

\small
\textcolor{BrickRed}{\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:pragues2007:}\\ \url{organization}}
\normalsize

\subsection{Objectives}

The following Workshop Objectives and Delivery were a first throw and kept many open issues.

\begin{itemize}
\item Objectives
%\footnotesize
%\textit{an intermediate objective report including a clear statement of the problem, an annoted bibliography and a list of work for the rest of the year and  a planning of the second year}
%\normalsize
%
$\leadsto$  State of The Art + Clear Application Context

\begin{itemize}
\item build a reference bibliography of the reverse engineering domain\\
\footnotesize
\textit{concepts, related work and comparison, mains issues, approaches, plateforms and tools (JPF, Bandera,...)}
\normalsize
\item set the source area \\
\footnotesize
\textit{subset of Java concepts, libraries, components, examples}
\normalsize
\item set the target area(s) \\
\footnotesize
\textit{SOFA, Kmelia, Vercors, ... - contracts, protocols, inheritance...}
\normalsize
\item initiate some directions to follow in order to process the reverse transformation\\
\footnotesize
\textit{patterns, rule based system, combination of several existing tools}
\normalsize
\end{itemize}
\item Delivery\\
A report for the project first year evaluation + plan the second year with individual objectives
\end{itemize}

\subsection{Participants}

The detailed list is arranged according the the alphabetical order of first names.

\begin{multicols}{2} 
\begin{itemize}
\item $Dan\ CHIOREAN$ - LCI
\item $Dragos\ PETRASCU$ - LCI
\item $Franti\check{s}ek\ PL\acute{A}\check{S}IL$ - DSRG
\item $Gilles\ ARDOUREL$ - COLOSS
\item $Jacques\ NOYE$ - OBASCO (absent)
\item $Jan\ KOFRO\check{N}$ - DSRG
\item $Jean$-$Claude\ ROYER$ - OBASCO
\item $Ji\check{r}\acute{i}\ AD\acute{A}MEK$ - DSRG
\item $Ond\check{r}ej\ \check{S}ER\acute{Y}$ - DSRG
\item $Pascal\ ANDRE$ - COLOSS
\item $Pavel\ PAR\acute{Y}ZEK$ - DSRG
\item $Petr\ HN\check{E}TYNKA$ - DSRG
\item $Tom\acute{a}\check{s}\ POCH$ - DSRG
\item $Vladiela\ PETRASCU$ - LCI
\end{itemize}
\end{multicols}

\subsection{Program and Schedule}

We present here an overview of the workshop program.
It was organised in two parts
\begin{itemize}
\item Day 1 and 2 are dedicated to workshop presentations. The durations and schedules leave time for numerous discussions...
\begin{itemize}
\item Presentation of the teams (recent work, projects, tools, ...)
\item Technical presentations
\end{itemize}
\item Day 3, 4 and 5 are dedicated to the project work (context, goal, process, tools, practical organisation and responsabilities)
\item Social events
\end{itemize}

More details are given on the Workshop Wiki at:\\
\small
\textcolor{BrickRed}{\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:pragues2007:}\\ \url{program07}}
\normalsize

%\noindent
%\url{http://www.lina.sciences.univ-nantes.fr/coloss/wiki/doku.php?id=econet:pragues2007}\\

\section{Report Contents}

In the remaining of the report, we provide more informations on the presentation sessions (section \ref{presentation_sessions} of chapter \ref{sessions}) and the working sessions (section \ref{working_sessions} of chapter \ref{sessions}).
In chapter \ref{architecture} we present the project architecture which is a main result of the workshop.

\paragraph{Warning}~\\
This report has been mainly written by Pascal from his personnal notes.
There may remain english errors, misunderstanding, transcription errors, and so on. He apologise for these errors.

\endinput

