1 / 92

« Les évolutions des techniques de développement »

« Les évolutions des techniques de développement ». Pierre Couzy piercou@microsoft.com Architecte en systèmes d’information DPE – Division Plateforme & Ecosystème Microsoft France. Agenda. Un petit regard en arrière Différenciation retardée dans les langages XAML

johana
Télécharger la présentation

« Les évolutions des techniques de développement »

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. « Les évolutions des techniques de développement » Pierre Couzy piercou@microsoft.com Architecte en systèmes d’information DPE – Division Plateforme & Ecosystème Microsoft France

  2. Agenda • Un petit regard en arrière • Différenciation retardée dans les langages • XAML • Capturer le cadre de développement • Les software factories • Remonter d’un niveau d’abstraction • Domain SpecificLanguages • Penser pour la production • SDM – SML

  3. Back to the future … • Un petit coup d’œil dans le rétro ? • 1994-2004 : le règne de COM/VB/ASP • Des buts de conception • Des promesses • Quel résultat ? • 2002- ???? : le règne de .Net • Des buts de conception • Des promesses • Quel résultat ?

  4. Un peu d’archéologie • 1989 • Le standard ANSI C est enfin adopté • Fondation de l’OMG (Object Management Group) • 1990 • Visual Basic • Python • 1991 • Premiers travaux internes par Sun sur Java (JDK 1.0 : 1996. RMI : 1997) • 1992 • CORBA 1.1 • 1993 • COM • 1994 • Premier draft ANSI C++ (finalisé en 1998) • UML

  5. Windows DNA - The Guiding ArchitectureWindows DNA is Distributed Computing • Common object model on all tiers • Language neutral • “Auto-everything” - services for scalable, reliable, interoperable, distributed applications • Tools available today

  6. Microsoft Microsoft “Babylon” Commerce Server Server Microsoft SQLServer Microsoft BizTalk Server Windows DNA 2000 • New or Enhanced: • Application Services • Legacy Interoperability • E-commerce (B2C) • Data Access/Storage • Development Tools • “Developer Success” • + E-commerce (B2B) • + Deployment and Management

  7. File File DB In-house systems Web Server Browser Browser “Dynamic Pages” 1st & 2nd Generation Web Apps Web Server 1-1 correspondence of page to file

  8. File Web service Web service Web service DB In-house systems Accessing another site today = HTML “screen scraping” or “your architect calls my architect” Web site Web site Web site Web Server • Tomorrow, external Web sites become building blocks using XML • Web Services • Megaservices “The Firewall” Browser “Dynamic Pages” 3rd Generation Web

  9. SOAP SOAP SOAP SOAP Billing Authentication SOAP SOAP White Pages Mapping (Location) Calendar Alerting Traffic Combining Web Services

  10. Windows 2000Windows DNA Application Services • “Built-in” integrated applications server for building distributed Web applications • IIS 5.0 - high performance web server • Active Server Pages • COM+ component services • Transactions • Message Queue and Queued Components • Role-based security • Network Load Balancing • High performance XML support

  11. Après ce flashback • Qu’est-ce qui a changé dans la vision MS ? • Quels impacts sur votre travail ? • Quelles sont nos nouvelles promesses de campagne ?

  12. Développer des logiciels, c’est complexe ! • Comprendre les utilisateurs • Définir, modéliser.. • Planifier, organiser.. • Développer, tester.. • Déployer et maintenir • Maîtriser les délais, les coûts, les risques... • …

  13. Le développement “artisanal”, ça a du bon ! • Du boulot ! • Des outils standards • Des processus “simplifiés” • Et la maintenance ? • Pas de capitalisation • Pas de réutilisation • Pragmatique Dépassements, Défauts, Sécurité, Pannes… Mais, comme le dit la pub : « l’artisanat est la plus grande entreprise de France »

  14. Productivité & améliorations continue • Le modèle industriel • Economie d’échelle • Pour automatiser et améliorer la production • Le concept de “Boîtes noires” • Produire des modèles et des dérivés • Exemple : CD & DVD • Mais mal adapté à l’industrie logicielle • Eventuellement progiciel

  15. Différenciationretardée • Economie de “périmètre” ou de “surface” • Réutilisation des principes de conception et des composants • Des processus génériques et connus, modélisables • Personnalisation possible au final, paramétrable Il faut seulement définir ce qui est spécifique à chaque système

  16. Un exemple : XAML • Vous percevez sans doute XAML comme un langage de présentation graphique • Explorons un peu son mode de fonctionnement

  17. Démo XAML pour les applications Console

  18. Les profils XAML • XOML : pour le workflow • WPF : pour les interfaces utilisateur • XPS : pour les documents • … • On associe à chaque besoin • Un tronc commun de développement • Un ensemble de spécialisations

  19. “Software Factories” • Processus “domain-specific” • Outils et langages “domain-specific” • Contenu “domain-specific” • Automatiser les tâches répétitives et sans valeur ajoutée • Amélioration continue

  20. Présentation & Challenges • Un ensemble de pratiques « éprouvées » , d’outils, de code source, et de guides d’architecture pour concevoir des applications distribuées • Des challenges : • Suivre l’évolution des technologies • Migration WS, WSE vers .NET 3.0 • Supporter WCF / WF / CardSpace • Pour les architectes & les développeurs • Documentation écrite • « guidance packages » pour dialoguer avec VS 2005 • Une implémentation de référence (Global Bank) • Bénéfices : • Amélioration de la qualité • Être prédictible • Augmenter la productivité • Flexibilité : paramétrage

  21. Service Software Factory • Une initiative du groupe Pattern & practises • Des assistants dans Visual Studio 2005 pour définir les caractéristiques d’un service et son implémentation : Sécurité, déploiement, contexte • Patterns de conception des services • Des exemples d’implémentation • Utilise le GAT (Guidance Automation Toolkit) • Utilisation des tests unitaires • Intégration avec Enterprise Library • Patterns WCF • La version finale du Service BAT

  22. Prise en main • Un guide complet de prise en mains • Un tutorial complet (HOL) en 10 étapes sur un scénario réaliste • Création de la solution et de sa structure • Conception des types de données • Conception des types de messages • Définition des opérations • Création des entités métiers • Passer des messages aux entités métiers • Création des accès aux données (CRUD) • Création d’un référentiel de classes d’accès aux données • Invoquer la couche d’accès aux données • Connecter un client et activer ses services • Une vidéo (1h00)

  23. Un guide interactif • Un exemple de conception, en 17 itérations • Modifiable • Intégré à VS 2005

  24. De l’architecture à l’implémentation

  25. Prérequis • .NET FrameWork 2.0 • VS 2005 • SQL Server 2005 / SQL Express • GAT – Guidance Automation Toolkit • LAB à part. • OU ? : • Sur gotdotnet • Sur MSDN

  26. Démo Software Factories – WCF

  27. Software Factories • En développement intensif chez Microsoft • .. ne mettez pas la charrue avant les bœufs • D’abord une expérimentation • Puis la collecte des bonnes pratiques • Puis la documentation associée • .. Et enfin la capitalisation • Il nous reste un problème à régler …

  28. Ou est la complexité ? «entity» 0..1 «entity» User Credit Card 1 + address : String + accountNumber : String + city : String + cardType : String Concepts de haut niveau + country : String + expirationDate : Long + email : String + nameOnCard : String + groupId : String + uid : String + password : String + userUid : String + secretNumber : Integer 1..* + state : String + setValues ( ) + status : String + getValues ( ) + uid : String 1 + userId : String «derived» + zip : String «entity» «entity» Seller Buyer 1 1... «entity» «entity» Auction Bid + categoryUid : String + amount : Float + creditCardAccount : String + auctionUid : String + creditCardExpiration : Long + buyerUid : String 0..1 + creditCardName : String + cancelExplanation : String + creditCardType : String + date : Long + endTime : Long + status : String + itemUid : String + uid : String + minimumBidIncrement : Float + sellerUid : String + startingPrice : Float + startTime : Long + status : String + timezoneUid : String + uid : String + setValues ( ) + getValues ( ) ? The “Business-IT Gap” Langages d’implémentation de bas niveau package com.microsoftpearlcircle.auction.auctionmanager.business.auctionmanager; import java.rmi.RemoteException;

  29. Abstractions “Domain Specific” Abstractions de portée générale C#, Java, etc Abstraction pour réduire la complexité Bytecode ou langages machines Assembler, Pcode, CLR IL

  30. Abstractions “Domain Specific” Frameworks “Domain Specific” Frameworks Ex : ASP.Net Des frameworks pour réduire la complexité Abstractions de portée générale C#, Java, etc Bytecode ou langages machines Assembler, Pcode, CLR IL

  31. Manipulations de concepts dans Visual Studio 2005 • L’exemple des fichiers de settings et ressources Persistance dans des fichiers XML (.settings, .resources) Resources.Designer.cs namespace WindowsApplication1.Properties { internal class Resources { internal static string Gagné { get {return ResourceManager.GetString("Gagné", resourceCulture);}} internal static string Perdu { get {return ResourceManager.GetString("Perdu", resourceCulture);}} } private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; internal static global::System.Globalization.CultureInfo Culture { get {return resourceCulture;} set {resourceCulture = value;} } internal static global::System.Resources.ResourceManager ResourceManager { get {if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsApplication1.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } } ResXFileCodeGenerator

  32. Le mécanisme … • Nous manipulons des ressources ou des paramètres de configuration de manière naturelle. • Des Custom Tools génèrent du code basé sur un Framework (.NET 2.0) pour y accéder en runtime (masquant l’utilisation du Framework) • System.Resources et System.Globalization • System.Configuration • Ce mécanisme est unidirectionnel.

  33. De la Manipulation bi-directionnelle de concepts • Pour les Windows.Forms c’est comme pour les ressources ou settings mais • L’éditeur est graphique • la sérialisation s’effectue dans le code • c’est built-in (pas de Custom Tool) • Même chose pour le Class diagram • La notion de classe partial est très intéressante pour les générateurs de code

  34. Et si nous ... • ... nous pouvions • prendre un modèle (par exemple un automate d’états finis) et en déduire du code source? • « Ajouter StateMachine » à un projet Visual Studio. • C’est possible • car Visual Studio 2005 est extensible • Mais il nous faut d’abord formaliser nos solutions à nos problèmes répétitifs

  35. solutions Patterns Templates Frameworks Designers Evolution du processus Fourniture d’outils pour aider les utilisateurs du framework Fourniture d’éléments stables sous forme compilée DSL SM Automatisation de l’application de patterns Designs.StateMachine Formalisées issues de l’experience Exemple de code State-Pattern Clignottant Eteint éteint Allumé Automates d’états-finis

  36. a Les Roles et les Artefacts • Les « architectes » sélectionnent des procédures et conseils et créent deux types d’artefacts : • un Framework • Une codification des conseils (assistant, designer graphique ou non...) • Les « développeurs » utilisent un modèle pour implémenter une solution plus vite, et de meilleure qualité

  37. Shape Corona property label Base Group Corona Corona +v 0.1R R R 0.1R C C 0.7CR 0v playing waiting pause begin running stop Un besoin très fort de langages visuels • Shapes • Links, ends, style • Labels • Nesting • Layout, routing members

  38. a +v 0.1R R R 0.1R C C 0.7CR 0v Des modèles unifiés ou spécifiques • Nous avons besoin de langages pour décrire les pointsd’extension de nos Frameworks • Ces langages peuvent être : • Textuels (XML, et autres : exemple ASPX, T4) ou • Graphiques() • Horizontaux (techniques) • Designer de Windows.Form, Class Designer, Workflow • State Machine Designer ou • Verticaux (métier) • DSL Architecture de composants de simulation

  39. Packages Niveau d’intégration Cout d’intégration Add-Ins Macros Personnalisation utilisateur VS.NET De quoi parlons nous • DSL = Package de langage VS 2005 • Nécessite le VS 2005 SDK (VSIP) Editeurs, toolboxs, etc…

  40. Domain Specific Languages et les DSL Tools • Langages visuels… • Pour comprendre ou définir les besoins • Pour concevoir un designer spécialisé • Pour générer une partie de la solution • Pour implémenter des “design patterns” ciblant des frameworks et des architectures spécifiques • Pour personnaliser vos composants et vos applications • Pour visualiser les sytèmes existants

  41. Non, nos designers actuels ne sont pas sur ce modèle ! DSL Tools for Visual Studio Distributed Systems Designers Class Designer Your new Designer Visual Studio 2005 Microsoft Modeling Platform In Visual Studio

  42. Architecture de la plate-forme de modélisation Intégration dans Visual Studio pour les composants (Toolbox, Menus) Composition graphique avec gestion des connexions et paramètres Mécanisme de génération Microsoft Modeling Platform In Visual Studio Shell Frame- work Validation Frame- work Design Surface Framework Template Engine Domain Model Framework Gestion des contraintes et assistance à la résolution des conflits Base graphique en mémoire et services associés (transactions, serialisation…) et requêtes

  43. DSL Tools • DSLT permet de définir un langage comprenant : • Un designer graphique • Un modèle persistable en Xml • Un mécanisme de génération de code • Il a été écrit avec… lui-même. • Version 1 disponible depuis Septembre • Fournit avec le Windows SDK • Tout (en anglais) sur http://msdn.microsoft.com/vstudio/DSLTools/

  44. DSL Tools • La définition d’un langage consiste à définir : • Les classes du modèle avec • Leurs relations • Leurs propriétés • Leurs apparences graphiques • Les règles d’intégrités et de validation du modèle • La structure du document persisté • Les templates de génération • Le choix du langage est libre, vous pouvez : • Utiliser un langage existant et le spécialiser • Ex: diagramme de classes UML spécifique au C# • Créer un nouveau langage spécifique à un besoin • Ex: Modélisation d’un framework métier

  45. DSL Tools - Concepts • Les classes du modèle • Model • DomainModel • DomainProperty • RelationShip (reference/embedded/Inheritance) • L’apparence graphique • GeometryShape • CompartmentShape • ImageShape • PortShape • Swimlane (Container vertical)

  46. DSL Tools - Concepts • Les règles d’intégrités • Rules : Déclenchées lors d’une modification du modèle • InsertRule • DeleteRule • ChangeRule • … • Evénements de notification • Abonnements sur des propriétés • Notion de transaction • Toutes les modifications se font au sein d’une transaction permettant ainsi le mécanisme du undo/redo.

  47. DSL Tools - Concepts • Apparence graphique : • Les ‘Shapes’ • Contiennent des décorateurs ayant des comportements basés sur la valeur d’une propriété • Sont associés à des classes du modèle (DomainClass) • Personnalisation de la toolbox de Visual Studio • Permet de définir les items pour faire du drag’n drop • Personnalisation de la fenêtre d’exploration du modèle permettant de naviguer à travers sa structure.

  48. DSL Tools • Les templates de génération • Utilise le moteur de transformation de GAT (T4) • Contient des balises <# #> • Manipule le modèle • S’exécute via les « customs tools » par défaut • Peut générer n’importe quoi • Code • Html • XML • …

  49. Comment créer un DSL ? • Un type de projet dans VS 2005 (choix d’un template) • Modification du Domain Model (méta-modèle) • Mise à jour de la Designer Definition (notation graphique) • Ecriture de code personnalisé pour la validation … et les aspects graphiques avancés, l’interaction avec VS • Code T4 pour les générateurs de code • Les détails seront vus dans une grosse démo !

More Related