Un thermostat programmable contrôle un chauffage et un conditionneur d’air en fonction de données entrées à l’aide d’un pavé de dix boutons par un utilisateur. En fonctionnement, le thermostat agit soit sur le chauffage, soit sur le conditionneur d’air, pour faire converger la température ambiante vers la température cible courante. Au chauffage et au conditionneur d’air s’ajoute un ventilateur également contrôlé par le thermostat. En fonctionnement, le thermostat contrôle chacun de ces trois éléments par le biais de trois relais de puissance. Le thermostat établit la température ambiante à l’aide d’un capteur de température. Le cycle et le mode de rafraîchissement de cette information ne sont pas connus car ils dépendent du dispositif retenu pour l’installation finale. En effet, en fonction de contraintes matérielles et logicielles ultérieurement définies (type de capteur, protocole de communication, etc.), la spécification doit être suffisamment flexible pour s’adapter à ces contraintes.
Le thermostat a besoin à tout moment de quatre informations : la température ambiante, l’heure et le jour courants, la température cible courante, ainsi que la constante « delta » telle que la condition d’arrêt du chauffage soit exprimée par « température ambiante > température cible courante + delta », et la condition d’arrêt du conditionneur d’air soit exprimée par « température ambiante < température cible courante - delta ». Le ventilateur est piloté via un commutateur comportant deux modes : le mode forcé entraîne le fonctionnement du ventilateur quelle que soit la situation. Le mode automatique n’entraîne lui au contraire la mise en marche du ventilateur que si le chauffage ou le conditionneur d’air se lance. En mode automatique, le ventilateur s’arrête aussi si le chauffage ou le conditionneur d’air s’arrête. La température cible est décrite dans une table de huit valeurs préalablement entrées par l’utilisateur. Avec chaque valeur est enregistrée une heure. Par convention, les quatre premières heures enregistrées décrivent les instants d’une journée de la semaine auxquels la température cible va changer. Les quatre dernières heures elles, décrivent les instants d’une journée du week-end auxquels la température cible va changer.
Exemple :
- Période de programmation n°1, heure : 22H, température cible : 21°Celsius à partir de 22H
- n°2, 7H, 14°Celsius à partir de 7H
- n°3, 9H, 22°Celsius à partir de 9H
- n°4, 17H, 18°Celsius à partir de 17H
- n°5, 23H, 22°Celsius à partir de 23H
- n°6, 9H, 14°Celsius à partir de 9H
- n°7, 13H, 22°Celsius à partir de 13H
- n°8, 18H, 19°Celsius à partir de 18H
Le thermostat inclut une interface utilisateur (pavé de dix boutons) ainsi qu'un témoin d’activité, un commutateur de saison et un commutateur de ventilation :
- Commutateur de saison
Heat
: le thermostat ne contrôle que le chauffage pour réguler la température ambiante.Cool
: le thermostat ne contrôle que le conditionneur d’air pour réguler la température ambiante.Off
: dans ce dernier cas, le chauffage et le conditionneur d’air sont stoppés et ne peuvent être remis en fonctionnement qu’en sortant du modeOff
.- Commutateur de ventilation
On
: le ventilateur opère en permanence.Auto
: le ventilateur n’opère que si le chauffage est actif ou le conditionneur d’air est actif.Le témoin d’activité quant à lui ne s’allume que si le chauffage est actif ou si le conditionneur d’air est actif. L’interface utilisateur est dotée d’un système alternant toutes les deux secondes l’affichage de l’heure et du jour courants avec l’affichage de la température ambiante, ainsi qu’un système d’affichage de la température cible courante (cf. figure). C’est le mode « activité de programme » (ou mode
Operate
) dans lequel le thermostat vérifie seconde par seconde si l’heure courante est égale à l’instant auquel la température cible doit changer. Dans un tel cas, il faut passer à la période de programmation suivante et fixer la nouvelle température cible courante à partir de la table. Il est cependant possible de ne pas tenir compte du programme en maintenant jusqu’à nouvel ordre la température cible courante (boutonHold temp
de l’interface utilisateur). Le mode alternatif du modeOperate
est le mode « configuration/programmation » (ou modeSetup
). Les données affichées par l’interface utilisateur dépendent alors du fait que l’on configure le jour et l’heure courants du thermostat ou alors que l’on programme la table avec de nouvelles températures cibles à des créneaux horaires précis. L’affichage a cet aspect :![]()
Interface utilisateur
Dans la figure, les quatre lignes correspondent à quatre possibilités de visualisation. Dans une ligne donnée, il y a deux zones d’affichage. Selon l’état courant du thermostat programmable, ces zones sont réservées à l’affichage de données bien précises. En ce sens, nous avons mentionné en italique, pour information, l’état dans lequel se trouverait le thermostat pour être en mesure d’afficher le type de données. Par exemple, la première ligne en haut de la figure, il apparaît à gauche, le jour et l’heure courants et à droite, la température cible courante à atteindre. C’est seulement dans le mode
Operate
et son sous-étatTarget temperature displaying
que cela est possible.Chacun des dix boutons du pavé génère un événement chaque fois qu’il est poussé. Il y a donc un type d’événement par bouton :
Temp up
: dans le modeOperate
, ce type d’événement incrémente et modifie la température cible courante qui est affichée. Dans le modeSetup
, ce type d’événement incrémente la température cible d’une période de programmation donnée sans dépasser 90°Fahrenheit. On passe d’une température cible à une autre dans la table en appuyant sur la toucheView program
(cf. ci-après).Temp down
: dans le modeOperate
, ce type d’événement décrémente et modifie la température cible courante qui est affichée. Dans le modeSetup
, ce type d’événement décrémente la température cible d’une période de programmation donnée sans dépasser 40°Fahrenheit. On passe d’une température cible à une autre dans la table en appuyant sur la toucheView program
(cf. ci-après).Time forward
: cette touche n’est utilisable que dans le modeSetup
. En plus de la possibilité d’incrémenter l’heure courante (cf.Set clock
), cette touche permet d’incrémenter de quinze secondes à chaque appui, l’heure associée à une période de programmation donnée (cf.View program
).Time backward
: cette touche n’est utilisable que dans le modeSetup
. En plus de la possibilité de décrémenter l’heure courante (cf.Set clock
), cette touche permet de décrémenter de quinze secondes à chaque appui, l’heure associée à une période de programmation donnée (cf.View program
).Set clock
: en appuyant sur cette touche, on entre dans le modeSetup
et donc on quitte le modeOperate
. Dans cet état, en appuyant de nouveau sur la toucheSet clock
, on affiche les heures si les minutes étaient affichées, on affiche les minutes (affichées par défaut en entrant dans l’état) si les heures étaient affichées. On incrémente ou décrémente les heures ou les minutes affichées en appuyant respectivement sur les touchesTime forward
ouTime backward
. De manière générale, la toucheSet clock
permet de modifier l’heure courante du thermostat. Au bout de quatre vingt dix secondes sans touche appuyée, on revient dans le modeOperate
et plus spécialement dans l’étatHold
(cf. boutonHold temp
).Set day
: en appuyant sur cette touche, on entre dans le modeSetup
et donc on quitte le modeOperate
. On incrémente ou décrémente la période de l’année affichée d’une journée en appuyant respectivement sur les touchesTime forward
ouTime backward
. De manière générale, la toucheSet day
permet de modifier le jour courant du thermostat. Au bout de quatre vingt dix secondes sans touche appuyée, on revient dans le modeOperate
et plus spécialement dans l’étatHold
(cf. boutonHold temp
).View program
: ce type d’événement permet d’entrer dans le modeSetup
et donc de quitter le modeOperate
. Le système d’affichage de l’heure et du jour courants sert alors à afficher et à modifier une heure associée à une période de programmation donnée (par défaut, l’heure associée à la période de programmation n°1). Le système d’affichage de la température cible courante sert lui à afficher et à modifier une température cible associée à une période de programmation donnée (par défaut, la température cible associée à la période de programmation n°1). La période de programmation est aussi affichée. On passe d’une période de programmation à une autre, d’une heure associée à une autre, d’une température cible associée à une autre, en appuyant de nouveau sur cette toucheView program
. Au bout de quatre vingt dix secondes sans touche appuyée, on revient dans le modeOperate
et plus spécialement dans l’étatHold
(cf. boutonHold temp
).Run program
: ce type d’événement permet d’entrer dans le modeOperate
et donc de quitter le modeSetup
. On entre dans l’étatRun
où il y a prise en compte du programme par opposition à l’étatHold
où il n’y a pas prise en compte du programme.Hold temp
: cette touche permet d’atteindre l’étatHold
. Au lieu de comparer seconde par seconde l’heure courante à l’instant auquel la température cible doit changer, le thermostat maintient la température cible courante jusqu’à ce que la toucheRun program
soit appuyée. L’étatHold
est le sous-état par défaut du mode généralOperate
qui est rappelons-le,Operate
.F-C
: cette touche permet d’alterner l’affichage de la température ambiante, la température cible courante, et éventuellement une température associée à une période de programmation donnée, entre °Fahrenheit (affichage par défaut) et °Celsius.
- Problème 1 : extraire du cahier des charges la liste des informations nécessaires au fonctionnement du système en tirant profit des types d'objet « métier » (Computational-Independent Model -CIM-) prédéfinis
Temperature
etTime-Date
.
- Indication 1 : quelles sont les informations affichées (et rafraîchies périodiquement) dans l'interface utilisateur ?
- Indication 2 : comment modéliser la table (aussi appelée « programme ») où figurent les 8 températures cible de la semaine et du week-end ?
- Problème 2 : caractériser (hors de tout autre comportement du système) le(s) passage(s) du mode
Operate
au modeSetup
et vice-versa.
- Indication 1 :
Operate
etSetup
sont-ils des éléments macroscopiques (i.e., décomposables) ou élémentaires (i.e., atomiques) ?- Indication 2 : comment modéliser les « modes »
Operate
etSetup
et conséquemment le(s) passage(s) de l'un à l'autre ?![]()
![]()
UML Class Diagram ⤳ Computational-Independent Model -CIM- « métier »
![]()
UML Class Diagram ⤳ Platform-Independent Model -PIM- « besoins »
![]()
UML State Machine Diagram ⤳ Platform-Independent Model -PIM- « besoins »
context Programmable thermostat::ambient temperature changed(temperature : Temperature) post: ambient temperature = temperature
context Programmable thermostat::run program() post: alternately = 0
context Programmable thermostat::set clock() post: no input = 0
- Etc.
OCL
![]()
![]()
![]()
![]()
![]()
![]()
UML State Machine Diagram ⤳ Platform-Independent Model -PIM- « besoins »
![]()
UML Communication Diagram ⤳ Platform-Independent Model -PIM- « besoins »
UML Class Diagram (incomplete)
![]()
UML State Machine Diagram (incomplete)
![]()
UML Activity Diagram (ill-formed: 1 or 3 business processes?)
![]()
UML Communication Diagram (ill-formed: signals instead of calls)
-right click-
(association within diagram) ⇝Add message from <?>
⤳ message creation ☛-right click-
(diagram content) ⇝Properties…
⇝Connectors
⇝Show Collaboration Numbers
⤳ toggle![]()
UML Component Diagram (incomplete)
![]()
Project management ☛ is divided into themes: Maintenance (Defect relative to element, Issue relative to element, Task relative to element, etc.), Project (Decision relative to element, Effort relative to element, etc.), Resources (project stakeholders, project roles…), Testing (model validation especially)
Resource
Settings
⇝Model Types -Reference Data-
⇝People… -General Reference-
![]()
-left click-
(element within diagram) ⇝≡
⇝Details -Inspector-
⇝Resources -right click-
⇝New 'Resource'…
![]()
-left click-
(element within diagram) ⇝≡
⇝Details -Inspector-
⇝Resources -right click-
⇝Resource List
or-left click-
(element within browser) ⇝Inspector
![]()
Exercise
- Allocate
Harry Cover
resource toProgrammable_thermostat
elementMaintenance ⤳ Issue
-left click-
(element within diagram) ⇝≡
⇝Details -Inspector-
⇝Maintenance
⇝New 'Issue'…
or-left click-
(element within browser) ⇝Inspector
![]()
-left click-
(element within browser) ⇝≡
⇝Details -Inspector-
⇝Maintenance -right click-
⇝Maintenance List
or-left click-
(element within browser) ⇝≡
⇝Details -Inspector-
⇝Issues -right click- -Maintenance-
⇝Issue List
![]()
Maintenance Diagram ☛ is the expression of maintenance on a set of elements (≠ relative to element), a diagram, a set of diagrams, etc.
Perspective
![]()
Sample
![]()
Maintenance ⤳ Task
-left click-
(element within browser) ⇝Construct
⇝Maintenance -Change Management-
or-left click-
(element within diagram) ⇝≡
⇝Inspect
⇝Maintenance
⇝Tasks
![]()
Maintenance ⤳ Resource Allocation & Task Completion
Construct
⇝Resources -Resource Management-
![]()
![]()
![]()
Exercise
- Reassign
PT1
andPT1
tasks fromProgrammable_thermostat
class toFunctionalities
package (log in asBelzebuth
,Start
⇝My Gantt -Personal-
) ⤳ tip ☛
Construct
⇝Tasks -Change Management-
⇝Show Tasks Window -Workspace-
- Try to complete
PT1
,PT1
, andCreation of signal in 'Signals' sub-package
tasks; set completion rate- Create new Event to inform about inability of dealing with issue on
Programmable_thermostat behavior
- Create new Decision to inform about task refusal:
Messages as calls in 'Programmable_thermostat communication' UML Communication Diagram have to be transformed into signals.
![]()
Guidance is project management-related process.
-right click-
(package within browser) ⇝Add a Model using Wizard…
⤳Guidance
tab![]()
-right click-
(element within browser) ⇝Add Diagramm…
⤳Construction -Extended-
![]()
![]()
Construct
⇝Gantt -Resource Management-
⇝Project Gantt View
![]()
Project Tasks are element-independent parts of project.
-left click-
(model) ⇝Issues-Tasks -Project Management-
⇝Project Tasks -Project-
![]()
Search
![]()
Exercise ⤳ Search
Create new project role and check with query ⤳
t_projectroles
SELECT * FROM t_projectroles
Changes? ⤳
t_object
SELECT * FROM t_object WHERE Object_Type LIKE 'Change'
Tasks? ⤳
t_object
,t_objectproblems
SELECT * FROM t_object WHERE Object_Type LIKE 'Task'
SELECT * FROM t_objectproblems WHERE ProblemType LIKE 'ToDo'
Defects & Issues? ⤳
t_objectproblems
SELECT * FROM t_objectproblems WHERE ProblemType IN ('Defect', 'Issue')
Maintenance on
Communication
package? ⤳t_packages
Vous trichez ! Cherchez un peu…
Design of
My_profile
![]()
![]()
Export
Design
⇝Manage -Diagram-
⇝Save as Profile… -Tools-
orSpecialize
⇝Publish Technology -Technologies-
⇝Publish Package as UML Profile -Publish-
Import
Settings
⇝Resources -Reference Data-
⇝Import Profile… -UML Profiles-
![]()
Usage
![]()
Exercise ⤳ Search
Tags? ⤳
t_objectproperties
SELECT * FROM t_objectproperties
Duration
stereotype applied? ⤳t_object
SELECT * FROM t_object WHERE Stereotype = 'Duration'