Agile Day Tunisia 2012 - Quand le langage devient Agile

53
Quand le langage devient agile Présenté par : Taha BEN SALAH Consultant Senior – IT SERV [email protected] Agile Agile day day Tunisia Tunisia 2 juin 2012 2 juin 2012

description

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

Transcript of Agile Day Tunisia 2012 - Quand le langage devient Agile

Page 1: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Quand le langage devient agilePrésenté par : Taha BEN SALAHConsultant Senior – IT [email protected]

Agile Agile dayday TunisiaTunisia ‐‐ 2 juin 20122 juin 2012

Page 2: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [2]www.itserv.com.tnwww.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

Page 3: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Le GroupeSociétés IT SERV / AHEAD IT fondés en 2008

Fondateurs : Imed Elabed, Moez Boukhris, Mohamed Koubâa

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

Chiffre d’affaires

Secteurs d’intervention

Développementlogiciels spécifiques

ConsultingAMO / PMO

Expertise TélécomsIntégration de solutions

BSCS, SAP BO, ... 

Développementlogiciels spécifiques

ConsultingAMO / PMO

Expertise TélécomsIntégration de solutions

BSCS, SAP BO, ... 

Expertise en Systèmes d’Information

Quelques clients

Page 4: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Méthodes Agiles

• Agilité

• Pragmatisme

• Réactivité

• Participation Elargie

• Motivation

• Risque

Page 5: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

L’HABIT FAIT LE MOINE« Donnes moi un point d'appui je soulèverai le monde » Archimèdes

Page 6: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [6]www.itserv.com.tnwww.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

Page 7: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Prototypage

• Prototypage Réutilisable

• Maquettage propre à validation

• Outils intervenants– OS/Plateforme

– Outils de développement

– Compétences humaines

– Langage

-> Imposé(e) par le client ?

-> Imposés par la SS2I

-> Imposé par la façon de recruter

-> L’habit dont on ne parle presque jamais

Page 8: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Lequel est le plus rapide ?

+Chinois

Occidental+

• Quel est le langage le plus rapide

Mauvaise Question

Page 9: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

• Quel est le langage le plus utilisé

Ze Best

L’Idéal

La réalité

•Quel est le langage le plus appropriéAu projetAu domaineA la SS2IAu développeur

Mauvaise Question

Page 10: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

A LANGAGE, LANGAGE ET DEMILove Story

Page 11: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

C redevient le langage le plus utilisé (2011)

Page 12: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [12]www.itserv.com.tnwww.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

Page 13: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [13]www.itserv.com.tnwww.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

• …

Page 14: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [14]www.itserv.com.tnwww.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

Page 15: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [15]www.itserv.com.tnwww.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

Page 16: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Oui mais …

• Une bonne Librairie peut‐elle répondre au même besoin ?

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

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();

Page 17: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

À Méditer

• Une librairie est un DSL muni d’une syntaxe très particulière

Page 18: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

LOP, … AU GALOPVous dites LOP, … LOL!!

Page 19: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [19]www.itserv.com.tnwww.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

Comprendre (‐)

Choisir (‐)

Programmer (+)

LOP

Comprendre  (+)

Construire  (+)

Décrire  (‐)

Goulot d’ étranglement : Mapping du Monde réel Cas par cas x Nombre de développeurs

Page 20: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [20]www.itserv.com.tnwww.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

Page 21: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [21]www.itserv.com.tnwww.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

Page 22: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [22]www.itserv.com.tnwww.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

Page 23: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Avantages

• Maintenabilité

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

( ) ( )( ) )(int autreosoftTaillefSoftEffort enancema +=

Page 24: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [24]www.itserv.com.tnwww.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

Page 25: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [25]www.itserv.com.tnwww.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 »

Page 26: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

ANATOMIE D’UNE ONOMATOPÉEDo you speak LOP?

Page 27: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Qu’est que qu’un programme

• Une suite d’instructions déterministes qui produit une solution au problème énoncé

Page 28: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [28]www.itserv.com.tnwww.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

Page 29: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [29]www.itserv.com.tnwww.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

Page 30: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [30]www.itserv.com.tnwww.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

Page 31: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [31]www.itserv.com.tnwww.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)

Page 32: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [32]www.itserv.com.tnwww.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

Page 33: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Définition de concept

Page 34: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [34]www.itserv.com.tnwww.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, …

Page 35: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Editeur du concept « Method »

Page 36: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Convex Full Algo avec le langage Collections

Page 37: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [37]www.itserv.com.tnwww.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é

Page 38: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Template de Génération

Page 39: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [39]www.itserv.com.tnwww.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

Page 40: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [40]www.itserv.com.tnwww.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

Page 41: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [41]www.itserv.com.tnwww.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 »

Page 42: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [42]www.itserv.com.tnwww.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

Page 43: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

Pour info

• Model Query Language, Pattern Maching Approachet Template Languges sont déjà supportés par les éditeurs proposant– Auto‐complete

– Refactoring

– Reference Checking

– Error Checking

Page 44: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [44]www.itserv.com.tnwww.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é

Page 45: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

PLATEFORMES, FRAMEWORKS, LIBRAIRIES ET LANGAGES

Sonate Quator en C# Majeur

Page 46: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [46]www.itserv.com.tnwww.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

Page 47: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [47]www.itserv.com.tnwww.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#

Page 48: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [48]www.itserv.com.tnwww.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

Page 49: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [49]www.itserv.com.tnwww.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

Page 50: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [50]www.itserv.com.tnwww.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

Page 51: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [51]www.itserv.com.tnwww.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

Page 52: Agile Day Tunisia 2012 - Quand le langage devient Agile

Quand le langage devient agile [52]www.itserv.com.tnwww.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

Page 53: Agile Day Tunisia 2012 - Quand le langage devient Agile

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

SOYEZ AGILESMerci de votre attention

[email protected]