Introduction à l'architecture et à la conception de logiciels

L'architecture d'un système décrit ses principaux composants, leurs relations (structures) et la manière dont ils interagissent les uns avec les autres. L'architecture et la conception logicielles incluent plusieurs facteurs contributifs tels que la stratégie commerciale, les attributs de qualité, la dynamique humaine, la conception et l'environnement informatique.

Nous pouvons séparer l'architecture et la conception logicielles en deux phases distinctes: l'architecture logicielle et la conception logicielle. DansArchitecture, les décisions non fonctionnelles sont exprimées et séparées par les exigences fonctionnelles. Dans la conception, les exigences fonctionnelles sont satisfaites.

Architecture logicielle

L'architecture sert de blueprint for a system. Il fournit une abstraction pour gérer la complexité du système et établir un mécanisme de communication et de coordination entre les composants.

  • Il définit un structured solution pour répondre à toutes les exigences techniques et opérationnelles, tout en optimisant les attributs de qualité communs comme la performance et la sécurité.

  • En outre, cela implique un ensemble de décisions importantes concernant l'organisation liées au développement de logiciels et chacune de ces décisions peut avoir un impact considérable sur la qualité, la maintenabilité, les performances et le succès global du produit final. Ces décisions comprennent -

    • Sélection des éléments structurels et de leurs interfaces par lesquels le système est composé.

    • Comportement tel que spécifié dans les collaborations entre ces éléments.

    • Composition de ces éléments structurels et comportementaux en grand sous-système.

    • Les décisions architecturales s'alignent sur les objectifs commerciaux.

    • Les styles architecturaux guident l'organisation.

Conception de logiciels

La conception logicielle offre une design planqui décrit les éléments d'un système, comment ils s'intègrent et fonctionnent ensemble pour répondre aux exigences du système. Les objectifs d'un plan de conception sont les suivants:

  • Négocier les exigences du système et définir les attentes avec les clients, le personnel de marketing et de gestion.

  • Agir comme un modèle pendant le processus de développement.

  • Guider les tâches de mise en œuvre, y compris la conception détaillée, le codage, l'intégration et les tests.

Il vient avant la conception détaillée, le codage, l'intégration et les tests et après l'analyse du domaine, l'analyse des exigences et l'analyse des risques.

Objectifs de l'architecture

L'objectif principal de l'architecture est d'identifier les exigences qui affectent la structure de l'application. Une architecture bien conçue réduit les risques commerciaux associés à la création d'une solution technique et établit un pont entre les exigences commerciales et techniques.

Certains des autres objectifs sont les suivants -

  • Exposez la structure du système, mais cachez ses détails d'implémentation.

  • Réalisez tous les cas d'utilisation et scénarios.

  • Essayez de répondre aux exigences des différentes parties prenantes.

  • Gérez les exigences fonctionnelles et de qualité.

  • Réduisez l'objectif d'appropriation et améliorez la position de l'organisation sur le marché.

  • Améliorez la qualité et la fonctionnalité offertes par le système.

  • Améliorez la confiance externe dans l'organisation ou le système.

Limites

L'architecture logicielle est encore une discipline émergente au sein du génie logiciel. Il présente les limitations suivantes -

  • Manque d'outils et de méthodes standardisées pour représenter l'architecture.

  • Absence de méthodes d'analyse pour prédire si l'architecture aboutira à une mise en œuvre qui répond aux exigences.

  • Manque de conscience de l'importance de la conception architecturale pour le développement de logiciels.

  • Manque de compréhension du rôle de l'architecte logiciel et mauvaise communication entre les parties prenantes.

  • Manque de compréhension du processus de conception, de l'expérience de conception et de l'évaluation de la conception.

Rôle de l'architecte logiciel

Un architecte logiciel fournit une solution que l'équipe technique peut créer et concevoir pour l'ensemble de l'application. Un architecte logiciel doit avoir une expertise dans les domaines suivants -

Expertise en conception

  • Expert en conception de logiciels, y compris diverses méthodes et approches telles que la conception orientée objet, la conception événementielle, etc.

  • Diriger l'équipe de développement et coordonner les efforts de développement pour l'intégrité de la conception.

  • Doit être en mesure d'examiner les propositions de conception et les compromis entre eux.

Domaine d'expertise

  • Expert sur le système en cours de développement et planification de l'évolution du logiciel.

  • Participer au processus d'enquête sur les exigences, en assurant l'exhaustivité et la cohérence.

  • Coordonner la définition du modèle de domaine pour le système en cours de développement.

Expertise technologique

  • Expert sur les technologies disponibles qui aide à la mise en œuvre du système.

  • Coordonner la sélection du langage de programmation, du framework, des plateformes, des bases de données, etc.

Expertise méthodologique

  • Expert en méthodologies de développement logiciel pouvant être adoptées au cours du SDLC (Software Development Life Cycle).

  • Choisissez les approches de développement appropriées qui aident toute l'équipe.

Rôle caché de l'architecte logiciel

  • Facilite le travail technique entre les membres de l'équipe et renforce la relation de confiance au sein de l'équipe.

  • Spécialiste de l'information qui partage ses connaissances et possède une vaste expérience.

  • Protégez les membres de l'équipe des forces externes qui les distraient et apportent moins de valeur au projet.

Livrables de l'architecte

  • Un ensemble d'objectifs fonctionnels clair, complet, cohérent et réalisable

  • Une description fonctionnelle du système, avec au moins deux couches de décomposition

  • Un concept pour le système

  • Une conception sous la forme du système, avec au moins deux couches de décomposition

  • Une notion du timing, des attributs de l'opérateur et des plans d'implémentation et d'exploitation

  • Un document ou processus qui assure la décomposition fonctionnelle est suivi, et la forme des interfaces est contrôlée

Attributs de qualité

La qualité est une mesure de l'excellence ou l'état de l'absence de carences ou de défauts. Les attributs de qualité sont les propriétés du système distinctes de la fonctionnalité du système.

La mise en œuvre d'attributs de qualité permet de différencier plus facilement un bon système d'un mauvais. Les attributs sont des facteurs généraux qui affectent le comportement d'exécution, la conception du système et l'expérience utilisateur.

Ils peuvent être classés comme -

Attributs de qualité statiques

Refléter la structure d'un système et d'une organisation, directement liée à l'architecture, à la conception et au code source. Ils sont invisibles pour l'utilisateur final, mais affectent le coût de développement et de maintenance, par exemple: modularité, testabilité, maintenabilité, etc.

Attributs de qualité dynamiques

Refléter le comportement du système lors de son exécution. Ils sont directement liés à l'architecture, à la conception, au code source, à la configuration, aux paramètres de déploiement, à l'environnement et à la plate-forme du système.

Ils sont visibles par l'utilisateur final et existent au moment de l'exécution, par exemple, débit, robustesse, évolutivité, etc.

Scénarios de qualité

Les scénarios de qualité spécifient comment éviter qu'un défaut ne devienne un échec. Ils peuvent être divisés en six parties en fonction de leurs spécifications d'attributs -

  • Source - Une entité interne ou externe telle que des personnes, du matériel, des logiciels ou une infrastructure physique qui génère le stimulus.

  • Stimulus - Une condition qui doit être prise en compte lors de son arrivée sur un système.

  • Environment - Le stimulus se produit dans certaines conditions.

  • Artifact - Un système entier ou une partie de celui-ci comme les processeurs, les canaux de communication, le stockage persistant, les processus, etc.

  • Response - Une activité entreprise après l'arrivée du stimulus telle que détecter des défauts, récupérer d'un défaut, désactiver la source d'événement, etc.

  • Response measure - Devrait mesurer les réponses survenues afin que les exigences puissent être testées.

Attributs de qualité communs

Le tableau suivant répertorie les attributs de qualité communs qu'une architecture logicielle doit avoir:

Catégorie Attribut de qualité La description
Qualités de conception Intégrité conceptuelle Définit la cohérence et la cohérence de la conception globale. Cela inclut la façon dont les composants ou les modules sont conçus.
Maintenabilité Capacité du système à subir des modifications avec une certaine facilité.
Réutilisabilité Définit la capacité des composants et des sous-systèmes à être utilisés dans d'autres applications.
Qualités d'exécution Interopérabilité Capacité d'un système ou de différents systèmes à fonctionner avec succès en communiquant et en échangeant des informations avec d'autres systèmes externes écrits et gérés par des parties externes.
Gérabilité Définit la facilité avec laquelle les administrateurs système peuvent gérer l'application.
Fiabilité Capacité d'un système à rester opérationnel au fil du temps.
Évolutivité Capacité d'un système à gérer l'augmentation de la charge sans affecter les performances du système ou à être facilement agrandi.
Sécurité Capacité d'un système à empêcher des actions malveillantes ou accidentelles en dehors des usages prévus.
Performance Indication de la réactivité d'un système pour exécuter toute action dans un intervalle de temps donné.
Disponibilité Définit la proportion de temps pendant laquelle le système est fonctionnel et opérationnel. Il peut être mesuré en pourcentage du temps d'arrêt total du système sur une période prédéfinie.
Qualités du système Supportabilité Capacité du système à fournir des informations utiles pour identifier et résoudre les problèmes lorsqu'il ne fonctionne pas correctement.
Testabilité Mesure de la facilité avec laquelle il est possible de créer des critères de test pour le système et ses composants.
Qualités des utilisateurs Convivialité Définit dans quelle mesure l'application répond aux exigences de l'utilisateur et du consommateur en étant intuitive.
Qualité de l'architecture Exactitude Responsabilité pour satisfaire toutes les exigences du système.
Qualité hors exécution Portabilité Capacité du système à fonctionner sous différents environnements informatiques.
Intégrité Capacité à faire fonctionner correctement les composants développés séparément du système.
Modifiabilité Facilité avec laquelle chaque système logiciel peut s'adapter aux modifications de son logiciel.
Attributs de qualité commerciale Coût et calendrier Coût du système par rapport au temps de mise sur le marché, durée de vie prévue du projet et utilisation de l'héritage.
Commercialisation Utilisation du système par rapport à la concurrence sur le marché.