SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Quand le langage devient agile
Présenté par : 
Taha BEN SALAH
Consultant Senior – IT SERV
taha.bensalah@itserv.com.tn




   Agile day Tunisia ‐ 2 juin 2012
   Quand le langage devient agile [1]
             www.itserv.com.tn
Agenda
•   Introduction
•   L’habit fait le moine
•   A Langage, langage et demi
•   LOP … au gaLOP
•   Anatomie d’une onomatopée
•   Quatuor : Plateformes, Frameworks, Librairies et 
    Langages



                     Quand le langage devient agile [2]
                               www.itserv.com.tn
Le Groupe
Sociétés IT SERV / AHEAD IT fondés en 2008                                 Secteurs d’intervention
Fondateurs : Imed Elabed, Moez Boukhris, Mohamed Koubâa

Marché : Tunisie, Afrique du Nord; Europe (Nearshore)

      Expertise en Systèmes d’Information

    Développement                             Consulting
  logiciels spécifiques                      AMO / PMO



Intégration de solutions
                                         Expertise Télécoms
    BSCS, SAP BO, ...                                                            Chiffre d’affaires


                           Quelques clients




                                      Quand le langage devient agile [3]
                                                www.itserv.com.tn
Méthodes Agiles
    •    Agilité
    •    Pragmatisme
    •    Réactivité
    •    Participation Elargie
    •    Motivation
    •    Risque




 Quand le langage devient agile [4]
           www.itserv.com.tn
« Donnes moi un point d'appui je soulèverai le monde » Archimèdes

L’HABIT FAIT LE MOINE


                       Quand le langage devient agile [5]
                                 www.itserv.com.tn
Réussir un projet Agile
• Maitriser le produit 
   – Intervention client
   – Product Backlog « complet » (Scrum)
• Réactivité de mise en œuvre
   – Ressources adéquates
      • Humaines
      • Temps
      • Outils de communication
      • Outils de mise en œuvre


                     Quand le langage devient agile [6]
                               www.itserv.com.tn
Prototypage
• Prototypage Réutilisable
• Maquettage propre à validation
• Outils intervenants
  –   OS/Plateforme                               -> Imposé(e) par le client ?

  –   Outils de développement                     -> Imposés par la SS2I

  –   Compétences humaines                        -> Imposé par la façon de recruter

  –   Langage                                     -> L’habit dont on ne parle
                                                     presque jamais




                    Quand le langage devient agile [7]
                              www.itserv.com.tn
Lequel est le plus rapide ?
• Quel est le langage le plus rapide
     Mauvaise Question

                                                         Occidental
                                                             +




            +
          Chinois


                    Quand le langage devient agile [8]
                              www.itserv.com.tn
Ze Best
• Quel est le langage le plus utilisé

      Mauvaise Question


 •Quel est le langage le plus approprié
   Au projet                                              L’Idéal

   Au domaine
   A la SS2I
   Au développeur                                         La réalité


                     Quand le langage devient agile [9]
                               www.itserv.com.tn
Love Story

A LANGAGE, LANGAGE ET DEMI


             Quand le langage devient agile [10]
                        www.itserv.com.tn
C redevient le langage le plus utilisé (2011)




               Quand le langage devient agile [11]
                          www.itserv.com.tn
Tendence
• Effervescence des projets Hard/Soft
• Effervescence des langages
  – Diversification des besoins : web, …
  – Simplification des langages réputés « difficiles »
  – Concision des langages réputés versatiles




                    Quand le langage devient agile [12]
                               www.itserv.com.tn
Langages
• Domaine d’application
  • DSL (Domain Specific Programming Language)
  • GPL (General Purpose Programming Language)
• Paradigmes de programmation
  •   Procédurale
  •   Fonctionnelle
  •   Logique
  •   Orientée objet
  •   Orientée Aspects
  •   Orientée Composants
  •   …
                     Quand le langage devient agile [13]
                                www.itserv.com.tn
Langages
• Spécificités
   –   Structurée / Déstructuré
   –   Fortement / Faiblement Typé
   –   Déclaratif / Non déclaratif
   –   Reflexif / Non Reflexif



                  Tendance qui suscite les limites des langages existants




                      Quand le langage devient agile [14]
                                 www.itserv.com.tn
Donc ???
• Idéalement
  – Un langage propre au projet
     • Résolution orientée problème
  – Affute l’agilité et la réactivité
     • Moins de code
     • Plus de visibilité
  – Minimise les coups de développement 
     • Sur les GROS projets
     • Capitalise sur une BONNE spécification



                       Quand le langage devient agile [15]
                                  www.itserv.com.tn
Oui mais …
• Une bonne Librairie peut‐elle répondre au même 
  besoin ?
Matrix m=new Matrix(new Complex[][]{{new Complex(3,-5),
  new Complex(0,0)}, {new Complex(0,0), new Complex(3,-
  5)}});
m=m.multiply(m);
m=m.inv();


inv([3-5i 0 ; 0 3-5i ]^2)




                  Quand le langage devient agile [16]
                             www.itserv.com.tn
À Méditer
• Une librairie est un DSL muni d’une syntaxe très 
  particulière




                   Quand le langage devient agile [17]
                              www.itserv.com.tn
Vous dites LOP, … LOL!!

LOP, … AU GALOP


                          Quand le langage devient agile [18]
                                     www.itserv.com.tn
Language Oriented Programming
• Définir (étendre) un langage qui répond au mieux  à
  la problématique
• MLL : Middle Level Programming Language
Paradigme Traditionnel                       LOP
Comprendre (‐)                               Comprendre  (+)
Choisir (‐)                                  Construire  (+)
Programmer (+)                               Décrire  (‐)
        Goulot d’ étranglement :
        Mapping du Monde réel
        Cas par cas x Nombre de développeurs
                  Quand le langage devient agile [19]
                             www.itserv.com.tn
Avantages
• Liberté
  – Enfin une conception indépendante des outils de 
    programmation
  – Utiliser les meilleures constructions pour chaque 
    problème dans le même language
     • Versus  : DotNet multi Language Paradigm
     • Versus  : Embeddable Languages Paradigm
     • Versus  : Scripting Paradigm
     • => Mariage non réussi



                    Quand le langage devient agile [20]
                               www.itserv.com.tn
Avantages
• Séparation des préoccupations
  – Conception générale plus proche d’une spécification 
    formelle
  – Détection et résolution des problèmes conceptuels 
    en amont
  – Mise en place du langage
     • Simplifié par l’avancée considérable dans les outils
     • Facilement définit
     • Aussi puissant que l’on veuille
  – Réalisation : traduction formelle triviale

                      Quand le langage devient agile [21]
                                 www.itserv.com.tn
Avantages
• Productivité / Réactivité
   – Plus rapide que Bottom Up/ Top Down
   – Très peu versatile particulièrement pour les 
     systèmes complexes
   – Taille réduite => plus simple à produire et à
     maintenir
   – Apprendre de l’échec des L4G
      • DSL => GPL
      • Absence ou manque de spec formelle de la syntaxe



                     Quand le langage devient agile [22]
                                www.itserv.com.tn
Avantages
• Maintenabilité
   Effort ma int enance (Soft ) = f (Taille(soft )) + o(autre)

  – Automatisation (Langage) impose des erreurs 
    récurrentes (repérables) et transversales
     • Choix des structures
     • Choix / Implémentation des algos génériques
     • Basé sur le DP : Strategy
  – Quantification  / Matérialisation des Design Patterns
  – Capture des choix conceptuels dans des « Modules »

                       Quand le langage devient agile [23]
                                  www.itserv.com.tn
Avantages
• Portabilité
   – Langage intermédiaire
   – Choix du langage « Hôte » le plus approprié ne 
     contredit pas la possibilité d’autres interprétations
   – Portage vers d’autres langages / OS possible/simple




                    Quand le langage devient agile [24]
                               www.itserv.com.tn
Avantages
• Opportunités de réutilisation
  – Langage encapsule la « Connaissance du domaine »
     • Structures de données
     • Opérations / Opérateurs
  – Réutilisable dans le même « contexte »
  – Un langage « bien conçu » est plus réutilisable qu’un 
    ensemble de fonctions
  – Entreprises visant les « secteurs niches »



                    Quand le langage devient agile [25]
                               www.itserv.com.tn
Do you speak LOP?

ANATOMIE D’UNE ONOMATOPÉE


                    Quand le langage devient agile [26]
                               www.itserv.com.tn
Qu’est que qu’un programme
• Une suite d’instructions déterministes qui produit 
  une solution au problème énoncé




                   Quand le langage devient agile [27]
                              www.itserv.com.tn
Qu’est que qu’un programme
• Un ensemble de mots, concepts, notions, réflexions 
  inter‐reliées entre eux qui décrivent une solution au 
  problème énoncé
• Un problème / besoin
   – Les besoins exprimés
   – Les contraintes silencieuses
   – La marge de manœuvre (le bon sens / callback client)
• Concept : la partie visible de l’iceberg
• Idéalement la solution à produire / à maintenir 
  décrit le concept
                    Quand le langage devient agile [28]
                               www.itserv.com.tn
L’arbre qui cache la forêt
• Gestion de Personnel (besoin exprimé)
  – contraintes silencieuses 
     • Concept : CRUD
     • Concept : Recherche multi‐critère
     • Concept : Navigation itérative
  – Marge de manœuvre
     • Suppression Logique 
     • Contraintes d’unicité
     • Layout des composants graphiques



                     Quand le langage devient agile [29]
                                www.itserv.com.tn
Langage LOP
• Structure
  – AST (syntaxe abstraite)
  – Concept et les relations qui les lient
• Editeur
  – Syntaxe concrète
  – Layout / Affichage et disposition
  – Edition / Modification
• Sémantique
  – Comportement
  – Transformation / Interprétation
                    Quand le langage devient agile [30]
                               www.itserv.com.tn
Structure
• Représentation Textuelle vs Représentation en 
  Graphe
  – Pourquoi
     • Il y’a 30 ans l’outil le plus développé été « vi »
     • La manipulation au clavier demeure plus rapide
  – Pourquoi pas
     • Parce que je le vaux bien
     • Exemple Excel, Word
     • Ambigüité de la représentation textuelle (grammaire)



                      Quand le langage devient agile [31]
                                 www.itserv.com.tn
Structure
• Décrit par le langage « Structure Language »
  – LOP est auto‐définit
• Meta Langage : Meta Level
• Définit des nœuds et des relations
• Chaque nœud définit un concept




                   Quand le langage devient agile [32]
                              www.itserv.com.tn
Définition de concept




    Quand le langage devient agile [33]
               www.itserv.com.tn
Editeur
• Langage « Editor Language »
• Représentation du graphe dans Editeur Texte 
  enrichi
• Cellules qui peuvent remplacer les « séparateurs »
  dans un langage textuel
• Représentation « boxed » peut être remplacer par 
  des composants plus riches
  – Color Chooser
  – Symboles Mathématiques
  – Graphiques/Charts, …
                  Quand le langage devient agile [34]
                             www.itserv.com.tn
Editeur du concept « Method »




        Quand le langage devient agile [35]
                   www.itserv.com.tn
Convex Full Algo avec le langage 
          Collections




         Quand le langage devient agile [36]
                    www.itserv.com.tn
Sémantique
• Langage « Transformation Language »
• Interprétation vs Compilation
  – Exécution directe
  – Génération de code intermédiaire
  – Génération de code natif
• Correspondance 1 à 1 des concepts vers le code 
  généré




                  Quand le langage devient agile [37]
                             www.itserv.com.tn
Template de Génération




     Quand le langage devient agile [38]
                www.itserv.com.tn
Approches de génération
• Approche Itérative 
• Approche à base de Templates
• Approche « Modèle de Recherce » / Search Pattern

• Support des trois modèles




                  Quand le langage devient agile [39]
                             www.itserv.com.tn
Approches de génération
• Approche Itérative 
  – ~Model Query Language
  – Génération en profondeur des nœuds
  – Parcours et génération 
     • selon une correspondance 1 à 1




                    Quand le langage devient agile [40]
                               www.itserv.com.tn
Approches de génération
• Approche à base de Templates
  – ~Velocity / XSLT
  – Le modèle définit des hooks remplacé par les 
    informations des nœuds
  – « Fill in the blanks »




                   Quand le langage devient agile [41]
                              www.itserv.com.tn
Approches de génération
• Approche « Modèle de Recherce »
  –   Pattern Matching Approach
  –   Application ponctuelle/ciblée de la transformation
  –   Eq : Expression Régulièrs pour les Concepts
  –   Aka : Grammaire




                     Quand le langage devient agile [42]
                                www.itserv.com.tn
Pour info
• Model Query Language, Pattern Maching Approach
  et Template Languges sont déjà supportés par les 
  éditeurs proposant
  –   Auto‐complete
  –   Refactoring
  –   Reference Checking
  –   Error Checking




                    Quand le langage devient agile [43]
                               www.itserv.com.tn
Configuration et Scripting
• Extensibilité des applications complexes
  – VBScript, Python/Jython, Tcl, JavaScript, Lisp, …
• Utiliser MPS
  – Langage Script adapté aux besoins du client
  – Editeur approprié




                    Quand le langage devient agile [44]
                               www.itserv.com.tn
Sonate Quator en C# Majeur

PLATEFORMES, FRAMEWORKS, 
LIBRAIRIES ET LANGAGES

                      Quand le langage devient agile [45]
                                 www.itserv.com.tn
Choix du langage
• Choix du langage repose sur
  – Ease of code
  – Disposition à la manipulations des
     • Collections
     • Réseau
     • DB
     • UI
• Réinventer la roue ?
  – Se baser sur un (?) langage déjà existant
  – Se baser sur une (?) Lib/ un (?) Fwk DSL
                      Quand le langage devient agile [46]
                                 www.itserv.com.tn
Base Langage
• Bon point de départ
• GPL
  – Garantit la complétude du langage final
• DSL
  – Garantit une bonne connaissance du domaine
• Ne pas oublier
  – La plupart des langages réussis ont un « Base 
    Language »
        • C => C++ => Java => C#


                        Quand le langage devient agile [47]
                                   www.itserv.com.tn
Base Library
• Minimise les erreurs dues au développement de 
  l’interpréteur
• Accélère la mise en place des fonctionnalité du 
  langage
• Donnes des ailes à la librairie




                  Quand le langage devient agile [48]
                             www.itserv.com.tn
Base Framework
• Simplifie la gestion de dépendance au programmeur 
  final
• Se baser sur des best practices
• Evolution en parallèle du langage et du Framework




                  Quand le langage devient agile [49]
                             www.itserv.com.tn
Base Platform
• Relayer les concepts délicats à des plateformes 
  existantes
  – Sécurité, Montée en charge, .. => JEE
  – Génération Multi‐Langage => .Net




                   Quand le langage devient agile [50]
                              www.itserv.com.tn
Conclusion
• A bon chat bon rat
• Ne pas rester retissant % la création de langages
  – Les bons outils « commencent à exister »
• Diminuer le gap entre spécification, conception et 
  réalisation
• Meilleur partenaire aux méthodes agiles




                   Quand le langage devient agile [51]
                              www.itserv.com.tn
Mais
• Nouvelles compétences nécessaires en 
  – Définition des langages
  – Génération de code
  – Phase de compréhension des besoins (Métier) plus 
    longue =>
     • Plus intéressant pour un Editeur de Logiciel
        – Maitrise du Métier
     • Moins intéressant pour une SS2I
        – Maitrise de la techno




                       Quand le langage devient agile [52]
                                  www.itserv.com.tn
Merci de votre attention

SOYEZ AGILES
                      taha.bensalah@itserv.com.tn
                           tahabensalah.net

                       Quand le langage devient agile [53]
                                  www.itserv.com.tn

Contenu connexe

En vedette

Sommes-nous aptes à gérer un monde VUCA
Sommes-nous aptes à gérer un monde VUCASommes-nous aptes à gérer un monde VUCA
Sommes-nous aptes à gérer un monde VUCAPhilippe Vallat
 
Management 3.0 synthèse en Français - Vue 5, Développer les structures
Management 3.0 synthèse en Français - Vue 5, Développer les structuresManagement 3.0 synthèse en Français - Vue 5, Développer les structures
Management 3.0 synthèse en Français - Vue 5, Développer les structuresCecile Auret
 
Management 3.0 synthèse en Français - Vue 4, Développer les compétences
Management 3.0 synthèse en Français - Vue 4, Développer les compétencesManagement 3.0 synthèse en Français - Vue 4, Développer les compétences
Management 3.0 synthèse en Français - Vue 4, Développer les compétencesCecile Auret
 
Management 3.0 synthèse en Français - Vue 2, Responsabiliser les équipes
Management 3.0 synthèse en Français - Vue 2, Responsabiliser les équipesManagement 3.0 synthèse en Français - Vue 2, Responsabiliser les équipes
Management 3.0 synthèse en Français - Vue 2, Responsabiliser les équipesCecile Auret
 
Les méthodes Agiles - Introduction
Les méthodes Agiles - IntroductionLes méthodes Agiles - Introduction
Les méthodes Agiles - IntroductionTremeur Balbous
 
Management 3.0 Workout
Management 3.0 WorkoutManagement 3.0 Workout
Management 3.0 WorkoutJurgen Appelo
 
Management 3.0 in 50 minutes
Management 3.0 in 50 minutesManagement 3.0 in 50 minutes
Management 3.0 in 50 minutesJurgen Appelo
 
Management 3.0 synthèse en Français - Vue 1, Dynamiser les personnes
Management 3.0 synthèse en Français - Vue 1, Dynamiser les personnesManagement 3.0 synthèse en Français - Vue 1, Dynamiser les personnes
Management 3.0 synthèse en Français - Vue 1, Dynamiser les personnesCecile Auret
 
Gestion de projets agiles avec scrum
Gestion de projets agiles avec scrumGestion de projets agiles avec scrum
Gestion de projets agiles avec scrumPierre E. NEIS
 
Introduction aux méthodes agiles
Introduction aux méthodes agilesIntroduction aux méthodes agiles
Introduction aux méthodes agilesGuillaume Collic
 

En vedette (15)

Entreprise Agile
Entreprise AgileEntreprise Agile
Entreprise Agile
 
Sommes-nous aptes à gérer un monde VUCA
Sommes-nous aptes à gérer un monde VUCASommes-nous aptes à gérer un monde VUCA
Sommes-nous aptes à gérer un monde VUCA
 
Management 3.0 synthèse en Français - Vue 5, Développer les structures
Management 3.0 synthèse en Français - Vue 5, Développer les structuresManagement 3.0 synthèse en Français - Vue 5, Développer les structures
Management 3.0 synthèse en Français - Vue 5, Développer les structures
 
Management 3.0 synthèse en Français - Vue 4, Développer les compétences
Management 3.0 synthèse en Français - Vue 4, Développer les compétencesManagement 3.0 synthèse en Français - Vue 4, Développer les compétences
Management 3.0 synthèse en Français - Vue 4, Développer les compétences
 
Management 3.0 synthèse en Français - Vue 2, Responsabiliser les équipes
Management 3.0 synthèse en Français - Vue 2, Responsabiliser les équipesManagement 3.0 synthèse en Français - Vue 2, Responsabiliser les équipes
Management 3.0 synthèse en Français - Vue 2, Responsabiliser les équipes
 
Les méthodes Agiles - Introduction
Les méthodes Agiles - IntroductionLes méthodes Agiles - Introduction
Les méthodes Agiles - Introduction
 
Méthodes agiles & Scrum
Méthodes agiles & ScrumMéthodes agiles & Scrum
Méthodes agiles & Scrum
 
Management 3.0 Workout
Management 3.0 WorkoutManagement 3.0 Workout
Management 3.0 Workout
 
Management 3.0 in 50 minutes
Management 3.0 in 50 minutesManagement 3.0 in 50 minutes
Management 3.0 in 50 minutes
 
Management 3.0 synthèse en Français - Vue 1, Dynamiser les personnes
Management 3.0 synthèse en Français - Vue 1, Dynamiser les personnesManagement 3.0 synthèse en Français - Vue 1, Dynamiser les personnes
Management 3.0 synthèse en Français - Vue 1, Dynamiser les personnes
 
Livre blanc entreprise agile
Livre blanc entreprise agileLivre blanc entreprise agile
Livre blanc entreprise agile
 
Gestion de projets agiles avec scrum
Gestion de projets agiles avec scrumGestion de projets agiles avec scrum
Gestion de projets agiles avec scrum
 
Agilité pour les nuls
Agilité pour les nulsAgilité pour les nuls
Agilité pour les nuls
 
Introduction aux méthodes agiles
Introduction aux méthodes agilesIntroduction aux méthodes agiles
Introduction aux méthodes agiles
 
Intelligence collective livre_blanc_ic
Intelligence collective livre_blanc_icIntelligence collective livre_blanc_ic
Intelligence collective livre_blanc_ic
 

Similaire à Agile Day Tunisia 2012 - Quand le langage devient Agile

Pourquoi la documentation compte ?
Pourquoi la documentation compte ?Pourquoi la documentation compte ?
Pourquoi la documentation compte ?sarahhaim shl
 
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Aref Jdey
 
Langages de programmation
Langages de programmationLangages de programmation
Langages de programmationdecoderlecode
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation Microsoft
 
Cartographie des marchés Open Source belges et français
Cartographie des marchés Open Source belges et françaisCartographie des marchés Open Source belges et français
Cartographie des marchés Open Source belges et françaisRobert Viseur
 
Iwebyou - plaquette produit - e-learning
Iwebyou - plaquette produit - e-learningIwebyou - plaquette produit - e-learning
Iwebyou - plaquette produit - e-learningAlexandre Bouvard
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
Presentation Action Ti 2009 04 21
Presentation Action Ti 2009 04 21Presentation Action Ti 2009 04 21
Presentation Action Ti 2009 04 21canadadri
 
Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Thomas Choppy
 
Faire des sites multilingues avec WordPress
Faire des sites multilingues avec WordPressFaire des sites multilingues avec WordPress
Faire des sites multilingues avec WordPressNicolas Richer
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
Domain_Driven_Design
Domain_Driven_DesignDomain_Driven_Design
Domain_Driven_DesignSpikeeLabs
 
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?Smile I.T is open
 

Similaire à Agile Day Tunisia 2012 - Quand le langage devient Agile (20)

Pourquoi la documentation compte ?
Pourquoi la documentation compte ?Pourquoi la documentation compte ?
Pourquoi la documentation compte ?
 
DDD FOR POs.pdf
DDD FOR POs.pdfDDD FOR POs.pdf
DDD FOR POs.pdf
 
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
 
Langages de programmation
Langages de programmationLangages de programmation
Langages de programmation
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage Ruby
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation
 
Cartographie des marchés Open Source belges et français
Cartographie des marchés Open Source belges et françaisCartographie des marchés Open Source belges et français
Cartographie des marchés Open Source belges et français
 
Seo camp2017 Marguerite Leenhardt
Seo camp2017 Marguerite LeenhardtSeo camp2017 Marguerite Leenhardt
Seo camp2017 Marguerite Leenhardt
 
Iwebyou - plaquette produit - e-learning
Iwebyou - plaquette produit - e-learningIwebyou - plaquette produit - e-learning
Iwebyou - plaquette produit - e-learning
 
Soft skills
Soft skillsSoft skills
Soft skills
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
Solutions Linux 2010
Solutions Linux 2010Solutions Linux 2010
Solutions Linux 2010
 
Presentation Action Ti 2009 04 21
Presentation Action Ti 2009 04 21Presentation Action Ti 2009 04 21
Presentation Action Ti 2009 04 21
 
GetText / Rails - FR
GetText / Rails - FRGetText / Rails - FR
GetText / Rails - FR
 
GetText / Rails
GetText / RailsGetText / Rails
GetText / Rails
 
Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Ged Open Source - Documation 2010
Ged Open Source - Documation 2010
 
Faire des sites multilingues avec WordPress
Faire des sites multilingues avec WordPressFaire des sites multilingues avec WordPress
Faire des sites multilingues avec WordPress
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
Domain_Driven_Design
Domain_Driven_DesignDomain_Driven_Design
Domain_Driven_Design
 
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
CMSday 2013 - Usines à sites : Quelles sont les approches possibles ?
 

Dernier

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 

Dernier (16)

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 

Agile Day Tunisia 2012 - Quand le langage devient Agile

  • 1. Quand le langage devient agile Présenté par :  Taha BEN SALAH Consultant Senior – IT SERV taha.bensalah@itserv.com.tn Agile day Tunisia ‐ 2 juin 2012 Quand le langage devient agile [1] www.itserv.com.tn
  • 2. Agenda • Introduction • L’habit fait le moine • A Langage, langage et demi • LOP … au gaLOP • Anatomie d’une onomatopée • Quatuor : Plateformes, Frameworks, Librairies et  Langages Quand le langage devient agile [2] www.itserv.com.tn
  • 3. Le Groupe Sociétés IT SERV / AHEAD IT fondés en 2008 Secteurs d’intervention Fondateurs : Imed Elabed, Moez Boukhris, Mohamed Koubâa Marché : Tunisie, Afrique du Nord; Europe (Nearshore) Expertise en Systèmes d’Information Développement Consulting logiciels spécifiques AMO / PMO Intégration de solutions Expertise Télécoms BSCS, SAP BO, ...  Chiffre d’affaires Quelques clients Quand le langage devient agile [3] www.itserv.com.tn
  • 4. Méthodes Agiles • Agilité • Pragmatisme • Réactivité • Participation Elargie • Motivation • Risque Quand le langage devient agile [4] www.itserv.com.tn
  • 5. « Donnes moi un point d'appui je soulèverai le monde » Archimèdes L’HABIT FAIT LE MOINE Quand le langage devient agile [5] www.itserv.com.tn
  • 6. Réussir un projet Agile • Maitriser le produit  – Intervention client – Product Backlog « complet » (Scrum) • Réactivité de mise en œuvre – Ressources adéquates • Humaines • Temps • Outils de communication • Outils de mise en œuvre Quand le langage devient agile [6] www.itserv.com.tn
  • 7. Prototypage • Prototypage Réutilisable • Maquettage propre à validation • Outils intervenants – OS/Plateforme -> Imposé(e) par le client ? – Outils de développement -> Imposés par la SS2I – Compétences humaines -> Imposé par la façon de recruter – Langage -> L’habit dont on ne parle presque jamais Quand le langage devient agile [7] www.itserv.com.tn
  • 8. Lequel est le plus rapide ? • Quel est le langage le plus rapide Mauvaise Question Occidental + + Chinois Quand le langage devient agile [8] www.itserv.com.tn
  • 9. Ze Best • Quel est le langage le plus utilisé Mauvaise Question •Quel est le langage le plus approprié Au projet L’Idéal Au domaine A la SS2I Au développeur La réalité Quand le langage devient agile [9] www.itserv.com.tn
  • 10. Love Story A LANGAGE, LANGAGE ET DEMI Quand le langage devient agile [10] www.itserv.com.tn
  • 11. C redevient le langage le plus utilisé (2011) Quand le langage devient agile [11] www.itserv.com.tn
  • 12. Tendence • Effervescence des projets Hard/Soft • Effervescence des langages – Diversification des besoins : web, … – Simplification des langages réputés « difficiles » – Concision des langages réputés versatiles Quand le langage devient agile [12] www.itserv.com.tn
  • 13. Langages • Domaine d’application • DSL (Domain Specific Programming Language) • GPL (General Purpose Programming Language) • Paradigmes de programmation • Procédurale • Fonctionnelle • Logique • Orientée objet • Orientée Aspects • Orientée Composants • … Quand le langage devient agile [13] www.itserv.com.tn
  • 14. Langages • Spécificités – Structurée / Déstructuré – Fortement / Faiblement Typé – Déclaratif / Non déclaratif – Reflexif / Non Reflexif Tendance qui suscite les limites des langages existants Quand le langage devient agile [14] www.itserv.com.tn
  • 15. Donc ??? • Idéalement – Un langage propre au projet • Résolution orientée problème – Affute l’agilité et la réactivité • Moins de code • Plus de visibilité – Minimise les coups de développement  • Sur les GROS projets • Capitalise sur une BONNE spécification Quand le langage devient agile [15] www.itserv.com.tn
  • 16. Oui mais … • Une bonne Librairie peut‐elle répondre au même  besoin ? Matrix m=new Matrix(new Complex[][]{{new Complex(3,-5), new Complex(0,0)}, {new Complex(0,0), new Complex(3,- 5)}}); m=m.multiply(m); m=m.inv(); inv([3-5i 0 ; 0 3-5i ]^2) Quand le langage devient agile [16] www.itserv.com.tn
  • 17. À Méditer • Une librairie est un DSL muni d’une syntaxe très  particulière Quand le langage devient agile [17] www.itserv.com.tn
  • 18. Vous dites LOP, … LOL!! LOP, … AU GALOP Quand le langage devient agile [18] www.itserv.com.tn
  • 19. Language Oriented Programming • Définir (étendre) un langage qui répond au mieux  à la problématique • MLL : Middle Level Programming Language Paradigme Traditionnel LOP Comprendre (‐) Comprendre  (+) Choisir (‐) Construire  (+) Programmer (+) Décrire  (‐) Goulot d’ étranglement : Mapping du Monde réel Cas par cas x Nombre de développeurs Quand le langage devient agile [19] www.itserv.com.tn
  • 20. Avantages • Liberté – Enfin une conception indépendante des outils de  programmation – Utiliser les meilleures constructions pour chaque  problème dans le même language • Versus  : DotNet multi Language Paradigm • Versus  : Embeddable Languages Paradigm • Versus  : Scripting Paradigm • => Mariage non réussi Quand le langage devient agile [20] www.itserv.com.tn
  • 21. Avantages • Séparation des préoccupations – Conception générale plus proche d’une spécification  formelle – Détection et résolution des problèmes conceptuels  en amont – Mise en place du langage • Simplifié par l’avancée considérable dans les outils • Facilement définit • Aussi puissant que l’on veuille – Réalisation : traduction formelle triviale Quand le langage devient agile [21] www.itserv.com.tn
  • 22. Avantages • Productivité / Réactivité – Plus rapide que Bottom Up/ Top Down – Très peu versatile particulièrement pour les  systèmes complexes – Taille réduite => plus simple à produire et à maintenir – Apprendre de l’échec des L4G • DSL => GPL • Absence ou manque de spec formelle de la syntaxe Quand le langage devient agile [22] www.itserv.com.tn
  • 23. Avantages • Maintenabilité Effort ma int enance (Soft ) = f (Taille(soft )) + o(autre) – Automatisation (Langage) impose des erreurs  récurrentes (repérables) et transversales • Choix des structures • Choix / Implémentation des algos génériques • Basé sur le DP : Strategy – Quantification  / Matérialisation des Design Patterns – Capture des choix conceptuels dans des « Modules » Quand le langage devient agile [23] www.itserv.com.tn
  • 24. Avantages • Portabilité – Langage intermédiaire – Choix du langage « Hôte » le plus approprié ne  contredit pas la possibilité d’autres interprétations – Portage vers d’autres langages / OS possible/simple Quand le langage devient agile [24] www.itserv.com.tn
  • 25. Avantages • Opportunités de réutilisation – Langage encapsule la « Connaissance du domaine » • Structures de données • Opérations / Opérateurs – Réutilisable dans le même « contexte » – Un langage « bien conçu » est plus réutilisable qu’un  ensemble de fonctions – Entreprises visant les « secteurs niches » Quand le langage devient agile [25] www.itserv.com.tn
  • 26. Do you speak LOP? ANATOMIE D’UNE ONOMATOPÉE Quand le langage devient agile [26] www.itserv.com.tn
  • 27. Qu’est que qu’un programme • Une suite d’instructions déterministes qui produit  une solution au problème énoncé Quand le langage devient agile [27] www.itserv.com.tn
  • 28. Qu’est que qu’un programme • Un ensemble de mots, concepts, notions, réflexions  inter‐reliées entre eux qui décrivent une solution au  problème énoncé • Un problème / besoin – Les besoins exprimés – Les contraintes silencieuses – La marge de manœuvre (le bon sens / callback client) • Concept : la partie visible de l’iceberg • Idéalement la solution à produire / à maintenir  décrit le concept Quand le langage devient agile [28] www.itserv.com.tn
  • 29. L’arbre qui cache la forêt • Gestion de Personnel (besoin exprimé) – contraintes silencieuses  • Concept : CRUD • Concept : Recherche multi‐critère • Concept : Navigation itérative – Marge de manœuvre • Suppression Logique  • Contraintes d’unicité • Layout des composants graphiques Quand le langage devient agile [29] www.itserv.com.tn
  • 30. Langage LOP • Structure – AST (syntaxe abstraite) – Concept et les relations qui les lient • Editeur – Syntaxe concrète – Layout / Affichage et disposition – Edition / Modification • Sémantique – Comportement – Transformation / Interprétation Quand le langage devient agile [30] www.itserv.com.tn
  • 31. Structure • Représentation Textuelle vs Représentation en  Graphe – Pourquoi • Il y’a 30 ans l’outil le plus développé été « vi » • La manipulation au clavier demeure plus rapide – Pourquoi pas • Parce que je le vaux bien • Exemple Excel, Word • Ambigüité de la représentation textuelle (grammaire) Quand le langage devient agile [31] www.itserv.com.tn
  • 32. Structure • Décrit par le langage « Structure Language » – LOP est auto‐définit • Meta Langage : Meta Level • Définit des nœuds et des relations • Chaque nœud définit un concept Quand le langage devient agile [32] www.itserv.com.tn
  • 33. Définition de concept Quand le langage devient agile [33] www.itserv.com.tn
  • 34. Editeur • Langage « Editor Language » • Représentation du graphe dans Editeur Texte  enrichi • Cellules qui peuvent remplacer les « séparateurs » dans un langage textuel • Représentation « boxed » peut être remplacer par  des composants plus riches – Color Chooser – Symboles Mathématiques – Graphiques/Charts, … Quand le langage devient agile [34] www.itserv.com.tn
  • 35. Editeur du concept « Method » Quand le langage devient agile [35] www.itserv.com.tn
  • 36. Convex Full Algo avec le langage  Collections Quand le langage devient agile [36] www.itserv.com.tn
  • 37. Sémantique • Langage « Transformation Language » • Interprétation vs Compilation – Exécution directe – Génération de code intermédiaire – Génération de code natif • Correspondance 1 à 1 des concepts vers le code  généré Quand le langage devient agile [37] www.itserv.com.tn
  • 38. Template de Génération Quand le langage devient agile [38] www.itserv.com.tn
  • 39. Approches de génération • Approche Itérative  • Approche à base de Templates • Approche « Modèle de Recherce » / Search Pattern • Support des trois modèles Quand le langage devient agile [39] www.itserv.com.tn
  • 40. Approches de génération • Approche Itérative  – ~Model Query Language – Génération en profondeur des nœuds – Parcours et génération  • selon une correspondance 1 à 1 Quand le langage devient agile [40] www.itserv.com.tn
  • 41. Approches de génération • Approche à base de Templates – ~Velocity / XSLT – Le modèle définit des hooks remplacé par les  informations des nœuds – « Fill in the blanks » Quand le langage devient agile [41] www.itserv.com.tn
  • 42. Approches de génération • Approche « Modèle de Recherce » – Pattern Matching Approach – Application ponctuelle/ciblée de la transformation – Eq : Expression Régulièrs pour les Concepts – Aka : Grammaire Quand le langage devient agile [42] www.itserv.com.tn
  • 43. Pour info • Model Query Language, Pattern Maching Approach et Template Languges sont déjà supportés par les  éditeurs proposant – Auto‐complete – Refactoring – Reference Checking – Error Checking Quand le langage devient agile [43] www.itserv.com.tn
  • 44. Configuration et Scripting • Extensibilité des applications complexes – VBScript, Python/Jython, Tcl, JavaScript, Lisp, … • Utiliser MPS – Langage Script adapté aux besoins du client – Editeur approprié Quand le langage devient agile [44] www.itserv.com.tn
  • 45. Sonate Quator en C# Majeur PLATEFORMES, FRAMEWORKS,  LIBRAIRIES ET LANGAGES Quand le langage devient agile [45] www.itserv.com.tn
  • 46. Choix du langage • Choix du langage repose sur – Ease of code – Disposition à la manipulations des • Collections • Réseau • DB • UI • Réinventer la roue ? – Se baser sur un (?) langage déjà existant – Se baser sur une (?) Lib/ un (?) Fwk DSL Quand le langage devient agile [46] www.itserv.com.tn
  • 47. Base Langage • Bon point de départ • GPL – Garantit la complétude du langage final • DSL – Garantit une bonne connaissance du domaine • Ne pas oublier – La plupart des langages réussis ont un « Base  Language » • C => C++ => Java => C# Quand le langage devient agile [47] www.itserv.com.tn
  • 48. Base Library • Minimise les erreurs dues au développement de  l’interpréteur • Accélère la mise en place des fonctionnalité du  langage • Donnes des ailes à la librairie Quand le langage devient agile [48] www.itserv.com.tn
  • 49. Base Framework • Simplifie la gestion de dépendance au programmeur  final • Se baser sur des best practices • Evolution en parallèle du langage et du Framework Quand le langage devient agile [49] www.itserv.com.tn
  • 50. Base Platform • Relayer les concepts délicats à des plateformes  existantes – Sécurité, Montée en charge, .. => JEE – Génération Multi‐Langage => .Net Quand le langage devient agile [50] www.itserv.com.tn
  • 51. Conclusion • A bon chat bon rat • Ne pas rester retissant % la création de langages – Les bons outils « commencent à exister » • Diminuer le gap entre spécification, conception et  réalisation • Meilleur partenaire aux méthodes agiles Quand le langage devient agile [51] www.itserv.com.tn
  • 52. Mais • Nouvelles compétences nécessaires en  – Définition des langages – Génération de code – Phase de compréhension des besoins (Métier) plus  longue => • Plus intéressant pour un Editeur de Logiciel – Maitrise du Métier • Moins intéressant pour une SS2I – Maitrise de la techno Quand le langage devient agile [52] www.itserv.com.tn
  • 53. Merci de votre attention SOYEZ AGILES taha.bensalah@itserv.com.tn tahabensalah.net Quand le langage devient agile [53] www.itserv.com.tn