Architectural Design Software, Systems and Infrastructure Architectures Flashcards
What is the difference between Software Architecture and Application Architecture?
While both software architecture and application architecture involve designing and organizing components, the key difference lies in scope. Software architecture addresses the overarching structure of an entire system, including multiple applications, while application architecture is concerned with the structure of a single application or a set of closely related applications.
Explain the Architectural Design Process.
Analysis Requirements (A): this initial step involves an understanding and analysis of both the functional and non-functional requirements,
Design (B): the architectural blueprint is developed regarding the high-level structure of the system, the organization of its components and how they will interact,
it’s like a plan to guide the implementation of the system,
Development (C): the development phase involves translating the architectural decisions into actual code, bringing the designed system to life.
Deployment (D): this phase involves releasing the developed system for use, including also installing and configuring the software in the production environment, making the system accessible and functional for the users to use.
What are Architectural Models for?
- These provide a visual representations of the system’s structure and behavior and help communicate design decisions to stakeholders.
- Some examples are UML diagrams, flowcharts and DFD’s.
What are the Architecture Attributes for?
These define the qualities or characteristics of the system, they are like the non-functional requirements.
What is System Structuring?
- Involves organizing system components and defining their relationships.
- This includes decisions about modularization, component interactions, and communication mechanisms.
What is Modular Decomposition?
Process of breaking down the system into smaller, manageable modules. Each module has a specific function and** interacts with other modules through well-defined interfaces**.
Explain the Object Model
Represent the system using object-oriented principles. This includes identifying objects, their attributes, and the relationships between objects.
Explain the Data-Flow Model
Illustrates how data moves through the system. They depict processes, data stores, and data flows within the system.
Explain the Technological/System Architecture
Focuses on the underlying technology stack, including hardware, software, networking, and other infrastructure components.
Explain the Monolithic Architecture (MON)
- Traditional software design pattern where the entire application is developed as a single, indivisible unit.
- In a monolithic architecture, all components, such as the user interface, business logic, and data storage, are tightly coupled.
Main Characteristics:
1. Single codebase and deployment unit.
2. Scaling is achieved by replicating the entire application.
3. Simplified development and debugging.
Explain the Service-Oriented Architecture (SOA)
- Architectural pattern where a system is composed of loosely coupled services.
- Services are independent, self-contained modules that communicate with each other through well-defined interfaces.
Main Characteristics:
1. Promotes reusability and modularity.
2. Services communicate via standardized protocols.
3. Flexibility in scaling individual services.
Explain the Microservices Architecture (MSA)
An evolution of SOA where an application is divided into small, independent services that can be developed, deployed, and scaled independently. Each microservice focuses on a specific business capability.
Main Characteristics:
1. Decentralized and independently deployable services.
2. Enables continuous delivery and deployment.
3. Resilient and fault-tolerant systems.
Explain the Distributed Systems Architectures
Involves the design of systems that run on multiple machines and communicate to achieve a common goal. This includes various architectures like client-server, peer-to-peer, and distributed databases.
Main Characteristics:
1. Components may run on different physical machines.
2. Communication between components is crucial.
3. Enables scalability and fault tolerance.
Explain the Multiprocessor Architectures
Involve systems with multiple processors or central processing units (CPUs) that work together on a common task. This can include symmetric multiprocessing (SMP) or massively parallel processing (MPP) systems.
Main Characteristics:
1. Improved performance through parallel processing.
2. Shared memory or distributed memory configurations.
3. Common in high-performance computing.
Explain the Middleware
Basically a bridge between different software applications, enabling communication and data management. It provides a set of services that abstract the complexities of distributed systems and facilitate interoperability.
Main Characteristics:
1. Message passing and communication middleware.
2. Middleware services may include transaction management, security, and data distribution.
3. Simplifies development of distributed applications.