Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
DISTRIBUTED SYSTEMS 🌐
Maarten Van Steen ✍️
Andrew S. Tanenbaum ✍️
4th Edition 📖
Version 02 🔢
🛑 Before you delve into the textbook, take a look at these precise notes 👇—just to see what you're about to sign up for 📚. You can either treat it as an appetizer 🍤 or a dessert 🍰, your choice! 🍽
Maarten Van Steen ✍️
Andrew S. Tanenbaum ✍️
4th Edition 📖
Version 02 🔢
🛑 Before you delve into the textbook, take a look at these precise notes 👇—just to see what you're about to sign up for 📚. You can either treat it as an appetizer 🍤 or a dessert 🍰, your choice! 🍽
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 1️⃣: Introduction to Distributed Systems 🌐
Distributed systems consist of independent computers that collaborate to appear as a single coherent system.
Analogy: Think of it as a symphony orchestra where different instruments play in harmony to produce a unified melody. 🎻🎺
Evolution of Distributed Systems 📜
🔹Early Systems: Before 1980, computers were large, expensive, and operated independently.
🔹Technological Advancements:
⚙️ Microprocessors: Transition from 8-bit to 64-bit CPUs; modern systems have the power of mainframes from decades ago.
🌐 Networking: LANs and WANs allowed high-speed communication, connecting millions of devices globally.
📱 Miniaturization: Smartphones and nano-computers, like Raspberry Pi, are powerful yet compact.
🔹Integration: Systems like cloud computing and IoT showcase distributed systems managing diverse tasks across various devices.
🔘Distributed: Resources are sufficiently spread for efficiency and reliability (e.g., Google Mail servers).
🔘Decentralized: Resources are necessarily spread, often driven by administrative boundaries or lack of trust (e.g., blockchain systems).
Misconception: Centralized systems are not inherently bad—they can be robust and scalable when designed well (e.g., DNS root servers).
⚡️High-Performance Computing
- High-performance systems for intensive tasks.
- Clusters and grids for intensive tasks like scientific simulations.
📂 Distributed Information Systems:
- Data sharing/processing.
- Database management and web services.
🌐 Pervasive Systems:
- Small, self-organizing, sensor-rich systems .
- IoT devices embedded in everyday environments.
▪️Heterogeneity: Managing diverse hardware and software.
▪️Scalability Issues: Unanticipated growth can overwhelm resources.
▪️Partial Failures: Some nodes may fail without affecting the whole system, leading to complex recovery mechanisms.
▪️Security Risks: Networked systems are vulnerable to attacks.
🔅A distributed system is a network of computers where processes and resources are spread across multiple machines. 🤝💻
🔅Key distinction:
👉🏻Sufficiently spread: Focused on improving efficiency. ⚡️
👉🏻Necessarily spread: Decentralized systems for operational or trust-based reasons. 🌍
🔅Why distribute?
- Enhance reliability 🔒, scalability 📈, and efficiency ⚡️.
- Not an end goal but a solution to improve performance.
🔅Challenges:
▫️Centralized systems are easier to manage 🛠 but may not meet all needs.
▫️Distribution is necessary when:
- Connecting systems across different organizations 🏢.
- Supporting geographically separated devices (e.g., mobile computing). 📱
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Overview 📖
Distributed systems consist of independent computers that collaborate to appear as a single coherent system.
Analogy: Think of it as a symphony orchestra where different instruments play in harmony to produce a unified melody. 🎻🎺
Key Concepts 🔑
Evolution of Distributed Systems 📜
🔹Early Systems: Before 1980, computers were large, expensive, and operated independently.
🔹Technological Advancements:
⚙️ Microprocessors: Transition from 8-bit to 64-bit CPUs; modern systems have the power of mainframes from decades ago.
🌐 Networking: LANs and WANs allowed high-speed communication, connecting millions of devices globally.
📱 Miniaturization: Smartphones and nano-computers, like Raspberry Pi, are powerful yet compact.
🔹Integration: Systems like cloud computing and IoT showcase distributed systems managing diverse tasks across various devices.
Distributed vs. Decentralized Systems 🔄
🔘Distributed: Resources are sufficiently spread for efficiency and reliability (e.g., Google Mail servers).
🔘Decentralized: Resources are necessarily spread, often driven by administrative boundaries or lack of trust (e.g., blockchain systems).
Misconception: Centralized systems are not inherently bad—they can be robust and scalable when designed well (e.g., DNS root servers).
Design Goals 🏗
1. Resource Sharing 🌍:
- Canonical Examples: Cloud storage, multimedia streaming, email services.
- Quote: “The network is the computer” – John Gage.
2. Distribution Transparency 🕵️♂️:
- Hides complexity of physical distribution via middleware layers.
- Types: Access, Location, Replication, Migration, Concurrency, Failure.
- Challenge: Full transparency may reduce performance and increase latency.
3. Openness ⚙️:
- Interoperability and extensibility via well-defined interfaces.
- Example: Systems supporting multiple programming languages.
4. Dependability 🔒:
- Metrics: Availability ( 𝐴 = MTBF / MTBF + MTTR), Reliability, Safety, Maintainability.
- Fault handling strategies: Prevention, Tolerance, Removal, Forecasting.
5. Scalability 📈:
- Types: Size (users/processes), Geographical (distances), Administrative (domains).
- Example: CDNs efficiently distribute content for performance and fault tolerance.
Classification of Distributed Systems 📊
⚡️High-Performance Computing
- High-performance systems for intensive tasks.
- Clusters and grids for intensive tasks like scientific simulations.
📂 Distributed Information Systems:
- Data sharing/processing.
- Database management and web services.
🌐 Pervasive Systems:
- Small, self-organizing, sensor-rich systems .
- IoT devices embedded in everyday environments.
Pitfalls ⚠️
▪️Heterogeneity: Managing diverse hardware and software.
▪️Scalability Issues: Unanticipated growth can overwhelm resources.
▪️Partial Failures: Some nodes may fail without affecting the whole system, leading to complex recovery mechanisms.
▪️Security Risks: Networked systems are vulnerable to attacks.
🌐 Summary ✨
🔅A distributed system is a network of computers where processes and resources are spread across multiple machines. 🤝💻
🔅Key distinction:
👉🏻Sufficiently spread: Focused on improving efficiency. ⚡️
👉🏻Necessarily spread: Decentralized systems for operational or trust-based reasons. 🌍
🔅Why distribute?
- Enhance reliability 🔒, scalability 📈, and efficiency ⚡️.
- Not an end goal but a solution to improve performance.
🔅Challenges:
▫️Centralized systems are easier to manage 🛠 but may not meet all needs.
▫️Distribution is necessary when:
- Connecting systems across different organizations 🏢.
- Supporting geographically separated devices (e.g., mobile computing). 📱
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
👍1
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 2️⃣: Architectures 🏗
❇️ Architectures define how distributed systems are logically and physically structured, focusing on the arrangement of components, their interactions, and system-wide performance.
Analogy: Architectures are like blueprints for a building, ensuring all rooms (components) are connected effectively and serve their purpose. 🏠
Role: Acts as a bridge between distributed components, providing distribution transparency.
Features:
- Transparency: Access, location, migration, replication.
- Flexibility: Supports heterogeneous systems.
1. Cloud Computing ☁️
Layers: Infrastructure (IaaS), Platform (PaaS), Software (SaaS).
Benefits: On-demand scalability, cost-efficiency, and global accessibility.
2. Edge Computing 📶
Concept: Push computation closer to data sources (e.g., IoT).
Benefit: Reduced latency and bandwidth usage.
3. Blockchain Architectures 📦🔗
Definition: Decentralized systems for secure and immutable transaction records.
Types:
- Permissioned: Private networks (e.g., Hyperledger).
- Permissionless: Public networks (e.g., Bitcoin).
🖥 Centralized: One server managing all requests.
🌐 Decentralized: Multiple interconnected servers sharing responsibility.
🧩 Distributed: Processes and data spread across multiple nodes for reliability.
⚖️ Trade-offs between consistency, availability, and partition tolerance (CAP theorem).
🟰 Balancing transparency with system performance.
Distributed system architectures guide the design of scalable, efficient, and robust systems. From layered designs to modern blockchain solutions, these architectures address diverse challenges and use cases. 🛠
Analogy: They’re the map that ensures all parts of the system work in harmony!
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Overview 📖
❇️ Architectures define how distributed systems are logically and physically structured, focusing on the arrangement of components, their interactions, and system-wide performance.
Analogy: Architectures are like blueprints for a building, ensuring all rooms (components) are connected effectively and serve their purpose. 🏠
Key Architectural Styles 🔑
1. Layered Architectures 🏢
Concept: Divide components into layers where each serves the one above it.
Analogy: Like stacking pancakes, each layer builds on the previous one. 🥞
Benefits: Encapsulation, modularity, and ease of maintenance.
Example: OSI model and network protocol stacks.
2. Service-Oriented Architectures (SOA) ⚙️
Definition: Organize systems into loosely coupled services communicating over standardized interfaces.
Applications: Microservices, cloud-based APIs.
Example: Amazon S3 uses RESTful operations like GET, POST, DELETE.
3. Publish-Subscribe Architectures 📬
Definition: Decouple publishers (message producers) and subscribers (message consumers).
Key Mechanism: Event-driven communication, where consumers subscribe to specific events.
Use Cases: Stock price notifications, IoT device updates.
Middleware 🧩
Role: Acts as a bridge between distributed components, providing distribution transparency.
Features:
- Transparency: Access, location, migration, replication.
- Flexibility: Supports heterogeneous systems.
System Architectures 🖥
1. Client-Server Model 🤝
- Concept: Centralized interaction where clients request services from servers.
- Example: Traditional websites like Wikipedia.
- Challenge: Single point of failure without replication or failover strategies.
2. Peer-to-Peer (P2P) Systems 🔄
- Concept: Nodes are equal participants, acting as both clients and servers.
- Example: File-sharing networks like BitTorrent.
- Strengths: Decentralization, fault tolerance, and scalability.
3. Hybrid Systems ⚡️
- Definition: Combine centralized and decentralized elements for better performance and reliability.
- Example: Cloud systems with edge computing.
Modern Architectures 🌟
1. Cloud Computing ☁️
Layers: Infrastructure (IaaS), Platform (PaaS), Software (SaaS).
Benefits: On-demand scalability, cost-efficiency, and global accessibility.
2. Edge Computing 📶
Concept: Push computation closer to data sources (e.g., IoT).
Benefit: Reduced latency and bandwidth usage.
3. Blockchain Architectures 📦🔗
Definition: Decentralized systems for secure and immutable transaction records.
Types:
- Permissioned: Private networks (e.g., Hyperledger).
- Permissionless: Public networks (e.g., Bitcoin).
Architectural Comparison
🖥 Centralized: One server managing all requests.
🌐 Decentralized: Multiple interconnected servers sharing responsibility.
🧩 Distributed: Processes and data spread across multiple nodes for reliability.
Challenges
⚖️ Trade-offs between consistency, availability, and partition tolerance (CAP theorem).
🟰 Balancing transparency with system performance.
🗺 Summary ✨
Distributed system architectures guide the design of scalable, efficient, and robust systems. From layered designs to modern blockchain solutions, these architectures address diverse challenges and use cases. 🛠
Analogy: They’re the map that ensures all parts of the system work in harmony!
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 3️⃣: Processes 🚦
❇️ Processes are independent executing entities that may consist of one or more threads, forming the foundation for distributed systems.
- They enable multitasking, virtualization, and effective resource management.
What Are Threads?
- Threads are the smallest units of CPU scheduling and execution within processes.
- They allow parallelism and efficient utilization of resources.
Why Use Threads ❔
✔️Parallelism: Exploit multi-core processors for concurrent operations.
✔️Reduced Blocking: Avoid halting operations during I/O.
✔️Lightweight Switching: Thread switches are cheaper than process switches.
⚖️ Trade-Offs:
- Threads share an address space, leading to potential errors.
- Faster context switching vs. OS-managed memory protection.
Virtualization separates the interface from the underlying physical implementation, allowing abstraction and flexibility.
Principle of Virtualization:
🪞Mimics hardware/software interfaces for portability, migration, and failure isolation.
🔑 Key Solutions:
📦 Containers: Share OS resources, use namespaces for isolation.
🛡 Virtual Machines (VMs): Full OS and resource replication, suited for strong isolation.
Multithreaded Clients 🧵🌐
🚀 Enhance performance by fetching resources (e.g., files, web content) concurrently with threads.
🔄 Improves Thread-Level Parallelism (TLP): A measure of how well threads overlap in execution.
Server Models 🖥⚙️
🛑 Single-threaded Server: Blocks on requests, limiting scalability.
⚡️ Multithreaded Server: Handles multiple clients using separate threads, hiding latencies and enhancing performance.
🕹 Dispatcher-Worker Model:
🎯 Dispatcher assigns tasks to workers.
🛠 Worker threads handle individual tasks, enhancing modularity and speed.
Why Migrate Code?
🔹Object components
• Code segment: contains the actual code
• Data segment: contains the state
• Execution state: contains context of thread executing the object’s code
🫤 Weak Mobility: Move only code and data segment (and reboot
execution)
• Relatively simple, especially if code is portable
• Distinguish code shipping (push) from code fetching (pull)
💪Strong Mobility: Move component, including execution state
• Migration: move entire object from one machine to the other
• Cloning: start a clone, and set it in the same execution state.
Migration in Heterogeneous Systems 🚚🌍
Processes and threads form the backbone of distributed systems by enabling multitasking, virtualization, and scalable client-server interactions. Virtualization extends these concepts for robust and flexible applications.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Overview 📖
❇️ Processes are independent executing entities that may consist of one or more threads, forming the foundation for distributed systems.
- They enable multitasking, virtualization, and effective resource management.
Threads 🧵
What Are Threads?
- Threads are the smallest units of CPU scheduling and execution within processes.
- They allow parallelism and efficient utilization of resources.
🔘Processor: Executes instructions in a predefined sequence.
🔘Thread: Minimal software processor for executing instructions in a process.
🔘Process: A container for one or more threads.
Thread Contexts 🔧
▪️Processor Context: Register values for executing instructions (e.g., program counter, stack pointer).
▪️Thread Context: Includes processor context and additional state.
▪️Process Context: Adds memory management info (e.g., MMU registers).
Why Use Threads ❔
✔️Parallelism: Exploit multi-core processors for concurrent operations.
✔️Reduced Blocking: Avoid halting operations during I/O.
✔️Lightweight Switching: Thread switches are cheaper than process switches.
⚖️ Trade-Offs:
- Threads share an address space, leading to potential errors.
- Faster context switching vs. OS-managed memory protection.
Virtualization 🖥
Virtualization separates the interface from the underlying physical implementation, allowing abstraction and flexibility.
Principle of Virtualization:
🪞Mimics hardware/software interfaces for portability, migration, and failure isolation.
🔑 Key Solutions:
📦 Containers: Share OS resources, use namespaces for isolation.
🛡 Virtual Machines (VMs): Full OS and resource replication, suited for strong isolation.
Clients and Servers 💻🌐
Multithreaded Clients 🧵🌐
🚀 Enhance performance by fetching resources (e.g., files, web content) concurrently with threads.
🔄 Improves Thread-Level Parallelism (TLP): A measure of how well threads overlap in execution.
Server Models 🖥⚙️
🛑 Single-threaded Server: Blocks on requests, limiting scalability.
⚡️ Multithreaded Server: Handles multiple clients using separate threads, hiding latencies and enhancing performance.
🕹 Dispatcher-Worker Model:
🎯 Dispatcher assigns tasks to workers.
🛠 Worker threads handle individual tasks, enhancing modularity and speed.
Code Migration 🚀
Why Migrate Code?
- Minimize data transfer by moving computation closer to resources.
- Load distribution: ensuring that servers in a data center are sufficiently loaded (e.g., to prevent waste of energy)
- Privacy and security: in many cases, one cannot move data to another location, for whatever reason(often legal ones). Solution: move the code to the data.
- Adapt to environment constraints like hardware or network limitations.
🔹Object components
• Code segment: contains the actual code
• Data segment: contains the state
• Execution state: contains context of thread executing the object’s code
🫤 Weak Mobility: Move only code and data segment (and reboot
execution)
• Relatively simple, especially if code is portable
• Distinguish code shipping (push) from code fetching (pull)
💪Strong Mobility: Move component, including execution state
• Migration: move entire object from one machine to the other
• Cloning: start a clone, and set it in the same execution state.
Migration in Heterogeneous Systems 🚚🌍
🚫 Main Challenges
- Target machine incompatibility: Migrated code may not execute properly on different hardware or OS.
- Process/Thread/Processor context is deeply tied to local hardware and runtime systems.
💡Solution
Abstract machines implemented across platforms:
🖥 Interpreted Languages: Utilize their own virtual machines (e.g., Java).
🔒 Virtual Machine Monitors: Abstract execution layers across platforms.
Summary 🌟
Processes and threads form the backbone of distributed systems by enabling multitasking, virtualization, and scalable client-server interactions. Virtualization extends these concepts for robust and flexible applications.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 4️⃣: Communication 💬
❇️ Communication is the cornerstone of distributed systems, enabling interaction between processes across machines.
Communication Foundations 🛠
Transient vs Persistent:
✨ Transient: Messages discarded if the receiver/server is unavailable.
📥 Persistent: Messages stored until successfully delivered.
Asynchronous vs Synchronous:
🏃 Asynchronous: Sender doesn’t wait for the receiver to reply.
⏳ Synchronous: The sender blocks until the receiver responds.
Basic RPC Operation
- RPC enables invoking procedures on a remote machine as if they were local.
Steps:
[in the next ⏭️ note]
Parameter Passing
Challenges:
- Different systems have varied data formats (e.g., byte ordering).
- Complex data structures require standardization during transmission.
Copy-in/Copy-out Semantics: Ensures updates to parameters are consistent across systems.
Variations on RPC
• Asynchronous RPCs: Clients continue execution without waiting for a server reply.
• Multiple RPCs: Clients can send parallel requests to server groups, boosting efficiency.
✨ Transient Messaging
📥 Persistent Messaging
Overview 📖
❇️ Communication is the cornerstone of distributed systems, enabling interaction between processes across machines.
Communication Foundations 🛠
Layered Protocols
A structured approach separates functionality into distinct layers:
🔌 Physical Layer: Transmits raw bits between sender and receiver.
🖇 Data Link Layer: Organizes data into frames with error control.
📡 Network Layer: Routes packets across network devices.
🚛 Transport Layer: Ensures end-to-end communication.
🧩 Middleware Layer: Adds functionalities like naming, marshaling data, replication, and security protocols to abstract communication for applications.
Types of Communication
Transient vs Persistent:
✨ Transient: Messages discarded if the receiver/server is unavailable.
📥 Persistent: Messages stored until successfully delivered.
Asynchronous vs Synchronous:
🏃 Asynchronous: Sender doesn’t wait for the receiver to reply.
⏳ Synchronous: The sender blocks until the receiver responds.
Remote Procedure Call (RPC) 📞
Basic RPC Operation
- RPC enables invoking procedures on a remote machine as if they were local.
Steps:
[in the next ⏭️ note]
Parameter Passing
Challenges:
- Different systems have varied data formats (e.g., byte ordering).
- Complex data structures require standardization during transmission.
Copy-in/Copy-out Semantics: Ensures updates to parameters are consistent across systems.
Variations on RPC
• Asynchronous RPCs: Clients continue execution without waiting for a server reply.
• Multiple RPCs: Clients can send parallel requests to server groups, boosting efficiency.
Message-Oriented Communication ✉️
✨ Transient Messaging
1. Sockets:
- Low-level communication interface for point-to-point connections.
- Example:
• Server: Creates a socket, accepts a connection, and responds.
• Client: Initiates a connection, sends, and receives messages.
2. Advanced Messaging with ZeroMQ:
- Higher abstraction with paired sockets:
• Request-Reply: Simple queries and responses.
• Publish-Subscribe: Broadcast messages to interested receivers.
• Pipeline: Push workloads and pull responses.
📥 Persistent Messaging
Middleware maintains message queues for delayed delivery. 🗂
Operations 🛠
✉️ PUT: Add messages to a queue.
⏳ GET: Block until a message is available.
🔍 POLL: Check for messages in the queue without blocking.
🔔 NOTIFY: Trigger actions when a message arrives.
Message Brokers 🤝
- Handle heterogeneity by transforming message formats.
- Common Example: AMQP (Advanced Message Queuing Protocol).
Multicast Communication 📡
📱Application-Level Multicasting
• Overlay networks distribute messages using:
🌳 Tree Structures: Ensure unique paths for messages.
🕸 Mesh Structures: Require routing to handle redundancy.
Metrics:
🔄 Link Stress: Number of times a message traverses the same physical link.
⏱️ Stretch: Delay ratio between application-layer and network-layer paths.
🌊 Flooding-Based Multicasting
• Sends messages to all neighbors, propagating throughout the network.
🎲 Variation: Probability-based flooding for more controlled message propagation.
🗣Epidemic Protocols (Gossip-Based Data Dissemination)
• Anti-Entropy: Nodes randomly exchange updates to synchronize states.
• Rumor Spreading: Newly updated nodes notify others until the update reaches saturation.
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
𝕡𝕒𝕣𝕥 2
Steps 🚶♂️
Simple Transient Messaging with Sockets 📬
Description: Set up communication, manage connections, exchange data, and close the connection after use.
🔌 socket: Create a new communication end point.
🔗 bind: Attach a local address to a socket.
🦻 listen: Tell the operating system the maximum number of pending connection requests.
⏳ accept: Block the caller until a connection request arrives.
🌐 connect: Actively attempt to establish a connection.
📡 send: Send some data over the connection.
📥 receive: Receive some data over the connection.
🔒 close: Release the connection.
Communication mechanisms bridge the gap between distributed processes through standardized protocols and synchronization methods.
🗝 Key components:
• RPC facilitates seamless remote operations with transparency challenges.
• Message-Oriented Middleware(MOM) supports persistent and asynchronous interactions.
• Multicast ensures efficient data dissemination with scalable protocols.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Basic RPC Operations 🚀
Steps 🚶♂️
1. 🧑💻 Client procedure calls client stub: The client initiates the call via the stub.Analogy: Mailing a Letter to a Friend 📮💌
2. 🏗 Stub builds message; calls local OS: The client stub packages the message and passes it to the local operating system.
3. 🌍 OS sends message to remote OS: The message is transmitted over the network to the remote operating system.
4. 📨 Remote OS gives message to stub: The remote operating system hands the message off to the server's stub.
5. 🗃 Stub unpacks parameters; calls server: The server stub unpacks the message and invokes the server procedure.
6. ⚙️ Server does local call; returns result to stub: The server performs the operation and returns the result to its stub.
7. 🏗 Stub builds message; calls OS: The server's stub packages the result into a message for the return journey.
8. 🌍 OS sends message to client’s OS: The result message is sent to the client’s operating system.
9. 📥 Client’s OS gives message to stub: The client’s operating system hands the result to the client stub.
10.🧑💻 Client stub unpacks result; returns to client: The client stub unpacks the response and delivers it back to the client.
1. ✍️ Client (you) write the letter (client stub): You decide to write a letter (prepare your request) to send to your friend.
2. 📩 Stub prepares the envelope (builds message): You place the letter in an envelope (the stub wraps up your request), addressing it to your friend’s home.
3. 🏤 Local postal service sends the letter (OS sends message to remote OS): You give the letter to the local postal service (your local operating system) to deliver to your friend's city (remote OS).
4. 📨 Friend receives the letter (remote OS gives message to stub): Your friend receives the letter and hands it over to their house (the remote OS delivers the message to the friend’s stub).
5. 📖 Friend opens the letter and reads it (stub unpacks parameters; calls server): Your friend reads the letter (the stub opens and processes it), and decides to write you a response (calls the server).
6. ✍️ Friend writes a response (server does local call; returns result to stub): Your friend writes back to you (does their part) and prepares the reply (finishes the local task).
7. 🏠 Friend puts the response in an envelope (stub builds message; calls OS): Your friend seals the response in an envelope (the server’s stub wraps up the result).
8. ✈️ Mail sent back to you (OS sends message to client’s OS): Your friend gives the letter to the postal service again (server OS sends it back to your OS).
9. 🏠 You receive the letter (client’s OS gives message to stub): The postal service delivers it straight to your doorstep (client OS delivers the message to your stub).
10. 📬 You read the response (client stub unpacks result; returns to client): You open the envelope and read your friend’s reply (client stub processes and hands it over to you).
Simple Transient Messaging with Sockets 📬
Description: Set up communication, manage connections, exchange data, and close the connection after use.
Operations 🛠
🔌 socket: Create a new communication end point.
🔗 bind: Attach a local address to a socket.
🦻 listen: Tell the operating system the maximum number of pending connection requests.
⏳ accept: Block the caller until a connection request arrives.
🌐 connect: Actively attempt to establish a connection.
📡 send: Send some data over the connection.
📥 receive: Receive some data over the connection.
🔒 close: Release the connection.
Summary 🌟
Communication mechanisms bridge the gap between distributed processes through standardized protocols and synchronization methods.
🗝 Key components:
• RPC facilitates seamless remote operations with transparency challenges.
• Message-Oriented Middleware(MOM) supports persistent and asynchronous interactions.
• Multicast ensures efficient data dissemination with scalable protocols.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (Nebiyou Elias (Nebil))
Distributed Systems
Chapter 1️⃣ Introduction 📖
Chapter 2️⃣ Architectures 🏗
Chapter 3️⃣ Processes 🚥
Chapter 4️⃣ Communication 💬
Chapter 5️⃣ Coordination ⏳
Chapter 6️⃣ Naming 🏷
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 5️⃣: Coordination 🕒
Physical Clocks 🕰
• Definition: Aligns a system's time with a global time standard.
• Global Standard: Universal Coordinated Time (UTC):
- Based on cesium 133 atomic clock transitions.
- Adjusted periodically with leap seconds to account for Earth’s rotation.
- Broadcasted through radio and satellite (accuracy: ±0.5ms).
Clock Drift:
- Hardware clocks deviate over time due to differences in oscillator frequencies.
- Requires periodic synchronization to minimize inaccuracies.
Drift Rate:
- Maximum rate at which a clock drifts: ρ (e.g., a clock drifts by ±ρ seconds per second).
- Correction ensures clocks are sufficiently accurate to meet system demands.
Synchronization Goals:
• Internal Synchronization: All clocks in a system differ by no more than π (precision).
- Formula: ∀ t, p, q: |Cp(t) − Cq(t)| ≤ π.
• External Synchronization: Align system clocks to UTC within bound α (accuracy).
- Formula: ∀ t, p: |Cp(t) − t| ≤ α.
Key Challenges:
- Unpredictable message delays in distributed systems.
- Balancing cost and precision in large-scale networks.
Lamport Timestamps 🔢:
• Establishes happened-before relationship (a → b):
- If a and b are events in the same process, a → b if a occurs before b.
- If a is message-sent and b is message-received, a → b.
- Transitivity: If a → b and b → c, then a → c.
• Increment local counter for events.
• Upon receiving a message, Crecv = max(Clocal,Cmsg) + 1
Vector Clocks 🧮:
•Track causality with a vector per process.
- Increment local entry for events.
- On message receipt, merge vectors: max(VCrecv[k], VClocal[k])
Clock Synchronization Basics
Physical Clocks 🕰
• Definition: Aligns a system's time with a global time standard.
• Global Standard: Universal Coordinated Time (UTC):
- Based on cesium 133 atomic clock transitions.
- Adjusted periodically with leap seconds to account for Earth’s rotation.
- Broadcasted through radio and satellite (accuracy: ±0.5ms).
Clock Drift:
- Hardware clocks deviate over time due to differences in oscillator frequencies.
- Requires periodic synchronization to minimize inaccuracies.
Drift Rate:
- Maximum rate at which a clock drifts: ρ (e.g., a clock drifts by ±ρ seconds per second).
- Correction ensures clocks are sufficiently accurate to meet system demands.
Synchronization Goals:
• Internal Synchronization: All clocks in a system differ by no more than π (precision).
- Formula: ∀ t, p, q: |Cp(t) − Cq(t)| ≤ π.
• External Synchronization: Align system clocks to UTC within bound α (accuracy).
- Formula: ∀ t, p: |Cp(t) − t| ≤ α.
Key Challenges:
- Unpredictable message delays in distributed systems.
- Balancing cost and precision in large-scale networks.
Clock Synchronization Algorithms
🌍 Cristian's Algorithm:
Use: Synchronize a client clock using a timeserver.
Process:
1. Client sends a request to timeserver.
2. Timeserver replies with UTC timestamp.
3. Client adjusts for network delay: .
🖥 Berkeley’s Algorithm:
Use: Achieve internal synchronization.
Process:
1. Master collects time from each node.
2. Computes average time (discards outliers).
3. Sends back adjustments to nodes (including itself).
📡 Reference Broadcast Synchronization (RBS):
Use: Synchronize nodes using a reference broadcast from a third-party node.
Process:
Each receiver records when the broadcast arrives.
Offsets are calculated through pairwise comparisons.
Logical Clocks 🕰
Lamport Timestamps 🔢:
• Establishes happened-before relationship (a → b):
- If a and b are events in the same process, a → b if a occurs before b.
- If a is message-sent and b is message-received, a → b.
- Transitivity: If a → b and b → c, then a → c.
• Increment local counter for events.
• Upon receiving a message, Crecv = max(Clocal,Cmsg) + 1
Vector Clocks 🧮:
•Track causality with a vector per process.
- Increment local entry for events.
- On message receipt, merge vectors: max(VCrecv[k], VClocal[k])
Mutual Exclusion 🔑
Centralized Algorithm:
• A single coordinator manages critical section (CS) access.
Steps:
1. Process sends a request to the coordinator.
2. Coordinator grants access to the process with the earliest request.
3. On release, coordinator processes the next queued request.
• Pros: Simple, no starvation.
• Cons: Single point of failure, bottleneck.
Distributed Algorithm:
• Processes coordinate directly:
Steps:
1. Process broadcasts a REQUEST message with timestamp to all other processes.
2. Processes reply with OK if the requesting process’s timestamp is earlier than their own pending request or if they have no pending request.
3. Access granted when all responses are received.
4. After exiting, process sends a RELEASE message to inform others.
• Pros: Fault-tolerant.
• Cons: High communication overhead.
Decentralized Algorithm:
• Processes collaboratively handle CS access, maintaining queues and decision rules.
Steps:
1. Each process maintains a queue of requests.
2. Requests are granted based on a predefined rule (e.g., priority or timestamps).
3. Processes periodically exchange messages to update their queues and decisions.
• Pros: No bottleneck, fault-tolerant.
• Cons: Complex, high overhead.
Token-Ring Algorithm:
• Token circulates among processes for CS access.
Steps:
1. Token circulates in the ring.
2. A process holds the token to enter the CS.
3. After use, the token is passed to the next process.
• Pros: Fair, no extra communication.
• Cons: Token loss requires detection and regeneration, recovery mechanisms needed for failed processes.
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
𝕡𝕒𝕣𝕥 2
Problem: Select a leader in a distributed system.
Relies on processes exchanging small bits of information periodically.
Applications:
- Aggregating data.
- Sampling peers for network maintenance.
• Scalability: Adapting to large systems.
• Fault Tolerance: Handling crashes gracefully.
• Performance: Balancing speed and reliability.
- Clock synchronization is essential for consistency in distributed systems.
- Lamport and Vector Clocks establish event ordering and causality.
- Mutual Exclusion algorithms aim to serialize access to shared resources.
- Election algorithms like Bully and Ring ensure leader selection.
- Practical examples include file locking, distributed databases, and GPS systems.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Election Algorithms 🗳
Problem: Select a leader in a distributed system.
• Bully Algorithm:
The process with the highest ID becomes leader.
Steps:
1. A process with a higher ID sends ELECTION messages to all higher-ID nodes.
2. If a higher-ID node responds, the current process stops.
3. If no response is received, it declares itself the leader and broadcasts COORDINATOR messages.
Edge Case: Handles failed nodes by assuming non-responding nodes are down.
Pros: Simple, clear winner.
Cons: High message cost in dense networks.
- Failed leaders are overridden by challengers.
- Cons: High message load.
• Ring Algorithm:
Processes in a logical ring pass election messages.
Highest-ID node wins.
Efficient for sparse networks.
🔑 Key Points:
- Election algorithms ensure a single leader even in failure-prone networks.
- Fault tolerance mechanisms handle node failures and ensure leader reelection when necessary.
• Gossip-Based Coordination 🗣
Relies on processes exchanging small bits of information periodically.
Applications:
- Aggregating data.
- Sampling peers for network maintenance.
Challenges
• Scalability: Adapting to large systems.
• Fault Tolerance: Handling crashes gracefully.
• Performance: Balancing speed and reliability.
Summary ⭐️
- Clock synchronization is essential for consistency in distributed systems.
- Lamport and Vector Clocks establish event ordering and causality.
- Mutual Exclusion algorithms aim to serialize access to shared resources.
- Election algorithms like Bully and Ring ensure leader selection.
- Practical examples include file locking, distributed databases, and GPS systems.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 6️⃣: Naming 🏷
Naming is 🔑 in distributed systems, enabling the identification, location, and access of entities such as resources, processes, and services.
In distributed systems, names abstract entities like hosts, files, printers, or services, making them accessible without requiring users or applications to know their exact location or physical representation.
🏷 Names: Strings identifying entities (e.g., “/home/docs/file.txt” for a file).
🆔 Identifiers: Unique, immutable names assigned exclusively to a single entity.
📍 Addresses: Names that refer to an entity’s access point and may change over time (e.g., IP addresses for devices).
Flat naming uses unstructured, globally unique identifiers without any hierarchy. It’s ideal for machines but not user-friendly.
Key Resolution Methods:
Structured naming systems use human-readable names organized hierarchically (e.g., domain names or file paths).
Name Spaces: 🌌 Represented as directed acyclic graphs (often trees).
🌿 Leaf Nodes: Represent actual entities (e.g., files, printers).
📂 Directory Nodes: Contain pointers to other nodes, organizing entities logically.
Resolution Process:
🚶♂️ Traverse the name space tree to resolve names to entities.
🔄 Cache frequently accessed paths for efficiency.
Examples:
🌐 DNS (Domain Name System): Resolves domain names to IP addresses using a globally distributed hierarchy.
📁 NFS (Network File System): Maps file paths to physical storage locations across distributed systems.
Attribute-based naming systems describe entities using (attribute, value) pairs, supporting flexible and expressive queries.
Example Query: location=BuildingA AND type=printer. 🖨
Implementation Models:
🗂 Hierarchical (e.g., LDAP): Efficient lookups with directory structure.
🧩 Decentralized Systems: Distribute search processes for scalability and fault tolerance.
NDN emphasizes what data is needed rather than where it is stored. Names are structured hierarchically and directly routed, bypassing traditional address resolution.
Structure: Names like /books/DS/4/01/Naming are self-descriptive and hierarchical. 📖
Benefits:
🚀 Improves performance by caching data closer to users.
🎯 Simplifies retrieval by eliminating address mapping.
🌍 Scalability: Efficiently managing billions of entities through caching, hierarchical organization, and DHTs.
🔄 Consistency and Mobility: Maintaining entity updates and location changes without breaking references.
🛡 Security: Preventing spoofing and ensuring trustworthy name-to-entity bindings.
🪟 Transparency: Hiding resolution complexity while ensuring usability.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
Naming is 🔑 in distributed systems, enabling the identification, location, and access of entities such as resources, processes, and services.
Introduction to Naming
In distributed systems, names abstract entities like hosts, files, printers, or services, making them accessible without requiring users or applications to know their exact location or physical representation.
🏷 Names: Strings identifying entities (e.g., “/home/docs/file.txt” for a file).
🆔 Identifiers: Unique, immutable names assigned exclusively to a single entity.
📍 Addresses: Names that refer to an entity’s access point and may change over time (e.g., IP addresses for devices).
Flat Naming
Flat naming uses unstructured, globally unique identifiers without any hierarchy. It’s ideal for machines but not user-friendly.
Key Resolution Methods:
📡 Broadcast and Multicast: Sends a query to all nodes until the desired entity responds. Simple but unscalable.
➡️ Forwarding Pointers: Tracks movement via pointers that redirect requests but needs cleanup to remove stale links.
🏠 Home-based Resolution: Uses a central "home" server to store the entity’s current location. Risks bottlenecks and single points of failure.
📊 Distributed Hash Tables (DHTs): Decentralized systems mapping identifiers to entities using a hash function. Scalable and fault-tolerant.
🗂 Hierarchical Approaches: Organizes entities using structured paths for efficient lookup.
🛡 Secure Flat Naming:
🔒 Self-Certifying Names: Use hashes or public keys to verify entities.
🔐 Secure Resolution: Prevent Sybil and eclipse attacks via verified identifiers.
Structured Naming
Structured naming systems use human-readable names organized hierarchically (e.g., domain names or file paths).
Name Spaces: 🌌 Represented as directed acyclic graphs (often trees).
🌿 Leaf Nodes: Represent actual entities (e.g., files, printers).
📂 Directory Nodes: Contain pointers to other nodes, organizing entities logically.
Resolution Process:
🚶♂️ Traverse the name space tree to resolve names to entities.
🔄 Cache frequently accessed paths for efficiency.
Examples:
🌐 DNS (Domain Name System): Resolves domain names to IP addresses using a globally distributed hierarchy.
📁 NFS (Network File System): Maps file paths to physical storage locations across distributed systems.
Attribute-based Naming
Attribute-based naming systems describe entities using (attribute, value) pairs, supporting flexible and expressive queries.
Example Query: location=BuildingA AND type=printer. 🖨
Implementation Models:
🗂 Hierarchical (e.g., LDAP): Efficient lookups with directory structure.
🧩 Decentralized Systems: Distribute search processes for scalability and fault tolerance.
Named-Data Networking (NDN)
NDN emphasizes what data is needed rather than where it is stored. Names are structured hierarchically and directly routed, bypassing traditional address resolution.
Structure: Names like /books/DS/4/01/Naming are self-descriptive and hierarchical. 📖
Benefits:
🚀 Improves performance by caching data closer to users.
🎯 Simplifies retrieval by eliminating address mapping.
Challenges in Naming Systems
🌍 Scalability: Efficiently managing billions of entities through caching, hierarchical organization, and DHTs.
🔄 Consistency and Mobility: Maintaining entity updates and location changes without breaking references.
🛡 Security: Preventing spoofing and ensuring trustworthy name-to-entity bindings.
🪟 Transparency: Hiding resolution complexity while ensuring usability.
Examples and Applications
DNS: 🌐 Resolving human-readable web addresses to IP addresses.
Blockchain: Uses flat naming (public keys) to uniquely identify participants and transactions.
Cloud Systems: ☁️ Leverage hierarchical naming for scalability and replication transparency.
NDN: Focuses on content retrieval by names rather than host addresses.
➖➖➖➖➖➖➖➖➖➖➖➖
The preview is over—now dive into the expansive world of Distributed Systems! 🖥🔗🌍
➖➖➖➖➖➖➖➖➖➖➖➖
👍1
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
⏭️ Software Configuration Management
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 1️⃣: Introduction to Software Configuration Management 🛠
• SCM is a systematic process to manage, organize, and control changes in documents, code, and other entities throughout the Software Development Life Cycle (SDLC).
• Its primary goals include increasing productivity 📈, minimizing errors ❌, and ensuring traceability and accountability 📝.
🖥 Software Configuration Items (SCIs): All intermediate and final artifacts created during software development, such as code modules, test data, and documentation.
🔧 Configuration: Refers to the product's structure, including its constituent components and specific versions.
🔄 Versioning and Change Control: Ensures accurate documentation and implementation of changes, preventing inconsistencies and overlapping edits.
🤝 Prevents conflicts by managing concurrent modifications.
📊 Enhances traceability, integrity, and accountability.
🌍 Facilitates efficient team collaboration, even across distributed teams.
🆕 Adapts to changes in requirements, budgets, and schedules.
👨💼 Configuration Manager: Oversees SCM processes and approves changes.
🧑💻 Developer: Implements changes and resolves conflicts.
🔎 Auditor: Verifies consistency and compliance through audits.
📋 Project Manager: Monitors progress, ensures adherence to SCM policies, and reports on system status.
👥 End-User: Ensures they work with the latest version of the software.
SCM tools support:
🤝 Concurrency Management: Prevents issues when multiple users work on the same file ⚖️.
🔄 Version Control: Maintains historical versions for rollback if needed ⏪.
🔗 Synchronization: Ensures team members stay updated ⏰.
Examples of Tools:
• Git: Open-source version control system 🖥.
• Team Foundation Server: Collaboration and coordination tool for teams 👥.
• Ansible: Configuration management, deployment, and task automation tool ⚙️.
• Requires skilled resources and robust infrastructure 🏗.
• Can be resource-intensive for small organizations 💼.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Overview 📖
• SCM is a systematic process to manage, organize, and control changes in documents, code, and other entities throughout the Software Development Life Cycle (SDLC).
• Its primary goals include increasing productivity 📈, minimizing errors ❌, and ensuring traceability and accountability 📝.
Core Concepts of SCM 🔑
🖥 Software Configuration Items (SCIs): All intermediate and final artifacts created during software development, such as code modules, test data, and documentation.
🔧 Configuration: Refers to the product's structure, including its constituent components and specific versions.
🔄 Versioning and Change Control: Ensures accurate documentation and implementation of changes, preventing inconsistencies and overlapping edits.
Importance of SCM ⚡️
🤝 Prevents conflicts by managing concurrent modifications.
📊 Enhances traceability, integrity, and accountability.
🌍 Facilitates efficient team collaboration, even across distributed teams.
🆕 Adapts to changes in requirements, budgets, and schedules.
SCM Process 🔄
👀 Identification: Recognize and define configuration items (e.g., source code, test cases) and their interrelationships using tools like Module Interconnection Language (MIL).
📝 Version Control: Manage multiple versions and maintain baselines to ensure stability.
⚙️ Change Control: Assess and approve change requests to prevent chaos and ensure quality.
🕵️♂️ Configuration Audit: Verify compliance with standards and traceability of changes.
📊 Status Reporting: Provide updates on current configuration and progress to stakeholders.
🗝 Key Roles in SCM
👨💼 Configuration Manager: Oversees SCM processes and approves changes.
🧑💻 Developer: Implements changes and resolves conflicts.
🔎 Auditor: Verifies consistency and compliance through audits.
📋 Project Manager: Monitors progress, ensures adherence to SCM policies, and reports on system status.
👥 End-User: Ensures they work with the latest version of the software.
🛠 SCM Tools
SCM tools support:
🤝 Concurrency Management: Prevents issues when multiple users work on the same file ⚖️.
🔄 Version Control: Maintains historical versions for rollback if needed ⏪.
🔗 Synchronization: Ensures team members stay updated ⏰.
Examples of Tools:
• Git: Open-source version control system 🖥.
• Team Foundation Server: Collaboration and coordination tool for teams 👥.
• Ansible: Configuration management, deployment, and task automation tool ⚙️.
⚠️ Challenges and Drawbacks
• Requires skilled resources and robust infrastructure 🏗.
• Can be resource-intensive for small organizations 💼.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 2️⃣: Management of the SCM Process ⚙️
• SCM and Organizational Structure: SCM interacts with various organizational elements, such as quality assurance and software development teams.
• Integration with Larger Systems: SCM operates alongside hardware and firmware CM activities, ensuring consistency across the system.
• Role in Quality Assurance: Assists in managing non-conforming items and tracking software configuration records.
• Constraints: SCM is shaped by corporate policies, contracts, regulatory requirements, and the chosen software life cycle process.
• Guidance: Standards (e.g., SEI/CMMI, ISO/IEC 15504) and best practices help in designing and implementing SCM processes.
• Key Activities: Includes configuration identification, control, auditing, and release management.
• SCM Plan (SCMP): A "living document" outlining responsibilities, schedules, resources, and compliance requirements.
• Tool Capabilities: Support tasks like change management, auditing, builds, and release tracking.
• Integration: Tools often serve multiple roles, linking SCM, development, and quality assurance.
• Vendor/Subcontractor Control: SCM ensures third-party software integrates seamlessly with project libraries.
• Interface Management: Tracks and manages changes between software and hardware components.
• Process Surveillance: Ensures SCM compliance with established processes.
• Audits: Provide insights into the status and effectiveness of SCM activities, driving process improvements.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Organizational Context for SCM 🏢
• SCM and Organizational Structure: SCM interacts with various organizational elements, such as quality assurance and software development teams.
• Integration with Larger Systems: SCM operates alongside hardware and firmware CM activities, ensuring consistency across the system.
• Role in Quality Assurance: Assists in managing non-conforming items and tracking software configuration records.
Constraints and Guidance 📜
• Constraints: SCM is shaped by corporate policies, contracts, regulatory requirements, and the chosen software life cycle process.
• Guidance: Standards (e.g., SEI/CMMI, ISO/IEC 15504) and best practices help in designing and implementing SCM processes.
Planning for SCM 📝
• Key Activities: Includes configuration identification, control, auditing, and release management.
• SCM Plan (SCMP): A "living document" outlining responsibilities, schedules, resources, and compliance requirements.
Tools and Resources 🛠
• Tool Capabilities: Support tasks like change management, auditing, builds, and release tracking.
• Integration: Tools often serve multiple roles, linking SCM, development, and quality assurance.
Vendor and Interface Control 🔗
• Vendor/Subcontractor Control: SCM ensures third-party software integrates seamlessly with project libraries.
• Interface Management: Tracks and manages changes between software and hardware components.
Surveillance and Auditing 🔍
• Process Surveillance: Ensures SCM compliance with established processes.
• Audits: Provide insights into the status and effectiveness of SCM activities, driving process improvements.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 3️⃣: Software Configuration Identification (SCI) 🔍
Definition: SCI identifies items to be controlled, their relationships, and tools for management.
Importance: Forms the foundation for all SCM activities.
Software Configuration: Functional and physical characteristics of software.
Software Configuration Item (SCI): Aggregated software entities managed as a single unit (e.g., code, documentation, tools).
Relationships: Track connections between SCIs for traceability and change impact analysis.
Versions:
🔹 Revision: Replaces old versions.
🔹 Variant: Adds new versions without replacing old ones.
Definition: Fixed reference points during the software life cycle, representing approved configurations.
Types:
• Functional Baseline: System requirements.
• Allocated Baseline: Software requirements.
• Developmental Baseline: Evolving configurations.
• Product Baseline: Final software for integration.
Process: SCIs are incorporated into baselines after formal acceptance and approval, ensuring traceability.
Definition: Controlled collections of software and documentation supporting development and maintenance.
Types:
• Working Library: For coding.
• Project Support Library: For testing.
• Master Library: For finished products.
Access Control: Security and authority levels vary by library type.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
What is SCI?
Definition: SCI identifies items to be controlled, their relationships, and tools for management.
Importance: Forms the foundation for all SCM activities.
Key Concepts
Software Configuration: Functional and physical characteristics of software.
Software Configuration Item (SCI): Aggregated software entities managed as a single unit (e.g., code, documentation, tools).
SCI Relationships and Versions 🧩
Relationships: Track connections between SCIs for traceability and change impact analysis.
Versions:
🔹 Revision: Replaces old versions.
🔹 Variant: Adds new versions without replacing old ones.
Baselines 📏
Definition: Fixed reference points during the software life cycle, representing approved configurations.
Types:
• Functional Baseline: System requirements.
• Allocated Baseline: Software requirements.
• Developmental Baseline: Evolving configurations.
• Product Baseline: Final software for integration.
Acquiring SCIs
Process: SCIs are incorporated into baselines after formal acceptance and approval, ensuring traceability.
Software Libraries 📚
Definition: Controlled collections of software and documentation supporting development and maintenance.
Types:
• Working Library: For coding.
• Project Support Library: For testing.
• Master Library: For finished products.
Access Control: Security and authority levels vary by library type.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 4️⃣: Software Configuration Control (SCC) 🔄
• Purpose: Manages changes throughout the software life cycle, ensuring they are evaluated, approved, and implemented effectively.
• Scope: Includes requesting changes, evaluating impacts, implementing approved changes, and handling deviations or waivers.
Change Requests:
• Submitted using Software Change Requests (SCRs).
• Evaluated for cost, impact, and feasibility.
• Handled by the Configuration Control Board (CCB), which may consist of multiple levels depending on project scope and criticality.
- The authority for accepting or rejecting proposed changes rests with an entity typically known as a Configuration Control Board (CCB).
- In smaller projects, this authority may actually reside with the leader or an assigned individual rather than a multi-person board.
Tracking Changes: SCRs are tracked to ensure implementation aligns with project baselines and quality standards.
▪️Version Control: Tools manage code versions, supporting check-in/out and parallel development.
▪️Quality Assurance: Changes undergo audits to verify compliance with project requirements.
🔹Deviation is an authorization to depart from a provision prior to the development of the item.
🔹Waiver is an authorization to use an item, following its development, that departs from the provision in some way.
Software Configuration Control (SCC) manages changes throughout the software life cycle, addressing:
🔄 Change Requests: Evaluating, approving, and implementing changes.
🚧 Deviations: Pre-approval to bypass specifications during development.
✅ Waivers: Post-development approval for non-compliance with specifications.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Overview of SCC
• Purpose: Manages changes throughout the software life cycle, ensuring they are evaluated, approved, and implemented effectively.
• Scope: Includes requesting changes, evaluating impacts, implementing approved changes, and handling deviations or waivers.
Change Management Process 🔍
Change Requests:
• Submitted using Software Change Requests (SCRs).
• Evaluated for cost, impact, and feasibility.
• Handled by the Configuration Control Board (CCB), which may consist of multiple levels depending on project scope and criticality.
- The authority for accepting or rejecting proposed changes rests with an entity typically known as a Configuration Control Board (CCB).
- In smaller projects, this authority may actually reside with the leader or an assigned individual rather than a multi-person board.
Tracking Changes: SCRs are tracked to ensure implementation aligns with project baselines and quality standards.
Implementation of Changes ⚙️
▪️Version Control: Tools manage code versions, supporting check-in/out and parallel development.
▪️Quality Assurance: Changes undergo audits to verify compliance with project requirements.
Deviations and Waivers 📜
🔹Deviation is an authorization to depart from a provision prior to the development of the item.
🔹Waiver is an authorization to use an item, following its development, that departs from the provision in some way.
Summary ⭐️
Software Configuration Control (SCC) manages changes throughout the software life cycle, addressing:
🔄 Change Requests: Evaluating, approving, and implementing changes.
🚧 Deviations: Pre-approval to bypass specifications during development.
✅ Waivers: Post-development approval for non-compliance with specifications.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 5️⃣: Software Configuration Status Accounting (SCSA) 📊
Definition: Captures and reports configuration information for effective software management.
Scope: Tracks changes, deviations, waivers, and baseline configurations throughout the software life cycle.
Activities:
• Collecting and maintaining configuration data.
• Using automated tools for tracking and reporting.
Types of Information:
• Approved configurations, current status of changes, and deviation/waiver details.
Usage: Supports project management, quality assurance, and software engineering.
Reporting Formats:
• Ad hoc queries for specific insights.
• Predefined reports for periodic updates.
Purpose: Evaluates compliance with standards, regulations, and project requirements.
Types of Audits:
🔘 Functional Configuration Audit (FCA): Ensures software consistency with specifications.
🔘 Physical Configuration Audit (PCA): Confirms design and documentation match the as-built product.
🔘 In-Process Audits: Verifies consistency of evolving baselines during development.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Purpose of SCSA
Definition: Captures and reports configuration information for effective software management.
Scope: Tracks changes, deviations, waivers, and baseline configurations throughout the software life cycle.
Status Information Management 📋
Activities:
• Collecting and maintaining configuration data.
• Using automated tools for tracking and reporting.
Types of Information:
• Approved configurations, current status of changes, and deviation/waiver details.
Status Reporting 📝
Usage: Supports project management, quality assurance, and software engineering.
Reporting Formats:
• Ad hoc queries for specific insights.
• Predefined reports for periodic updates.
Software Configuration Auditing (SCA) 🔍
Purpose: Evaluates compliance with standards, regulations, and project requirements.
Types of Audits:
🔘 Functional Configuration Audit (FCA): Ensures software consistency with specifications.
🔘 Physical Configuration Audit (PCA): Confirms design and documentation match the as-built product.
🔘 In-Process Audits: Verifies consistency of evolving baselines during development.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
👍1
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 6️⃣: Software Release Management and Delivery (SRM&D) 📦🚛
Definition: The process of distributing a software configuration item, both internally and to customers.
- When different versions of a software item are available for delivery, such as versions for different platforms or versions with varying capabilities, it is frequently necessary to recreate specific versions and package the correct materials for delivery of the version.
- The software library is a key element in accomplishing release and delivery tasks.
Purpose: Ensures the right versions are packaged and delivered for specific platforms or capabilities.
🔸Activity: Combines correct versions of configuration items into an executable program.
🔸Rebuild Capability: Necessary for recovery, testing, or maintenance of previous releases.
🔸Tool Support: Automates selection of versions and building processes for target environments.
Key Outputs:
• Quality-verified builds.
• Records for future reference or audits.
Scope:
• Identification, packaging, and delivery of executable programs, documentation, release notes, and configuration data.
• Tracks product distribution and ensures timely notifications for reported issues.
🔅Version Description Document: Documents the physical contents of a release.
🔅Release Notes: Outline new capabilities, known issues, and platform requirements.
🔅Tool Integration: Links with change request tools to map release contents to approved changes.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Overview of SRM&D 📖
Definition: The process of distributing a software configuration item, both internally and to customers.
- When different versions of a software item are available for delivery, such as versions for different platforms or versions with varying capabilities, it is frequently necessary to recreate specific versions and package the correct materials for delivery of the version.
- The software library is a key element in accomplishing release and delivery tasks.
Purpose: Ensures the right versions are packaged and delivered for specific platforms or capabilities.
Software Building 🛠
🔸Activity: Combines correct versions of configuration items into an executable program.
🔸Rebuild Capability: Necessary for recovery, testing, or maintenance of previous releases.
🔸Tool Support: Automates selection of versions and building processes for target environments.
Key Outputs:
• Quality-verified builds.
• Records for future reference or audits.
Software Release Management 📤
Scope:
• Identification, packaging, and delivery of executable programs, documentation, release notes, and configuration data.
• Tracks product distribution and ensures timely notifications for reported issues.
🔅Version Description Document: Documents the physical contents of a release.
🔅Release Notes: Outline new capabilities, known issues, and platform requirements.
🔅Tool Integration: Links with change request tools to map release contents to approved changes.
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Forwarded from AASTU SE Notes 📖 & Quizzes⌛ (𝕪𝖔𝕤)
Chapter 7️⃣: Software Configuration Management Tools 🛠
SCM tools are divided based on their scope of support:
i) Individual Support Tools: Suitable for small organizations or teams.
ii) Project-Related Support Tools: Designed for medium to large teams managing parallel development.
iii) Companywide-Process Support Tools: Automate formal processes across organizations, including certification.
Purpose: Facilitate workspace management and distributed development.
Examples: Jira, Trello, Asana, Basecamp, Slack, Microsoft project
Selection Factors: Team size, project nature, development methodology.
- They are able to handle many items, data, and life cycles.
- Such tools add to project-related support by supporting a more formal development process, including certification requirements.
Features: Workflow automation, role management, and artifact tracking.
Examples: Atlassian Confluence, Git-Hub Enterprise, Microsoft Azure DevOps, GitLab, JFrog Artifactory, IBM Rational Team Concert
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
Categories of SCM Tools
SCM tools are divided based on their scope of support:
i) Individual Support Tools: Suitable for small organizations or teams.
ii) Project-Related Support Tools: Designed for medium to large teams managing parallel development.
iii) Companywide-Process Support Tools: Automate formal processes across organizations, including certification.
Individual Support Tools 🤝
• Version Control Tools: Track changes to configuration items.
E.g.
- Git: speedy and efficient branching and merging capability tool used for distributed version control system
- Subversion(SVN): centralized version control system that tracks changes to files and directories over time. E.g. atomic commit, branching and merging
- Others: Mercurial, perforce, team foundation version control(TFVC)
• Build Handling Tools: Compile and link an executable version of the software, with advanced features like quality checks
E.g. Maven, Gradle, Apache Ant, Make, Bazel.
• Change Control Tools: Manage change requests and notifications (for example, change request status changes, milestones reached)
E.g. Git, Subversion(SVN), Mercurial, perforce, team foundation version control(TFVC)
Project-Related Support Tools 🗂
Purpose: Facilitate workspace management and distributed development.
Examples: Jira, Trello, Asana, Basecamp, Slack, Microsoft project
Selection Factors: Team size, project nature, development methodology.
Companywide-Process Support Tools 🌐
- They are able to handle many items, data, and life cycles.
- Such tools add to project-related support by supporting a more formal development process, including certification requirements.
Features: Workflow automation, role management, and artifact tracking.
Examples: Atlassian Confluence, Git-Hub Enterprise, Microsoft Azure DevOps, GitLab, JFrog Artifactory, IBM Rational Team Concert
➖➖➖➖➖➖➖➖➖➖➖➖
Unlock the essentials of Software Configuration Management! 🧑💻🔧📊
➖➖➖➖➖➖➖➖➖➖➖➖
👍2
Forwarded from AASTU Software Engineering (Nebiyou Elias (Nebil))
👍2