\subsubsection{Task group}
\label{task_group}

A \taskgroup is specified by the following definitions:\\

(1) A \taskgroup is a sub-set of \tasks.\\

(2) A $Generic_{-}Task_{-}Group$ has an unique name.\\

(3) A $Generic_{-}Task_{-}Group$ may constrain (the attributes of) its \tasks.\\

(4) The manner a $Generic_{-}Task_{-}Group$ constrains its \tasks depends 
on the type of the \taskgroup.\\

\begin{center}
Standard attributes
\end{center}

$Task_{-}List$: The set of tasks part of the \taskgroup. 
A list is used because some \taskgroups may constrain its \tasks to be in a certain order.\\

$Task_{-}Group_{-}Type$: Type of \taskgroup. 

Currently there exists two types of \taskgroup.
Annexes (A1) give the different types of a \taskgroup.\\

The other attributes of a \taskgroup are the same as 
those for a $Task$. This way a \taskgroup may constrain any attribute of its \tasks.\\

\begin{center}
Legality rules
\end{center}

(L1) The \taskgroup name must not be empty.\\

(L2) The \taskgroup name must be valid identifier.\\

(L3) When $Task_{-}Group_{-}Type$ is $Multiframe_{-}Type$, 
the $Task_{-}Type$ must not be different of $Frame_{-}Task_{-}Type$.\\

(L4) When $Task_{-}Group_{-}Type$ is $Transaction_{-}Type$, 
the $Task_{-}Type$ must not be different of $Periodic_{-}Type$.\\

(L5) When $Task_{-}Group_{-}Type$, of a \taskgroup, is $Transaction_{-}Type$,
the period attribute of its tasks must be equal to the period
attribute of the $Generic_{-}Task_{-}Group$\\

\begin{center}
Annexes
\end{center}

(A1) The types of $Generic_{-}Task_{-}Group$.\\

\indent \indent (A11) $Transaction_{-}Type$: A $Generic_{-}Task_{-}Group$ of $Transaction_{-}Type$ 
is a transaction \cite{palencia99}.

A transaction is group of tasks related by precedence dependency.

A transaction is released by a periodic event.
A particular instance of a transaction is called a job.
A job of a task in a transaction is released after the event that 
releases the job of the transaction.

If a job of a transaction is released at $t_0$, then a job of a 
\task is released at earliest after $t_0 + O$ with $O$ being
the offset of the \task.\\

\indent \indent (A12) $Multiframe_{-}Type$: A $Generic_{-}Task_{-}Group$ 
of $Multiframe_{-}Type$ is a Multiframe task \cite{mok97}
or a General Multiframe task \cite{baruah99}, i.e. group of 
tasks of $Frame_Task_Type$. Tasks of $Frame_Task_Type$ represent
the instances of the Multiframe/Generam Multiframe 
task ($Generic_{-}Task_{-}Group$ of $Multiframe_{-}Type$) and 
the tasks are ordered.
Releases of two tasks of $Frame_Task_Type$ are separated at 
least by the $Interarrival$ attribute of the tasks.

\begin{center}
Implementation
\end{center}


\begin{center}
Example
\end{center}

We give at figure \ref{Task_Group_example} an example of \taskgroup described in 
Cheddar ADL.

The considered example is a $Transaction$, composed by three periodic tasks. 

Note that other parameters are not described here in order to simplify the example.

\begin{figure}{}
\begin{lstlisting}{}

<transaction_task_group id=" 13">
  <object_type>TASK_GROUP_OBJECT_TYPE</object_type>
  <name>TDMA_Frame</name>
  <task_list>
    <periodic_task ref=" 14"/>
    <periodic_task ref=" 15"/>
    <periodic_task ref=" 16"/>
  </task_list>
  <task_group_type>TRANSACTION_TYPE</task_group_type>
  <period>0</period>
</transaction_task_group>

\end{lstlisting}
\caption{An example of \taskgroup (of type $Transaction_{-}Type$) description in Cheddar ADL}
\label{Task_Group_example}
\end{figure}