Quand le langage devient agilePrésenté par : Taha BEN SALAHConsultant Senior – IT SERVtaha.bensalah@itserv.com.tn   Agile ...
Agenda•   Introduction•   L’habit fait le moine•   A Langage, langage et demi•   LOP … au gaLOP•   Anatomie d’une onomatop...
Le GroupeSociétés IT SERV / AHEAD IT fondés en 2008                                 Secteurs d’interventionFondateurs : Im...
Méthodes Agiles    •    Agilité    •    Pragmatisme    •    Réactivité    •    Participation Elargie    •    Motivation   ...
« Donnes moi un point dappui je soulèverai le monde » ArchimèdesL’HABIT FAIT LE MOINE                       Quand le langa...
Réussir un projet Agile• Maitriser le produit    – Intervention client   – Product Backlog « complet » (Scrum)• Réactivité...
Prototypage• Prototypage Réutilisable• Maquettage propre à validation• Outils intervenants  –   OS/Plateforme             ...
Lequel est le plus rapide ?• Quel est le langage le plus rapide     Mauvaise Question                                     ...
Ze Best• Quel est le langage le plus utilisé      Mauvaise Question •Quel est le langage le plus approprié   Au projet    ...
Love StoryA LANGAGE, LANGAGE ET DEMI             Quand le langage devient agile [10]                        www.itserv.com...
C redevient le langage le plus utilisé (2011)               Quand le langage devient agile [11]                          w...
Tendence• Effervescence des projets Hard/Soft• Effervescence des langages  – Diversification des besoins : web, …  – Simpl...
Langages• Domaine d’application  • DSL (Domain Specific Programming Language)  • GPL (General Purpose Programming Language...
Langages• Spécificités   –   Structurée / Déstructuré   –   Fortement / Faiblement Typé   –   Déclaratif / Non déclaratif ...
Donc ???• Idéalement  – Un langage propre au projet     • Résolution orientée problème  – Affute l’agilité et la réactivit...
Oui mais …• Une bonne Librairie peut‐elle répondre au même   besoin ?Matrix m=new Matrix(new Complex[][]{{new Complex(3,-5...
À Méditer• Une librairie est un DSL muni d’une syntaxe très   particulière                   Quand le langage devient agil...
Vous dites LOP, … LOL!!LOP, … AU GALOP                          Quand le langage devient agile [18]                       ...
Language Oriented Programming• Définir (étendre) un langage qui répond au mieux  à  la problématique• MLL : Middle Level P...
Avantages• Liberté  – Enfin une conception indépendante des outils de     programmation  – Utiliser les meilleures constru...
Avantages• Séparation des préoccupations  – Conception générale plus proche d’une spécification     formelle  – Détection ...
Avantages• Productivité / Réactivité   – Plus rapide que Bottom Up/ Top Down   – Très peu versatile particulièrement pour ...
Avantages• Maintenabilité   Effort ma int enance (Soft ) = f (Taille(soft )) + o(autre)  – Automatisation (Langage) impose...
Avantages• Portabilité   – Langage intermédiaire   – Choix du langage « Hôte » le plus approprié ne      contredit pas la ...
Avantages• Opportunités de réutilisation  – Langage encapsule la « Connaissance du domaine »     • Structures de données  ...
Do you speak LOP?ANATOMIE D’UNE ONOMATOPÉE                    Quand le langage devient agile [26]                         ...
Qu’est que qu’un programme• Une suite d’instructions déterministes qui produit   une solution au problème énoncé          ...
Qu’est que qu’un programme• Un ensemble de mots, concepts, notions, réflexions   inter‐reliées entre eux qui décrivent une...
L’arbre qui cache la forêt• Gestion de Personnel (besoin exprimé)  – contraintes silencieuses      • Concept : CRUD     • ...
Langage LOP• Structure  – AST (syntaxe abstraite)  – Concept et les relations qui les lient• Editeur  – Syntaxe concrète  ...
Structure• Représentation Textuelle vs Représentation en   Graphe  – Pourquoi     • Il y’a 30 ans l’outil le plus développ...
Structure• Décrit par le langage « Structure Language »  – LOP est auto‐définit• Meta Langage : Meta Level• Définit des nœ...
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 remplace...
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....
Sémantique• Langage « Transformation Language »• Interprétation vs Compilation  – Exécution directe  – Génération de code ...
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 Patte...
Approches de génération• Approche Itérative   – ~Model Query Language  – Génération en profondeur des nœuds  – Parcours et...
Approches de génération• Approche à base de Templates  – ~Velocity / XSLT  – Le modèle définit des hooks remplacé par les ...
Approches de génération• Approche « Modèle de Recherce »  –   Pattern Matching Approach  –   Application ponctuelle/ciblée...
Pour info• Model Query Language, Pattern Maching Approach  et Template Languges sont déjà supportés par les   éditeurs pro...
Configuration et Scripting• Extensibilité des applications complexes  – VBScript, Python/Jython, Tcl, JavaScript, Lisp, …•...
Sonate Quator en C# MajeurPLATEFORMES, FRAMEWORKS, LIBRAIRIES ET LANGAGES                      Quand le langage devient ag...
Choix du langage• Choix du langage repose sur  – Ease of code  – Disposition à la manipulations des     • Collections     ...
Base Langage• Bon point de départ• GPL  – Garantit la complétude du langage final• DSL  – Garantit une bonne connaissance ...
Base Library• Minimise les erreurs dues au développement de   l’interpréteur• Accélère la mise en place des fonctionnalité...
Base Framework• Simplifie la gestion de dépendance au programmeur   final• Se baser sur des best practices• Evolution en p...
Base Platform• Relayer les concepts délicats à des plateformes   existantes  – Sécurité, Montée en charge, .. => JEE  – Gé...
Conclusion• A bon chat bon rat• Ne pas rester retissant % la création de langages  – Les bons outils « commencent à existe...
Mais• Nouvelles compétences nécessaires en   – Définition des langages  – Génération de code  – Phase de compréhension des...
Merci de votre attentionSOYEZ AGILES                      taha.bensalah@itserv.com.tn                           tahabensal...
Prochain SlideShare
Chargement dans…5
×

Agile Day Tunisia 2012 - Quand le langage devient Agile

480 vues

Publié le

Quand le langage devient Agile, 2 June 2012
Taha BEN SALAH - IT SERV

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
480
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Agile Day Tunisia 2012 - Quand le langage devient Agile

  1. 1. Quand le langage devient agilePrésenté par : Taha BEN SALAHConsultant Senior – IT SERVtaha.bensalah@itserv.com.tn Agile day Tunisia ‐ 2 juin 2012 Quand le langage devient agile [1] www.itserv.com.tn
  2. 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. 3. Le GroupeSociétés IT SERV / AHEAD IT fondés en 2008 Secteurs d’interventionFondateurs : Imed Elabed, Moez Boukhris, Mohamed KoubâaMarché : Tunisie, Afrique du Nord; Europe (Nearshore) Expertise en Systèmes d’Information Développement Consulting logiciels spécifiques AMO / PMOInté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. 4. Méthodes Agiles • Agilité • Pragmatisme • Réactivité • Participation Elargie • Motivation • Risque Quand le langage devient agile [4] www.itserv.com.tn
  5. 5. « Donnes moi un point dappui je soulèverai le monde » ArchimèdesL’HABIT FAIT LE MOINE Quand le langage devient agile [5] www.itserv.com.tn
  6. 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. 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. 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. 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. 10. Love StoryA LANGAGE, LANGAGE ET DEMI Quand le langage devient agile [10] www.itserv.com.tn
  11. 11. C redevient le langage le plus utilisé (2011) Quand le langage devient agile [11] www.itserv.com.tn
  12. 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. 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. 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. 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. 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. 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. 18. Vous dites LOP, … LOL!!LOP, … AU GALOP Quand le langage devient agile [18] www.itserv.com.tn
  19. 19. Language Oriented Programming• Définir (étendre) un langage qui répond au mieux  à la problématique• MLL : Middle Level Programming LanguageParadigme Traditionnel LOPComprendre (‐) 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. 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. 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. 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. 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. 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. 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. 26. Do you speak LOP?ANATOMIE D’UNE ONOMATOPÉE Quand le langage devient agile [26] www.itserv.com.tn
  27. 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. 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. 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. 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. 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. 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. 33. Définition de concept Quand le langage devient agile [33] www.itserv.com.tn
  34. 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. 35. Editeur du concept « Method » Quand le langage devient agile [35] www.itserv.com.tn
  36. 36. Convex Full Algo avec le langage  Collections Quand le langage devient agile [36] www.itserv.com.tn
  37. 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. 38. Template de Génération Quand le langage devient agile [38] www.itserv.com.tn
  39. 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. 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. 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. 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. 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. 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. 45. Sonate Quator en C# MajeurPLATEFORMES, FRAMEWORKS, LIBRAIRIES ET LANGAGES Quand le langage devient agile [45] www.itserv.com.tn
  46. 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. 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. 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. 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. 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. 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. 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. 53. Merci de votre attentionSOYEZ AGILES taha.bensalah@itserv.com.tn tahabensalah.net Quand le langage devient agile [53] www.itserv.com.tn

×