\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}{} TASK_GROUP_OBJECT_TYPE TDMA_Frame TRANSACTION_TYPE 0 \end{lstlisting} \caption{An example of \taskgroup (of type $Transaction_{-}Type$) description in Cheddar ADL} \label{Task_Group_example} \end{figure}