Agile Day Tunisia 2012 - Quand le langage devient Agile

Post on 04-Dec-2014

388 views 0 download

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

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 SERVtaha.bensalah@itserv.com.tn

Agile Agile dayday TunisiaTunisia ‐‐ 2 juin 20122 juin 2012

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

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

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

Méthodes Agiles

• Agilité

• Pragmatisme

• Réactivité

• Participation Elargie

• Motivation

• Risque

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

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

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

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

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

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

A LANGAGE, LANGAGE ET DEMILove Story

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

C redevient le langage le plus utilisé (2011)

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

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

• …

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

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

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

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

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

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

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

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

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

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

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

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

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 »

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

ANATOMIE D’UNE ONOMATOPÉEDo you speak LOP?

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é

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

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

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

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)

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

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

Définition de concept

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

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

Editeur du concept « Method »

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

Convex Full Algo avec le langage Collections

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é

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

Template de Génération

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

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

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 »

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

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

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é

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

PLATEFORMES, FRAMEWORKS, LIBRAIRIES ET LANGAGES

Sonate Quator en C# Majeur

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

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#

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

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

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

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

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

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

SOYEZ AGILESMerci de votre attention

taha.bensalah@itserv.com.tntahabensalah.net