Les volutions des techniques de dveloppement Pierre Couzy
- Slides: 92
« 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 1 Mercredis du développement – 4 avril 2007
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 Specific Languages Penser pour la production SDM – SML 2 Mercredis du développement – 4 avril 2007
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 ? 3 Mercredis du développement – 4 avril 2007
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 4 Mercredis du développement – 4 avril 2007
Windows DNA - The Guiding Architecture Windows DNA is Distributed Computing Common object model on all tiers Language neutral “Auto-everything” - services for scalable, reliable, interoperable, distributed applications Tools available today 5 Mercredis du développement – 4 avril 2007
Windows DNA 2000 Microsoft “Babylon” Commerce Server New or Enhanced: • Application Services • Legacy Interoperability • E-commerce (B 2 C) • Data Access/Storage • Development Tools • “Developer Success” • + E-commerce (B 2 B) • + Deployment and Management Microsoft SQLServer Microsoft Biz. Talk Server 6 Mercredis du développement – 4 avril 2007
1 st & 2 nd Generation Web Apps File DB File Web Server Browser 1 -1 correspondence of page to file 7 In-house systems “Dynamic Pages” Mercredis du développement – 4 avril 2007
3 rd Generation Web service Web site Tomorrow, external Web sites become building blocks using XML • Web Services • Megaservices 8 File Web service Web site DB Web Server “The Firewall” Accessing another site today = HTML “screen scraping” or “your architect calls my architect” In-house systems Browser “Dynamic Pages” Mercredis du développement – 4 avril 2007
Combining Web Services Calendar SOAP Mapping (Location) White Pages SOAP Traffic SOAP Alerting 9 Mercredis du développement – 4 avril 2007 Billing Authentication SOAP
Windows 2000 Windows 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 10 Mercredis du développement – 4 avril 2007
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 ? 11 Mercredis du développement – 4 avril 2007
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. . . … 12 Mercredis du développement – 4 avril 2007
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 » 13 Mercredis du développement – 4 avril 2007
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 14 Mercredis du développement – 4 avril 2007
Différenciation retardé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 15 Mercredis du développement – 4 avril 2007
Un exemple : XAML Vous percevez sans doute XAML comme un langage de présentation graphique Explorons un peu son mode de fonctionnement 16 Mercredis du développement – 4 avril 2007
XAML pour les applications Console 17 Mercredis du développement – 4 avril 2007
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 18 Mercredis du développement – 4 avril 2007
“Software Factories” Processus “domainspecific” Outils et langages “domain-specific” Contenu “domainspecific” Automatiser les tâches répétitives et sans valeur ajoutée Amélioration continue 19 Mercredis du développement – 4 avril 2007
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 / Card. Space 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 20 Mercredis du développement – 4 avril 2007
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 21 Mercredis du développement – 4 avril 2007
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 (1 h 00) 22 Mercredis du développement – 4 avril 2007
Un guide interactif Un exemple de conception, en 17 itérations Modifiable Intégré à VS 2005 23 Mercredis du développement – 4 avril 2007
De l’architecture à l’implémentation 24 Mercredis du développement – 4 avril 2007
Prérequis. NET Frame. Work 2. 0 VS 2005 SQL Server 2005 / SQL Express GAT – Guidance Automation Toolkit LAB à part. OU ? : Sur gotdotnet Sur MSDN 25 Mercredis du développement – 4 avril 2007
Software Factories – WCF 26 Mercredis du développement – 4 avril 2007
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 … 27 Mercredis du développement – 4 avril 2007
Ou est la complexité ? 0. . 1 «entity» Credit Card + account. Number : String + card. Type : String + expiration. Date : Long + name. On. Card : String + uid : String + user. Uid : String 1. . * + set. Values ( ) + get. Values ( ) 1 1 «derived» «entity» User + address : String + city : String + country : String + email : String + group. Id : String + password : String + secret. Number : Integer + state : String + status : String + uid : String + user. Id : String + zip : String «entity» Seller 1 «entity» Auction «entity» Buyer 1. . . «entity» Bid + category. Uid : String + amount : Float + credit. Card. Account : String + auction. Uid : String 0. . 1 + credit. Card. Expiration : Long+ buyer. Uid : String + credit. Card. Name : String + cancel. Explanation : String + credit. Card. Type : String + date : Long + end. Time : Long + status : String + item. Uid : String + uid : String + minimum. Bid. Increment : Float + seller. Uid : String + starting. Price : Float + start. Time : Long + status : String + timezone. Uid : String + uid : String + set. Values ( ) + get. Values ( ) ? package com. microsoftpe arlcircle. aucti on. auctionmanag er. business. auc tionmanager ; import java. rmi. Remot e. Exception; 28 Concepts de haut niveau The “Business-IT Gap” Langages d’implémentation de bas niveau Mercredis du développement – 4 avril 2007
Abstraction pour réduire la complexité Abstractions “Domain Specific” C#, Java, etc Assembler, Pcode, CLR IL 29 Abstractions de portée générale Bytecode ou langages machines Mercredis du développement – 4 avril 2007
Des frameworks pour réduire la complexité Frameworks Ex : ASP. Net Abstractions Frameworks “Domain Specific” C#, Java, etc Abstractions de portée générale Assembler, Pcode, CLR IL 30 Bytecode ou langages machines Mercredis du développement – 4 avril 2007
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 Windows. Application 1. Properties { internal class Resources { internal static string Gagné { Res. XFile. Code. Generator get {return Resource. Manager. Get. String( "Gagné", resource. Culture); }} internal static string Perdu { get {return Resource. Manager. Get. String( "Perdu", resource. Culture); }} } private static global: : System. Resources. Resource. Manager resource. Man; private static global: : System. Globalization. Culture. Info resource. Culture; internal static global: : System. Globalization. Culture. Info Culture { get { return resource. Culture; } set {resource. Culture = value; } } Mercredis du développement – 4 avril 2007 31 31
32 Mercredis du développement – 4 avril 2007
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 Mercredis du développement – 4 avril 2007
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 Mercredis du développement – 4 avril 2007
Et si nous. . . nous pouvions prendre un modèle (par exemple un automate d’états finis) et en déduire du code source? « Ajouter State. Machine » à 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 Mercredis du développement – 4 avril 2007
Evolution du processus Fourniture d’outils pour aider les Fourniture d’élémentsutilisateurs stables du framework sous forme compilée Automatisation de l’application de patterns Formalisées issues de l’experience Designers Frameworks DSL SM Templates Designs. State. Machine Patterns Exemple de code solutions State-Pattern Clignottant éteint 36 Allumé Eteint Automates d’états-finis Mercredis du développement – 4 avril 2007
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 Mercredis du développement – 4 avril 2007
Un besoin très fort de langages visuels Shapes Links, ends, style Labels Nesting Layout, routing Corona property label Shape members Corona Base Corona Group playing waiting pause begin running stop R 0. 1 R 0. 7 CR 38 +v 0. 1 R R C Mercredis du développement – 4 avril 2007 C 0 v
Des modèles unifiés ou spécifiques Nous avons besoin de langages pour décrire les points d’extension de nos Frameworks Ces langages peuvent être : Textuels (XML, et autres : exemple ASPX, T 4) R ou 0. 1 R Graphiques () Horizontaux (techniques) 0. 7 CR C Designer de Windows. Form, Class Designer, Workflow State Machine Designer ou Verticaux (métier) DSL Architecture de composants de simulation 39 Mercredis du développement – 4 avril 2007 +v 0. 1 R R C 0 v
De quoi parlons nous DSL = Package de langage VS 2005 Nécessite le VS 2005 SDK (VSIP) Editeurs, toolboxs, etc… Add-Ins Macros Personnalisation utilisateur VS. NET 40 Mercredis du développement – 4 avril 2007 C o u t d ’ i n t é g ra t i o n Niveau d’intégration Packages
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 Mercredis du développement – 4 avril 2007
Non, nos designers actuels ne sont pas sur ce modèle ! DSL Tools for Visual Studio 2005 Distributed Systems Designers Class Designer Your new Designer Microsoft Modeling Platform In Visual Studio 42 Mercredis du développement – 4 avril 2007
Architecture de la plate-forme de modélisation Intégration dans Visual Studio pour les composants (Toolbox, Menus) Shell Framework Composition graphique avec gestion des connexions et Microsoft Modeling Platform paramètres In Visual Studio Validation Framework Gestion des contraintes et assistance à la résolution des conflits 43 Design Surface Framework Mécanisme de génération Template Engine Domain Model Framework Base graphique en mémoire et services associés (transactions, serialisation…) et requêtes Mercredis du développement – 4 avril 2007
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 Mercredis du développement – 4 avril 2007
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 Mercredis du développement – 4 avril 2007
DSL Tools - Concepts Les classes du modèle Model Domain. Property Relation. Ship (reference/embedded/Inheritance) L’apparence graphique Geometry. Shape Compartment. Shape Image. Shape Port. Shape Swimlane (Container vertical) 46 Mercredis du développement – 4 avril 2007
DSL Tools - Concepts Les règles d’intégrités Rules : Déclenchées lors d’une modification du modèle Insert. Rule Delete. Rule Change. Rule … 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 Mercredis du développement – 4 avril 2007
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 (Domain. Class) 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 Mercredis du développement – 4 avril 2007
DSL Tools Les templates de génération Utilise le moteur de transformation de GAT (T 4) 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 Mercredis du développement – 4 avril 2007
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 T 4 pour les générateurs de code Les détails seront vus dans une grosse démo ! 50 Mercredis du développement – 4 avril 2007
Anatomie d’un DSL 3. Correspondance entre les deux. 1. Domain Model 2. Designer Definition 51 Mercredis du développement – 4 avril 2007 4. Code sur mesure (validation) (effets élaborés)
Création d’un Designer avec les DSL Tools Définition du méta. Modèle (Dm) Mapping Dm <-> Dd Génération Code/ Artefact Sérialisation XML spécifique Validation/ Contraintes Notation Graphique (Dd) Comportement spécifique Code généré par les DSL Tools 52 Code personnalisé (Utiliser le VS SDK) Mercredis du développement – 4 avril 2007
Code sur mesure /// <summary> /// When the event / condition / action changes the label is recomputed and /// vice versa /// </summary> [Rule. On(typeof(Transition), Fire. Time = Time. To. Fire. Top. Level. Commit)] public sealed class Transition. Attributes. Changed : Change. Rule { /// <summary> /// This method is called whenever any attribute of a Transition changes. /// It processes the coherence Label = Event + "["+Condition+"] / "+Action /// </summary> /// <param name="e"></param> public override void Element. Attribute. Changed(Element. Attribute. Changed. Event. Args e) { Transition t = e. Model. Element as Transition; // Compute Label when Event changes if (e. Meta. Attribute. Id == Transition. Event. Meta. Attribute. Guid) t. Label = Compute. Summary(e. New. Value as string, t. Condition, t. Action); Compute Label. Enabled)] when Condition changes [Validation. State( Validation. State. Enabled)] Validation. State(// Validation. State else if (e. Meta. Attribute. Id == Transition. Condition. Meta. Attribute. Guid) public partial class State t. Label = Compute. Summary(t. Event, e. New. Value as string, t. Action); { // Compute Label when Action changes /// <summary> else if (e. Meta. Attribute. Id == Transition. Action. Meta. Attribute. Guid) /// A final state should not have outgoing transitions t. Label = Compute. Summary(t. Event, t. Condition, e. New. Value as string); /// </summary> // Compute Event, Condition, Action when Label changes /// <param name="context"></param> else if (e. Meta. Attribute. Id Transition. Label. Meta. Attribute. Guid) [Validation. Method (Validation. Category. Open | == Validation. Category. Save | Validation. Category. Menu)] [Validation. Method( Validation. Category. Menu)] { private void Validate. Final. State. Has. No. Outgoing. Transitions(Validation. Context context) System. Text. Regular. Expressions. Match match = event. Label. Reg. Ex. Match(e. New. Value as string); { if (match. Success) Transition[] transitions = Get. Outgoing. Transitions(); { if ((Kind == State. Kind. Final) && (transitions. Length > 0)) State. Kind t. Event = match. Groups["Event. Group" ]. Value. Trim(); match. Groups["Event. Group"]. Value. Trim(); { t. Condition = match. Groups["Condition" ]. Value. Trim(); match. Groups["Condition"]. Value. Trim(); string error = string. Format(System. Globalization. Culture. Info. Current. UICulture, string action. With. Slash = match. Groups["Action. Group"]. Value. Trim(); match. Groups[ Domain. Model_Resource. Final. Cannot. Have. Outgoing. Transitions, Name); Domain. Model_Resource if (action. With. Slash. Starts. With("/" "/")) )) (action. With. Slash. Starts. With( context. Log. Error(error, "State. Machines 42", transitions); t. Action = action. With. Slash. Substring(1). Trim. Start(); } else } t. Action = action. With. Slash; … } } } Mercredis du développement – 4 avril 2007 Règles de cohérence du modèle Règles de validation du modèle 53
Générateur de code écrit en T 4 (Text Templating Transformation) /// <summary> /// Method to clean up the resources(such as timers for example) allocated by the state. /// </summary> /// <param name="disposing">Is the state disposing</param> /// <param name="state. Machine">State machine owning this state</param> /// <param name="driven">Driven interface</param> public virtual void Dispose(bool disposing, <#=state. Machine. Name #> state. Machine, <#=driven. Interface #> driven) { } <#=state. Machine. Name#> <#=driven. Interface#> } <# /// <summary> /// Declaration of in the package providing the Simulation code generator foreach(State state State. Machine. All. States) foreach /// </summary> { [Provide. Code. Generator( (typeof( (State. Machines. Generator), Provide. Code. Generator typeof State. Machines. Generator "State. Machines. Generator", // Find base class (class implementing Parent. State) ), "State. Machines. Generator", "Custom tool that generates C# files based on. State. Machine files", true)] string base. Name; public sealed partial class State. Machines. Package {} if (state. Parent. State == State. Machine) base. Name = base. State. Name; [ Guid( )] Guid("9 DA 6 F 053 -E 5 B 9 -4955 -A 6 AE-89 FB 5505 E 8 E 6")] "9 DA 6 F 053 -E 5 B 9 -4955 -A 6 AE-89 FB 5505 E 8 E 6" else public class State. Machines. Generator : Templated. Code. Generator base. Name = state. Parent. State. Get. Full. Name(); { On peut en faire un Custom Tool ! protected override byte[] Generate. Code(string input. File. Name, string input. File. Content) //{ List of events Dictionary<string, List<Transition>> transitions. From. State. By. Event. Signature = state. Get. Outgoing. Transitions. Grouped. By. Event // Replace the supplied file contents with the template we want to run #> input. File. Content = ASCIIEncoding. UTF 8. Get. String(Properties. Resources. State. Machines. Report); ASCIIEncoding. UTF 8. Get. String(Properties. Resources /// <summary> // Substitute the name of the current model file into the template. /// <#=state. Comment#> #> File. Info(input. File. Name); <#= File. Info fi = new File. Info(input. File. Name); /// </summary> input. File. Content = input. File. Content. Replace(@"%MODELFILENAME% ", fi. Name); input. File. Content. Replace(@"%MODELFILENAME%" classinput. File. Content <#=state. Get. Full. Name() #> : <#=base. Name #> <#=state. Get. Full. Name()#> <#=base. Name#> = input. File. Content. Replace(@"File. Name. Space", , this. File. Name. Space); input. File. Content. Replace( this. File. Name. Space); { // Now just delegate the rest of the work to the base class <# byte[] data = base. Generate. Code(input. File. Name, input. File. Content); foreach( (string transition. Event. Signature transitions. From. State. By. Event. Signature. Keys) foreach byte[] [] ascii = new byte[data. Length - 3]; byte[data. Length in { Array. Copy(data, 3, ascii, 0, data. Length - 3); Transition t = transitions. By. Event. Signature[transition. Event. Signature][0]; return ascii; } } 54 Mercredis du développement – 4 avril 2007
Avec un DSL bien fait … Nous sommes guidés au fur et à mesure Le modèle est validé à tous moments Le modèle est cohérent (règles de cohérence) Le code est généré à partir du modèle Le code généré compile forcément ! Il y a des possibilités illimitées d’interactions avec Visual Studio : Editeurs spécialisés pour les propriétés Rétro-ingénierie Drag & Drop Debuggage au niveau du modèle Etc … Synchronisation modèle / code, refactoring, etc … 55 Mercredis du développement – 4 avril 2007
Mon 1 er DSL avec les DSL Tools 56 Mercredis du développement – 4 avril 2007
Passer à l’ère de l’industrialisation : une utopie ? Echecs des projets : encore et toujours la même histoire Spécifications incomplètes, mauvaise gestion des besoins Manque de communication, information disséminée Manque de réactivité face aux changements Outils trop complexes (chers) Pas de gestion du risque Ce qui ne marche pas La méthode pour la méthode La méthode sans outils et les outils sans méthode Les méthodes et les outils sans les hommes Toujours au même point 30 ans après 30 ans, c’est court pour industrialiser Le facteur humain L’artisanal, c’est pas si mal ! Maintenant il va falloir réussir L’alignement de l’IT sur les exigences business Mondialisation, pression plus forte, nature des projets… 57 Mercredis du développement – 4 avril 2007
Cycle de vie des applications - SDLC Définition des besoins, conception, développement, tests et déploiement. On boucle… C’est bien ça ? La méthode en support du cycle Unified Process Les méthodes agiles (extreme programming) CMMI : un référentiel de bonnes pratiques La software factory, support de l’industrialisation Combiner méthodes et outils au services des projets et des hommes Automatiser le processus sur l’ensemble du cycle de vie S’adapter au rôle de chacun Fournir un workflow adaptable Piloter avec des tableaux de bord Le rôle clé du référentiel Est-ce possible ? 58 Mercredis du développement – 4 avril 2007
Comment Microsoft s’est attaqué au problème : outiller les processus, prendre en compte les besoins concrets de chaque acteur. Industrialisation pragmatique Démocratiser Améliorer la productivité Réduire le complexité Automatiser les tâches à faible valeur ajoutée Mise en œuvre de la SF par étapes Ne pas enfermer l’utilisateur dans une méthode : 2 socles méthodologiques MSF for agile Software Development MSF for CMMI Process Improvment Implémenter sa propre méthode Approche UML/UP vs DSL (Domain Specific Language) 59 Mercredis du développement – 4 avril 2007
Observations Les problèmes opérationnels viennent souvent de décision prise au moment du design. Gap énorme entre le niveau de définition d’une tâche et sa réalisation. La réutilisation de meilleures pratiques et ou d’outils est inexistante. Spécialisation des opérateurs qui doivent connaitre parfaitement les applications. Les opérateurs sont souvent le point d’intégration. 60 Mercredis du développement – 4 avril 2007
Diagnostic Besoin d’adresser cette complexité le long du cycle de vie: développement, déploiement, administration avec: Des outils de développement permettant de de décrire un système complet: topologie, configuration, administration, Qos, sécurité… Des systèmes d’exploitation manageant globalement des ressources du datacenter. Des outils de management élevant le niveau d’abstraction et d’automatisation. 61 Mercredis du développement – 4 avril 2007
Complexité le long du cycle de vie des systèmes Comment décrire et Comment décrire les besoins opérationnels? appliquer les politiques opérationnelles? System Definition Model Développement Opérations Comment déployer et gérer des systèmes distribués? 62 Mercredis du développement – 4 avril 2007
System Definition Model / SML SDM modélise un système décrivant sa structure et toutes les informations pertinentes à son déploiement et à son administration Plan/Design Development Testing Deployment Applications Structure: Composants et relations Contraintes Health model Application Hosts Network Topology & Operating Systems Tâches opérationnelles Settings 63 Hardware Mercredis du développement – 4 avril 2007 Operations
Cycle de vie des solutions Développer une application intégrant les standards IT de gestion des opérations Gérer le SI dynamiquement Job Merc. Stage SQL Cache Instrumentation HTTP Connaissance Opérations Stratégie datacenter System Definition Model 64 Shuttle Feed Store DSS FTP Déployer automatiquement les logiciels et les ressources SERVEURS STOCKAGE Mercredis du développement – 4 avril 2007 RESEAU
A quoi sert SDM / SML ? Manipule le modèle et pas les composants réels. Modèle dynamique, actif sur le cycle de vie du système DSI simplifie le développement, déploiement et l’administration de systèmes Validation en phase de design Intégration du développement et des opérations. Permet de développer des composants administrables. Détecte les problèmes en amont Déploiement automatisé Allocation des ressources (matériel et logiciel) Configuration et Validation Administration des Systèmes Définition de l’état cible Monitoring amélioré Automatisation des opérations 65 Mercredis du développement – 4 avril 2007
SDM / SML : Exemple <component. Type name=”my. Web. App” base. Type=“Web Application”> <settings> <setting name=“port. Number" type="xsd: int" /> </settings> <port name=”my. Web” type=”web. Server”> <value name=”url”>http: //$(host. server)/my. Web. App</value> </port> <port name=”my. SQL” type=”SQLServer. Client”> <value name=”encrypted”>false</value> </ports> <resource name=”myapp. dll” type=”file”> <value name=”name”>myapp. dll</value> <value name=”source. Path”>$(dir)myapp. dll</value> </resource> <resource name=”my. Web. Settings” type=”Web Settings”> <value name=”Security”>Certificate</value> </resources> </component. Type> 66 Mercredis du développement – 4 avril 2007
SDM / SML dans Visual Studio 2005 Développeurs App Architectes Contraintes de Déploiement et besoins opérationnels Contraintes et Politiques du datacenter Validation du modèle Architectes IT Modèles SDM 67 Mercredis du développement – 4 avril 2007 Erreurs
Validation lors de la conception Décrit la configuration du Data center: topologie, configuration, et politiques Design du data center Architectes 68 SDM Architecture logique de l’application SDM Design de l’application Architectes / Développeurs Mercredis du développement – 4 avril 2007 Vérification de la configuration du data center en vue du déploiement de l’application Modèle de déploiement Développeurs/Opérations
Application Designer Concepteur SOA Definition d’un port 69 Mercredis du développement – 4 avril 2007
Logical Infrastructure Designer Associer les services à l’infrastructure logique Validation de l’architecture par rapport aux contraintes opérationnelles 70 Mercredis du développement – 4 avril 2007
SDM / SML pour le déploiement SDM contient toutes les informations requises pour le déploiement Applications et Data Centers Différentes échelles Différents environments Dynamic Data Center SDM représente la configuration du data center Provision automatique des machines, des réseaux et du stockage Virtualisations des ressources 71 Mercredis du développement – 4 avril 2007
SDM / SML pour l’administration Elève le niveau d’abstraction Gère un service pas un ensemble de composants Vue transparente du système Incidents présentés dans le contexte d’un service Mais possibilité de descendre dans les couches Automatisation et réutilisation des processus opérationnels, meilleures pratiques, configuration… Language de base pour l’automatisation: context, invariant… Réutilisation: Occurrence, deploiement, application 72 Mercredis du développement – 4 avril 2007
Et nous dans tout ça ? Une spécialisation progressive Un rôle d’architecte technique Un rôle d’intégrateur Une montée en compétence inévitable La modélisation rejoint les projets L’intégration recouvre plus de cibles Des outils pour nous aider À chaque catégorie 73 Mercredis du développement – 4 avril 2007
Entity Data Model 74 Mercredis du développement – 4 avril 2007
Buts de conception « Sauter » le modèle relationnel physique en base Travailler directement sur des entités Via un modèle de domaine EDM : Entity Data Model Modèle relationnel étendu Un langage de requête associé Un moteur de mapping Des outils de conception 75 Mercredis du développement – 4 avril 2007
Entity Data Model Entity Framework / entity SQL Un nouveau niveau d’indirection ADO. Net Une passerelle légère vers. Net Linq Une représentation alternative dans. Net Outils Modeleur de domaine Mapper … 76 Mercredis du développement – 4 avril 2007
Aujourd’hui 77 Mercredis du développement – 4 avril 2007
A terme 78 Mercredis du développement – 4 avril 2007
EDM – Entity Data (domain ? ) Model 81 Mercredis du développement – 4 avril 2007
Mapping – EDM vers base 82 Mercredis du développement – 4 avril 2007
Mapping – EDM vers base La représentation en base suit les contraintes propres à la base, même si elles ne sont pas naturelles dans le domaine sous -jacent 83 Mercredis du développement – 4 avril 2007
Mapping – EDM vers code 84 Mercredis du développement – 4 avril 2007
Manipulation EDM : e. SQL Un dialecte manipulant le modèle de domaine et non sa représentation en base Un moteur faisant le lien entre les deux Un provider pour ADO. Net 85 Mercredis du développement – 4 avril 2007
e. SQL – t. SQL ? 86 Mercredis du développement – 4 avril 2007
EDM – manipulation par Code 87 Mercredis du développement – 4 avril 2007
LINQ : s’abstraire de e. SQL ? Peut aussi s’écrire 88 Mercredis du développement – 4 avril 2007
Architecture générale d’Entity Framework 89 Mercredis du développement – 4 avril 2007
La réponse est oui. Mais quelle était la question ? 90 Mercredis du développement – 4 avril 2007
91 Mercredis du développement – 4 avril 2007
FAQ Combien couteront les DSLTools ? Ils seront gratuits, normalement dans le VS SDK. Est-ce qu’on est obligé d’héberger nos DSL dans VS 2005 ? Oui, pour le moment (sauf version Express) A terme, on pourra se procurer un VS « vide » Puis, on pourra héberger les designers hors de VS (V 2 des DSLTools) Est-ce qu’on ne pourrait pas faire la même chose en UML ? C’était ce que nous faisions avant, mais : on a des compartiments spécifiques du métier pour le DSL « Simulation Architecture » et le DSL « State Machine » comporte la notion de « Délégation à une entité de simulation » Les deux connaissent le Framework et interagissent avec les assemblages de modèles. Tout est intégré et synchronisé dans le processus de production de code. 92 Mercredis du développement – 4 avril 2007
Pour en savoir plus … Sites Web http: //lab. msdn. microsoft. com/teamsystem/workshop/DSLTools Download des DSLTools (15 mars 2005 pour le moment), et lien pour télécharger le VSIP Beta 1 (Disponibles pour les MSDN) Tutoriaux (Walkthroughs) Liens vers les blogs de l’équipe DSL Nouvelle version attendue rapidement pour VS. NET 2005 Beta 2 http: //www. modelisoft. com/dmd 2 dd. aspx MDM 2 DD helper tool permettant de créer des Shapes et Connectors par défaut dans le. dd, correspondant à des concepts et relationships du. dmd Forum http: //forums. microsoft. com/msdn/Show. Forum. aspx? Forum. ID=61 Vient d’ouvrir pour la Beta 2 Succède à un forum privé qui va être fermé. 93 Mercredis du développement – 4 avril 2007
94 Mercredis du développement – 4 avril 2007
- Pierre couzy
- Les fonctions techniques et les solutions techniques
- Dveloppement durable
- Des des des
- Les valeurs des modes verbaux
- Observe les membres de la famille de pierre
- Lieux de fabrication des objets techniques
- Gestion des techniques urbaines
- La diffusion des idées des lumières
- Il existe des personnes qui sont des lumières pour tous
- Affiche propagande guerre froide
- Diversification des espaces et des acteurs de la production
- Le volume d'un corps
- Volume correspondant à une division
- Cartographie des risques gestion des stocks
- Je t'offrirai des fleurs et des nappes en couleurs
- Robin des bois des alpes
- Des attack
- Budget des ventes
- Plan publi promotionnel
- Outils de mémorisation
- Formation validation naomi feil
- Les chansons des roses translation
- Limites de l'école des relations humaines
- أنواع المحاليل
- Les personnes sont des cadeaux
- Les personnes sont des cadeaux
- Fleuves des enfers grecs
- Les étapes de fixation des prix
- Le la les and l' mean in french
- Les dérives du pétrole sont des matériaux synthétiques
- Démarche de soins définition
- Entree main dessert
- Quelles sont les etapes du regroupement des armeniens
- Le laboureur et ses enfants
- échange de substances dissoutes
- Loi des exposants
- Les causes des conflits interpersonnels
- Les amis sont des anges qui nous soulèvent
- Les dynamiques territoriales des etats unis
- Les amis sont des compagnons de voyage
- Types de conflits
- En croyant à des fleurs souvent on les fait naître
- Les sources des droits subjectifs
- Le comparatif de bon
- Que mange une coccinelle
- Parts d una flor
- Les lettres et les sons
- Les 10 volcans les plus dangereux du monde
- La ficelle extrait 2
- Les constellations les plus connues
- Remplacer les mots soulignes par les pronoms convenables
- Les parts de les plantes
- Les mots variables et invariables
- Les mots variable
- Trouvez les réponses. écrivez-les en chiffres (numbers).
- Grand corps malade histoire d'amour
- En quittant cette terre
- Preactionneurs
- Les trois obstacles et les quatre démons
- Les promesses de dieu ne failliront jamais lyrics
- Podc management
- J'aime les bouches sans venin les cœurs sans stratagème
- Les mots qu'on ne dit pas sont les fleurs du silence
- Organisateur textuel d'introduction
- Haribo c'est beau la vie pour les grand et les petit
- Texte argumentatif et expressif
- Les voitures les plus rapides du monde
- Pierre elliott trudeau high school courses
- Wybitny astronom i fizyk z pizy
- Pierre robin
- Construction pyramide
- Circonscription saint pierre 1
- Pierre de coubertin and plato
- Pierre thuillier la trastienda del sabio resumen
- Queensmount school bournemouth
- La pléiade pierre de ronsard
- Biografia de pierre ronsard
- Pierre de fermat family
- Afermat
- Habitus ne demek
- Pierre bourdieu distinction
- Mort pierre bachelet
- Pierre anschutz
- Broca neuropsicologia
- Verwendung salz
- Pierre yared
- Jean-pierre bely
- Jean-pierre bely
- Jean pierre bravo zapata
- Jean pierre augier sculpteur
- Jean pierre paoli
- Formation pierre vermersch