Skip to content

Instantly share code, notes, and snippets.

@OlivierLi
Created April 20, 2013 01:19
Show Gist options
  • Save OlivierLi/5424311 to your computer and use it in GitHub Desktop.
Save OlivierLi/5424311 to your computer and use it in GitHub Desktop.
###Famille "Modules"
____
####Élements
* Modules
####Relations
* Fait Partie De
* Dépend De
* Est Un
####Restrictions Topologiques
* Aucune (voir styles)
____
####Utile Pour
* Construction
* Plan pour le code
* Analyse Traçabilité des exigences
* Analyse d'impact (modifications)
* Planification Développement incrémental
* Allocation des tâches, budget
* Communication
____
####Pas Utile Pour
* Prédire comportement à l'exécution
###Famille Composants et Connecteurs
____
####Éléments
* Composants
* Traitement
* Stockage de données
* Connecteurs
* Mécanismes d'interaction
####Relations
* Est Associé À
* Port: Interface du composant
* Rôle: Interface du connecteur
####Restrictions Topologiques
* Aucune (voir styles)
____
####Utile Pour
* Analyser les Attributs de Qualité à l'exécution
* Performance, fiabilité disponibilité
####Pas Utile Pour
* Représenter des éléments qui n'ont pas de présence à l'exécution
###Famille Allocation
____
####Éléments
* Logiciels
* Environnementaux
####Relations
* Est Alloué À
####Restrictions Topologiques
* voir styles
####Utile/Inutile Pour
* voir styles
###Style Décomposition Modulaire (Modules)
___
####Éléments
* Modules
####Relations
* Décomposition
* Spécialisation de "Fait Partie De"
####Restrictions Topologiques
* Aucune boucle dans le graphe de décomposition
* Un module ne peut pas faire partie de plus d'un module dans une vue
___
####Utile Pour
* Apprendre incrémentalement le système
* Établir l'attribution des tâches
* Supporter l'analyse d'impact partielle
###Style Utilise (Modules)
Montre les dépendances inter-modules
___
####Éléments
* Modules
####Relations
* Utilise
* A utilise B si A dépend de la présence fonctionnelle de B
___
####Utile Pour
* Planifier développement incrémental, débogage, tests, analyse d'impact
###Style En Couches (Modules)
Superposition de couches selon la relation unidirectionnelle "Peut utiliser"
___
####Éléments
* Couches Logicielles
* Spécialisation de "module"
####Relations
* Peut Utiliser
* Ne pas confondre avec "Appelle" et "Utilise"
___
####Utile Pour
* Portabilité
* Réutilisation
* Separation of concerns
###Style Aspects (Modules)
Montre les aspects qui implémentent des préoccupations transversales
* Contrôle d'accès, logging, etc
___
####Éléments
* Aspect
* Spécialisation de "Module"
####Relations
* Crosscuts
* Association d'un aspect à un module régulier
####Restrictions Topologiques
* Un aspect peut crosscut un ou plusieurs aspects/modules
* Crosscut soi-même pourrait mener à une récursion infinie
___
####Utile Pour
* Modéliser les préoccupations transversales
###Style Modèle de données (Modules)
Décrit la structure des données et leurs interrelations
___
####Éléments
* Entité de données
####Relations
* Associations Logiques (1..1, 1..*, etc)
* Généralisation/Spécialisation
* Aggrégation
####Restrictions Topologiques
* Éviter les dépendances fonctionnelles
___
####Utile Pour
* Décrire la structure des données
* Faciliter l'analyse d'impact et l'extensibilité
* Améliorer la qualité des données (moins d'incohérences, redondance)
###Style Pipe and Filter (CnC)
___
####Éléments
* Composants: Filtres
* Transformation incrémentale/flux-à-flux
* Peu d'information contextuelle
* Aucune conservation d'état entre les instanciations
* Aucune connaissance des filtres autour
* Connecteurs: Pipes (Tubes)
* Transmission de filtre en filtre de façon unidirectionnelle
####Restrictions Topologiques
* Tube entre sortie d'un filtre et entrée d'un autre
* Filtre: 1..* tubes entrée/sortie
###Style Client-Serveur (CnC)
___
####Éléments
* Composants
* Clients
* Serveurs
* Connecteurs
* Requête/réplique
####Relations
* Associations entre client et rôle (requête) d'une part
* Associations entre rôle (réplique) et serveur de l'autre part
___
####Utile Pour
* Découpler les applications clientes des services consommés
* Grouper ensemble des services communs
* Performance, extensibilité, fiabilité, disponibilité
###Style Publication-Abonnement (CnC)
___
####Éléments
* Composants: Tous types de composants CnC avec une interface de publication-abonnement
* Connecteurs: Publication-Abonnement
####Relations
* Associations composants-Connecteurs
####Restrictions Topologiques
* Tous les composants sont raccordés à un distributeur d'événements
___
####Utile Pour
* Transmettre des événements à un ensemble inconnu de récipiendaires
* Exemples: MVC, Observer
###Style Peer-to-Peer (CnC)
___
####Éléments
* Composants: Peer
* Connecteurs: invoque-procédure
####Relations
* Associations composants-connecteurs
___
####Utile Pour
* Découpler une application en zones de collaboration
###Style SOA (CnC)
___
####Éléments
* Composants
* Fournisseur
* ESB
* Registre de services
* Services d'orchestration
* Connecteurs
* Connecteurs SOAP
* Connecteurs REST
* Connecteurs message
####Relations
* Associations composants-connecteurs
___
####Utile Pour
* Interopérabilité
* Intégration des systèmes patrimoniaux (legacy)
###Style Données Partagées (CnC)
___
####Éléments
* Composants: Dépôts de données
* Connecteurs: Lecture/Écriture
####Relations
* Associations composants-connecteurs
####Restrictions Topologiques
* Clients utilisent connecteurs associés à un dépôt de données
___
####Utile Pour
* Interactions dominées par accès à des données persistantes
* Analyses de
* Performance
* Sécurité
* Confidentialité
* Fiabilité
###Style Déploiement (Allocation)
___
####Éléments
* Logiciels: typiquement processus
* Environnementaux: matériel informatique
####Relations
* Est Alloué À
* Migré/Copié Vers
___
####Utile Pour
* Analyses
* Performance
* Fiabilité
* Sécurité
* Coûts
###Style Installation (Allocation)
___
####Éléments
* Logiciels: composants d'une vue CnC
* Environnementaux: éléments de configuration
* Répertoires
* Fichiers
####Relations
* Est contenu dans
* Est alloué à
####Restrictions Topologiques
* Hiérarchie des éléments de configuration
___
####Utile Pour
* Création de procédures build-and-deploy
* Mise-à jour d'une configuration
* Sélection et configuration de composants pour une version donnée
###Style Attribution de tâches (Allocation)
___
####Éléments
* Logiciels: Modules
* Environnementaux: Individus/Équipes
####Relations
* Est alloué à
___
####Utile Pour
* Montrer qui va faire quoi
* Gérer l'attribution des tâches
* Expliquer la structure globale d'un projet
###ADD
####Pilotes Architecturaux
1. Assigner priorités aux requirements (H, M), (H, H), etc
2. Choisir top 5-6 requirements
3. Ce sont les pilotes architecturaux
####Étapes
1. Choisir le module à décomposer
2. Détailler le module comme suit
1. Choisir les pilotes architecturaux
2. Choisir un style qui satisfait les pilotes en se basant sur les tactiques
* Identifier les modules enfants requis pour implémenter les tactiques
3. Instancier les modules et allouer la fonctionnalité
* Vues multiples
4. Définir les interfaces des modules enfants
5. Vérifier et détailler les cas d'utilisation et scénarios de qualité
* Convertir en contraintes pour les modules enfants
3. Répéter l'étape 2 pour chaque module additionnel à décomposer
###Documentation architecturale
####Règles
1. Rédiger du point de vue du lecteur
2. Éviter la répétition inutile
3. Éviter l'ambiguité
4. Utiliser une organisation standard
5. Documenter l'exposé des motifs
6. Garder la documentation à jour, mais pas trop
7. Réviser la documentation pour son aptitude à l'emploi
####Étapes de la production de documentation architecturale
1. Choix des vues
* En fonction de qui on vise (PM, Mainteneur, Développeur, etc)
1. Produire un tableau des parties-prenantes/vues
2. Combiner les vues
3. Prioriser
2. Documentation de chaque vue
3. Documentation additionnelle
* Documentation roadmap
* How a view is documented
* System Overview
* Mapping between views
* Rationale
###Documentation des interfaces
Important pour
* Diriger le développement
* Définir les contrats des composants logiciels
* Analyse d'impact
* Cacher les détails d'implémentation
###Documentation du comportement
Important pour
* Diriger les activités de développement
* Diverses formes d'analyse
###SEI-ATAM
Pourquoi est-il important d'analyser une architecture?
* Permet d'identifier les risques
* Réduire
* Permet d'établir l'alignement entre l'architecture et les attributs de qualité choisis
* ATAM permet de savoir si le système a le potentiel de remplir les requirements
* Avant que l'organisation ait commit et commencé à développer
* Prioriser
* Rationaliser et valider les décisions architecturales
###Normes
####Importance
* Permettent de fournir une certaine garantie de
* Performance
* Qualité
* Interchangeabilité
###Tactiques
* Attribut
* Catégorie de tactique
* Tactique
* Disponibilité
* Fault detection
* Ping/Echo
* Recovery-Preparation and Repair
* Recovery-Reintroduction
* Checkpoint/Rollback
* Prevention
* Modificability
* Localize changes
* Abstract common services
* Prevention of ripple effect
* Defer binding time
* Configuration files
* Performance
* Resource demand
* Increase computational efficiency
* Resource management
* Introduce concurrency
* Resource arbitration
* Security
* Resisting attacks
* Authenticate users
* Detecting attacks
* Intrusion detection
* Recovering from an attack
* Testability
* Manage input/output
* Separate interface from implementation
* Internal monitoring
* Built-in monitors
* Conviviality
* Separate user interface
* Support user initiative
* Undo
* Support system initiative
* User model
###SEI-QAW
####Scenario
* Source
* Stimulus
* Artefact
* Environnement
* Réponse
* Mesure de réponse
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment