IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Java : Google introduit la programmation par contrat


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Par défaut Java : Google introduit la programmation par contrat
    Java : Google introduit la programmation par contrat
    Avec une extension open source qui aiderait aussi à sécuriser les programmes



    Google vient de passer sous licence open source un projet destiné à introduire la programmation par contrat au langage Java.

    Ce paradigme de conception logiciel initié pour le langage Eiffel devrait faciliter le développement et aider la détection précoce des imperfections dans les premières phases de créations du code.

    Ce nouveau projet, appelé Cofoja (contraction de « Contracts For Java ») devrait également permettre de sécuriser les applications contre les exploits de type dépassement de tampon notamment, véritable plaie de sécurité pour Java - comme pour d'autres langages.

    Concrètement, la programmation par contrats définit des critères auxquels doit correspondre chaque valeur passée à une méthode d'un programme en exécution. Des critères peuvent aussi être spécifiés aux valeurs de retour de ces méthodes.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    interface Time {
      ...
     
      @Ensures({
        "result >= 0",
        "result <= 23"
      })
      int getHour();
     
      @Requires({
        "h >= 0",
        "h <= 23"
      })
      @Ensures("getHour() == h")
      void setHour(int h);
     
      ...
    }

    Il s'agit donc de contrats entre les composants du même programme qui assurent l'intégrité de ce dernier et aident à réduire considérablement le nombre de bogues, qui sont détectés plus tôt dans le cycle de développement.

    Un concept aux objectifs similaires à ceux de la programmation pilotée par les testes (TDD) sauf que les assertions avec Cofoja sont écrites et testées directement dans le programme et non pas dans des classes dédiées aux tests et exécutées séparément durant cette phase.

    Les développeurs Java pourront donc définir des contrats sur la longueur des valeurs d'entrées éliminant ainsi le risque d'attaques par dépassement de tampon.

    Cofoja s'appuie sur le projet « Modern Jass », un ensemble d'annotations Java développées par Johannes Rieken et repris par deux ingénieurs à temps partiel.



    Le projet Cafoja est disponible sur Google code sous licence LGPL

    Source : le blog de Google open source

    Et vous ?

    Que pensez-vous de ces extensions ?

  2. #2
    Membre expérimenté Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Par défaut
    Ca me fait penser à mes tests JUnit.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    J'ai du mal à percevoir la place à lui donner entre
    - le typage fort
    L'exemple donné, n'est finalement qu'une définition de type déguisée, exprimée autrement.
    - le découplage des métiers
    L'exemple donné est simpliste, mais au vu de ce qui est présenté, on pourrait imaginer mettre des règles relatives aux métiers. Mais pour autant, ce n'est pas son rôle. Ne serait ce que par le fait qu'aucune modalité de réponse n'est proposée.

    Pour autant ce n'est pas du test comme on peut l'avoir entendu jusqu'à présent, puisque on valide cette règle jit*, et non à postériori dans le scénario d'un cas de test.

    * D'après ce que j'ai compris ici :
    Concrètement, la programmation par contrats définit des critères auxquels doit correspondre chaque valeur passée à une méthode d'un programme en exécution.
    Bref, je trouve l'idée sympa au départ, et je suis sur qu'elle sera utile dans l'état actuelle des choses, mais il y à quand même quelque chose qui me chiffonne.

    a+

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 506
    Par défaut
    Citation Envoyé par kaymak Voir le message
    J'ai du mal à percevoir la place à lui donner
    Il faut lire le bouquin OOSC2 et cela devient clair (tout programmeur devrait l'avoir lu d'ailleurs, c'est une base de l'informatique).

    Object-Oriented Software Construction, 2nd Edition by Bertrand Meyer.
    Prentice Hall Professional Technical Reference.
    1254 + xxviii pp.
    Soft cover.
    ISBN 0-13-629155-4
    This Jolt Award winner takes the reader through the clear, logical, and comprehensive formation of a method for object-oriented software development ... the Eiffel method. During this journey, the author evolves a notation capable of expressing the products of each phase of development, from analysis through implementation. This notation is Eiffel the language.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Bon, si vraiment il faut en passer par la lecture complète du bouquin.... J'ai plus qu'à !
    http://fr.wikipedia.org/w/index.php?...=0-13-629155-4


    merci,
    a+

  6. #6
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Le livre de Bertrand Meyer est traduit en français pour les programmeurs qui ne sont pas à l'aise avec l'anglais.

    C'est nettement moins bien que l'original certes mais déjà que ce livre est très complet et les concepts parfois délicats, devoir décrypter le rend difficile à lire.

    Titre : Conception et programmation orientées objet
    ISBN : 978-2212122701

    Je rejoins l'avis d'au dessus, un livre à lire, à relire et à avoir dans sa bibliothèque pour le consulter très souvent.

    Les contrats ne remplacent pas les tests unitaires et inversement, ce sont 2 concepts complémentaires. Utiliser l'un ne signifie pas que l'on utilise pas l'autre, au contraire.

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2009
    Messages : 14
    Par défaut
    Citation Envoyé par kaymak Voir le message
    J'ai du mal à percevoir la place à lui donner entre
    - le typage fort
    L'exemple donné, n'est finalement qu'une définition de type déguisée, exprimée autrement.
    L'idée du typage fort est intéressante et c'est une perspective que j'aime bien, personnellement. On peut voir les contrats comme une extension dynamique (à l'exécution) du typage. Les contrats permettent potentiellement de spécifier n'importe quelle condition (avec les limitation de portée et de condition d'activation qui leur sont intrinsèques), potentiellement très difficile à vérifier statiquement. Cette difficulté relève en partie de défis théoriques mais en pratique surtout du fait que les spécifications sous forme de contrats sont rarement assez complètes pour permettre une analyse statique aboutie.

  8. #8
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Citation Envoyé par kaymak Voir le message
    J'ai du mal à percevoir la place à lui donner entre
    - le typage fort
    L'exemple donné, n'est finalement qu'une définition de type déguisée, exprimée autrement.
    - le découplage des métiers
    L'exemple donné est simpliste, mais au vu de ce qui est présenté, on pourrait imaginer mettre des règles relatives aux métiers. Mais pour autant, ce n'est pas son rôle. Ne serait ce que par le fait qu'aucune modalité de réponse n'est proposée.

    Pour autant ce n'est pas du test comme on peut l'avoir entendu jusqu'à présent, puisque on valide cette règle jit*, et non à postériori dans le scénario d'un cas de test.

    * D'après ce que j'ai compris ici :


    Bref, je trouve l'idée sympa au départ, et je suis sur qu'elle sera utile dans l'état actuelle des choses, mais il y à quand même quelque chose qui me chiffonne.

    a+


    Le typage fort n'est pas la réponse à tout, dans l'exemple donné avec les heures, tu ne peux pas déclarer un int qui reste dans [0;24[ en Java, du moins pas sans librairie/extension.

    Tu es donc obligé de te débrouiller avec les accesseurs, ou maintenant avec cofoja.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par YannPeniguel Voir le message
    Le typage fort n'est pas la réponse à tout, dans l'exemple donné avec les heures, tu ne peux pas déclarer un int qui reste dans [0;24[ en Java, du moins pas sans librairie/extension.

    Tu es donc obligé de te débrouiller avec les accesseurs, ou maintenant avec cofoja.


    et c'est bien cela le problème... en ne disposant d'un véritable typage fort, nombre de tests sont reportés à l'exécution (ce que nombre de développeurs Java reprochent aux langages plus dynamiques comme Python )
    alors il est clair que le message d'erreur sera bien plus explicite... mais ça revient aux assert insérés dans les codes C ou C++, et un jour on voit apparaître les static_assert pour tout ce qui est possible de faire dès la compilation (optimisations quand tu nous tiens )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Merci pour vos infos, et remarques et réponses : )

    @YannPeniguel, @lenhat, OK, je comprend tout à fait vos remarques.

    [/QUOTE]Bon, et puis, les contrats ça va un tout petit peu plus loin que borner les paramètres d'entrée ou fortifier le typage, 'faut arrêter de se toucher, les gens.[/QUOTE]
    Alala on eu aimé que tu ai autant entrain à nous expliquer ce que TOI tu sais de ces contrats mais pas nous autres indigent :!

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est à proprement parler illisible! Et j'ai du mal à voir l'intérêt par rapport à un assert (ben oui, y a pas qu'en c que assert existe)

  12. #12
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 3
    Par défaut
    intéressant que ça arrive enfin en java

  13. #13
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    J'ai commencé en java avec un livre sur le C prenant java pour une extension dudit langage et introduisait la notion de contrat dans le langage Java. J'ai passé des mois à écrire les @require, ... dans mon code sans savoir que le JDK n'avait rien à f**tre.

    je vais enfin pouvoir réellement utiliser la notion de contrat en java.

    Merci google

  14. #14
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Ça existe en Ada depuis les années 70
    heure : integer (1..23);

  15. #15
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    La définition de conditions booléennes dans des chaines de caractères, c'est vraiment pas beau.

    Citation Envoyé par Flaburgan Voir le message
    Ça existe en Ada depuis les années 70
    heure : integer (1..23);
    J'ai été voir des docs sur ADA, que je ne connaissais que de nom.

    Effectivement, on borne à la déclaration, c'est plus propre.

    Cela dit, rendons à César ce qui est à César: Un manque du Java est comblé grâce à ce projet.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    Ça existe en Ada depuis les années 70
    heure : integer (1..23);
    On n'a jamais dit que c'était un concept nouveau, juste que Google proposait une manière de le mettre en Java.

    Bon, et puis, les contrats ça va un tout petit peu plus loin que borner les paramètres d'entrée ou fortifier le typage, 'faut arrêter de se toucher, les gens.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 2
    Par défaut
    Vous croyez qu'il est possible d'ajouter la contrainte value != 2.2250738585072012e-308 ?

  18. #18
    Membre confirmé
    Homme Profil pro
    Expert MDE
    Inscrit en
    Janvier 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert MDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 183
    Par défaut
    C'est n'est pas vraiment de la programmation par contrat, mais de l'assertion.
    Il faut quand même écrire le code derrière...

  19. #19
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Par défaut
    Java : Google introduit la programmation par contrat
    pas du tout mais vraiment pas du tout

    Google à souvent tendance à reprendre des élements existants déjà... Ils ne connaissent donc pas JML ?

    Je me demande ce que cette extension va apporter de plus par rapport à JML qui existe depuis un petit bout de temps.

    http://fr.wikipedia.org/wiki/Java_Modeling_Language

  20. #20
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    ça existe depuis longtemps en .net

    http://msdn.microsoft.com/en-us/devlabs/dd491992

    C'est même intégré dans VST 2010

Discussions similaires

  1. Java : Google introduit la programmation par contrat
    Par Idelways dans le forum Actualités
    Réponses: 0
    Dernier message: 11/02/2011, 12h03
  2. Outil de Programmation par contrat pour Java?
    Par TabrisLeFol dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 26/10/2009, 07h15
  3. [Language]Programmation par contrat
    Par manube dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2005, 10h16
  4. [Eiffel] Programmation par contrats
    Par SkIllz2k dans le forum Autres langages
    Réponses: 1
    Dernier message: 02/05/2005, 20h05
  5. [Tests]La programmation par contrats
    Par fabien.raynaud dans le forum Test
    Réponses: 6
    Dernier message: 26/07/2004, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo