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