GDG On Campus AASTU
4.89K subscribers
912 photos
52 videos
24 files
622 links
Google Developers Group On Campus for Addis Ababa science and Technology University.

Discussion group: @DSCAASTUCHAT
twitter handle: @gdscaastu
LinkedIn: https://www.linkedin.com/company/gdgaastu
Download Telegram
Forwarded from AASTU SE Notes ๐Ÿ“– & QuizzesโŒ› (๐•ช๐–”๐•ค)
Chapter 4๏ธโƒฃ: Communication ๐Ÿ’ฌ

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

Basic RPC Operations ๐Ÿš€


Steps ๐Ÿšถโ€โ™‚๏ธ

1. ๐Ÿง‘โ€๐Ÿ’ป Client procedure calls client stub: The client initiates the call via the stub.
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.
Analogy: Mailing a Letter to a Friend ๐Ÿ“ฎ๐Ÿ’Œ

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 ๐Ÿ•’

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

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.

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 ๐Ÿ› 

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 โš™๏ธ

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) ๐Ÿ”

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) ๐Ÿ”„

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) ๐Ÿ“Š

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) ๐Ÿ“ฆ๐Ÿš›

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 ๐Ÿ› 

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))
Check your emails๐Ÿšจ


A2SV is sending acceptance emails for G6๐ŸŽ‰๐ŸŽ‰

#A2SV #G6
@AASTUSE
๐Ÿ‘2
๐Ÿ’ป Huawei ICT Competition 2024/25 Preliminary Exam

The written exam for the Huawei ICT Competition Northern Africa 2024-2025 Preliminary Exam (Ethiopia) is scheduled for 22 January 2025.

Exam time: (9:00 AM-5:30 PM (แŠจแŒ แ‹‹แ‰ฐ 3แก00 แŠฅแˆตแŠจ แ‰€แŠ‘ 11แก30)

Please use the following link to access the Huawei ICT Competition - Preliminary Exam.

- Huawei ICT Competition 2024-2025 Preliminary Exam for Ethiopia-Network Track=https://talent.shixizhi.huawei.com/iexam/1365189427395223554/examInfo?examId=1872194327910481922

- Huawei ICT Competition 2024-2025 Preliminary Exam for Ethiopia-Cloud Track=https://talent.shixizhi.huawei.com/iexam/1365189427395223554/examInfo?examId=1872194330292846593

- Huawei ICT Competition 2024-2025 Preliminary Exam for Ethiopia-Computing Track=https://talent.shixizhi.huawei.com/iexam/1365189427395223554/examInfo?examId=1872194329135218690

Make sure to follow this steps if you haven't registered yet: aastu.software/huawei

@AASTUSEA aastu.software
๐Ÿ‘2โค1
Forwarded from AASTU SE Notes ๐Ÿ“– & QuizzesโŒ› (๐•ช๐–”๐•ค)
Chapter 1๏ธโƒฃ: Introduction

What is Software Engineering (SE)? ๐Ÿ› 


Definition: An engineering branch focused on developing software products using scientific principles and structured methodologies.

Key Techniques:
โ€ข Abstraction: Simplifying complex problems by ignoring irrelevant details.
โ€ข Decomposition: Breaking problems into smaller, manageable sub-problems.

Outcome: High-quality software products with reduced complexity.

Types of Software ๐Ÿ“ฆ


By Purpose:
๐Ÿ”ง System Software: OS, utilities.
๐Ÿ’ป Application Software: End-user tools.

By Platform:

๐Ÿ“ฑ Native Software: Designed for specific OS.
๐ŸŒ Cross-Platform Software: Runs on multiple OS.

By Deployment:
๐Ÿ’พ Installed Software: Local installation.
โ˜๏ธ Cloud-Based Software: Accessed via the internet.

By License:
๐Ÿ”’ Proprietary: Owned by a single entity.
๐ŸŒ Open-Source:
Publicly accessible.


Software Design ๐ŸŽจ


Definition: A process to transform user requirements into a blueprint for implementation.

Focus Areas:
๐Ÿ’พ Data Design: Database structures.
๐Ÿ–ฅ User Interfaces: Front-end design.
๐Ÿ— Architecture: Blueprint of system interactions.
๐Ÿ”ง Components: Functional modules with specific tasks.

Component


๐Ÿ”…A software component is a unit of composition with contractually specified interfaces, independently deployable/deliverable/configurable and subject to composition by third parties. Clemens Szypersk

๐Ÿ”…Components are self-contained, clearly identifiable pieces that describe and/or perform specific functions, have clear interfaces, appropriate documentation, and a defined reuse status. Johannes Sametinge

Component-Based Design (CBD) ๐Ÿ”—


โ€ข Concept: Breaks software into reusable, self-contained components with defined interfaces.

๐Ÿ”ง Analogy: Like building a car from pre-made parts (engine, tires), software can be assembled from ready-made components.

Why CBSE (Component-Based Software Engineering) โ”

โšก๏ธ Reduces complexity and development time.
๐Ÿ”„ Focuses on reuse, not reinventing the wheel.

Types


๐Ÿ“š Class-Based Components: Often implemented as classes in object-oriented programming, encapsulating both data and behavior.
๐Ÿ”ง Service-Based Components: Provide specific services or functionalities, often implemented as standalone modules or microservices.
๐ŸŒ Web Components: Designed for web applications, encapsulating HTML, CSS, and JavaScript for reusable and modular UI elements.

Benefits ๐ŸŽฏ


๐Ÿ”„ Reusability: Saves time and effort.
๐Ÿ›  Maintainability: Modular design allows for easy updates.
๐Ÿ“ˆ Scalability: Add or replace components as needed.
โœ… Quality: Pre-tested components improve reliability.

Characteristics โœจ


๐Ÿ”„ Reusable: Components work across projects.
๐Ÿ”„ Replaceable: Easily swapped with alternatives.
๐Ÿงฉ Composable: Can be combined to form larger systems.
๐Ÿ›  Independent: Self-contained with minimal dependencies.
๐Ÿ”’ Encapsulated: Internal workings hidden behind interfaces.
๐Ÿ”— Loosely Coupled: Interact via well-defined interfaces.
๐Ÿ“ฆ Deployable/Configurable/Deliverable: Ready for deployment and customization.
๐Ÿง  Logically Cohesive: Each component performs a specific, logical task.
๐Ÿ“ˆ Scalable/Extensible: Can grow and adapt to meet future needs.
๐Ÿ”ง Maintainable: Easy to update and manage over time.


Component Design Processes ๐Ÿ”„


๐Ÿ“‹ Requirement Analysis: Identify key functionality and interactions.
Example: Notification system handling email, SMS, and push alerts.

๐Ÿ“ Specification: Define interfaces, inputs, outputs, and connections.
Example: Methods like sendEmail(), sendSMS(), and sendPush().

โš™๏ธ Design & Implementation: Build the component as per specifications.
Example: sendEmail() uses SMTP; sendSMS() integrates with a telecom API.

๐Ÿงช Testing: Test for functionality, performance, and error handling.
Example: Verify message delivery and error handling for invalid email addresses.

๐Ÿ”— Integration: Integrate the component into the larger system.
Example: Connect the notification system to order processing for real-time updates.
๐Ÿ‘1
Forwarded from AASTU SE Notes ๐Ÿ“– & QuizzesโŒ› (๐•ช๐–”๐•ค)
๐•ก๐•’๐•ฃ๐•ฅ 2

Application Area


๐Ÿ”น Enterprise Applications: Large organizations use modular components for systems like HR, payroll, and customer management.
โ€ข Example: SAP and Oracle ERP with modules for accounting, procurement, and inventory.

๐Ÿ”น Web Applications: Modern web apps use reusable front-end and back-end components for efficiency.
โ€ข Example: React.js or Angular components for building user interfaces across multiple websites.

๐Ÿ”น Cloud-Based Systems: Cloud services leverage microservices for independent scaling and integration.
โ€ข Example: AWS components like S3 (storage) and EC2 (computing) are integrated into various apps.

๐Ÿ”น Embedded Systems: Smart devices use modular components for specific tasks like monitoring or user interaction.
โ€ข Example: A smart thermostat with components for temperature control and Wi-Fi communication.


Summary โญ๏ธ


๐Ÿ”˜ Software Engineering simplifies complex problems using structured methods, focusing on high-quality, less complex software! ๐Ÿ› 
๐Ÿ”˜ Software types vary by purpose, platform, deployment, and licenseโ€”each tailored to fit specific needs! ๐Ÿ“ฆ
๐Ÿ”˜ Software design creates blueprints from user requirements, focusing on data, interfaces, and components! ๐ŸŽจ
๐Ÿ”˜ Component-Based Design (CBD) reuses modular components, reducing complexity and development time! ๐Ÿ”—
๐Ÿ”˜ CBSE improves software quality with reusable, maintainable, and scalable components! ๐ŸŽฏ
๐Ÿ”˜ CBD processes like analysis, specification, design & implementation, testing, and integration build cohesive systems! ๐Ÿ”„



โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–
The teaser ends hereโ€”step into the world where modular design meets innovation! โš™๏ธ๐ŸŒโœจ
โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–
Forwarded from AASTU SE Notes ๐Ÿ“– & QuizzesโŒ› (๐•ช๐–”๐•ค)
Chapter 2๏ธโƒฃ: Software Component Specification and Repositories ๐Ÿ—‚

Software Component Specification ๐Ÿ“


Definition: A detailed blueprint describing a componentโ€™s functionality, interfaces, dependencies, and interactions.
โ€ข It should be detailed, focusing on what the software is to do rather than how this is to be done.

Types:
โ€ข High-Level: Focus on functionality and relationships.
โ€ข Low-Level: Dive into implementation details.

Types of Software Components ๐Ÿงฉ


๐Ÿ”ง Off-the-Shelf: Pre-made, ready-to-use components.
๐Ÿ›  Third-Party: Developed externally, offering specialized functionality.
๐Ÿ”— Full Experience: Existing components integrated without changes.
๐Ÿ”จ Partial Experience: Components requiring minor customization.
๐Ÿ†• New Components: Built from scratch for unique requirements.

Software Component Repositories ๐Ÿ”‚


Definition: Centralized storage for source code, documentation, and project files.

Types:
๐Ÿ”’ Local Repositories: Internal to organizations, secure but limited.
๐ŸŒ Public Repositories: Open platforms (e.g., GitHub) for global collaboration.
๐Ÿ”— Hybrid Repositories: Mix of local and public features.

Advantages of Repositories ๐Ÿš€

๐Ÿค Contribution: Easily contribute to open-source projects and collaborate with others.
๐Ÿ“š Documentation: Simplify robust documentation development with repository management tools.
๐Ÿ“‚ Portfolio Creation: Showcase your skills and attract recruiters by displaying your work on GitHub.
๐Ÿ“ Track Changes: Keep track of revisions and changes in collaborative projectsโ€”no more confusion!
๐Ÿ”ง Tool Integration: Seamlessly integrate repositories with other development tools for smoother workflows.

Repository Constructs ๐Ÿ”ง


๐Ÿ“œ Version Control System (VCS):
Tracks changes, maintains a historical record, and enables collaboration across multiple contributors.

๐Ÿ’ป Local Repository:
A developer's local copy of the project, where changes are made before being committed to the central repository.

๐ŸŒ Remote Repository:
A central storage location, shared among developers. Popular services include GitHub, GitLab, and Bitbucket.

๐ŸŒฟ Branch:
A parallel version of the code, allowing developers to work on features or bug fixes independently.

๐Ÿ”„ Merge:
Combines changes from one branch into another, typically from feature branches into the main branch.

๐Ÿ“ธ Commit:
A snapshot of changes, accompanied by a unique identifier and a message describing the changes.

๐Ÿ” Clone:
Creates a local copy of a remote repository to work on it independently.

โฌ‡๏ธ Pull:
Fetches and merges changes from a remote repository into the current local branch.

โฌ†๏ธ Push:
Sends committed changes from the local repository to the remote repository, updating it.

๐Ÿด Fork:
Creates a personal copy of a repository to make changes and propose them via a pull request.

๐Ÿ“ Tag:
Marks specific points in version history, often used for releases or milestones.

๐Ÿ“ Issues:
Tracks tasks, bugs, or questions related to the project, often integrated into repository hosting platforms.

๐Ÿ“š Readme:
Provides essential information about the project, including installation, usage, and contribution guidelines.

๐Ÿ‘ฅ Collaborators & Teams:
Manage access and roles within the repository for efficient teamwork.



Summary โญ๏ธ


๐Ÿ”˜ Component Specification: A detailed blueprint defining functionality, interfaces, and interactions. ๐Ÿ“
๐Ÿ”˜ Software Components: Vary from off-the-shelf to custom-built, each with different levels of integration and reusability. ๐Ÿงฉ
๐Ÿ”˜ Repositories: Centralized storage for code, enabling collaboration, version control, and tool integration. ๐Ÿ”‚
๐Ÿ”˜ Repository Types: Local, public, and hybrid, each serving distinct collaboration and security needs. ๐ŸŒ
๐Ÿ”˜ Repository Advantages: Simplify contributions, documentation, version tracking, and tool integration. ๐Ÿš€
๐Ÿ”˜ Repository Constructs: Includes commits, branches, merges, and issues to manage code and tasks efficiently. ๐Ÿ”ง



โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–
The teaser ends hereโ€”step into the world where modular design meets innovation! โš™๏ธ๐ŸŒโœจ
โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–โž–