Task Structuring COMET TASK STRUCTURING - Prima parte -

43
Task Structuring COMET COMET TASK STRUCTURING TASK STRUCTURING - Prima parte - - Prima parte -

Transcript of Task Structuring COMET TASK STRUCTURING - Prima parte -

Page 1: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Structuring

COMETCOMET

TASK TASK STRUCTURINGSTRUCTURING

- Prima parte -- Prima parte -

Page 2: Task Structuring COMET TASK STRUCTURING - Prima parte -

Indice- IntroduzioneIntroduzione

- Cosa si intende per task- Task Stucturing: obiettivi

- Task Stucturing Categories (first Task Stucturing Categories (first stage)stage) - I/O Task Structuring criteria

- Task interfaccia per I/O device asincroni

- Task interfaccia per I/O device periodici

- Task interfaccia per I/O device passivi

- Resource Monitor Task

- Internal Task Structuring criteria- Tasks Periodici

- Tasks Asincroni

- Control Tasks

- User Interface Tasks

Page 3: Task Structuring COMET TASK STRUCTURING - Prima parte -

Indice

- Task Priority criteria- Time-Citical Tasks

- Non-Time-Critical Tasks

-Task Stucturing Categories (second Task Stucturing Categories (second stage)stage) - Task Clustering criteria

- Temporal Clustering

- Sequential Clustering

- Control Clustering

- Clustering mutuamente esclusivo - Task Inversion criteria

Page 4: Task Structuring COMET TASK STRUCTURING - Prima parte -

Cosa si intende per task

- Un oggetto attivo con un proprio thread di controllo.

- Dall’ Analysis Model object-oriented si sviluppa una task architecture :- tasks concorrenti- classi passive

Cos’è un taskCos’è un task

Page 5: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Structuring: obiettivi

- Semplificare e rendere più chiaro il designsenza introdurre inutilmente troppi tasks

ObiettiviObiettivi

Separation of concerns : Un task usa information hiding per aspetti riguardanti la concorrenza (timing, controllo, sequenzialitá, comunicazione). Una classe per aspetti strutturali.

Page 6: Task Structuring COMET TASK STRUCTURING - Prima parte -

Nel ciclo di vita del software COMETNel ciclo di vita del software COMET

Analysis

Modeling

2

Task Structuring: obbiettivi

Design

Modeling

Incremental Software

Construction

5

6

7

1011

Page 7: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Structuring Categories

- Per aiutare il designer esistono delle linee guida ( criteria ), divise in categorie.

- Questa divisione si basa sull’ attività di Task Structuring a cui le categorie si riferiscono.

Task Structuring CategoriesTask Structuring Categories

Page 8: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

- Determinare gli I/O tasks come interfacce dei device esterni

- Quando si attiva un particolare I/O task

I/O Task Structuring criteriaI/O Task Structuring criteria

Page 9: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Attività iniziali:Attività iniziali:

- Analizzare le caratteristiche degli I/O devices

- Analizzare la natura dei dati

Page 10: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Caratteristiche degli I/O deviceCaratteristiche degli I/O device

- Device asincrono : è interrupt - driven

- Device passivo : non genera interrupt al completamento delle operazioni di I/O

- Comunication link : alcuni device esterni al sistema comunicano con esso attraverso un collegamento, con scambio di messaggi

Page 11: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Natura dei datiNatura dei dati

- Dato discreto : ha un numero finito di valori; viene campionato ad ogni cambiamento

- Dato analogico : può avere anche un numero infinito di valori; viene campionato su richiesta o periodicamente

Page 12: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

- Se esiste un device asincrono deve esistere anche un suo task di interfaccia verso il sistema, che si attiva tramite un interrupt generato dal device

- Se occorre un task di interfaccia può demandare la computazione ad altri task e rimettersi in attesa di un altro interrupt

Task interfaccia per I/O device asincroniTask interfaccia per I/O device asincroni

Page 13: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Task interfaccia per I/O device asincroni: ESEMPIOTask interfaccia per I/O device asincroni: ESEMPIO

<<asynchronous input device>>

:CruiseControlLever

1: CruiseControl interrupt

(CruiseControlInput)

:CruiseControl

<<asynchronous input device interface>>

:CruiseControlLever Interface

2: CruiseControl Request

Page 14: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

- É un task di interfaccia per un device passivo ( es: sensore ), i cui dati devono essere campionati periodicamente.

- Si attiva con un timer event, porta a termine le operazioni di I/O e ritorna in attesa per il prossimo timer event.

Task interfaccia per I/O device periodiciTask interfaccia per I/O device periodici

Page 15: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Task interfaccia per I/O device periodici: ESEMPIOTask interfaccia per I/O device periodici: ESEMPIO

<<passive input device>>

:Engine

1: read

(out EngineInput)

<<external timer>>

:DigitalClock

<<periodic input device interface>>

:EngineInterface

0: TimerEvent

2: engineOn

2A: engineOff

Page 16: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

- Simile al precedente, si usa però per ricevere o inviare dati a device passivi su richiesta, in genere tramite messaggio.

- Si utilizzano maggiormente con device di output.

Task interfaccia per I/O device passiviTask interfaccia per I/O device passivi

Page 17: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Task interfaccia per I/O device passivi: ESEMPIOTask interfaccia per I/O device passivi: ESEMPIO

<<passive output device>>

:Display

3: SensorStatistics

<<non-time-critical>>

:SensorStatistics

Algorithm

<<passive output device interface>>

:SensorStatisticDisplay Interface 2: Temperature&Pressure

Statistics

<<entity>>

:SensorData

Repository

1: read

(out sensorData)

Page 18: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

- É un caso speciale di task per I/O device passivi.

- Richieste da sorgenti diverse: - coordinare tali richieste- evitare la perdita di dati- garantire che vengano soddisfatte sequenzialmente.

Resource Monitor TaskResource Monitor Task

Page 19: Task Structuring COMET TASK STRUCTURING - Prima parte -

I/O Task Structuring criteria

Resource Monitor Task: ESEMPIOResource Monitor Task: ESEMPIO

<<passive output device>>

:FloorLamp

:anElevatorControl

3,4: FloorLamp Output

<<resource monitor>>

:FloorLamp

Inteface

1: FloorLamp Command

:another ElevatorControl

2: FloorLamp Command

Page 20: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- Determinare i tasks interni, non di I/O

- Quando si attiva un particolare task interno

Internal Task Structuring Internal Task Structuring criteriacriteria

Page 21: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- Soprattutto in sistemi concorrenti o real-time.

- Si attiva con un timer event , porta a termine le operazioni di I/O e ritorna in attesa per il prossimo timer event.

Tasks periodiciTasks periodici

- Attività da eseguire periodicamente.

Page 22: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

Tasks periodici: ESEMPIOTasks periodici: ESEMPIO

<<entity>>

:Distance

3: read (out ShaftRotationCountValue)

<<external timer>>

:DigitalClock

<<periodic>>

:DistanceTimer

1: TimerEvent

2: Calculate<<entity>>

:ShaftRotationCount

<<entity>>

:CalibartionConstant

4: read (out CalibartionConstantValue)

Page 23: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- Attività su richiesta.

- Si attiva su richiesta tramite un messaggio interno od un evento, inviato ad es. da un’altro task, porta a termine le operazioni e ritorna in attesa per il prossimo messaggio od evento.

Tasks asincroniTasks asincroni

Page 24: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

Tasks asincroni: ESEMPIOTasks asincroni: ESEMPIO

<<asynchronous algorithm>>

:Cruiser

3: read (out CurrentSpeedValue)

<<output device interface>>

:ThrottleInterface

<<control>>

:CruiseControl 4: Throttle Value

1: Cruise Control

Command

<<entity>>

:CurrentSpeed

<<entity>>

:Desired Speed

2: read (out DesideredSpeedValue)

5: Throttle Position

Page 25: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- Un task che esegue uno statechart sequenzial-mente.

Control TasksControl Tasks

- Negli statecharts non è permessa la concorrenza.

Page 26: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

Control Tasks: ESEMPIOControl Tasks: ESEMPIO

1: CruiseControl Request

<<control>>

:CruiseControl

2: CruiseControl Command

Page 27: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- Situazione : un utente porta a termine una serie di operazioni sequenzialmente.

- Tale task si interfaccia con I/O device ( tastiera, display, mouse...) in modo standard tramite il sistema operativo.

User Interface TasksUser Interface Tasks

Page 28: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

User Interface Tasks: ESEMPIOUser Interface Tasks: ESEMPIO

1: OperatorCommand

<<user interface>>

:OperatorInterface

2: read (out SensorData)

:Operator

<<entity>>

: SensorData Repository

3: DisplayData

Page 29: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- In UNIX un utente può comunque decidere di eseguire diverse attività concorrentemente, ser-vendosi dei processi in background.

- In Windows otteniamo lo stesso risultato operando su più finestre.

- Più tasks di interfaccia utente.

User Interface Tasks (multipli)User Interface Tasks (multipli)

Page 30: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

User Interface Tasks: ESEMPIO 2User Interface Tasks: ESEMPIO 2

1: Factory StatusQuery <<User Interface>>

:FactoryStatus Window

2: read (out FactoryStatus)

:Operator

<<entity>>

:FactoryStatus Repository

3: Status DisplayData

<<User Interface>>

:FactoryAlarm Window

2A: read (out AllarmStatus) <<entity>>

:FactoryAllarm Repository

1A: Allarm Query

3A: Allarm DisplayData

Page 31: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

- É possibile che si debbano usare molti task che sono istanze di uno stesso tipo.

- Nel caso di oggetti di controllo state-dependent che eseguono uno stesso statechart, abbiamo un control task per ogni oggetto.

Tasks multipli dello stesso tipoTasks multipli dello stesso tipo

Page 32: Task Structuring COMET TASK STRUCTURING - Prima parte -

Internal Task Structuring criteria

Tasks multipli dello stesso tipo: ESEMPIOTasks multipli dello stesso tipo: ESEMPIO

<<control>>

:ElevatorControl

Page 33: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Priority criteria

- Considerano la priorità in fase di Task Structuring, distinguendo in high e low priority.

- Questo aspetto viene spesso affrontato più tardi nel ciclo di sviluppo.

Task Priority criteriaTask Priority criteria

- Qui : solo identificare i tasks time-critical e non-time-critical.

Page 34: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Priority criteria

- Servono in molti sistemi real-time.

- Caso tipico: I/O task asincrono interrupt-driven, dove c’è rischio di perdere un interrupt e questo non deve accadere.

Time-Critical TasksTime-Critical Tasks

- É necessario che girino ad un alto livello di priorità ( high priority ).

Page 35: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Priority criteria

- Un task non-time-critical può girare a priorità bassa ( low priority ) sfruttando i cicli di CPU liberi, eseguendo intense attività computazionali.

- Caso tipico: task che legge dei dati da un sensore, ne calcola il significato e li rende disponibili.

Non-Time-Critical TasksNon-Time-Critical Tasks

Page 36: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Clustering criteria

- Capire se alcuni task della prima fase di Task Structuring possono essere raggruppati per diminuirne il numero e ridurre la complessità del design model.

- Individuare i task candidati e raggrupparli in phisical tasks. I task riuniti non possono più essere esuguiti concorrentemente.

Task Clustering criteriaTask Clustering criteria

Page 37: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Clustering criteria

- Alcuni tasks candidati possono essere attivati dallo stesso evento, ad es. un timer event.

- Caso tipico: tasks che vengono attivati periodicamente.

Temporal ClusteringTemporal Clustering

- Se i tasks sono indipendenti, possono essere raggruppati e deve essere specificato, dal designer, un ordine di esecuzione.

Page 38: Task Structuring COMET TASK STRUCTURING - Prima parte -

Temporal Clustering: ESEMPIOTemporal Clustering: ESEMPIO<<passive input

device>>

:Engine

4: read (out BrakeInput)

<<external timer>>

:DigitalClock

<<temporal clustering>>

:AutoSensors

1: TimerEvent

Task Clustering criteria

<<passive input device>>

:Brake

2: read (out EngineInput)

3: EngineOn 3A: EngineOff

5: BrakePressed 5A: BrakeReleased

Page 39: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Clustering criteria

No:- Se un task candidato è piú time-critical del

secondo.- Se i due task possono essere eseguiti su due

processori diversi.

Utilizzo di Temporal ClusteringUtilizzo di Temporal Clustering

Si:- Se i task hanno funzionalitá simili e uguale

importanza a livello di scheduling.- Se i due task hanno uguali periodi di

attivazione o comunque multipli tra loro (es. 50/100 msec).

Page 40: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Clustering criteria

- Alcuni tasks candidati , per esigenze applicative, sono eseguiti in ordine sequenziale.

- Caso tipico: il primo task è triggerato da un evento asincrono o periodico, il secondo viene eseguito di seguito.

Sequential ClusteringSequential Clustering

Page 41: Task Structuring COMET TASK STRUCTURING - Prima parte -

Sequential Clustering: ESEMPIOSequential Clustering: ESEMPIO

<<passive output device>>

:Display

3: ReportOutput

<<periodic>>

:ReportGenerator

<<passive output device interface>>

:DisplayInterface

2: Report

<<external timer>>

:DigitalClock

1: TimerEvent

Task Clustering criteria

Page 42: Task Structuring COMET TASK STRUCTURING - Prima parte -

Sequential Clustering: ESEMPIOSequential Clustering: ESEMPIO

<<passive output device>>

:Display

3: ReportOutput

<<external timer>>

:DigitalClock

<<sequential clustering>>

:ReportGenerator&Display

1: TimerEvent

Task Clustering criteria

NB: 2 messaggio interno

Page 43: Task Structuring COMET TASK STRUCTURING - Prima parte -

Task Clustering criteria

- Se un task candidato manda messaggi ad un oggetto che non è un task allora deve essere l’ultimo della sequenza.

Utilizzo di Sequential ClusteringUtilizzo di Sequential Clustering

- Se un task con prioritá minore ne segue uno time-critilal la sequenza non deve continuare.

- Se un task candidato riceve messaggi anche da altre fonti oltre ai tasks in sequenza deve essere mantenuto separato.