les volutions des techniques de d veloppement l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
« Les évolutions des techniques de développement » PowerPoint Presentation
Download Presentation
« Les évolutions des techniques de développement »

Loading in 2 Seconds...

play fullscreen
1 / 92

« Les évolutions des techniques de développement » - PowerPoint PPT Presentation


  • 237 Views
  • Uploaded on

« 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '« Les évolutions des techniques de développement »' - johana


Download Now 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
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
back to the future
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 ?
un peu d arch ologie
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
windows dna the guiding architecture windows dna is distributed computing
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
windows dna 2000

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
1 st 2 nd generation web apps

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

3rd generation web

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
combining web services

SOAP

SOAP

SOAP

SOAP

Billing

Authentication

SOAP

SOAP

White Pages

Mapping (Location)

Calendar

Alerting

Traffic

Combining Web Services
windows 2000 windows dna application services
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
apr s ce flashback
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 ?
d velopper des logiciels c est complexe
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...
le d veloppement artisanal a a du bon
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 »

productivit am liorations continue
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
diff renciation retard e
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

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

Démo

XAML pour les applications Console

les profils xaml
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
software factories
“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
pr sentation challenges
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
service software factory
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
prise en main
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)
un guide interactif
Un guide interactif
  • Un exemple de conception, en 17 itérations
  • Modifiable
  • Intégré à VS 2005
pr requis
Prérequis
  • .NET FrameWork 2.0
  • VS 2005
  • SQL Server 2005 / SQL Express
  • GAT – Guidance Automation Toolkit
  • LAB à part.
  • OU ? :
    • Sur gotdotnet
    • Sur MSDN
slide26

Démo

Software Factories – WCF

software factories27
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 …
ou est la complexit
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;

abstraction pour r duire la complexit

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

des frameworks pour r duire la complexit

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

manipulations de concepts dans visual studio 2005
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

le m canisme
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.
de la manipulation bi directionnelle de concepts
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
et si nous
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
evolution du processus

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

les roles et les artefacts
aLes 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é
un besoin tr s fort de langages visuels

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

des mod les unifi s ou sp cifiques
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
de quoi parlons nous

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…

domain specific languages et les dsl tools
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
non nos designers actuels ne sont pas sur ce mod le
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

architecture de la plate forme de mod lisation
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

dsl tools
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/
dsl tools45
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
dsl tools concepts
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)
dsl tools concepts47
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.
dsl tools concepts48
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.
dsl tools49
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
comment cr er un dsl
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 !
anatomie d un dsl
Anatomie d’un DSL

3. Correspondance entre les deux.

1. Domain Model

2. Designer Definition

4. Code sur mesure (validation)

(effets élaborés)

cr ation d un designer avec les dsl tools

Génération

Code/

Artefact

Définition

du méta-

Modèle

(Dm)

Sérialisation

XML

spécifique

Mapping

Dm <-> Dd

Validation/

Contraintes

Notation

Graphique

(Dd)

Comportement

spécifique

Code généré

par les DSL Tools

Code personnalisé

(Utiliser le VS SDK)

Création d’un Designer avec les DSL Tools
code sur mesure
Code sur mesure

///<summary>

/// When the event / condition / action changes the label is recomputed and

/// vice versa

///</summary>

[RuleOn(typeof(Transition), FireTime = TimeToFire.TopLevelCommit)]

publicsealedclassTransitionAttributesChanged : ChangeRule

{

///<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>

publicoverridevoid ElementAttributeChanged(ElementAttributeChangedEventArgs e)

{

Transition t = e.ModelElement asTransition;

// Compute Label when Event changes

if (e.MetaAttribute.Id == Transition.EventMetaAttributeGuid)

t.Label = ComputeSummary(e.NewValue asstring, t.Condition, t.Action);

// Compute Label when Condition changes

elseif (e.MetaAttribute.Id == Transition.ConditionMetaAttributeGuid)

t.Label = ComputeSummary(t.Event, e.NewValue asstring, t.Action);

// Compute Label when Action changes

elseif (e.MetaAttribute.Id == Transition.ActionMetaAttributeGuid)

t.Label = ComputeSummary(t.Event, t.Condition, e.NewValue asstring);

// Compute Event, Condition, Action when Label changes

elseif (e.MetaAttribute.Id == Transition.LabelMetaAttributeGuid)

{

System.Text.RegularExpressions.Match match = eventLabelRegEx.Match(e.NewValue asstring);

if (match.Success)

{

t.Event = match.Groups["EventGroup"].Value.Trim();

t.Condition = match.Groups["Condition"].Value.Trim();

string actionWithSlash = match.Groups["ActionGroup"].Value.Trim();

if (actionWithSlash.StartsWith("/"))

t.Action = actionWithSlash.Substring(1).TrimStart();

else

t.Action = actionWithSlash;

}

}

  • Règles de cohérence du modèle
  • Règles de validation du modèle

[ValidationState(ValidationState.Enabled)]

publicpartialclassState

{

///<summary>

/// A final state should not have outgoing transitions

///</summary>

///<param name="context"></param>

[ValidationMethod(ValidationCategory.Open | ValidationCategory.Save | ValidationCategory.Menu)]

privatevoid ValidateFinalStateHasNoOutgoingTransitions(ValidationContext context)

{

Transition[] transitions = GetOutgoingTransitions();

if ((Kind == StateKind.Final) && (transitions.Length > 0))

{

string error = string.Format(System.Globalization.CultureInfo.CurrentUICulture,DomainModel_Resource.FinalCannotHaveOutgoingTransitions, Name);

context.LogError(error, "StateMachines 42", transitions);

}

}

}

g n rateur de code
Générateur de code
  • écrit en T4 (Text Templating Transformation)
  • On peut en faire un Custom Tool !

/// <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="stateMachine">State machine owning this state</param>

/// <param name="driven">Driven interface</param>

public virtual void Dispose(bool disposing, <#=stateMachineName#> stateMachine, <#=drivenInterface#> driven) { }

}

<#

foreach(State state in StateMachine.AllStates)

{

// Find base class (class implementing ParentState)

string baseName;

if (state.ParentState == StateMachine)

baseName = baseStateName;

else

baseName = state.ParentState.GetFullName();

// List of events

Dictionary<string, List<Transition>> transitionsFromStateByEventSignature = state.GetOutgoingTransitionsGroupedByEventSignature(true);

#>

/// <summary>

/// <#=state.Comment#>

/// </summary>

class <#=state.GetFullName()#> : <#=baseName#>

{

<#

foreach(string transitionEventSignature in transitionsFromStateByEventSignature.Keys)

{

Transition t = transitionsByEventSignature[transitionEventSignature][0];

///<summary>

/// Declaration of the package providing the Simulation code generator

///</summary>

[ProvideCodeGenerator(typeof(StateMachinesGenerator), "StateMachinesGenerator","Custom tool that generates C# files based on .StateMachine files", true)]

publicsealedpartialclassStateMachinesPackage {}

[Guid("9DA6F053-E5B9-4955-A6AE-89FB5505E8E6")]

publicclassStateMachinesGenerator : TemplatedCodeGenerator

{

protectedoverridebyte[] GenerateCode(string inputFileName, string inputFileContent)

{

// Replace the supplied file contents with the template we want to run

inputFileContent = ASCIIEncoding.UTF8.GetString(Properties.Resources.StateMachinesReport);

// Substitute the name of the current model file into the template.

FileInfo fi = newFileInfo(inputFileName);

inputFileContent = inputFileContent.Replace(@"%MODELFILENAME%", fi.Name);

inputFileContent = inputFileContent.Replace(@"FileNameSpace", this.FileNameSpace);

// Now just delegate the rest of the work to the base class

byte[] data = base.GenerateCode(inputFileName, inputFileContent);

byte[] ascii = newbyte[data.Length - 3];

Array.Copy(data, 3, ascii, 0, data.Length - 3);

return ascii;

}

}

avec un dsl bien fait
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 …
slide56

Démo

Mon 1er DSL avec les DSL Tools

passer l re de l industrialisation une utopie
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…
cycle de vie des applications sdlc
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 ?
slide59
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)
observations
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.
diagnostic
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.
complexit le long du cycle de vie des syst mes

System Definition

Model

Développement

Opérations

Complexité le long du cycle de vie des systèmes

Comment décrire et appliquer les politiques opérationnelles?

Comment décrire les besoins opérationnels?

Comment déployer et gérer des systèmes distribués?

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

Applications

Application

Hosts

Structure:

Composants et relations

Contraintes

Network Topology

& Operating Systems

Health model

Tâches opérationnelles

Hardware

Plan/Design

Development

Testing

Deployment

Operations

Settings

System Definition Model / SML
cycle de vie des solutions

Job

Merc.

Stage

Shuttle

Feed Store

SQL

DSS

Cache

FTP

HTTP

SERVEURS

STOCKAGE

RESEAU

Cycle de vie des solutions

Développer une application intégrant les standards IT de gestion des opérations

Gérer le SI dynamiquement

Instrumentation

Connaissance Opérations

Stratégie

datacenter

Déployer automatiquement les logiciels et les ressources

System Definition Model

a quoi sert sdm sml
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
sdm sml exemple
SDM / SML : Exemple

<componentType name=”myWebApp” baseType=“Web Application”>

<settings>

<setting name=“portNumber" type="xsd:int" />

</settings>

<ports>

<port name=”myWeb” type=”webServer”>

<value name=”url”>http://$(host.server)/myWebApp</value>

</port>

<port name=”mySQL” type=”SQLServerClient”>

<value name=”encrypted”>false</value>

</port>

</ports>

<resources>

<resource name=”myapp.dll” type=”file”>

<value name=”name”>myapp.dll</value>

<value name=”sourcePath”>$(dir)\myapp.dll</value>

</resource>

<resource name=”myWebSettings” type=”Web Settings”>

<value name=”Security”>Certificate</value>

</resource>

</resources>

</componentType>

sdm sml dans visual studio 2005

Contraintes et

Politiques du

datacenter

Contraintes de

Déploiement et

besoins

opérationnels

Validation du

modèle

Développeurs

App Architectes

Erreurs

Architectes IT

SDM / SML dans Visual Studio 2005

Modèles SDM

validation lors de la conception
Validation lors de la conception

Vérification de la configuration du data center en vue du déploiement de l’application

Décrit la configuration du

Data center: topologie, configuration,

et politiques

Architecture logique de l’application

SDM

SDM

Modèle de déploiement

Design du data center

Design de l’application

Architectes / Développeurs

Développeurs/Opérations

Architectes

application designer
Application Designer

Concepteur

SOA

Definition d’un port

logical infrastructure designer
Logical Infrastructure Designer

Associer les services à

l’infrastructure logique

Validation de l’architecture par rapport

aux contraintes opérationnelles

sdm sml pour le d ploiement
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
sdm sml pour l administration
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
et nous dans tout a
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
buts de conception
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
entity data model76
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
mapping edm vers base81
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

  • CREATETABLE [dbo].[Employees](
  • [EmployeeID] [int] NOTNULL,
  • [LastName] [nvarchar](20)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,
  • [FirstName] [nvarchar](10)COLLATE SQL_Latin1_General_CP1_CI_AS NOTNULL,
  • [Title] [nvarchar](30)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  • [Extension] [nvarchar](4)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  • [Notes] [nvarchar](max)COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  • [ReportsTo] [int] NULL,
  • CONSTRAINT [PK_Employees] PRIMARYKEYCLUSTERED
  • (
  • [EmployeeID] ASC
  • )WITH(IGNORE_DUP_KEY =OFF)ON [PRIMARY]
  • )ON [PRIMARY]
manipulation edm esql
Manipulation EDM : eSQL
  • 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
linq s abstraire de esql
LINQ : s’abstraire de eSQL ?

Peut aussi s’écrire

slide88

La réponse est oui.

Mais quelle était la question ?

slide90
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 (V2 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.
pour en savoir plus
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/dmd2dd.aspx
      • MDM2DD 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/ShowForum.aspx?ForumID=61
      • Vient d’ouvrir pour la Beta2
      • Succède à un forum privé qui va être fermé.