SlideShare une entreprise Scribd logo
Sacha LHOPITAL – Janvier 2019 1
Les bonnes pratiques CleanCode sont-elles compatibles avec
l’Intelligence Artificielle et l’IoT ?
Janvier 2019
Sacha LHOPITAL – VISEO
Vincent THAVONEKHAM - VISEO | MVP Azure | Microsoft Regional Director
Professeur Samir AKNINE - Université Claude Bernard Lyon 1
Sacha LHOPITAL – Janvier 2018
VISEO TECHNOLOGIES
2
2500
EFFECTIFS 2018
FRANCE • ESPAGNE • MAROC • USA •
HONG KONG • SINGAPOUR • PHILIPPINES •
AUSTRALIE • INDONÉSIE
Un petit mot sur VISEO…
3
Quel est le problème à résoudre ?
Sacha LHOPITAL – Janvier 2018
QUEL EST LE PROBLÈME À RÉSOUDRE ?
4
Intervention suite à appel audio
Sacha LHOPITAL – Janvier 2018
COMMENT ON PEUT LE FAIRE ?
5
Prévenir le personnel médical AVANT que les sonneries ne s’activent
sans pour autant les faire se déplacer plus souvent
Sacha LHOPITAL – Janvier 2018
UN ALGORITHME DCOP
IA Distribuées
7
Distributed Constraint Optimisation
Problem (DCOP) où les IA coopèrent pour
optimiser les contraintes
Principe :
Affecter une valeur à chaque agent
(nombre de minutes)
Minimiser la somme de contraintes
8
Pourquoi mettre en place des bonnes pratiques ?
Déjà par ce que c’est plus sain
9
Simplifier = Code plus Robuste et Maintenable
10
Sacha LHOPITAL – Janvier 2018
OU COMMENT PASSER D’UNE DOCUMENTATION COMPLEXE AVEC CE GENRE DE SCHEMA …
L’algorithme DPOP
11
Un
algorithme
en 3 étapes :
Génération d’un
arbre DFS
Propagation
ascendante de
l’utilité (UTIL)
Propagation
descendante des
valeurs retenues
Source :
DPOP : a Dynamic Programming
Optimization Protocol for DCOP
du livre « A Class of Algorithms
for Distributed Constraint
Optimization »
de Adrian Petcu - 2007
Sacha LHOPITAL – Janvier 2018
… A DU CODE PYTHON COMME ON L’AIME …
12
13
… Et a des tests permettant du refactoring
Sacha LHOPITAL – Janvier 2018
EXEMPLE TECHNIQUE
Test Driven Development - Behavior Driven Development
17
1. Spécification en langage naturel avec Behave
Côté mathématique/technique (par exemple via Azure DevOps)
Feature: Events Management
Scenario: Server send "ON" messages with specific root on urgent demands
Given a server interacting with AI agents in syringe pump
And a mqtt server interacting with AI agents in syringe pump
When receive an 'URGT' message from AI in syringe pump
Then server should send 'ON' messages to every AI in syringe pump
And should choose the sender of the 'URGT' message as root
Sacha LHOPITAL – Janvier 2018
EXEMPLE TECHNIQUE
Test Driven Development - Behavior Driven Development
18
2. Réalisation du Test
Côté Développeur
@given("a server interacting with AI agents in syringe pump")
def step_impl(context):
context.server_thread =
Starter([context.room_1, context.room_2, context.room_3], MagicMock())
@given("a mqtt server interacting with AI agents in syringe pump")
def step_impl(context):
context.server_mqtt = ServerMQTT(Hospital(3))
context.server_mqtt.starter = context.server_thread
context.server_mqtt.starter.start = MagicMock()
context.server_mqtt.starter.start()
Sacha LHOPITAL – Janvier 2018
EXEMPLE TECHNIQUE
Test Driven Development - Behavior Driven Development
19
2. Réalisation du Test
Côté Développeur
@when("receive an 'URGT' message from AI in syringe pump")
def step_impl(context):
with mock.patch('mqtt.custom_mqtt_class.CustomMQTTClass.on_message'):
context.msg = MagicMock()
context.msg.topic = "DCOP/SERVER/"
context.msg.payload.decode.return_value =
MessageTypes.URGT.value + "_" + str(3)
Sacha LHOPITAL – Janvier 2018
EXEMPLE TECHNIQUE
Test Driven Development - Behavior Driven Development
20
2. Réalisation du Test
Côté Développeur
@then("server should send 'ON' messages to every AI in syringe pump")
def step_impl(context):
with mock.patch('mqtt.mqtt_manager.MQTTManager.publish_on_msg_to'):
with mock.patch('dcop_server.urgt_starter.UrgentStarter.get_values'):
context.urgt_thread = context.server_mqtt.on_message(MagicMock(), MagicMock(), context.msg)
context.urgt_thread.join(timeout=10)
assert_that(context.urgt_thread, instance_of(UrgentStarter))
assert_that(context.urgt_thread.mqtt_manager.publish_on_msg_to.call_count, equal_to(3))
@then("should choose the sender of the 'URGT' message as root")
def step_impl(context):
with mock.patch('mqtt.mqtt_manager.MQTTManager.publish_elected_root_msg_to'):
with mock.patch('dcop_server.urgt_starter.UrgentStarter.get_values'):
context.urgt_thread = context.server_mqtt.on_message(MagicMock(), MagicMock(), context.msg)
context.urgt_thread.join(timeout=10)
assert_that(
context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.call_count, equal_to(3)
)
context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.assert_any_call(1, 3)
context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.assert_any_call(2, 3)
context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.assert_any_call(3, 3)
Sacha LHOPITAL – Janvier 2018
EXEMPLE TECHNIQUE
Test Driven Development - Behavior Driven Development
21
3. Implémentation de la Feature
def on_message(self, client, obj, msg):
[…]
if MessageTypes.URGT.value in str_msg […]:
urgt_thread = UrgentStarter(
self.starter,
client,
int(str_msg.split(MessageTypes.URGT.value + "_")[1]),
)
urgt_thread.start()
return urgt_thread
[…]
Sacha LHOPITAL – Janvier 2018
EXEMPLE TECHNIQUE
Test Driven Development - Behavior Driven Development
22
4. Vérification que le test passe
23
Enfin : l’intérêt vital de faciliter le déploiement
Sacha LHOPITAL – Janvier 2018
POURQUOI VITAL ?
Architecture
24
Cloud Azure IoT
Réseau Local dans l’HôpitalRéseau Etendu
AMQP
Une Architecture Complexe
qui nécessite la rigueur
du Craftsman
Sacha LHOPITAL – Janvier 2018
POURQUOI VITAL ?
Architecture
25
Cloud Azure IoT
Réseau Local dans l’HôpitalRéseau Etendu
AMQP
Les IA sont autonomes…
…et distribuées
Pas besoin du Serveur DCOP,
ni de Cloud !
Sacha LHOPITAL – Janvier 2018
POURQUOI VITAL ?
A cause de notre contexte, on a besoin de physiquement distribuer les agents intelligents
26
Sacha LHOPITAL – Janvier 2018
ALORS POUR NE PAS PERDRE LA TÊTE, ON MET EN PLACE DU CD, ET DU CI TANT QU’À FAIRE
Azure DevOps – CI / CD
27
AI développeuse
Même sur un projet avec l’IA, les bonnes pratiques
sont d’autant plus utiles !
29
Tout ça pour dire
30
Démo
Sacha LHOPITAL – Janvier 2018
Merci pour
votre attention !

Contenu connexe

Similaire à Viseo presentation Clean Code / Intelligence Artificielle DCOP

PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
Marc Bojoly
 
Bluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications WindowsBluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications Windows
Microsoft
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projets
Adrien Blind
 
Petit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projetsPetit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projets
OCTO Technology
 
BioITpm Executive Presentation V500.pptx
BioITpm Executive Presentation V500.pptxBioITpm Executive Presentation V500.pptx
BioITpm Executive Presentation V500.pptx
Louis-Martin Landry
 
Glossaire de l'Industrie 4.0
Glossaire de l'Industrie 4.0Glossaire de l'Industrie 4.0
Glossaire de l'Industrie 4.0
Alain KHEMILI
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
ENSET, Université Hassan II Casablanca
 
Ingénieur en développement logiciel
Ingénieur en développement logicielIngénieur en développement logiciel
Ingénieur en développement logiciel
Fabrice KAKCHA NTICHI
 
Présentation1.pptx
Présentation1.pptxPrésentation1.pptx
Présentation1.pptx
SahalMatheson
 
Workshop IA : supercalculateur pour booster vos projets par GENCI
Workshop IA : supercalculateur pour booster vos projets par GENCIWorkshop IA : supercalculateur pour booster vos projets par GENCI
Workshop IA : supercalculateur pour booster vos projets par GENCI
Stéphanie Roger
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
Marc Bojoly
 
Le Plan de Reprise d'Activité pour les PME
Le Plan de Reprise d'Activité pour les PMELe Plan de Reprise d'Activité pour les PME
Le Plan de Reprise d'Activité pour les PME
Avignon Delta Numérique
 
[TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte![TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte!
Alexandre Touret
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
Mohammed TAMALI
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
Didier Durand
 
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
FactoVia
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
Benoît de CHATEAUVIEUX
 
Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...
Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...
Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...
I MT
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009
Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009
Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009
Michelet
 

Similaire à Viseo presentation Clean Code / Intelligence Artificielle DCOP (20)

PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
 
Bluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications WindowsBluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications Windows
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projets
 
Petit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projetsPetit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projets
 
BioITpm Executive Presentation V500.pptx
BioITpm Executive Presentation V500.pptxBioITpm Executive Presentation V500.pptx
BioITpm Executive Presentation V500.pptx
 
Glossaire de l'Industrie 4.0
Glossaire de l'Industrie 4.0Glossaire de l'Industrie 4.0
Glossaire de l'Industrie 4.0
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Ingénieur en développement logiciel
Ingénieur en développement logicielIngénieur en développement logiciel
Ingénieur en développement logiciel
 
Présentation1.pptx
Présentation1.pptxPrésentation1.pptx
Présentation1.pptx
 
Workshop IA : supercalculateur pour booster vos projets par GENCI
Workshop IA : supercalculateur pour booster vos projets par GENCIWorkshop IA : supercalculateur pour booster vos projets par GENCI
Workshop IA : supercalculateur pour booster vos projets par GENCI
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
 
Le Plan de Reprise d'Activité pour les PME
Le Plan de Reprise d'Activité pour les PMELe Plan de Reprise d'Activité pour les PME
Le Plan de Reprise d'Activité pour les PME
 
[TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte![TNT19] Hands on: Objectif Top Architecte!
[TNT19] Hands on: Objectif Top Architecte!
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
 
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
Sido 2017 : Vincent Thavonekham, MVP azure et Regional Director, VISEO, Retou...
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...
Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...
Colloque IMT -04/04/2019- L'IA au cœur des mutations industrielles - Session ...
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009
Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009
Sparxent |NetworkD LANDesk User Group 2009 Présentation Leroy Merlin 26 Nov 2009
 

Plus de FactoVia

Enjeux industrie et formations
Enjeux industrie et formationsEnjeux industrie et formations
Enjeux industrie et formations
FactoVia
 
Industrie 4.0 / usine du futur : retours concrets & faibles coûts
Industrie 4.0 / usine du futur : retours concrets & faibles coûtsIndustrie 4.0 / usine du futur : retours concrets & faibles coûts
Industrie 4.0 / usine du futur : retours concrets & faibles coûts
FactoVia
 
Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...
Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...
Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...
FactoVia
 
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouvertureGab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
FactoVia
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
FactoVia
 
Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...
Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...
Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...
FactoVia
 
Global Azure Bootcamp 2016 - Lyon - Keynote Opening
Global Azure Bootcamp 2016 - Lyon - Keynote OpeningGlobal Azure Bootcamp 2016 - Lyon - Keynote Opening
Global Azure Bootcamp 2016 - Lyon - Keynote Opening
FactoVia
 
Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...
Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...
Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...
FactoVia
 
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
FactoVia
 
Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...
Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...
Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...
FactoVia
 
Industry4.0 IoT Vincent Thavonekham - Azure Day Ukraine
Industry4.0 IoT Vincent Thavonekham - Azure Day UkraineIndustry4.0 IoT Vincent Thavonekham - Azure Day Ukraine
Industry4.0 IoT Vincent Thavonekham - Azure Day Ukraine
FactoVia
 
Why care about GDPR and avoid over $20 million fines, even outside EU ?
Why care about GDPR and avoid over $20 million fines, even outside EU ?Why care about GDPR and avoid over $20 million fines, even outside EU ?
Why care about GDPR and avoid over $20 million fines, even outside EU ?
FactoVia
 
Microsoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projects
Microsoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projectsMicrosoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projects
Microsoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projects
FactoVia
 
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTVISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
FactoVia
 
Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...
Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...
Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...
FactoVia
 
Cahier spécial visual studio 2015 - Octobre 2015
Cahier spécial visual studio 2015 - Octobre 2015Cahier spécial visual studio 2015 - Octobre 2015
Cahier spécial visual studio 2015 - Octobre 2015
FactoVia
 
Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...
Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...
Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...
FactoVia
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
FactoVia
 

Plus de FactoVia (18)

Enjeux industrie et formations
Enjeux industrie et formationsEnjeux industrie et formations
Enjeux industrie et formations
 
Industrie 4.0 / usine du futur : retours concrets & faibles coûts
Industrie 4.0 / usine du futur : retours concrets & faibles coûtsIndustrie 4.0 / usine du futur : retours concrets & faibles coûts
Industrie 4.0 / usine du futur : retours concrets & faibles coûts
 
Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...
Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...
Cracking RSA key - Quantum Computing - #GlobalAzure Bootcamp - Louis Charavne...
 
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouvertureGab2019 Ihor leontiev Vincent Thavonekham ouverture
Gab2019 Ihor leontiev Vincent Thavonekham ouverture
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...
Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...
Global Azure Bootcamp 2016 - Lyon : Keynote Quantum : Concepts explained & Li...
 
Global Azure Bootcamp 2016 - Lyon - Keynote Opening
Global Azure Bootcamp 2016 - Lyon - Keynote OpeningGlobal Azure Bootcamp 2016 - Lyon - Keynote Opening
Global Azure Bootcamp 2016 - Lyon - Keynote Opening
 
Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...
Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...
Global Azure Bootcamp 2016 - Lyon : Iot Project Management, IoT Edge with Rea...
 
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
 
Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...
Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...
Azure IoT Edge with real-time Machine Learning and Azure IoT Central - Vincen...
 
Industry4.0 IoT Vincent Thavonekham - Azure Day Ukraine
Industry4.0 IoT Vincent Thavonekham - Azure Day UkraineIndustry4.0 IoT Vincent Thavonekham - Azure Day Ukraine
Industry4.0 IoT Vincent Thavonekham - Azure Day Ukraine
 
Why care about GDPR and avoid over $20 million fines, even outside EU ?
Why care about GDPR and avoid over $20 million fines, even outside EU ?Why care about GDPR and avoid over $20 million fines, even outside EU ?
Why care about GDPR and avoid over $20 million fines, even outside EU ?
 
Microsoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projects
Microsoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projectsMicrosoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projects
Microsoft Experiences 16, Vincent Thavonekham REX IoT Azure Large projects
 
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTVISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
 
Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...
Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...
Retour d'expérience Large IoT project / BigData : détail du cas réel de Hager...
 
Cahier spécial visual studio 2015 - Octobre 2015
Cahier spécial visual studio 2015 - Octobre 2015Cahier spécial visual studio 2015 - Octobre 2015
Cahier spécial visual studio 2015 - Octobre 2015
 
Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...
Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...
Slides deck yos-tour_vincentthavonekham_mvp_azure_the_future_of_microsoft_dat...
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
 

Viseo presentation Clean Code / Intelligence Artificielle DCOP

  • 1. Sacha LHOPITAL – Janvier 2019 1 Les bonnes pratiques CleanCode sont-elles compatibles avec l’Intelligence Artificielle et l’IoT ? Janvier 2019 Sacha LHOPITAL – VISEO Vincent THAVONEKHAM - VISEO | MVP Azure | Microsoft Regional Director Professeur Samir AKNINE - Université Claude Bernard Lyon 1
  • 2. Sacha LHOPITAL – Janvier 2018 VISEO TECHNOLOGIES 2 2500 EFFECTIFS 2018 FRANCE • ESPAGNE • MAROC • USA • HONG KONG • SINGAPOUR • PHILIPPINES • AUSTRALIE • INDONÉSIE Un petit mot sur VISEO…
  • 3. 3 Quel est le problème à résoudre ?
  • 4. Sacha LHOPITAL – Janvier 2018 QUEL EST LE PROBLÈME À RÉSOUDRE ? 4 Intervention suite à appel audio
  • 5. Sacha LHOPITAL – Janvier 2018 COMMENT ON PEUT LE FAIRE ? 5 Prévenir le personnel médical AVANT que les sonneries ne s’activent sans pour autant les faire se déplacer plus souvent
  • 6. Sacha LHOPITAL – Janvier 2018 UN ALGORITHME DCOP IA Distribuées 7 Distributed Constraint Optimisation Problem (DCOP) où les IA coopèrent pour optimiser les contraintes Principe : Affecter une valeur à chaque agent (nombre de minutes) Minimiser la somme de contraintes
  • 7. 8 Pourquoi mettre en place des bonnes pratiques ?
  • 8. Déjà par ce que c’est plus sain 9
  • 9. Simplifier = Code plus Robuste et Maintenable 10
  • 10. Sacha LHOPITAL – Janvier 2018 OU COMMENT PASSER D’UNE DOCUMENTATION COMPLEXE AVEC CE GENRE DE SCHEMA … L’algorithme DPOP 11 Un algorithme en 3 étapes : Génération d’un arbre DFS Propagation ascendante de l’utilité (UTIL) Propagation descendante des valeurs retenues Source : DPOP : a Dynamic Programming Optimization Protocol for DCOP du livre « A Class of Algorithms for Distributed Constraint Optimization » de Adrian Petcu - 2007
  • 11. Sacha LHOPITAL – Janvier 2018 … A DU CODE PYTHON COMME ON L’AIME … 12
  • 12. 13 … Et a des tests permettant du refactoring
  • 13. Sacha LHOPITAL – Janvier 2018 EXEMPLE TECHNIQUE Test Driven Development - Behavior Driven Development 17 1. Spécification en langage naturel avec Behave Côté mathématique/technique (par exemple via Azure DevOps) Feature: Events Management Scenario: Server send "ON" messages with specific root on urgent demands Given a server interacting with AI agents in syringe pump And a mqtt server interacting with AI agents in syringe pump When receive an 'URGT' message from AI in syringe pump Then server should send 'ON' messages to every AI in syringe pump And should choose the sender of the 'URGT' message as root
  • 14. Sacha LHOPITAL – Janvier 2018 EXEMPLE TECHNIQUE Test Driven Development - Behavior Driven Development 18 2. Réalisation du Test Côté Développeur @given("a server interacting with AI agents in syringe pump") def step_impl(context): context.server_thread = Starter([context.room_1, context.room_2, context.room_3], MagicMock()) @given("a mqtt server interacting with AI agents in syringe pump") def step_impl(context): context.server_mqtt = ServerMQTT(Hospital(3)) context.server_mqtt.starter = context.server_thread context.server_mqtt.starter.start = MagicMock() context.server_mqtt.starter.start()
  • 15. Sacha LHOPITAL – Janvier 2018 EXEMPLE TECHNIQUE Test Driven Development - Behavior Driven Development 19 2. Réalisation du Test Côté Développeur @when("receive an 'URGT' message from AI in syringe pump") def step_impl(context): with mock.patch('mqtt.custom_mqtt_class.CustomMQTTClass.on_message'): context.msg = MagicMock() context.msg.topic = "DCOP/SERVER/" context.msg.payload.decode.return_value = MessageTypes.URGT.value + "_" + str(3)
  • 16. Sacha LHOPITAL – Janvier 2018 EXEMPLE TECHNIQUE Test Driven Development - Behavior Driven Development 20 2. Réalisation du Test Côté Développeur @then("server should send 'ON' messages to every AI in syringe pump") def step_impl(context): with mock.patch('mqtt.mqtt_manager.MQTTManager.publish_on_msg_to'): with mock.patch('dcop_server.urgt_starter.UrgentStarter.get_values'): context.urgt_thread = context.server_mqtt.on_message(MagicMock(), MagicMock(), context.msg) context.urgt_thread.join(timeout=10) assert_that(context.urgt_thread, instance_of(UrgentStarter)) assert_that(context.urgt_thread.mqtt_manager.publish_on_msg_to.call_count, equal_to(3)) @then("should choose the sender of the 'URGT' message as root") def step_impl(context): with mock.patch('mqtt.mqtt_manager.MQTTManager.publish_elected_root_msg_to'): with mock.patch('dcop_server.urgt_starter.UrgentStarter.get_values'): context.urgt_thread = context.server_mqtt.on_message(MagicMock(), MagicMock(), context.msg) context.urgt_thread.join(timeout=10) assert_that( context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.call_count, equal_to(3) ) context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.assert_any_call(1, 3) context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.assert_any_call(2, 3) context.urgt_thread.mqtt_manager.publish_elected_root_msg_to.assert_any_call(3, 3)
  • 17. Sacha LHOPITAL – Janvier 2018 EXEMPLE TECHNIQUE Test Driven Development - Behavior Driven Development 21 3. Implémentation de la Feature def on_message(self, client, obj, msg): […] if MessageTypes.URGT.value in str_msg […]: urgt_thread = UrgentStarter( self.starter, client, int(str_msg.split(MessageTypes.URGT.value + "_")[1]), ) urgt_thread.start() return urgt_thread […]
  • 18. Sacha LHOPITAL – Janvier 2018 EXEMPLE TECHNIQUE Test Driven Development - Behavior Driven Development 22 4. Vérification que le test passe
  • 19. 23 Enfin : l’intérêt vital de faciliter le déploiement
  • 20. Sacha LHOPITAL – Janvier 2018 POURQUOI VITAL ? Architecture 24 Cloud Azure IoT Réseau Local dans l’HôpitalRéseau Etendu AMQP Une Architecture Complexe qui nécessite la rigueur du Craftsman
  • 21. Sacha LHOPITAL – Janvier 2018 POURQUOI VITAL ? Architecture 25 Cloud Azure IoT Réseau Local dans l’HôpitalRéseau Etendu AMQP Les IA sont autonomes… …et distribuées Pas besoin du Serveur DCOP, ni de Cloud !
  • 22. Sacha LHOPITAL – Janvier 2018 POURQUOI VITAL ? A cause de notre contexte, on a besoin de physiquement distribuer les agents intelligents 26
  • 23. Sacha LHOPITAL – Janvier 2018 ALORS POUR NE PAS PERDRE LA TÊTE, ON MET EN PLACE DU CD, ET DU CI TANT QU’À FAIRE Azure DevOps – CI / CD 27 AI développeuse
  • 24. Même sur un projet avec l’IA, les bonnes pratiques sont d’autant plus utiles ! 29 Tout ça pour dire
  • 26. Sacha LHOPITAL – Janvier 2018 Merci pour votre attention !

Notes de l'éditeur

  1. Focus on one major idea (everything you say, link back to it) Give people a reason to care => curiosity, ask questions Build your idea with familiar concepts => metaphores Make your idea worse sharing
  2. MARKETING DESIGN : uniquement paris (UX Design) mais W partout BUSINESS PROCESS : sap, erp, crm, ax, salesforce DATA : BI, ML, … TECHNO : Web, Dev bck, AMOA, product owner, architecture fonct/tech, … A Lyon : 120 personnes dont 80 techno = taille humaine dans les agences ESN, avec centre de service dédié Microsoft (.Net) = donc plus prononcé Orientation de la boite vers les nouvelles technos, technos récentes, ON RECTRUTE ET ON VEUT ALLER PLUS A L’INTERNATIONAL + A Lyon, on veut du BP, DA et du DT (dev avec expérience + stages .Net, Xamarin, …)
  3. Sonnerie des Machines : patients gênés Machines Hétérogènes : Fonctionnement, Complexité, … Milieu Médical : Sensible et Réglementé Vérification des Machines : Perte de Temps Données des composants IoT : Sous-utilisées ou Inexploités
  4. Quoi ? Système informatique/électronique pour surveiller les machines Quelles Technologies ? Usage des données L’Intelligence Artificielle pour : - Améliorer et suggérer Et non pas imposer, ni remplacer Pourquoi ? Donner plus de temps à accorder aux patients (et diminuer le stress) Quelles Opportunités ? Concilier IoT et IA
  5. Sacha, j’ai diminué le contraste en ajoutant un calque translucide. Clique droit > Format Shape > Shapre Option > Fill > Solid Fill > Transparency
  6. Exemple de contrainte modélisée dans l’IA de VISEO :
  7. On a tous déjà vu du code difficile à lire ou à comprendre On a tous déjà du modifier du code à plusieurs endroits différents par ce que le code est dupliqué On a tous déjà du s’arracher les cheveux pour comprendre des fonctions avec des variables x, y, z. Etc …
  8. Mais aussi par ce que cet algorithme ne va pas forcément être manipulé par des « experts » mathématiques. => Comme l’utilisation de bonnes pratiques de manière générale
  9. Lancer mosquitto : C:\Program Files\mosquitto\mosquitto.exe Lancer l’algorithme sur pc