Modéliser votre application'architecture sModel your app's architecture

Pour vous assurer que votre application ou votre système logiciel répond à vos utilisateurs a besoin, vous pouvez créer des modèles dans Visual Studio en tant que partie de la description de la structure globale et du comportement de votre application ou votre système logiciel.To help ensure that your software system or application meets your users' needs, you can create models in Visual Studio as part of your description of the overall structure and behavior of your software system or application. Avec des modèles, vous pouvez également décrire des modèles utilisés tout au long de la conception.Using models, you can also describe patterns that are used throughout the design. Ces modèles vous aident à comprendre l'architecture existante, à discuter des modifications et à communiquer clairement vos intentions.These models help you understand the existing architecture, discuss changes, and communicate your intentions clearly.

Pour connaître les versions de Visual Studio qui prennent en charge cette fonctionnalité, consultez Prise en charge des versions pour les outils d'architecture et de modélisation.To see which versions of Visual Studio support this feature, see Version support for architecture and modeling tools.

L'objectif d'un modèle est de réduire les ambiguïtés présentes dans les descriptions en langage naturel et de vous aider, vous et vos collègues, à visualiser la conception et à discuter des conceptions alternatives.The purpose of a model is to reduce the ambiguities that occur in natural-language descriptions, and to help you and your colleagues to visualize the design and to discuss alternative designs. Un modèle doit être utilisé avec d'autres documents ou discussions.A model should be used together with other documents or discussions. En soi, un modèle ne représente pas une spécification complète de l'architecture.By itself, a model does not represent a complete specification of the architecture.

Note

Dans cette rubrique, le terme « système » signifie le logiciel que vous développez.Throughout this topic, "system" means the software that you are developing. Il peut s'agir d'une grande collection de nombreux composants matériels et logiciels, d'une application unique ou d'une partie d'une application.It might be a large collection of many software and hardware components, or a single application, or a part of an application.

L'architecture d'un système peut être divisée en deux parties :The architecture of a system can be divided into two areas:

  • Conception de haut niveau.High-level Design. Cette section décrit les principaux composants et comment ils interagissent pour répondre à chaque spécification.This describes the major components and how they interact with one another to fulfill each requirement. Si le système est grand, chaque composant peut avoir sa propre conception de haut niveau qui montre comment il est constitué de composants plus petits.If the system is large, each component might have its own high-level design that shows how it is composed of smaller components.

  • Modèles de conception et conventions utilisées dans les conceptions de composants.Design Patterns and conventions used throughout the designs of the components. Un modèle décrit une approche particulière visant à atteindre un objectif de programmation.A pattern describes a particular approach to achieving a programming goal. En utilisant les mêmes modèles lors de toutes les phases de conception, votre équipe peut réduire le coût des modifications et du développement de nouveaux logiciels.By using the same patterns throughout a design, your team can reduce the cost of making changes and developing new software.

Conception de haut niveauHigh-level Design

Une conception de haut niveau décrit les principaux composants de votre système et la façon dont ils interagissent pour atteindre les objectifs de la conception.A high-level design describes the major components of your system and how they interact with one another to achieve the goals of the design. Le développement de la conception de haut niveau implique d'effectuer les activités dans la liste ci-dessous, mais pas nécessairement dans un ordre particulier.The activities in the following list are involved in developing the high level design, although not necessarily in a particular sequence.

Si vous mettez à jour du code existant, vous pouvez commencer par décrire les principaux composants.If you are updating existing code, you might begin by describing the major components. Assurez-vous de bien comprendre les modifications apportées aux besoins des utilisateurs, puis ajoutez ou modifiez les interactions entre les composants.Make sure you understand any changes to the user requirements and then add or modify interactions between the components. Si vous développez un nouveau système, commencez par comprendre les caractéristiques principales des besoins des utilisateurs.If you are developing a new system, begin by understanding the main features of the users' needs. Vous pouvez ensuite explorer des séquences d'interactions pour les cas d'usage principaux, puis consolider les séquences dans une conception de composant.You can then explore sequences of interactions for the main use cases, and then consolidate the sequences into a component design.

Dans tous les cas, il est utile de développer les différentes activités en parallèle et de développer le code et les tests à un stade précoce.In every case, it is helpful to develop the different activities in parallel, and to develop code and tests at an early stage. N'essayez pas de terminer l'un de ces aspects avant d'en commencer un autre.Avoid trying to complete one of these aspects before you start another. En règle générale, les impératifs et votre compréhension de la meilleure façon de concevoir le système évolueront pendant l'écriture et les tests du code.Typically, both the requirements and your understanding of the best way to design the system will change while you are writing and testing the code. Vous devez donc commencer par comprendre et coder les caractéristiques principales des impératifs et de votre conception.Therefore, you should begin by understanding and coding the main features of the requirements and your design. Remplissez les détails dans les itérations ultérieures du projet.Fill in the details in later iterations of the project.

  • Compréhension des besoins.Understanding the Requirements. Le point de départ de toute conception est une vision claire des besoins des utilisateurs.The starting point of any design is a clear understanding of the users' needs.

  • Modèles d’architecture.Architectural Patterns. Choix que vous avez effectués concernant les principales technologies et éléments de l'architecture du système.The choices you made about core technologies and architectural elements of the system.

  • Modèle de données des composants et des Interfaces.Data Model of the Components and Interfaces. Vous pouvez dessiner des diagrammes de classes pour décrire les informations passées entre les composants et stockées dans les composants.You can draw class diagrams to describe the information that is passed between components and stored inside the components.

Présentation de la configuration requiseUnderstanding the Requirements

Pour développer efficacement la conception de haut niveau d'une application complète, il est préférable de l'associer à un modèle d'impératifs ou autre description des besoins des utilisateurs.The high-level design of a complete application is most effectively developed together with a requirements model or other description of the users' needs. Pour plus d’informations sur les modèles de configuration requise, consultez modéliser les besoins des utilisateurs.For more information about requirements models, see Model user requirements.

Si le système que vous développez est un composant d'un système plus grand, tout ou partie de vos impératifs peuvent être exprimés dans des interfaces de programmation.If the system that you are developing is a component in a larger system, part or all of your requirements might be embodied in programmatic interfaces.

Le modèle d'impératifs fournit les renseignements essentiels suivants :The requirements model provides these essential pieces of information:

  • Interfaces fournies.Provided interfaces. Une interface fournie énumère les services ou les opérations que le système ou le composant doit fournir à ses utilisateurs, qu'il s'agisse d'utilisateurs humains ou d'autres composants logiciels.A provided interface lists the services or operations that the system or component must provide to its users, whether they are human users or other software components.

  • Interfaces requises.Required interfaces. Une interface requise énumère les services ou les opérations que le système ou le composant peut utiliser.A required interface lists the services or operations that the system or component can use. Dans certains cas, vous pourrez concevoir tous ces services dans le cadre de votre propre système.In some cases, you will be able to design all these services as part of your own system. Dans d'autres cas, en particulier si vous concevez un composant qui peut être combiné à d'autres composants dans de nombreuses configurations, l'interface requise sera définie par des considérations externes.In other cases, especially if you are designing a component that can be combined with other components in many configurations, the required interface will be set by external considerations.

  • Impératifs de qualité de service.Quality of service requirements. Objectifs et contraintes de performances, de sécurité, de fiabilité et autres que le système doit satisfaire.The performance, security, robustness, and other goals and constraints that the system must meet.

    Le modèle d'impératifs est écrit du point de vue des utilisateurs de votre système, qu'il s'agisse de personnes ou d'autres composants logiciels.The requirements model is written from the point of view of your system's users, whether they are people or other software components. Ils ne savent rien des mécanismes internes de votre système.They know nothing of the internal workings of your system. En revanche, votre objectif dans un modèle architectural consiste à décrire les mécanismes internes et à montrer comment ils répondent aux besoins des utilisateurs.By contrast, your goal in an architectural model is to describe the internal workings and show how they meet the users' needs.

    Avoir des modèles d'impératifs et d'architecture distincts est utile, car cela facilite la discussion des impératifs avec les utilisateurs.Keeping the requirements and architectural models separate is useful because it makes it easier to discuss the requirements with the users. Cela aide aussi à refactoriser la conception et à considérer des architectures alternatives tout en laissant les impératifs inchangés.It also helps you refactor the design and consider alternative architectures while keeping the requirements unchanged.

    La quantité de détails que vous devez mettre dans un modèle d'impératifs ou d'architecture dépend de l'échelle du projet et de la taille et de la distribution de l'équipe.The amount of detail that you should put into either a requirements or an architectural model depends on the scale of the project and the size and distribution of the team. Pour une petite équipe sur un projet de courte durée, le dessin d'un diagramme de classes des concepts métier et de quelques modèles de conception peut suffire. Pour un grand projet distribué sur plusieurs régions, beaucoup plus de détails seront nécessaires.A small team on a short project might go no further than sketching a class diagram of the business concepts and some design patterns; a large project distributed over more than one region would need significantly more detail.

Modèles d’architectureArchitectural Patterns

Lors de la phase initiale de développement, vous devez choisir les principaux éléments et technologies dont dépend la conception.Early in a development, you have to choose the major technologies and elements on which the design depends. Ces choix porteront sur les aspects suivants :The areas in which these choices must be made include the following:

  • Choix technologiques, tels que le choix entre une base de données et un système de fichiers, le choix entre une application en réseau et un client web, et ainsi de suite.Base technology choices, such as the choice between a database and a file system, and the choice between a networked application and a Web client, and so on.

  • Choix d'infrastructure, tels que le choix entre Windows Workflow Foundation et ADO.NET Entity Framework.Frameworks choices, such as a choice between Windows Workflow Foundation or ADO.NET Entity Framework.

  • Choix de méthode d'intégration, par exemple entre un bus de service d'entreprise et un canal point à point.Integration method choices, for example between an enterprise service bus or a point-to-point channel.

    Ces choix sont fréquemment déterminés par les impératifs de qualité de service, tels que l'échelle et la flexibilité, et peuvent être effectués avant que les impératifs détaillés soient connus.These choices are frequently determined by quality of service requirements such as scale and flexibility, and can be made before the detailed requirements are known. Dans un système à grande échelle, les configurations matérielle et logicielle sont étroitement liées.In a large system, the configuration of hardware and software are strongly interrelated.

    Vos sélections affectent votre mode d'utilisation et votre interprétation du modèle architectural.The selections that you make affect how you use and interpret the architectural model. Par exemple, dans un système qui utilise une base de données, les associations dans un diagramme de classes peuvent représenter des relations ou des clés étrangères dans la base de données, tandis que dans un système basé sur des fichiers XML, les associations peuvent indiquer des références croisées qui utilisent XPath.For example, in a system that uses a database, associations in a class diagram might represent relations or foreign keys in the database, whereas in a system that is based on XML files, associations might indicate cross-references that use XPath. Dans un système distribué, les messages figurant dans un diagramme de séquence peuvent représenter des messages sur le câble. Dans une application autonome, ils peuvent représenter des appels de fonction.In a distributed system, messages in a sequence diagram can represent messages on a wire; in a self-contained application, they can represent function calls.

Modèles de conceptionDesign Patterns

Un modèle de conception est un plan qui décrit comment concevoir un aspect particulier du logiciel, en particulier un aspect qui se reproduit dans différentes parties du système.A design pattern is an outline of how to design a particular aspect of the software, especially one that recurs in different parts of the system. En adoptant une approche uniforme dans tout le projet, vous pouvez réduire le coût de conception, garantir la cohérence dans l'interface utilisateur et réduire le coût de gestion et de modification du code.By adopting a uniform approach across the project, you can reduce the cost of design, ensure consistency in the user interface, and reduce the cost of understanding and changing the code.

Certains modèles de conception généraux tels qu'Observer sont bien connus et largement applicables.Some general design patterns such as Observer are well-known and widely applicable. En outre, il existe des modèles qui sont applicables uniquement à votre projet.In addition, there are patterns that are applicable just to your project. Par exemple, dans un système de ventes sur le web, il y aura plusieurs opérations dans le code où des modifications seront apportées à une commande de client.For example, in a Web sales system, there will be several operations in the code where changes are made to a customer's order. Pour vous assurer que l'état de la commande est affiché correctement à chaque étape, toutes ces opérations doivent suivre un protocole particulier pour mettre à jour la base de données.To ensure that the state of the order is accurately displayed at every stage, all these operations must follow a particular protocol to update the database.

Une partie du travail d'architecture logicielle consiste à déterminer quels modèles doivent être adoptés dans toute la conception.Part of the work of software architecture is to determine what patterns should be adopted across the design. Il s'agit généralement d'une tâche continue, car de nouveaux modèles et des améliorations de modèles existants seront découverts à mesure que le projet progresse.This is usually an ongoing task, because new patterns and improvements to existing patterns will be discovered as the project progresses. Il est utile d'organiser le plan de développement pour que vous puissiez tester chacun de vos principaux modèles de conception à un stade précoce.It is helpful to organize the development plan so that you exercise each of your major design patterns at an early stage.

La plupart des modèles de conception peuvent être intégrés en partie dans le code d'infrastructure.Most design patterns can be partly embodied in framework code. Une partie du modèle peut être réduite à obliger le développeur à utiliser des classes ou des composants spécifiques, tels qu'une couche d'accès de base de données qui garantit la gestion correcte de la base de données.Part of the pattern can be reduced to requiring the developer to use particular classes or components, such as a database access layer that ensures the database is handled correctly.

Un modèle de conception est décrit dans un document et comprend généralement les parties suivantes :A design pattern is described in a document, and typically includes these parts:

  • Nom.Name.

  • Description du contexte dans lequel il est applicable.Description of the context in which it is applicable. Quels critères doivent inciter un développeur à envisager l'application de ce modèle ?What criteria should make a developer consider applying this pattern?

  • Brève explication du problème qu'il résout.Brief explanation of the problem it solves.

  • Modèle des principales parties et de leurs relations.Model of the major parts and their relationships. Il peut s'agir de classes ou de composants et d'interfaces, avec des associations et des dépendances entre eux.These might be classes or components and interfaces, with associations and dependencies between them. Les éléments appartiennent généralement à deux catégories :The elements usually fall into two categories:

  • Conventions d'attribution de noms.Naming conventions.

  • Description de la façon dont le modèle résout le problème.Description of how the pattern solves the problem.

  • Description des variations que les développeurs peuvent être en mesure d'adopter.Description of variations that developers might be able to adopt.

Voir aussiSee Also