Agile Day Tunisia 2012 - Quand le langage devient Agile

479 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
479
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

×