1/23
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Software Architecture
It is a representation that enables a software engineer to analyze the effectiveness of the design, consider architectural alternatives, and reduce the risks associated with the construction of the software.
Software architecture
Provides a representation that facilitates communication among all stakeholders interested in the development of a computer-based system.
Architecture
highlights early design decisions that will have a profound impact on all software engineering work that follows.
Architecture
Constitutes a relatively small, intellectually graspable mode of how the system is structured and how its components work together.
IEEE-Std-42010-2011
Describes the use of architecture viewpoints, architecture frameworks, and architecture description languages as a means of codifying the conventions and common practices for architectural description.
Achitectural description
A collection of products to document an architecture.
Set of components
Perform a function required by a system.
Set of connectors
Enable “communication, coordination and cooperation” among components.
Constraints
Define how components can be integrated to form the system.
Semantic models
Enable a designer to understand the overall properties of a system by analyzing the known properties of its constituent parts.
Data Centered Architecture
Focuses on a central data store that different components access, update, and share.
Data Flow Architecture
Uses a pipeline or series of transformations where input data flows through processing steps until output is produced.
Call Return Architecture
Organizes software into modules with a hierarchy of control, where higher-level modules call lower-level ones and get results back.
Object-Oriented Architecture
Structures the system as a collection of interacting objects that encapsulate data and behavior.
Layered Architecture
Divides the system into layers where each layer provides services to the one above it.
User Interface Layer
Application Layer
Utility Layer
Core Layer
Layers of Architecture
Model View Controller Architecture
Separates data, user interface, and control logic, improving modularity and maintainability.
Economy
Visibility
Spacing
Symmetry
Emergence
Architectural Considerations
Economy
Software is uncluttered and relies on abstraction to reduce unnecessary detail.
Visibility
Architectural decisions and their justifications should be obvious to software engineers who review.
Spacing
Separation of concerns in a design without introducing hidden dependencies.
Symmetry
Architectural symmetry implies that a system is consistent and balanced in its attributes.
Emergence
Emergent, self-organized behavior and control are key to creating scalable, efficient, and economic software architectures.
Archetype
An abstraction that represents one element of system behavior.