Task Structuring
COMET
TASK STRUCTURING
- Prima parte -
- Introduzione
Indice
- Cosa si intende per task
- Task Stucturing: obiettivi
- Task Stucturing Categories (first 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
Indice
- Task Priority criteria
- Time-Citical Tasks
- Non-Time-Critical Tasks
-Task Stucturing Categories (second stage)
- Task Clustering criteria
- Temporal Clustering
- Sequential Clustering
- Control Clustering
- Clustering mutuamente esclusivo
- Task Inversion criteria
Cosa si intende per task
Cos’è un task
- Un oggetto attivo con un proprio thread
di controllo.
- Dall’ Analysis Model object-oriented si
sviluppa una task architecture :
- tasks concorrenti
- classi passive
Task Structuring: obiettivi
Obiettivi
Separation of concerns :
Un task usa information hiding per aspetti
riguardanti la concorrenza (timing, controllo,
sequenzialitá, comunicazione).
Una classe per aspetti strutturali.
- Semplificare e rendere più chiaro il design
senza introdurre inutilmente troppi tasks
Task Structuring: obbiettivi
Nel ciclo di vita del software COMET
2
Analysis
Modeling
5
Design
Modeling
6
Incremental
Software
Construction
11
10
7
Task Structuring Categories
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.
I/O Task Structuring criteria
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 criteria
Attività iniziali:
- Analizzare le caratteristiche degli I/O devices
- Analizzare la natura dei dati
I/O Task Structuring criteria
Caratteristiche 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
I/O Task Structuring criteria
Natura 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
I/O Task Structuring criteria
Task interfaccia per I/O device asincroni
- 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
I/O Task Structuring criteria
Task interfaccia per I/O device asincroni: ESEMPIO
<<asynchronous input
device interface>>
:CruiseControlLever
Interface
:CruiseControl
2: CruiseControl Request
1: CruiseControl interrupt
(CruiseControlInput)
<<asynchronous input
device>>
:CruiseControlLever
I/O Task Structuring criteria
Task interfaccia per I/O device periodici
- É 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.
I/O Task Structuring criteria
Task interfaccia per I/O device periodici: ESEMPIO
<<periodic input device
interface>>
0: TimerEvent
<<external timer>>
:DigitalClock
:EngineInterface
1: read
(out EngineInput)
2: engineOn
<<passive input
device>>
:Engine
2A: engineOff
I/O Task Structuring criteria
Task interfaccia per I/O device passivi
- 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.
I/O Task Structuring criteria
Task interfaccia per I/O device passivi: ESEMPIO
<<passive output device
interface>>
:SensorStatisticDisplay
Interface
<<non-time-critical>>
:SensorStatistics
2: Temperature&Pressure
Statistics
Algorithm
3: SensorStatistics
1: read
(out sensorData)
<<passive output
device>>
:Display
<<entity>>
:SensorData
Repository
I/O Task Structuring criteria
Resource Monitor Task
- É 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.
I/O Task Structuring criteria
Resource Monitor Task: ESEMPIO
:anElevatorControl
1: FloorLamp
Command
<<resource monitor>>
:FloorLamp
<<passive output
device>>
Inteface
:FloorLamp
3,4: FloorLamp
Output
:another
ElevatorControl
2: FloorLamp
Command
Internal Task Structuring criteria
Internal Task Structuring criteria
- Determinare i tasks interni, non di I/O
- Quando si attiva un particolare task interno
Internal Task Structuring criteria
Tasks periodici
- Attività da eseguire periodicamente.
- 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.
Internal Task Structuring criteria
Tasks periodici: ESEMPIO
<<periodic>>
:DistanceTimer
2: Calculate
1: TimerEvent <<external timer>>
:DigitalClock
3: read (out
ShaftRotationCountValue)
<<entity>>
:ShaftRotation
Count
<<entity>>
:Distance
<<entity>>
4: read (out
CalibartionConstantValue)
:Calibartion
Constant
Internal Task Structuring criteria
Tasks asincroni
- 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.
Internal Task Structuring criteria
Tasks asincroni: ESEMPIO
<<output device
interface>>
<<control>>
:CruiseControl
1: Cruise
Control
Command
4: Throttle
Value
<<entity>>
3: read (out
CurrentSpeedValue)
<<asynchronous
algorithm>>
:Cruiser
5: Throttle
Position
:ThrottleInterface
:CurrentSpeed
<<entity>>
2: read (out
DesideredSpeedValue)
:Desired
Speed
Internal Task Structuring criteria
Control Tasks
- Un task che esegue uno statechart sequenzialmente.
- Negli statecharts non è permessa la concorrenza.
Internal Task Structuring criteria
Control Tasks: ESEMPIO
1: CruiseControl
Request
2: CruiseControl
Command
<<control>>
:CruiseControl
Internal Task Structuring criteria
User Interface Tasks
- 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.
Internal Task Structuring criteria
User Interface Tasks: ESEMPIO
1: OperatorCommand
<<user interface>>
:OperatorInterface
:Operator
3: DisplayData
2: read (out
SensorData)
<<entity>>
: SensorData
Repository
Internal Task Structuring criteria
User Interface Tasks (multipli)
- In UNIX un utente può comunque decidere di
eseguire diverse attività concorrentemente, servendosi dei processi in background.
- In Windows otteniamo lo stesso risultato
operando su più finestre.
- Più tasks di interfaccia utente.
Internal Task Structuring criteria
User Interface Tasks: ESEMPIO 2
1: Factory
StatusQuery
<<User Interface>>
2: read (out
FactoryStatus)
<<entity>>
:FactoryStatus
Repository
:FactoryStatus
Window
3: Status
DisplayData
:Operator
1A: Allarm
Query
3A: Allarm
DisplayData
<<User Interface>>
:FactoryAlarm
Window
2A: read (out
AllarmStatus)
<<entity>>
:FactoryAllarm
Repository
Internal Task Structuring criteria
Tasks multipli dello stesso tipo
- É 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.
Internal Task Structuring criteria
Tasks multipli dello stesso tipo: ESEMPIO
<<control>>
:ElevatorControl
Task Priority criteria
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.
- Qui : solo identificare i tasks time-critical e
non-time-critical.
Task Priority criteria
Time-Critical Tasks
- Servono in molti sistemi real-time.
- É necessario che girino ad un alto livello di priorità
( high priority ).
- Caso tipico: I/O task asincrono interrupt-driven,
dove c’è rischio di perdere un interrupt e questo
non deve accadere.
Task Priority criteria
Non-Time-Critical Tasks
- 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.
Task Clustering criteria
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 criteria
Temporal Clustering
- Alcuni tasks candidati possono essere attivati dallo
stesso evento, ad es. un timer event.
- Se i tasks sono indipendenti, possono essere
raggruppati e deve essere specificato, dal
designer, un ordine di esecuzione.
- Caso tipico: tasks che vengono attivati
periodicamente.
Task Clustering criteria
Temporal Clustering: ESEMPIO
<<passive input
device>>
:Engine
<<passive input
device>>
:Brake
<<external timer>>
2: read (out
EngineInput)
4: read (out
BrakeInput)
:DigitalClock
1: TimerEvent
<<temporal clustering>>
:AutoSensors
3: EngineOn 3A: EngineOff
5: BrakePressed 5A: BrakeReleased
Task Clustering criteria
Utilizzo di Temporal Clustering
No:
- Se un task candidato è piú time-critical del secondo.
- Se i due task possono essere eseguiti su due
processori diversi.
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).
Task Clustering criteria
Sequential Clustering
- 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.
Task Clustering criteria
Sequential Clustering: ESEMPIO
<<passive output device
interface>>
<<periodic>>
:DisplayInterface
:ReportGenerator
2: Report
3: ReportOutput
1: TimerEvent
<<passive output
device>>
<<external timer>>
:Display
:DigitalClock
Task Clustering criteria
Sequential Clustering: ESEMPIO
<<sequential clustering>>
<<external timer>>
:ReportGenerator&Display
:DigitalClock
1: TimerEvent
3: ReportOutput
<<passive output
device>>
:Display
NB: 2  messaggio interno
Task Clustering criteria
Utilizzo di Sequential Clustering
- Se un task candidato manda messaggi ad un
oggetto che non è un task allora deve essere
l’ultimo della sequenza.
- Se un task candidato riceve messaggi anche da
altre fonti oltre ai tasks in sequenza deve essere
mantenuto separato.
- Se un task con prioritá minore ne segue uno
time-critilal la sequenza non deve continuare.
Scarica

schenone