Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

CrazyHT Blog

Ex-MVP C#.NET
Framework, vous avez dis Framework ?

Pourquoi mettre en place un Framework ?

 

     1.            Introduction

 

De nos jours, le terme Framework technique ou Framework d’entreprise sont devenus populaires, cependant bon nombre de personne n’en comprennent pas les tenants et les aboutissants. Ce petit document va tenter de résumé ce que ces termes sous entendent, ce que ces deux type de Framework peuvent apporter.

     2.            Définition

 

2.1            Framework technique

 

Un Framework technique est un ensemble de librairies permettant de réaliser un ensemble de fonctionnalité n’ayant pas attraie à un métier particulier. Par exemple une librairie d’authentification au travers d’un LDAP Novell trouve sa place dans un tel Framework. Il est souvent composé de fonctionnalités développées de toutes pièces ainsi que de librairie récupérées tel quel sur internet.

2.2            Framework d’entreprise

 

Un Framework d’entreprise est quand à lui axé sur le métier de l’entreprise, il va en fait normaliser le moyen pour toutes les applications de l’entreprise d’utiliser une partie du métier de celle-ci. Par exemple une banque va placer dans un Framework d’entreprise la définition d’un compte bancaire et un service permettant de le manipuler. Ainsi toutes les applications de la banque pourront accéder aux informations du compte bancaire d’un client en utilisant ce Framework.

     3.            Avantage d’un Framework

 

Les Frameworks apportent de nombreux avantages :

Ø  Standardisation du code

Le fait d’utiliser un Framework assure que tous les développeurs utiliseront la même API, en effet, reprenons l’exemple de notre banque, sans Framework probablement que chaque application aura sa propre méthode de récupération des informations d’un compte bancaire. Le nom de cette méthode peut être différent d’une application à une autre, mais la technologie sous jacente peut aussi être différentes (Accès direct à la base de données, utilisation d’un Web Service, …). Autant de possibilité qui font qu’utiliser une ressource sur deux projets nécessite un temps d’adaptation à chaque switch. Le Framework lui propose une seule méthode, les détails techniques étant laissé aux Frameworks, un développeur peut donc passer d’un projet à un autre sans avoir à s’adapter au code « technique » du projet et donc ce concentrer sur les traitements métier de l’application.

Ø  Correction de bug pour l’ensemble des applications

En effet si toutes les applications accèdent à une seule méthode pour effectuer un traitement, si ce traitement ne fonctionne pas correctement ou doit être modifié, il suffit d’apporter les modifications au Framework. Ainsi toutes les applications utilisant le Framework seront modifiées en une seule fois.

Ø  Modularité & flexibilité

Les bons Framework sont toujours architecturer pour permettre une grande souplesse, ils implémentent de nombreux patterns qui leur permettent d’apporter une finesse bien supérieure à celle d’une application classique, par exemple, les Frameworks apportant une librairie d’accès aux données implémentent souvent un ensemble de providers différents (ODBC, SQL Server, Oracle) le plus souvent avec un choix du provider à utiliser par le biais du fichier de configuration. Une application elle va se limiter au mieux à une classe abstraite dans la couche d’accès aux données évitant l’initialisation de la connexion, ou la gestion des erreurs.

Ø  Productivité

Les Frameworks permettent un gain de productivité  à long terme sur les  équipes de développement, en effet une fois qu’un développeur à l’habitude d’utiliser le Framework, il peut passer d’un projet à un autre en un temps plus court. De plus comme chaque équipe n’a pas à recréer les classes techniques  déjà présentes dans le Framework  elle peut se concentrer sur les fonctionnalités propres à l’application.

Ø  Optimisation

Il est plus simple d’apporter des optimisations sur le code d’un Framework que de placer ces optimisations dans l’ensemble des applications. Ce type de modifications étant souvent très couteuses, on rechigne à les faire sur une application, mais finalement lors que le Framework est optimisé cela profite à l’ensemble, ce qui réduit le cout pour chaque application.

     4.            Désavantage d’un Framework

 

Rare sont ceux qui le disent, mais un Framework n’est pas la solution magique qui convient à tous. En effet, les Frameworks comportent aussi leur lot de désavantage :

Ø  Cout élevé

Le développement d’un Framework coute plus cher que le développement des fonctionnalités techniques  équivalentes dans une application. En effet, un Framework doit prendre en compte l’ensemble des cas d’utilisation d’une fonctionnalité alors qu’une application n’implémentera que les cas d’utilisation lui étant propre.

Ø  Niveau de complexité

Le fait de devoir penser à l’ensemble des cas d’utilisation et le fait de systématiquement penser de manière générique n’est pas donné à tous. De plus, le Framework résout souvent des problématiques complexes demandant une connaissance poussé de la technologie utilisée.

     5.            Quel choix faire ?

 

Au vu des deux chapitres précédents, je dirais qu’un Framework n’a pas sa place lorsqu’il est utilisé par un petit nombre d’applications, il prend tout son sens lors de la mise en place d’une standardisation dans une entreprise avec de nombreux projets en développement. Le type de Framework reste à définir selon les besoin de chacun, les sociétés de service choisiront d’implémenter un Framework technique alors que les grands groupes préféreront la mise en place de Framework d’entreprise (métier). Le choix est plus une question de contexte et de réutilisabilité d’un projet à l’autre.

     6.            Comment aller encore plus loin ?

 

La mise en place un Framework est un gain évident pour certains, mais un Framework seul ne peut pas assurer les gains de productivité nécessaire à la réussite des projets d’une entreprise. Il est possible d’optimiser encore plus le processus de développement pour les grandes entreprises.

6.1            Génération de code

 

La mise en place de modèles pour un générateur de code type SmartCode ou CodeSmith peuvent éviter au développeur les parties du code répétitives et rébarbatives. Par contre leur souplesse reste encore limitée, en effet un générateur de code va écrire vos classes d’accès aux données ou votre business model par rapport à une base de données, cependant il faudra souvent repasser derrière pour personnaliser le code.

6.2            GAT et GAX

 

Les outils « Guidance Automation Toolkit  » et « Guidance Automation eXtensions » permettent de créer et d’utiliser des assistants pour Visual Studio. Par exemple, un assistant permettant de créer une solution structurée en couche avec l’ensemble des projets et les bonnes références dans chacun d’entre eux peut considérablement accélérer la mise en place d’un nouveau projet. Puis une série d’assistants peut vous permettre d’ajouter un projet dans la solution suivant la couche à laquelle il appartient. Enfin d’autres assistants peuvent vous permettre d’ajouter une classe ou une méthode dans celle-ci sans effort.  Ces outils sont très efficaces, cependant ils ne sont toujours pas suffisants. Pour obtenir un environnement encore plus productif, il faudra mettre en place des DSL.

6.3            DSL

 

Les « Domain Specific Language » permettent d’ajouter dans Visual Studio 2005 un ensemble de designers supplémentaires, Comme le designer de classe de Visual Studio, ils peuvent être bi directionnels. Ils vous permettront une utilisation transparente de votre Framework, par exemple imaginons un DSL permettant de modéliser votre Business Model, chaque fois que vous ajouterai une entité à votre diagramme, un fichier source sera crée pour celle-ci, il contiendra une classe implémentant les bonnes interfaces et héritant d’une classe de votre Framework. Pour chaque propriété, il ajoutera le code nécessaire au DataBinding, etc. Ces outils sont très puissants, malheureusement leur conception n’est pas aisé et demande un temps considérables.

     7.            Conclusion

 

J’espère que suite à ce petit document, vous avez une vision plus clair des pré-requis à la mise en place d’un Framework ainsi que les possibilités en découlant. Un Framework n’est pas un chantier simple à mettre en œuvre  et plus encore qu’une application nécessite une équipe de haut niveau. Trop souvent, j’ai vu des projets échoués à cause d’une démarche Framework non justifier ou mal gérée (autant en termes de moyen que de compétence). Il faut donc bien réfléchir avant de se lancer dans la démarche et une fois décidé se donner les moyens de réussir.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 15 juin 2007 09:16 par crazyht
Classé sous : ,

Attachment(s): Pourquoi mettre en place un Framework.zip

Commentaires

badrbadr a dit :

Belle mise en page :)

Ok, je sors :p

# juin 17, 2007 05:44

Jb Evain a dit :

Puisqu'on est à parler de la forme, le nombre  élevé de fautes dessert vraiment le texte, qu'on adhère ou pas au contenu.

# juin 17, 2007 09:16

crazyht a dit :

Je suis d'accord, mais j'ai penser qu'une mise a jour utlérieure pourrait palier à ce probleme. En attendant le fond reste valable (enfin je pense)...

# juin 17, 2007 13:49

Ruddy a dit :

je le découvre un peu tard ce post mais jele trouve vachement intéressant.

# novembre 28, 2008 13:54

archix a dit :

Je viens de lire ce post très intéressant.

Malgré tous les bénéfices d'utiliser un framework, un désavantage n'est-il pas le risque que le framework tombe un jour où l'autre en désuétude ?

Prenons l'exemple d'un framework open source dont la communauté finirait par s'effondrer. Une société qui aurait développé une grosse application devrait maintenir le framework en plus de maintenir son application.

# décembre 18, 2008 14:36

crazyht a dit :

En effet, ce risque existe, cependant le risque n'est-il pas moindre que celui d'un choix de produit du marché ou vous n'auriez même pas les sources.

De plus, je penses que l'étape on l'on effectue se genre de choix est cruciale et qu'en principe la pérennité de la communauté est à prendre en compte.

# décembre 18, 2008 15:49
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21

- SharePoint : Incompatibilité avec Internet Explorer 10 (IE10) par Blog Technique de Romelard Fabrice le 05-08-2013, 16:29

- AutoSPInstaller pour SharePoint 2013 maintenant disponible en “RTM” par Julien Chable le 05-06-2013, 23:30