Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur

Slides:



Advertisements
Présentations similaires
Réunion du club utilisateur Salesforce.com
Advertisements

Les technologies décisionnelles et le portail
Formation universitaire à .NET: Introduction à C#
1 HPC pour les opérations. Sommaire Quelques rappels sur Windows Compute Cluster Server Déploiement de Compute Cluster Administration de Compute cluster.
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Nouveautés pour les développeurs Office System Scott Burmester Responsable des programmes PSPS.
Automatisation de Tâches Scenarios
Connecter des données métier à Office SharePoint Server 2007 via le Business Data Catalog.
Microsoft Office Groove Le contexte Une utilisation des postes de travail en très grande évolution chez les professionnels. Des lieux de travail.
L’architecture .net et ASP.net
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
WF / WCF 4.0 et l’environnement “Dublin”
Principes de programmation (suite)
Démarche Analyse des OGL et des Méthodes Objectifs : Activités :
Les Services Web Avec.NET version 1.1. Un service Web en bref… Méthodes ou objets accessible à distance via SOAP (Simple Object Access Protocol ); SOAP.
Programmation orientée objet
XML-Family Web Services Description Language W.S.D.L.
Modules DMOS, Dons et subventions
Amélioration de la sécurité des données à l'aide de SQL Server 2005
Algorithmique et Programmation
ASP.NET un peu plus loin… Développement Rapide dApplications Web avec.NET.
3 Booster votre productivité avec VS 2010 Arnaud FontaineEric Le Loch Spécialistes Solutions de développement.
Petits montages électroniques à la portée des « softeux »
Connecteur Team Foundation Server Project Server
Visio 2010 : représentez et partagez encore plus simplement vos diagrammes et données
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
Microsoft .NET.
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
2 Windows Azure DataMarket : Vendre et consommer de la donnée 9 Février 2011 Jean-Luc Boucho Architecte Solutions, Leader Windows Azure Winwise Julien.
Eric Vernié, Développer une application en couches avec Visual Basic.NET 2005.
2 Développer, tester et déployer un site web avec WebMatrix (RIA101) Christine Dubois 9 février 2011.
2 Introduction au SDK Windows Phone 7 Mardi 8 Février 2011 Pierre CAUCHOIS Relation avec les développeurs Microsoft Julien CORIOLAND Consultant / Formateur.

22 Intégrer Reporting Services SQL 2008 R2 à votre application 09/02/2010 Mathieu ROSPIDE – Winwise Julien TOURNADRE – Winwise.
•Présentation de Team Edition for Database Professionals •La méthodologie •Etude de cas.
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
2 Industrialisation des développements sur SQL Server avec Visual Studio 2010 Mardi 8 Février – 17h30 Karim Zegour – Winwise Michel Perfetti – MVP VS.
Mise en oeuvre et exploitation
22 Créer son outil de modélisation de processus métier en utilisant Workflow Foundation 4 09/02/10 Julien Balouka Consultant – Formateur Winwise Nicolas.
Introduction au développement Office 2007
Introduction à la plateforme .NET
2 Le futur de VB et l’asynchronisme [LAN101] 08/02 14h30 Patrice Lamarche GPI
Outil de conception d’applications WPF Anciennement « Interactive Designer » Orienté « intégrateur graphistes » Particularité : Blend tm est une application.
Introduction à Visual Studio C++ (VC++)
Dyalog.Net Peter Donnelly Managing Director Dyadic Systems Toronto 30/10/2002.
Les 2 personnes doivent réussir un des examens ci-dessous Site Formation & CertificationSite Formation & Certification l Réserver sa date d’examen l Devenir.
RDA 209 : WPF Toolkit et bonnes pratiques
Technet Office System
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Positionnement : Outil de supervision et d’administration spécialiste Les management packs de l’éditeur et la base de connaissance embarquée Rapidité.
2 TFS Basic, en route vers L’ALM 08/02/2011 Alain MartyBenoit Laut ConsultantMVP ALM BewiseBewise.
MOCK.
Avantages pour les développeurs
Héritage Conception par Objet et programmation Java
22 Lag110 : Le développement SharePoint 2010 avec Visual Studio 2010 Mardi 9 février 2010 Frédéric Wickert Partner Technical Specialist Microsoft.
22 Passez à la vitesse supérieure avec Visual Studio 2010 et le framework 4.0 en utilisant la Task Parallel Library 08/02/2010 Vincent Lainé MVP C# Refresh.
Comprendre le Catalogue de Données Métier Utiliser le Catalogue de Données Métier Développer avec le Catalogue de Données Métier Conclusion.
22 Visual Studio Tools et Office /02/2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Development Consultant Microsoft France.
Industrialiser le développement avec Silverlight 4 et RIA Services
2 Alain METGE SOGETI
Réunion de cadrage 3 10/02/10. Chef de projet Damien Responsabl e Qualité Laetitia Responsabl e Business Plan Fouad Responsable Développement Web Thibault.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
Installation du PGI – CEGID
Présentation CANTICO Jean-Louis Bricault – CANTICO.
Transcription de la présentation:

Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur Winwise gilles.tourreau@winwise.com http://gilles.tourreau.fr Amine ZEMZEMI - MSP Etudiant / Stagiaire Sup Galilée amine.zemzemi@msp-france.com http://amine-zemzemi.blogspot.com

L’expert de référence ! Société d’expertise sur les technologies Microsoft Partenaire historique et stratégique de Microsoft Plus de 90 collaborateurs certifiés interviennent sur des missions à forte valeur ajoutée : Missions d’expertise Conseil & Audit Réalisation de projets à engagement de résultats Une offre couvrant l’ensemble du cycle de vie des applications : Travail collaboratif, portail d’entreprise et Workflow Business Intelligence & Data Management Interfaces utilisateurs, Rich Internet Application & desktop application Architecture d’entreprise et Architecture Life cycle Management Infrastructure, Sécurité et Réseaux Centre de formation et de Certification Microsoft WINWISE 130/136 Rue de Silly 92100 Boulogne-Billancourt http://www.winwise.com

Agenda Introduction à Code Contracts Spécifier des contrats Les pré-conditions Les post-conditions Les invariants L’héritage des contrats Vérification des contrats à la compilation Création des contrats sur du code existant Assembly de contrats Extensibilité de Code Contracts

Qu’est ce qu’un contrat ?

Qu’est ce qu’un contrat ?

Avant… Utilisation des exceptions : ArgumentException InvalidOperationException … Les conditions ne sont pas héritées dans les classes dérivées Duplication de code ! Les conditions ne peuvent pas être spécifiées dans les interfaces Vérification à l’exécution uniquement La documentation doit-être faite explicitement Les conditions sont compilées et utilisées sur les exécutables en production

Fonctionnalités de Code Contracts Permet de spécifier très simplement : Des pré-conditions Des post-conditions Des invariants Supporte l’héritage Possibilité de définir des contrats dans des interfaces Vérification à la compilation Extensibilité Génération de la documentation XML

Code Contracts Exécutable avec validation Code C# + Les contrats Code Contracts Rewriter Code C# + Les contrats Code et contrats compilés (méta-données) Doc. XML Compilation Code Contracts Doc Liste des contrats non respectés Code Contracts Check

Spécifier des contrats Les contrats sont spécifiés à l’aide de méthodes Ces méthodes sont compilées Elles représentent des méta-données (comme les attributs .NET) Utilisation de la classe statique Contracts Disponible dans le .NET Framework v4.0 Namespace System.Diagnostics.Contracts Tous les contrats doivent être spécifiés au début des méthodes

Les pré-conditions Vérifie une condition au début d’une méthode Par exemple : Tester la validité d’un paramètre Les appelants de cette méthode doivent obligatoirement respecter les pré-conditions

Les post-conditions Vérifie une condition à la fin d’une méthode Par exemple : L’appel à une méthode Add() avec deux entiers positifs doit retourner une valeur positive Les post-conditions peuvent Vérifier la valeur de retour d’une méthode (Result()) Comparer l’ancienne valeur d’un champ ou d’un paramètre (OldValue()) Vérifier la valeur d’un paramètre en sortie (out) (ValueAtReturn())

Les invariants Vérifie une condition sur l’état d’un objet Par exemple : Vérifier qu’un champ ne doit jamais être null. L’invariant est vérifié A la fin de toutes les méthodes d’une classe Après la vérification des post-conditions

Les pré-conditions Les post-conditions Les invariants Démo Les pré-conditions Les post-conditions Les invariants

L’héritage des contrats Tout contrat spécifié dans une méthode virtual, sera automatiquement hérité dans les méthodes redéfinie de la classe dérivée. Il n’est donc pas nécessaire de spécifier explicitement les contrats dans les méthodes redéfinies

Les interfaces Code Contracts permet de spécifier des contrats sur des interfaces Définir une classe abstraite implémentant l’interface et marqué de l’attribut ContractClassFor Marquer l’interface avec l’attribut ContractClass faisant référence à la classe abstraite précédemment créée

Spécification des contrats dans une interface [ContractClass(typeof(ClasseAbstraite))] Interface C# Interface C# Méthode M() Méthode M() Compilation + Code Contracts Rewriter [ContractClassFor(typeof(Interface))] Classe abstraite implémentant l’interface Classe implémentant l’interface Méthode M() + Contrats Méthode M() + Contrats Classe implémentant l’interface Méthode M()

L’héritage des contrats Les contrats dans une interface Démo L’héritage des contrats Les contrats dans une interface

Vérification des contrats à la compilation Peut-être lancé en ligne de commande ou depuis Visual Studio Nécessite l’édition Premium ou Ultimate Utilitaire (cccheck) lancé après la compilation Chaque appel à une méthode contenant des contrats est vérifiée L’appelant de la méthode doit donc « prouver » qu’il respecte bien tous les contrats

Vérification des contrats à la compilation Démo Vérification des contrats à la compilation

Code Contracts sur du code existant Une pré-condition écrite à l’aide d’un if-then-throw peut-être transformé en contrat. Utilisation de la méthode Contract.EndContractBlock() Une pré-condition écrite à l’aide d’un helper peut-être transformé en contrat. Utilisation de l’attribut ContractArgumentValidator

Utilisation de Code Contracts sur du code existant Démo Utilisation de Code Contracts sur du code existant

Assembly de contrats Permet de créer 2 d’assemblies : Un assembly contenant le code sans les contrats Utilisation en production Suppression des contrats => Gain de performances Un assembly contenant uniquement les contrats Pour être utilisé durant le développement Par un intégrateur

A.Contracts.dll Contrats compilés Assembly de contrats A.Contracts.dll Contrats compilés Projet A Code C# + Contrats Compilation + Code Contracts Rewriter Intégrateur A.dll Code C# compilé Production

Séparation des contrats Démo Séparation des contrats

Extensibilité des contrats Possibilité de redéfinir tout ou partie des contrats => Réécriture des méthodes de la classe Contract Possibilité de créer des agrégations de contrats (Abbreviators) Regroupement de plusieurs contrats

Ressources Site officiel de Code Contrats http://research.microsoft.com/en-us/projects/contracts/ Code Contracts Extensions pour Visual Studio http://visualstudiogallery.msdn.microsoft.com/85f0aa38-a8a8-4811-8b86-e7f0b8d8c71b/ Common Compiler Infrastructure http://ccimetadata.codeplex.com/ http://cciast.codeplex.com/ Pex http://research.microsoft.com/en-us/projects/pex/

Questions Gilles TOURREAU - MVP C# Architecte .NET / Formateur Winwise gilles.tourreau@winwise.com http://gilles.tourreau.fr Amine ZEMZEMI - MSP Etudiant / Stagiaire Sup Galilée amine.zemzemi@msp-france.com http://amine-zemzemi.blogspot.com

MSDN et TechNet : l’essentiel des ressources techniques à portée de clic Portail administration et infrastructure pour informaticiens Portail de ressources technique pour développeurs http://technet.com http://msdn.com