SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
1
    Les Contrats de Code
    Nestor A. Kameni
    Expert C#, ASP.NET, Silverlight
    Blog : http://nestor.nestasoft.fr
    Twitter : @nestasoft
2   Sommaire

     Partie1 : Introduction
     Partie 2 : Téléchargement et mise en place de la bibliothèque de contrats
     Partie 3 : Utilisation des préconditions
     Partie 4 : Utilisation des post-conditions
     Partie 5 : Utilisation des Contrats sur les interfaces
     Partie 6 : Utilisation des objets invariants
     Partie 7 : Support pour les TU
     Partie 8 : Héritage du contrat
     Partie 9 : Les attributs du contrat
     Partie 10 : Documenter vos contrats


    (c) Nestor .A Kameni
3   Partie 1 : Introduction (1/8)

     Définition d’un contrat
            o C’est une contrainte imposée par le concepteur sur une méthode, une
              interface…


     C’est quoi « Code Contracts »?
            o Nouvelle fonctionnalité du Framework (4.0)


     But
            o Définir des contraintes dans du code; contraintes qui pourront être réutilisées par
              des outils d’analyse / d’écriture du code.


    (c) Nestor .A Kameni
<
    >




        4   Partie 1 : Introduction (2/8)

             Imposer les contrats « oui ou non »?
                    o Dans un grand projet : Imposer l’utilisation des contrats
                    Cas pratique :
                                        Équipe A                                           Équipe B
                        Développeur A              Développeur B           Intégrateur A    Intégrateur B Intégrateur C




                        public List<T> getListT(…) { }                         Utilisent les méthodes
                         public SupS getListSupS(…) { }                        getListT et getListSupS


            (c) Nestor .A Kameni
5   Partie 1 : Introduction (3/8)

     Avantage (Cas pratique) :
            o Assure au développeur que les données d’entrées sont valides et n’auront pas d’effets
              secondaires sur l’exécution de la classe.

     Inconvénient :
            o Compilation impossible.


     Dans un petit projet type perso : Le choix est laissé au développeur




    (c) Nestor .A Kameni
6             Partie 1 : Introduction (4/8)
    Cas pratique :
                                                        Équipe unique
                           Développeur                                                   Intégrateur




                          public List<T> getListT(…) { }                Utilisent les méthodes
                           public SupS getListSupS(…) { }               getListT et getListSupS


                          Avantage (Cas pratique) :
                               o Aucun

                          Inconvénient :
                               o Compilation impossible.
                               o Perte de temps pour résoudre d’éventuelles anomalies.
              (c) Nestor .A Kameni
7   Partie 1 : Introduction (5/8)

     Avantages des contrats de code
            •    Typage fort des contrats
            •    Vérification des contrats à la compilation
            •    Documentation auto des commentaires des contrats de code
            •    Héritage des contrats
            •    Définition des contrats de code dans des interfaces
            •    Création d’un assemblage qui ne contient que des contrats




    (c) Nestor .A Kameni
8   Partie 1 : Introduction (6/8

     Avant le Framework 4.5, 4.0
            •    Utilisation des exceptions




    (c) Nestor .A Kameni
9   Partie 1 : Introduction (7/8)

     Concept des contrats de code
            1. Définition des contrats en utilisant les classes de l’espace de nom




            2. Exécution de l’outil d’analyse des contrats


     Outils proposés par Microsoft
            o cccheck
            o ccdocgen
            o ccrefgen
            o ccrewrite


    (c) Nestor .A Kameni
10   Partie 1 : Introduction (8/8)

      Prérequis
             o Incluse dans le Framework 4.5, 4.0
             o Possibilité d’utiliser les contrats de code dans le FrameWork 3.5 ( Assembly
               Microsoft.Contracts)
             o Télécharger les outils sur Microsoft Research (http://research.microsoft.com/en-
               us/projects/contracts/)




     (c) Nestor A. Kameni
11




                            QUESTION?



     (c) Nestor .A Kameni

Más contenido relacionado

Similar a Les contrats de code

Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Technology
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharpSDFG5
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009JUG Lausanne
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...Capgemini
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009JUG Lausanne
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgRomain Boman
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
JUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/GrailsJUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/Grailscyrilpicat
 
L’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketL’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketStéphane Legrand
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdfsayf7
 

Similar a Les contrats de code (20)

Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeurs
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
 
Le futur de gwt
Le futur de gwtLe futur de gwt
Le futur de gwt
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
JUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/GrailsJUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/Grails
 
L’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketL’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacket
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdf
 

Les contrats de code

  • 1. 1 Les Contrats de Code Nestor A. Kameni Expert C#, ASP.NET, Silverlight Blog : http://nestor.nestasoft.fr Twitter : @nestasoft
  • 2. 2 Sommaire  Partie1 : Introduction  Partie 2 : Téléchargement et mise en place de la bibliothèque de contrats  Partie 3 : Utilisation des préconditions  Partie 4 : Utilisation des post-conditions  Partie 5 : Utilisation des Contrats sur les interfaces  Partie 6 : Utilisation des objets invariants  Partie 7 : Support pour les TU  Partie 8 : Héritage du contrat  Partie 9 : Les attributs du contrat  Partie 10 : Documenter vos contrats (c) Nestor .A Kameni
  • 3. 3 Partie 1 : Introduction (1/8)  Définition d’un contrat o C’est une contrainte imposée par le concepteur sur une méthode, une interface…  C’est quoi « Code Contracts »? o Nouvelle fonctionnalité du Framework (4.0)  But o Définir des contraintes dans du code; contraintes qui pourront être réutilisées par des outils d’analyse / d’écriture du code. (c) Nestor .A Kameni
  • 4. < > 4 Partie 1 : Introduction (2/8)  Imposer les contrats « oui ou non »? o Dans un grand projet : Imposer l’utilisation des contrats Cas pratique : Équipe A Équipe B Développeur A Développeur B Intégrateur A Intégrateur B Intégrateur C public List<T> getListT(…) { } Utilisent les méthodes public SupS getListSupS(…) { } getListT et getListSupS (c) Nestor .A Kameni
  • 5. 5 Partie 1 : Introduction (3/8)  Avantage (Cas pratique) : o Assure au développeur que les données d’entrées sont valides et n’auront pas d’effets secondaires sur l’exécution de la classe.  Inconvénient : o Compilation impossible.  Dans un petit projet type perso : Le choix est laissé au développeur (c) Nestor .A Kameni
  • 6. 6 Partie 1 : Introduction (4/8) Cas pratique : Équipe unique Développeur Intégrateur public List<T> getListT(…) { } Utilisent les méthodes public SupS getListSupS(…) { } getListT et getListSupS Avantage (Cas pratique) : o Aucun Inconvénient : o Compilation impossible. o Perte de temps pour résoudre d’éventuelles anomalies. (c) Nestor .A Kameni
  • 7. 7 Partie 1 : Introduction (5/8)  Avantages des contrats de code • Typage fort des contrats • Vérification des contrats à la compilation • Documentation auto des commentaires des contrats de code • Héritage des contrats • Définition des contrats de code dans des interfaces • Création d’un assemblage qui ne contient que des contrats (c) Nestor .A Kameni
  • 8. 8 Partie 1 : Introduction (6/8  Avant le Framework 4.5, 4.0 • Utilisation des exceptions (c) Nestor .A Kameni
  • 9. 9 Partie 1 : Introduction (7/8)  Concept des contrats de code 1. Définition des contrats en utilisant les classes de l’espace de nom 2. Exécution de l’outil d’analyse des contrats  Outils proposés par Microsoft o cccheck o ccdocgen o ccrefgen o ccrewrite (c) Nestor .A Kameni
  • 10. 10 Partie 1 : Introduction (8/8)  Prérequis o Incluse dans le Framework 4.5, 4.0 o Possibilité d’utiliser les contrats de code dans le FrameWork 3.5 ( Assembly Microsoft.Contracts) o Télécharger les outils sur Microsoft Research (http://research.microsoft.com/en- us/projects/contracts/) (c) Nestor A. Kameni
  • 11. 11 QUESTION? (c) Nestor .A Kameni