37
Conception architecturale GLO-3001 Architecture logicielle Luc Lamontagne Hiver 2010

Conception architecturale - Université Laval

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Conception architecturale• Description détaillée pour quelques facteurs • Autres facteurs ou attributs de qualité • Détail de l’approche de conception ADD
Introduction
• Pour cette partie du cours, nous étudions l’approche proposée par le Software Engineering Institute (SEI) – Voir livre de Bass, Clements et Kazman
• Approche basée sur le degré de qualité qu’un logiciel doit atteindre – Attribute Driven Design (ADD)
• Constitue une extension aux approches actuelles en conception orientée-objet
Qualité vs. fonctionnalité
• Un système est conçu afin de remplir certaines tâches biens définies
• On recherche également certaines caractéristiques qui permettront une conception et une maintenance plus facile, plus rapide et moins coûteuse du système
Fonctionnalités
• La capacité du système à effectuer les tâches pour lesquelles il a été conçu
• Aucune organisation particulière des composantes afin de réaliser une tâche donnée – Un système monolithique et/ou désorganisé peut
très bien remplir la tâche pour laquelle il a été conçu
– Les fonctionnalités sont indépendantes de la structure du système
Qualité
– c'est-à-dire qu'elles n'influencent pas les fonctionnalités offertes par le système
– Elles sont plutôt des propriétés qui influencent
• le temps et le coût de développement du système,
• son déploiement,
• sa maintenance,
• sa robustesse,
• sa sécurité,
• sa performance…
– Difficile à maintenir, lent, peu fiables.
– Ce sont tous des critères de qualité.
• Qualité => orthogonale aux fonctionnalités
– Par ex. fonctionnalités = performance ?
– Pas toujours possible d’atteindre n’importe quel niveau
• Ex : manipulation d’images ou de vidéo
– L’architecte doit étudier les attributs de qualité
• Savoir comment faire des choix qui influencent la qualité d’un logiciel
Niveau de qualité
• Niveau de qualité d’un logiciel – Pas uniquement atteint par une bonne conception architecturale
– Dépend du niveau global (architecture) et des détails (implémentation)
• Exemple
– L’utilisabilité de l’interface usager dépend de ces deux niveaux. • Aspects non architecturaux
– Construction de l’interface clair et facile à utiliser.
– Utiliser un bouton radio ou un checkbox?
– Quel disposition adoptée pour placer les éléments graphiques?
• Décisions architecturales – Canceller des opérations
– Faire des undo
Attributs de qualité
– La disponibilité (availability)
– La modifiabilité (modifiability)
– La sécurité (security)
– L’utilisabilité (usability)
Modifiabilité :
Performance :
Sécurité :
Testabilité :
Utilisabilité :
La capacité du système à résister à un usage non-
autorisé tout en fournissant un service à ses usagers
La gestion du temps de réponse à des événements
Comment modifier le système tout en limitant les
coûts et le temps.
La facilité d’un usager à accomplir une tâche et le
type de support que le système lui fourni
La facilité d’un logiciel à démontrer ses erreurs par
des techniques de tests
• 3 problèmes limitant leur utilisation en conception
– Les définitions ne sont pas opérationnelles
• ex: « le logiciel doit être modifiable » ça ne veut rien dire!
– Quel attribut appartient à quel critère ? • Ex: une panne disponibilité, sécurité, utilisabilité ?
– Chaque communauté a développé son vocabulaire. • Input = un événement, une défaillance, une attaque…
Scénario d’attribut de qualité
• Une solution proposée pour éviter ces problèmes
– Extension des cas d’utilisation
– Cadre de référence
Une condition qui se produit
dans le système
la réponse
menée par le système
Exemple de scénario spécifique
Présente l’étendue des
– N’indique pas comment les atteindre
• Tactiques
– Une décision de conception qui satisfait un attribut de qualité
– Obtenues des expériences des architectes logicielles
– Présentées comme une hiérarchie pour chaque attribut
– Exemple: introduire de la redondance pour augmenter la disponibilité • Redondance de traitement ou de données
• Besoin de synchronisation
Tactiques
• Les tactiques influencent le contrôle d’une réponse pour un attribut de qualité particulier
• Ex : Disponibilité
• Tactiques satisfaire certains scénarios.
• On utilise les patrons de conception pour concrétiser certaines tactiques.
• La plupart des patrons influence plus d’un attribut de qualité – Exemples :
• Un MVC a un impact sur la modifiabilité et l’utilisabilité d’un interface usager
• Une façade, un médiateur ou un proxy ont un impact sur la modifiabilité et la performance d’un système.
Approche de conception ADD
Utilisation des tactiques
et la conception architecturale
Approche de conception ADD
• Formuler les scénarios de qualité et les besoins fonctionnels (use cases).
• Choisir un module à décomposer
• Raffiner le module en suivant ces étapes : – Choisir les facteurs architecturaux (scénarios et use cases).
– Choisir une tactique architecturale (et/ou un patron) qui satisfait les facteurs architecturaux.
• Identifier les sous-modules requis pour implanter la tactique.
– Instancier les modules et allouer les fonctionnalités provenant des uses cases. Décrire à l’aide de vue (documentation).
– Définir les interfaces des sous-modules.
– Vérifier et raffiner les use cases et les scénarios de qualité et s’en servir comme contraintes pour les sous-modules.
• Répéter les étapes précédentes pour chaque module qui doit encore être décomposé.
N.B: A revoir plus en détail après avoir étudié les différentes tactiques
Conception architecturale et RUP
• Commence tôt dès la phase d’inception – Mais difficile de satisfaire les exigences à ce stade-ci.
• Élaboration – On devrait implémenter les éléments architecturaux à plus haut risque. – L’analyse architecturale est surtout menée durant cette phase.
• Transition – On peut revoir les décisions et les facteurs architecturaux pour vérifier qu’il décrit
correctement le système final déployé.
• Cycle d’évolution ultérieures – Avant de concevoir de nouvelles version du logiciel, réviser.
Facteur architectural
Disponiblité (availability)
• Défaillance
– Lorsque le système ne fournit plus un service qui correspond à ses spécifications
– Une défaillance est observable par les usagers du système
• Soit des humains ou d’autres systèmes
Disponibilité: Exemple de scénario
• « Un message externe d’erreur est reçu par un processus durant des opérations en mode normal. Le processus informe l’opérateur de la réception du message et continue à opérer sans temps d’arrêt »
Disponibilité: scénario
• Points importants
– Comment les prévenir
• Faute vs. dédaillance
– Faute (Fault): ne peut être détecté par l’usager du système
• Exemple: le choix d’un mauvais algorithme
• Peut éventuellement causer une défaillance
– Défaillance (Failure): observable par l’usager du système
Disponibilité: scénario
• Définition
– Par exemple, une disponibilité de 99,9% implique une probabilité de 0,1% que le système ne sera pas opérationnel lorsque nécessaire
– Les périodes de service ne sont pas incluses dans cette définition.
réparation demoyen temps edéfaillanc une àjusqu'moyen temps
edéfaillanc une àjusqu'moyen temps
Source
Stimulus
Artefact
Environnement
Réponse
Faute de type: omission, crash, timing, réponse
Processeur, canal de communication, dépôt persistant, processus du système
Opération normale ou en mode dégradé (i.e., moins de fonctionnalités, solution de rechange)
Le système devrait détecté les événements et prendre l’une des actions suivantes: • Enregistrer la défaillance • Aviser les intervenants appropriées (usager ou autres systèmes) • Désactiver la source des événements qui cause la défaillance • Devenir non disponible pour un temps prédéterminé (dépend de la criticalité du système) • Continuer à opérer en mode normal, passer en mode dégradé ou éteindre le système
• Intervalle de temps durant lequel le système doit être disponible – Pourcentage de disponibilité • Intervalle de temps durant lequel le système peut être en mode dégradé (ou non
disponible)
– Vise à empêcher les fautes de devenir des défaillances; ou
– Limiter les effets de ces fautes et rendre les réparations possibles
Disponibilité: tactiques • Plusieurs déjà préconisées dans des environnements connus
– les systèmes d’exploitation, les serveurs d’application, la gestion de BD.
• Toutes les approches misent sur:
– une redondance de composantes
– une récupération après une défaillance
Disponibilité –Tactiques:
• Ping\echo • Une composante en surveille une autre
• Échange de message et de réponse pour établir la présence de la composante surveillée
Composante
Surveillante
Composante
surveillée
Composante
Surveillante
Composante
surveillée
Messages
• Exceptions
– Si la composante est elle-même responsable de la détection des fautes
– On génère une exception lorsqu’une faute survient.
Composante
Surveillante
Composante
surveillée
Tolérance aux fautes
• Vote – Plusieurs processus sur des processeurs redondants – On fourni à chacun un input équivalent. – Résultats divergent processus mis hors de fonction. – Algorithmes possibles majorité, composante préférée…
DécisionClient
Serveur 1
Serveur 2
Serveur 3
• Redondance active – Des composantes redondantes répondent aux événements en
parallèle. – Le système utilise une seule de ces réponses. – Composante défaillante resynchroniser avec les autres.
Décision Client
Serveur 1
Serveur 2
Serveur 3
Tolérance aux fautes
• Redondance passive – Une seule composante répond aux événements (composante primaire) – Elle informe les autres des mises à jour qu’elles doivent faire – Faute à la composante primaire composante de remplacement – Le temps d’arrêt est de quelques secondes
Décision Client
• Rechange (Spare) – Une composante de rechange peut remplacer plusieurs autres composantes
différentes. – On doit faire des checkpoints de l’état du système et sauvegarder tous les
changements dans une BD. – Le temps d’arrêt peut être de quelques minutes.
Décision Client
• On roule en parallèle avant la remise en service
– Checkpoint rollback • Enregistrement périodique de l’état
Disponibilité –Tactiques:
Prévention de fautes
– Mise hors d’usage • On retire une composante pour mener des activités pour prévenir les
défaillances. – Par exemple, on redémarre une composante pour prévenir les fuites de mémoires.
• Si le retrait de la composante est automatique, alors il faut le prévoir dans l’architecture du logiciel.
• Si c’est manuel, il faut prévoir une composante pour supporter cette activité.
– Transactions • On regroupe plusieurs étapes de traitement ensemble
• On doit compléter toutes les étapes pour une exécution fructueuse
• On veut éviter de corrompre les données si toutes les étapes ne peuvent pas être complétées.
– Moniteur de processus • Suite à la détection d’une faute, le moniteur retire le processus et crée une
nouvelle instance.