Architectural Modeling and Design

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

What is Architectural Modeling and Design?

Architectural Modeling and Design is the process of creating representations of a system's architecture before implementation. It provides a structured way to visualize, analyze, and document a system's components, relationships, and behavior.

What is the purpose of Architectural Modeling and Design?

  • Ensures a clear understanding of how the system should function.
  • Helps in identifying potential issues before development.
  • Improves scalability, maintainability, and flexibility.
  • Supports collaboration between developers, architects, and stakeholders.
  • All of the above. (correct)

What is software architecture pattern?

A software architecture pattern defines the high-level structure and organization of a software system. It outlines the fundamental components, their interactions, and the overall layout of the system.

What is design pattern?

<p>A design pattern is a smaller-scale solution to a recurring design problem within a software component or module. Design patterns address specific design challenges, providing standardized solutions that enhance code reusability, readability, and maintainability.</p> Signup and view all the answers

What do Structural Models represent?

<p>Structural Models represent the static structure of a system, including components, relationships, and interfaces.</p> Signup and view all the answers

What do Behavioral Models represent?

<p>Behavioral Models represent the dynamic behavior of a system, including interactions, workflows, and state changes.</p> Signup and view all the answers

What do Functional Models focus on?

<p>Functional Models focus on the functionality of the system, describing what the system does.</p> Signup and view all the answers

What do Data Models represent?

<p>Data Models represent the data structures, relationships, and constraints within a system.</p> Signup and view all the answers

What do Physical Models represent?

<p>Physical Models represent the physical deployment and hardware components of a system.</p> Signup and view all the answers

What is the Layered Architecture Pattern also known as?

<p>N-tier architecture</p> Signup and view all the answers

In a Layered Architecture Pattern, which layer is the user interface layer where we see and enter data into an application?

<p>Presentation Layer (B)</p> Signup and view all the answers

In a Layered Architecture Pattern, which layer is responsible for executing business logic and workflows?

<p>Application Layer (C)</p> Signup and view all the answers

In a Layered Architecture Pattern, which layer handles database connections and queries?

<p>Data Access Layer (B)</p> Signup and view all the answers

In a Layered Architecture Pattern, which layer has a database for managing data?

<p>Data Layer (B)</p> Signup and view all the answers

What does the Client-Server Architecture Pattern separate?

<p>The Client-Server Architecture Pattern separates the application into clients (user interfaces) and servers (data processing).</p> Signup and view all the answers

In the Client-Server Architecture Pattern, which layer is the user interface that interacts with the user?

<p>Client Layer (Frontend) (C)</p> Signup and view all the answers

In the Client-Server Architecture Pattern, which layer processes requests and applies business rules?

<p>Business Logic Layer (Middleware/Processing) (A)</p> Signup and view all the answers

In the Client-Server Architecture Pattern, which layer stores and retrieves data?

<p>Data Layer (Backend/Database Server) (B)</p> Signup and view all the answers

What triggers services in the Event-Driven Architecture Pattern?

<p>Services in the Event-Driven Architecture Pattern are triggered by events.</p> Signup and view all the answers

What are the three main logical components in the Model-View-Controller architecture?

<p>Model, View, and Controller.</p> Signup and view all the answers

The core system of a Microkernel Architecture Pattern handles customized processing.

<p>False (B)</p> Signup and view all the answers

What does the Microservices Pattern structure applications as?

<p>A collection of small, independently deployable services.</p> Signup and view all the answers

What is the Space-Based Architecture Pattern also known as?

<p>Cloud-Based or Grid-Based Architecture Pattern.</p> Signup and view all the answers

What is the Master-Slave Architecture Pattern also known as?

<p>Primary-Secondary Architecture.</p> Signup and view all the answers

What is the main element of the Pipe-Filter Architecture Pattern?

<p>Filters that are connected by pipes.</p> Signup and view all the answers

What is a broker component used for in the Broker Architecture Pattern?

<p>The broker component receives client requests and routes them to the appropriate server or service.</p> Signup and view all the answers

In the Peer-to-Peer Architecture, there is a central authority.

<p>False (B)</p> Signup and view all the answers

What is UML?

<p>Unified Modeling Language is a standardized visual modeling language that is a versatile, flexible, and user-friendly method for visualizing a system's design.</p> Signup and view all the answers

Why do we need UML?

<p>We need UML (Unified Modeling Language) to visually represent and communicate complex system designs, facilitating better understanding and collaboration among stakeholders.</p> Signup and view all the answers

What do structure diagrams show?

<p>Structure diagrams show the things in the modeled system. In a more technical term, they show different objects in a system.</p> Signup and view all the answers

What do behavioral diagrams show?

<p>Behavioral diagrams show what should happen in a system. They describe how the objects interact with each other to create a functioning system.</p> Signup and view all the answers

What do class diagrams show?

<p>Class diagrams show the classes in a system, attributes, and operations of each class and the relationship between each class.</p> Signup and view all the answers

What does a component diagram display?

<p>A component diagram displays the structural relationship of components of a software system. These are mostly used when working with complex systems with many components.</p> Signup and view all the answers

What does a deployment diagram show?

<p>A deployment diagram shows the hardware of your system and the software in that hardware.</p> Signup and view all the answers

What do object diagrams show?

<p>Object diagrams show what a system will look like at a given time. Because there is data available in the objects, they are used to explain complex relationships between objects.</p> Signup and view all the answers

What is a package diagram?

<p>Package diagram is a pattern for grouping elements and defining their interdependencies (packages). The main goal of package diagrams is to simplify the complex class diagrams that can be used to group classes into packages.</p> Signup and view all the answers

What is a composite structure diagram?

<p>A Composite Structure Diagram is a type of static structure diagram in UML that shows the internal structure of a classifier, its parts, ports, and connectors.</p> Signup and view all the answers

What is a Use Case Diagram?

<p>As the most known diagram type of the behavioral UML types, Use case diagrams give a graphic overview of the actors involved in a system, different functions needed by those actors and how these different functions interact.</p> Signup and view all the answers

What do Activity diagrams represent?

<p>Activity diagrams represent workflows in a graphical way. They can be used to describe the business workflow or the operational workflow of any component in a system.</p> Signup and view all the answers

What are state machine diagrams useful for?

<p>State machine diagrams are useful to describe the behavior of objects that act differently according to the state they are in at the moment.</p> Signup and view all the answers

What do Sequence Diagrams show?

<p>Sequence diagrams in UML show how objects interact with each other and the order those interactions occur. It's important to note that they show the interactions for a particular scenario.</p> Signup and view all the answers

What does a Communication Diagram focus on?

<p>Communication diagrams are similar to sequence diagrams, but the focus is on messages passed between objects. The same information can be represented using a sequence diagram and different objects.</p> Signup and view all the answers

What is an Interaction Overview Diagram?

<p>Interaction overview diagrams are very similar to activity diagrams. While activity diagrams show a sequence of processes, Interaction overview diagrams show a sequence of interaction diagrams.</p> Signup and view all the answers

What is High-Level Design?

<p>High-Level Design is an initial step in development of applications where overall structure of a system is planned.</p> Signup and view all the answers

Which of the following is a component of High-Level Design?

<p>All the above. (D)</p> Signup and view all the answers

What does a HLD document consist of?

<p>HLD document consists of data flows, flowcharts, and data structures to help developers in understanding and implement how the current system is being designed intentionally to function.</p> Signup and view all the answers

When is a High-Level Design required?

<p>An HLD is usually prepared at the early stages of a software project, typically during the Analysis phase of the SDLC.</p> Signup and view all the answers

What is Capacity estimation?

<p>Capacity estimation in system design involves predicting the resources (such as processing power, memory, and bandwidth) required to meet the expected workload.</p> Signup and view all the answers

What is the role of Web Sockets?

<p>Web Sockets play a crucial role that solving problems and enabling us to have real-time communication. WebSocket is a full-duplex protocol as it allows the application to send and receive data at the same time.</p> Signup and view all the answers

What is Polling?

<p>Polling another way of sending and receiving data from a server. There are mainly 2 types of polling.</p> Signup and view all the answers

What is Server-Sent Events(SSE)?

<p>Server-Sent Events (SSE) It is purposely built as one-way communication from servers to clients in specific design systems. SSE is a technology that helps to push real-time updates from the server to the clients over HTTP connection.</p> Signup and view all the answers

What is Rate Limiting?

<p>Rate Limiting a rate limiter restricts the number of events that can be done in a timeframe by restricting the number of requests a sender can send in a given period of time. Here once the threshold limit is reached now further it blocks the incoming requests</p> Signup and view all the answers

What is Resiliency?

<p>Resiliency No matter how great a system we design there is always a chance of faults and failure which could be because of hardware issues or software issues(such as running low on memory) or there can be some human error.</p> Signup and view all the answers

Flashcards

Architectural Modeling and Design

The process of creating representations of a system's architecture before implementation to visualize, analyze, and document system components.

Purpose of Architectural Modeling and Design

Ensures a clear understanding of how the system should function, identifies potential issues, improves scalability and supports collaboration.

Software Architecture Pattern

Defines the high-level structure and organization of a software system, focusing on macro-level aspects such as scalability and performance.

Design Pattern

Smaller-scale solution to a recurring design problem, enhancing code reusability and readability within a software component or module.

Signup and view all the flashcards

Structural Models

Represent the static structure of a system, including components, relationships, and interfaces, using diagrams like class and component diagrams.

Signup and view all the flashcards

Behavioral Models

Show the dynamic behavior of a system, capturing interactions and workflows through use case, sequence, and activity diagrams.

Signup and view all the flashcards

Functional Models

Focus on system functionality, describing what the system does, using data flow and functional decomposition diagrams.

Signup and view all the flashcards

Data Models

Represent data structures, relationships, and constraints within a system using entity-relationship diagrams and database schemas.

Signup and view all the flashcards

Physical Models

Represent the physical deployment and hardware components of a system, using deployment and network topology diagrams.

Signup and view all the flashcards

Layered Architecture Pattern

An architectural framework where layers are independent and have unique tasks in software development.

Signup and view all the flashcards

Presentation Layer

User interface layer for seeing and entering data.

Signup and view all the flashcards

Application Layer

Executes business logic and workflows.

Signup and view all the flashcards

Data Access Layer

Handles database connections and queries.

Signup and view all the flashcards

Data Layer

Contains the database for managing data.

Signup and view all the flashcards

Client-Server Architecture Pattern

An architecture that separates the application into clients and servers to manage data sharing and interactions.

Signup and view all the flashcards

Client Layer

The user interface layer that interacts with the user.

Signup and view all the flashcards

Business Logic Layer

Processes requests and applies business rules.

Signup and view all the flashcards

Data Layer in Client-Server

Stores and retrieves data for the application.

Signup and view all the flashcards

Event-Driven Architecture Pattern

An approach where services are triggered by events; a state change generates a reaction.

Signup and view all the flashcards

Model-View-Controller (MVC)

Architecture with Model, View, and Controller components that isolates business logic from presentation.

Signup and view all the flashcards

Microkernel Architecture Pattern

System with a core that handles fundamental operations and plug-ins for functionalities.

Signup and view all the flashcards

Microservices Pattern

Collection of small, independently deployable services.

Signup and view all the flashcards

Space-Based Architecture Pattern

Known as Cloud-Based or Grid-Based Architecture, addresses the scalability issues associated with large-scale and high-traffic applications.

Signup and view all the flashcards

Master-Slave Architecture Pattern

Architecture with one master and multiple slaves to assign tasks and report results for parallel processing and load distribution.

Signup and view all the flashcards

Pipe-Filter Architecture Pattern

Structures system around processing elements (filters) connected by pipes.

Signup and view all the flashcards

Broker Architecture Pattern

Used in distributed systems to manage communication between clients and servers by routing requests.

Signup and view all the flashcards

Peer-to-Peer Architecture (P2P)

Decentralized network model where each node acts as both client and server, sharing resources directly.

Signup and view all the flashcards

Unified Modeling Language (UML)

A standardized visual modeling language used to visualize, specify, construct, and document the artifacts of a software system.

Signup and view all the flashcards

Why Use UML?

To visually represent and communicate complex system designs, facilitating better understanding and collaboration among stakeholders.

Signup and view all the flashcards

Structure Diagrams

Show the things in the modeled system and defines different objects in a system.

Signup and view all the flashcards

Behavioral Diagrams

Show what should happen in a system and describes how the objects interact with each other to create a functioning system.

Signup and view all the flashcards

Class Diagram

The main building block of any object-oriented solution that shows classes, attributes, and operations, and relationships.

Signup and view all the flashcards

Component Diagram

Displays the structural relationship of system components and are mostly used when working with complex systems.

Signup and view all the flashcards

Deployment Diagram

Shows hardware and software in that hardware.

Signup and view all the flashcards

Object Diagram

They also show the relationship between objects in a system as well.

Signup and view all the flashcards

Package Diagram

Groups elements and defines their interdependencies.

Signup and view all the flashcards

Composite Structure Diagram

a type of static structure diagram in UML that shows the internal structure of a classifier, its parts, ports, and connectors.

Signup and view all the flashcards

Use Case Diagram

a common diagrams that uses a graphic overview of actors involved in system.

Signup and view all the flashcards

Activity Diagram

Diagram that represents workflows in graphical way.

Signup and view all the flashcards

State Machine Diagram

Similar to activity diagrams, although notations and usages change bit.

Signup and view all the flashcards

Study Notes

Architectural Modeling and Design

  • Involves making representations of system architecture before implementation.
  • Allows visualization, analysis, and documentation of a system's components, relationships, and behavior.

Purpose of Architectural Modeling and Design

  • Ensures a clear understanding of how the system functions.
  • Helps identify potential issues early in development.
  • Improves scalability, maintainability, and flexibility.
  • Enhances collaboration among developers, architects, and stakeholders.

Software Architecture Pattern

  • Defines a software system's high-level structure and organization.
  • Outlines fundamental components, their interactions, and the system's overall layout.
  • Guides decisions on scalability, performance, and maintainability.
  • Focuses on the system's macro-level aspects.
  • Establishes a framework for the design and implementation of the entire application.

Design Pattern

  • It offers a smaller-scale solution to a recurring design problem within a software component or module.
  • Addresses specific design challenges and provides standardized solutions for reusability, readability, and maintainability of code.
  • Concerned with micro-level design decisions within a single module or class.
  • Contributes to the overall structure defined by the architecture pattern.

Types of System Models

  • Structural Models: Represent the static structure of a system, including components, relationships, and interfaces, examples being class diagrams, component diagrams, and deployment diagrams.
  • Behavioral Models: Show the dynamic behavior of a system, including interactions, workflows, and state changes, examples being use case diagrams, sequence diagrams, state machine diagrams, and activity diagrams.
  • Functional Models: Focus on the system's functionality, describing what the system does, examples being data flow diagrams (DFDs) and functional decomposition diagrams.
  • Data Models: Represent data structures, relationships, and constraints in a system, examples being entity-relationship diagrams (ERDs) and database schemas.
  • Physical Models: Illustrate the physical deployment and hardware components of a system, examples being deployment diagrams and network topology diagrams.

Layered Architecture Pattern

  • A widely used framework in software development.
  • Each layer has unique, independent tasks.
  • Can modify code inside a layer without affecting others.
  • Also referred to as 'N-tier architecture'.

Common Layers in Layered Architecture

  • Presentation Layer: The user interface layer for seeing and entering data.
  • Application Layer: Handles business logic and workflows.
  • Data Access Layer: Manages database connections and queries.
  • Data Layer: Contains the database for managing data.

Client-Server Architecture Pattern

  • Divides an application into clients and servers.
  • Manages data sharing and user interactions.
  • Ideal for distributed systems and web-based services.
  • Client Layer (Frontend): User interface.
  • Business Logic Layer (Middleware/Processing): Processes requests and applies business rules.
  • Data Layer (Backend/Database Server): Stores and retrieves data.

Event-Driven Architecture Pattern

  • An agile approach where services in software are triggered by events.
  • User actions can cause state changes, resulting in reactions considered events.

Model-View-Controller Architecture

  • The MVC framework is a design pattern that separates an application into three logical components: Model, View, and Controller.
  • Isolates business logic and the presentation layer.
  • Traditionally used for desktop graphical user interfaces.
  • Model: Manages data logic and interacts with the database.
  • View: Handles data presentation and renders dynamically.
  • Controller: Manages request flow and does not handle data logic.

Microkernel Architecture Pattern

  • Involves both a core system and plug-in modules.
  • Core System: Manages the fundamental and minimum operations.
  • Plug-in Modules: Handle extended functionalities and customized processing.

Microservices Pattern

  • Structures applications as a collection of small, independently deployable services.
  • Enables scalability and rapid development, common in cloud-based systems.

Space-Based Architecture Pattern

  • Also known as Cloud-Based or Grid-Based Architecture Pattern.
  • Addresses scalability issues in large-scale, high-traffic applications.
  • Built around a shared memory space accessed by multiple nodes.

Master-Slave Architecture Pattern

  • Known as Primary-Secondary Architecture.
  • Involves a master component controlling multiple slave components.
  • Used for parallel processing and load distribution.
  • The master component assigns tasks to slave components.
  • The slave component reports results back to the master.

Pipe-Filter Architecture Pattern

  • Structures the system around processing elements called filters, connected by pipes.
  • Filters process data and pass it to the next filter via the pipe.

Broker Architecture Pattern

  • Manages communication between clients and servers in distributed systems.
  • A broker component receives client requests and routes them to the correct server or service.

Peer-to-Peer Architecture

  • Decentralized network model.
  • Each node, or peer, acts as both a client and a server.
  • No central authority or single point of control.
  • Peers share resources, data, and services directly with each other.

Modeling Notations

Unified Modeling Language (UML)

  • Standardized visual modeling language.
  • Versatile, flexible, and user-friendly method for visualizing a system's design.
  • Software system artifacts can be specified, visualized, built, and documented.
  • UML diagrams show the behavior and structure of a system.
  • Helps software engineers, businessmen, and system architects with modeling, design, and analysis.
  • UML is essential for communicating with non-programmers about necessary requirements, functionality, and system processes, and collaboration.

List of UML Diagram Types

  • Structure diagrams show the things in the modeled system, more technically show different objects in a system.
  • Behavioral diagrams show what should happen in a system and describe how the objects interact with each other to create a functioning system.

Class Diagram

  • A main building block of any object-oriented solution, shows classes in a system, attributes, operations, and the relationship between each class.
  • Class has three parts: Name at the top, attributes in the middle, and operations or methods at the bottom.
  • Related classes are grouped together and different types of arrows depict the relationships between the classes.

Component Diagram

  • Show the structural relationship of components of a software system and are used when working with complex systems with many components.
  • Components communicate with each other using interfaces, and the interfaces are linked using connectors.

Deployment Diagram

  • Shows the hardware of your system and the software in that hardware.
  • Diagrams are useful when your software solution is deployed across multiple machines with each having a unique configuration.

Object Diagram

  • Instance diagrams similar to class diagrams, showing relationships between objects using real-world examples.
  • They show what a system will look like at a given time and are used to explain complex relationships between objects.

Package Diagram

  • Packages group elements, define their interdependencies, and simplify complex class diagrams.
  • The UML elements in the package are based on logical relationships.

Composite Structure Diagram

  • A type of static structure diagram in UML that shows the internal structure of a classifier, its parts, ports, and connectors.
  • Provide a detailed view of how different elements within a classifier (such as a class, component, or deployment node) are composed and how they interact.

Use Case Diagram

  • Known as the most known diagram type of the behavioral UML types, diagrams give a graphic overview of the actors involved in a system functions interact, and functions needed by those actors.
  • It is a great starting point for any project discussion because you can easily identify the main actors involved and the main processes of the system.

Activity Diagram

  • Activity diagrams represent workflows in a graphical way, describe the business workflow or the operational workflow of any component in a system, and are used as an alternative to State machine diagrams.

State Machine Diagram

  • State machine diagrams are similar to activity diagrams, the notations are different, they are also known as state diagrams or state chart diagrams.
  • They are used to describe the behavior of objects that act differently according to the state they are in at the moment.

Sequence Diagram

  • Used to show how objects interact with each other and the order those interactions occur, showing the interactions for a particular scenario.
  • Interactions are represented as arrows and are represented vertically.

Communication Diagram

  • Similar to sequence diagrams, but the focus is on messages passed between objects.
  • The same information can be represented using a sequence diagram and different objects.

Interaction Overview Diagram

  • Similar to activity diagrams, interaction overview diagrams can show a sequence of interaction diagrams.
  • Interaction Overview diagrams come as a group and happen in order

Timing Diagram

  • Used to represent the behavior of objects in a given time frame.
  • If its only one object, the diagram is plain, if there is more than one, the diagram shows interactions between objects during that time frame.

High-Level System Design

  • Initial step in application development where the overall structure of a system is planned.
  • Focus is on how different components work together without internal coding details which helps everyone in the project understand the goals and ensures good communication during development.

Components of High-Level Design

  • System Architecture: An overview of the entire system which represents the structure and the relationships between various components. It helps to visually represent how different parts interact and function.
  • Modules and Components: Breaks down the systems into modules or components each with specific roles and responsibilities, and contributes to the entire system by helping develop an efficient system.
  • Data Flow Diagrams (DFDs): Demonstrates the movement of data within the system, and helps to understand how information is processed and handled.
  • Interface Design: Focuses on how different modules communicate with one another by detailing the application programming interfaces (APIs) and user interfaces necessary for seamless interaction between components.
  • Technology Stack: Made up of the various technologies and tools that will be used in the development of the system, which includes programming languages, frameworks, and databases.
  • Deployment Architecture: Where the system will be hosted and accessed and includes server configurations, cloud infrastructure, and network considerations.
  • High-Level Design Document: Consists of data flows, flowcharts, and data structures and helps developers in understanding and implement how the current system is being designed intentionally to function. This document is responsible for explaining the connections between system components and operations which depict the logic, and the architecture design needed (for the system's functionality and flow) for each and every module of the system as per the functional requirements.
  • An HLD is usually prepared at the early stages of a software project during the Analysis phase of the SDLC.
  • Capacity Estimation in system design involves predicting required resources (processing power, memory, and bandwidth) to meet workload expectations, ensures that a system can handle current and future demands efficiently, and prevent bottlenecking.
  • HTTP (HyperText Transfer Protocol) which enables communication between clients and servers transfers data over the web, helps users to requests resources like HTML pages, messages, videos or images, while HTTPS (HyperText Transfer Protocol Secure) which adds extra security through SSL/TLS encryption.
  • Web Sockets are important for real-time communication since it allows apps to send and receive data simultaneously which is very useful in web, gaming and chat apps.
  • Polling is another way to send and receive data from a server; There are 2 main types of polling:
    • Short polling, the client sends a request to the server and the server immediately sends data at fixed intervals whether the data is updated or not.
    • Long polling, the server waits for the client's request to respond and responds only and only if some new data is available or if some data is being updated.
  • Server-Sent Events (SSE) is purposely built as one-way communication from servers to clients in specific design systems, using a technology that helps to push real-time updates from the server to the clients over HTTP connection which Enables users to send data automatically as it becomes available in realtime streaming.
  • Rate Limiting restricts the number of events that can be blocked in a timeframe by restricting the number of requests.
  • Resiliency Is important because there is always a chance of hardware or software faults which require replication, redundancy and availability to alleviate the issues.
  • Paging, in High-Level Design (HLD), refers to the division of datasets or dividing large content to reduce initial load times and make them more manageable.
  • Logging Helps to debug the flow of an event in the system and is crucial to monitor the application's flow and the performance of a distributed system to debug issues.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Design Modelling 1 Lecture 6
51 questions
Software Architecture Lecture 11
49 questions
Modeling - IcePanel and the C4 Model
10 questions
Use Quizgecko on...
Browser
Browser