1/75
Vocabulary flashcards covering key concepts from the lecture notes on software architecture, design views, quality attributes, patterns, styles, and concurrency.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Software architecture
The set of structures of a software system including software elements, their externally visible properties, and the relationships among them; influenced by technical, business, and social factors.
Static structure
The architectural part that is fixed at compile time (code and components) rather than runtime.
Dynamic structure
Runtime aspects of the architecture, including data flows, control flows, and interactions during execution.
External properties
Visible properties of the system from the outside, including behavior and quality attributes.
Quality attributes
Non-functional requirements like security, performance, maintainability, and availability.
Element architectural
A fundamental architectural building block possessing defined responsibilities, a defined boundary, and well-defined interfaces.
Boundary
The dividing line around an architectural element that separates it from others.
Interfaces
Defined entry/exit points that expose the services provided by an element.
Stakeholder
An individual, group, or organization with interests or concerns regarding the architecture.
Concern
An expectation or objective held by a stakeholder; may be conflicting with others.
Architecture Description (AD)
A set of deliverables that document an architecture; the description language should fit the audience.
Candidate architecture
A particular arrangement of static and dynamic structures with potential to meet required behavior and quality properties.
Role of the architect
Lead design and documentation; engage stakeholders; derive and justify architectures; guide realization.
ABC (Architecture Business Cycle)
A seven-phase method for architectural design: case creation, needs understanding, architecture creation/selection, documentation, analysis/evaluation, implementation, maintenance.
ABC Phase 1: Case creation
Identify/involve stakeholders; capture interests; define architecture to address them; guide realization.
ABC Phase 2: Understanding needs
Capture and clarify requirements; recognize informal/chidden factors.
ABC Phase 3: Architecture creation/selection
Create or select an architecture that achieves required behaviors and qualities.
ABC Phase 4: Documentation and communication
Provide clear, unambiguous, stakeholder-tailored documentation; use standard templates.
ABC Phase 5: Analysis and evaluation
Rational justification of choices; assess against quality attributes.
ABC Phase 6: Implementation
Build the system in accordance with the architecture.
ABC Phase 7: Maintenance
Maintain the architecture and its representations over time.
Kruchten 4+1 views
A model using five views (logical, development, process, physical/deployment, and scenarios) to describe software architecture.
Kruchten: Logical view
Functional structure: classes, objects, and their relationships to realize functionality.
Kruchten: Development view
Organization of software modules for developers (component and module concerns).
Kruchten: Process view
Dynamic behavior, concurrency, and interaction of processes at runtime.
Kruchten: Physical/Deployment view
Mapping of software artifacts to hardware nodes and deployment topology.
Kruchten: Scenarios
Use cases illustrating how views interact to fulfill system requirements.
Conceptual integrity
Clarity and coherence of the system design, ideally achieved by a small group collaborating.
Fault
An error or defect occurring in a system that is not necessarily visible to users.
Failure
An event where the system does not perform as expected, visible to users.
Disponibilité/Availability
La probabilité qu'il soit opérationnel lorsqu'on en a besoin.
Tactiques :
empêcher que la faute devienne un échec
reprendre sur une faute
faire de la prévention
Modifiabilité
Le coût des changements
Tactiques :
localiser les modifications
diminuer les dépendances
repousser le moment du lien
Performance
Lié au temps
Tactiques :
ressource à la demande
management des ressources
arbitrage des ressources
Sécurité
Une mesure de la capacité du système à résister à une utilisation non autorisée tout en continuant à fournir ses services aux utilisateurs légitimes.
Tactiques :
résister à l’attaque
détecter les attaques
réagir à l’attaque
reprendre sur une attaque
Testabilité
La facilité avec laquelle les logiciels peuvent être testés (généralement par des tests basés sur l'exécution) afin de mettre en évidence leurs défauts.
Tactiques :
input/output
monitoring interne
Utilisabilité
La facilité avec laquelle l'utilisateur peut accomplir une tâche souhaitée et le type d'assistance fourni par le système.
Architectural tactics
Techniques used to achieve quality attributes within an architecture.
Singleton
Ensures a class has only one instance and provides a global access point to it.
Abstract Factory
Creates families of related objects without specifying their concrete classes.
Prototype
Creates new objects by cloning a prototype instead of constructing them anew.
Configuration
Centralizes configuration state in a single object to control system behavior.
Facade
Unifies and simplifies access to a set of interfaces in a subsystem.
Proxy
Controls access to another object, often adding a layer of indirection.
Decorator
Adds responsibilities to objects dynamically by wrapping them with additional behavior.
Player role
Patron de conception qui permet à un objet de jouer plusieurs rôles et d’en changer dynamiquement.
Composite
Treats individual objects and compositions uniformly as part-whole hierarchies.
Bridge
Separates an object's abstraction from its implementation.
Flyweight
Shares many small objects to support large numbers of similar objects efficiently.
Strategy
Encapsulates interchangeable algorithms; selects one at runtime.
Visitor
Encapsulates operations to be performed on elements of an object structure, enabling new operations without changing the objects.
Memento
Captures and externalizes an object's internal state for later restoration.
Template
Patron de conception comportemental qui permet de mettre le squelette d’un algorithme dans la classe mère, mais laisse les sous-classe redéfinir certaines étapes de l’algorithme sans changer la sturcture.
State
Allows an object to alter its behavior when its internal state changes.
Observer
Defines a one-to-many dependency so that when one object changes, others are notified.
Command
Encapsulates a request as an object, enabling parameterization and queuing of requests.
Interpreter
Transforms a language/grammar into executable actions.
Interceptor
Extends or refines a component’s behavior by dynamically adjusting its operations.
Immutable
An object whose state cannot be modified after creation.
Read-only object
An object interface that exposes only read access to its state.
REST style
Stateless client-server interactions using identified resources, representations, and HATEOAS.
Connection-Oriented Style
Data transfer with an established, managed connection and QoS guarantees.
Connection-Less Style
Data transfer without a persistent connection; typically faster but less reliable.
Client-Server Style
Les ressources et les services sont hébergés en un seul endroit.
Avantages
– Plus facile à entretenir qu'un système « plus distribué »
Inconvénients
– Les clients ne peuvent pas être avertis
– Évolutivité limitée
– Point de défaillance unique
– Dépend d'un client léger ou lourd
Client-Stateless Server
Le serveur ne gère aucune session
Avantages
– Évolutivité
• Intéressant pour l'équilibrage de charge
– Débogage
• Les événements sont plus faciles à analyser
• Pas de contexte -> pas d'historique
– Fiabilité
• Indépendance de l'état du serveur, récupération plus facile après des pannes partielles.
Inconvénients
– Diminution des performances réseau
Mobile Code: Remote Evaluation Style
Le client envoie un « bloc de calcul » au serveur.
Avantages
• Utile pour les clients disposant de ressources limitées (RAM, CPU, bande passante)
Inconvénients
• Le serveur doit faire confiance au client (son utilisateur et son code) !
• Bande passante ?
Mobile code: Code on Demand Style
Le client envoie une description de la tâche à effectuer. Le serveur répond avec le meilleur « morceau de code ».
Avantages
• Le client dispose toujours d'une procédure à jour et optimisée pour exécuter une tâche.
Inconvénients
• Le client doit faire confiance au serveur.
• Bande passante ?
Mobile code: Mobile Agent
« code à la demande » ou « évaluation à distance », mais le code est déplacé avec ses données.
Avantages
• Le code est plus autonome et nécessite moins de bande passante pour fonctionner.
• Peut résoudre des problèmes complexes qui s'alignent naturellement avec ce paradigme.
Inconvénients
• Bande passante.
• Complications possibles lors de la réplication des données entre les agents.
• Sécurité.
• Complexité : conception, débogage, technologie.
Pipes & Filters
Les données sont transformées depuis les entrées externes d'un système vers ses sorties externes grâce à une série de transformations effectuées par ses filters reliés par des pipes.
Avantages
– Amélioration de la réutilisation grâce à l'indépendance des filtres.
– Amélioration du débit grâce à la parallélisation du traitement des données.
– Simplification du raisonnement sur le comportement global.
– L'assemblage peut être facilement modifié.
Inconvénients
– Ne convient pas aux systèmes interactifs.
Publish-Subscribe Style
Il existe un certain nombre de producteurs et de consommateurs de données indépendants qui doivent interagir.
Avantages
– Réduction du couplage entre émetteurs/récepteurs
Inconvénients
– Le point de vue d'assemblage est configuré par programmation, il est difficile de savoir où les messages sont envoyés... de manière statique !
– L'agent intermédiaire peut constituer un goulot d'étranglement
• Latence et évolutivité
Multi-Tier Style
Tirez parti des « serveurs d'applications » pour diviser l'application en composants.
Avantages
– Déployer des composants sur des serveurs d'applications spécialisés pour bénéficier de leur valeur ajoutée :
• Web, sécurité, équilibrage de charge, persistance, fiabilité, etc.
– Moins de couplage entre les niveaux
Inconvénients
– Complexité et surcoût éventuel
SOA (Service-Oriented Architecture)
Architecture based on publishable services with interoperable interfaces.
ESB (Enterprise Service Bus)
Middleware that routes and transforms messages between service providers and consumers.
Orchestration
Coordinating multiple services to implement a business process.
ETL (Extract, Transform, Load)
Pattern for moving and transforming data from sources into a target system.
MOM (Message Oriented Middleware)
Middleware using queues to store and transport messages between producers and consumers.
Queue operations (PUT/GET/POLL/NOTIFY)
Mechanisms for sending, retrieving, polling, or notifying about messages in queues.