Task Structuring COMET TASK STRUCTURING - Prima parte -
-
Upload
innocenzo-foti -
Category
Documents
-
view
242 -
download
1
Transcript of Task Structuring COMET TASK STRUCTURING - Prima parte -
Task Structuring
COMETCOMET
TASK TASK STRUCTURINGSTRUCTURING
- Prima parte -- 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
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
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
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.
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
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
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
I/O Task Structuring criteria
Attività iniziali:Attività iniziali:
- Analizzare le caratteristiche degli I/O devices
- Analizzare la natura dei dati
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
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
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
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
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
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
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
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)
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
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
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
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.
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)
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
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
Internal Task Structuring criteria
- Un task che esegue uno statechart sequenzial-mente.
Control TasksControl Tasks
- Negli statecharts non è permessa la concorrenza.
Internal Task Structuring criteria
Control Tasks: ESEMPIOControl Tasks: ESEMPIO
1: CruiseControl Request
<<control>>
:CruiseControl
2: CruiseControl Command
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
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
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)
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
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
Internal Task Structuring criteria
Tasks multipli dello stesso tipo: ESEMPIOTasks multipli dello stesso tipo: ESEMPIO
<<control>>
:ElevatorControl
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.
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 ).
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
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
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.
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
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).
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
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
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
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.